51 MCU utiliza el módulo ultrasónico HC-S104

 

El módulo ultrasónico HC-S104 es un sensor para medir distancias, que se puede utilizar para aplicaciones de medición de distancias de 51 microcomputadoras de un solo chip. Los siguientes son los pasos para usar el módulo ultrasónico HC-S104:

1. Conecte el pin VCC del módulo ultrasónico HC-S104 a la fuente de alimentación de 3,3 V o 5 V de la MCU 51, conecte el pin GND a la GND de la MCU 51, conecte el pin TRIG a un puerto de salida programable de la MCU 51 y conecte el pin ECHO a un puerto de entrada programable de la MCU 51.

2. Proporcione una señal de alto nivel de más de 10 microsegundos al pin TRIG del HC-S104 para activar el módulo y emitir ondas ultrasónicas al objetivo.

3. El módulo ultrasónico HC-S104 devuelve la señal ultrasónica transmitida al microcontrolador a través del pin ECHO.

4. A través de la programación de la microcomputadora de un solo chip, mida la diferencia de tiempo desde el disparador TRIG hasta la señal ultrasónica devuelta por el pin ECHO, generalmente en microsegundos.

5. De acuerdo con la diferencia de tiempo medida y la velocidad de las ondas ultrasónicas que se propagan en el aire, se puede calcular la distancia.

6. Repita los pasos anteriores para lograr una operación de rango continuo.

Nota: Al utilizar el módulo ultrasónico HC-S104, se debe tener cuidado para evitar interferencias de señal y errores de apreciación. Se pueden utilizar métodos como el juicio de filtro y umbral para mejorar la precisión de la medición. Al mismo tiempo, también es necesario considerar que la velocidad de propagación ultrasónica en diferentes medios es diferente y debe corregirse de acuerdo con la situación específica.


Ejemplo concreto:

conexión:

Conecte el VCC y GND del módulo ultrasónico HC-SR04 a los 5V y GND del microcontrolador respectivamente. Conecte Trig a PD0 (D0) del microcontrolador y conecte Echo a PD1 (D1) del microcontrolador.

código:

#include <reg51.h>
//定义PD0为输出口,PD1为输入口,并全局变量int distance
sbit Trig = P0^0; //Trig连接PD0
sbit Echo = P0^1; //Echo连接PD1
int distance;


//首先,向Trig脚发送一个10微秒的高电平信号,然后将Trig脚拉低,等待Echo脚变为高电平。当Echo脚高电平时,开始计时。当Echo脚低电平时,计时结束,并计算出距离,存入全局变量distance中。
void send_pulse()
{
    Trig = 1; //发送10微秒的高电平
    delay_us(10);
    Trig = 0; //拉低
}


void measure_distance()
{
    int time = 0;
    while(Echo == 0); //等待Echo脚变高
    while(Echo == 1)
    {
        time ++;
        delay_us(1);
    } //计数
    distance = time / 58; //计算距离
}


//延时函数用于精确计时。以下是一个精度较高的延时函数:
void delay_us(int time)
{
    int i, j;
    for(i = 0; i < time; i ++)
    {
        j = 12; //经过测试,12是一个较为准确的值
        while(j --);
    }
} 


//主函数调用send_pulse()和measure_distance()函数,然后将距离distance输出到串口。
void main()
{
    while(1)
    {
        send_pulse(); //发送超声波
        measure_distance(); //测量距离
        printf("Distance: %d cm\n", distance); //输出距离
        delay_ms(200); //延时200毫秒
    }
}

Supongo que te gusta

Origin blog.csdn.net/k1419197516/article/details/123767007
Recomendado
Clasificación