BLOG

COMO MEDIR DISTANCIAS POR ULTRA-SONIDO, SENSOR HC-SR04 Y ARDUINO

Sensor Ultrasonico HC-SR04

El sensor de ultrasonido funciona como un sonar, emite un pulso de ultrasonido por un tiempo de disparo, y luego mide el tiempo de retorno del eco.

El diagrama muestra el concepto a ser aplicado:

La velocidad del sonido en el aire es de 343.2 m/s a 20°C y 50% de Humedad.
Usando la fórmula básica de velocidad se tiene que:
Para convertir los tiempos a distancias, considere que el recorrido del pulso es de ida y vuelta, por lo que la distancia del dispositivo al objeto será la mitad.
Considere además que la fórmula está dada en convertirla a segundos y los datos estan en μs.
Aplicando lo anterior, y convirtiendo a cm:
se obtiene la fórmula a usar en cm:
Desarrollo del concepto

Se desarrolla el concepto en dos partes:

  • En Arduino se realizan las lecturas de echo del sensor de ultrasonido, los datos se envían al computador por puerto serial (USB)
  • Los dados se procesa en la computadora con el IDE de Arduino, fórmulas, conversión de unidades, gráficas, etc.
Lecturas de datos en Arduino

En la parte de Arduino se usan los siguientes componentes:

  • Arduino UNO con cable USB
  • Sensor de ultrasonido HC-SR04
  • Cables de Conexión (4 hembra macho)
Sensor HC-SR04

El dispositivo HC-SR04 se opera como un dispositivo que requiere alimentación (Vcc y GND), una señal de disparo del pulso (Trigger) y una señal para la lectura del eco (Echo).

La duración del pulso se controla con tpulsoON, y el tiempo de apagado con tpulsoOFF, se usa un tiempo adicional dt_apaga, para asegurarse que no exista interferencia entre el apagado del pulso y la lectura del retorno del eco.

La conexión del dispositivo con el Arduino como controlador, se realiza por medio de los pines indicados en el script.

// Disparo del PULSO, Trigger
int TriggerPin = 12;
int tpulsoON = 15;
int tpulsoOFF = 2000;

// Sensor del Retorno del PULSO, Echo
int EchoPin = 11;
int dt_apaga = 10;

// tiempo de retorno Echo
float dt_Echo;

void setup() {
  Serial.begin(9600);
  pinMode(TriggerPin, OUTPUT);
  pinMode(EchoPin, INPUT);
}
 
void loop(){
    // tiempo entre PULSOs: tpulsoOFF
    digitalWrite(TriggerPin, LOW);
    delayMicroseconds(tpulsoOFF);
    // Dispara PULSO de duración: tpulsoON  
    digitalWrite(TriggerPin, HIGH);
    delayMicroseconds(tpulsoON); 
    digitalWrite(TriggerPin, LOW); 
    delayMicroseconds(dt_apaga);  
    
    // Lectura sensor pulso: tiempo de echo 
    dt_Echo = pulseIn(EchoPin, HIGH);  
    Serial.println(dt_Echo);
    delay(10);
}
Follow by Email
Facebook
Twitter
WhatsApp
Alejandra
mayo 16, 2022

En este artículo se menciona:

Productos nuevos

TE RECOMENDAMOS

Adaptadores de audio

Altoparlantes

Amplificadores de Publidifusión

Audífonos y manos libres

Cables de audio

Conectores

Megáfonos

Mezcladoras de audio

Micrófonos

Pedestales y Accesorios

Refacciones

Trompetas de perifoneo

Accesorios Automotriz

Bocinas

Inversores de corriente

Seguridad

Alambre

Cable coaxial tipo RG

Cable de uso rudo

Cable línea “Estándar”

Cable para micrófono

Cable polarizado

Cordón automotriz

Adaptadores

Alimentación

Baterías Selladas

Caimanes

Cargadores

Fuentes conmutadas

Fusibles

Iluminación

Reguladores de voltaje

Multímetros

Otros

Químicos

Soldadura

Capacitores

Circuitos Integrados

Compuertas Lógicas

Microcontroladores

Misceláneo Micro

Potenciómetros

Reguladores

Resistencias

Switches

Transistores

Zapatas

Antenas

Conectores de video

Home Audio

Home video

Antenas

Cuerdas

Instrumentos

Celulares

Computación

Telefonía

Actuadores

Componentes pasivos

Inalámbricos

Kits de robótica

Misceláneo

Módulos

Motores

Placas fenólicas y protoboards

Sensores

Tarjetas de Desarrollo