Sensor HC-SR04 para crear una alarma con Arduino

El Sensor ultrasónico HC-SR04 es un circuito que detecta o mide la distancia y es compatible con Arduino. Básicamente, el sensor puede detectar objetos, distancia o nivel en un rango mínimo de 2 cm a un máximo de 400 cm. Se puede utilizar, por ejemplo, para diferente tipos de proyectos como lo son alarmas de proximidad, medir niveles de agua de un tinaco o cualquier otro objeto que almacene algún tipo de líquidos. Ten en cuenta que para que este sensor funcione de manera correcta, se requiere de una superficie lisa y perpendicular a la dirección de propagación del sensor.

En primer lugar, el sensor ultrasónico HC-SR04  se alimenta con 5 volts a 1.5 mA DC lo cual, de hecho, lo hace ideal para trabajar con Arduino, en realidad, con cualquier procesador lógico que funcione a 5V. Además si lo piensas trabajar con otros niveles lógicos puedes implementar un divisor de voltaje para ajustar el nivel.

Características del sensor ultrasónico HC-SR04

  • Alimentación de 5 volts.
  • Interfaz de cuatro hilos (vcc, trigger, echo, GND).
  • Rango de medición: 2 cm a 400cm.
  • Corriente de alimentación: 1.5mA.
  • Frecuencia de pulso: 40Khz.
  • Apertura del pulso ultrasónico: 15°.
  • Señal de disparo: 10us.
  • Dimensiones del módulo: 45x20x15mm.
Sensor SR04

Figura-1. Sensor HC-SR04

Alarma de distancia utilizando el sensor ultrasónico HC-SR04 y Arduino UNO

Para crear una alarma indicadora de distancia con el sensor hc-sr04 es necesario el siguiente material. No obstante, ustedes pueden cambiar la salida por un buzzer o bocina así que por este motivo la actividad se puede modificar a su antojo.

Diagrama esquemático sensor untrasonico Arduino

La siguiente imagen muestra cómo se conectara el sensor HC-SR04 y el Arduino de manera correcta basándonos en nuestra programación. Por lo general, se recomienda dejar los mismos pines, sin embargo, si quieres cambiarlos, solo revisa que tus conexiones sean correctas.

sensor ultrasónico HC-SR04 Y Arduino
Conexiones entre el sensor HC-SR04 y Arduino.
  • El trigger (verde) conectarla al pin 10 del Arduino.
  • La línea de echo (amarillo) conectarla al pin 9 del arduino.
  • VCC (rojo) conectarla al pin del Arduino con el mismo nombre.
  • GND (negro) conectarla al pin del Arduino con el mismo nombre.
  • La resistencia de 220Ω va de la parte negativa del protoboard al negativo del LED.
  • La pata positiva del LED se conecta al pin 11 del Arduino y su pata negativa a la resistencia.

Código del Sensor HC-SR04 ultrasónico Arduino

En primer lugar, el siguiente código es el que se cargara a nuestro Arduino el cual controlara la distancia y encenderá la alarma en la distancia requerida.  El sensor HC-SR04 en realidad, comenzara a detectar la distancia del objeto que este frente a él, según sea la distancia de alarma estipulada en el código. Esta distancia será cuando el LED prenda señalando que el objeto está muy cercano en el caso de nivel el nivel será muy bajo.

El pin 9 se declaró como entra de pulso y el pin 10 será declarado como salida y nos generara la medición que se verá reflejada en cm. La distancia para nuestra alarma sera según este programa en realidad de un rango menor a los 10 cm. Finalmente las mediciones las podemos observar por lo general, en el monitor serial las cuales comenzaran a escribirse con un retardo de 500 mili segundos.

long dis;
long tiem;
int led1 = 11;
void setup( ){
Serial.begin(9600);
pinMode(10, OUTPUT); //salida del pulso generado por el sensor ultrasónico
pinMode(9, INPUT);//entrada del pulso generado por el sensor ultrasónico
pinMode(11, INPUT);//alarma de la distancia(encenderá el led)
}
void loop(){
digitalWrite(10,LOW);//recibimiento del pulso.
delayMicroseconds(5);
digitalWrite(10, HIGH);//envió del pulso.
delayMicroseconds(10);
tiem=pulseIn(9, HIGH);//fórmula para medir el pulso entrante.
dis= long(0.017*tiem);//fórmula para calcular la distancia del sensor ultrasónico.
if(dis>10){ //comparativo para la alarma se ingresa la distancia en la que encenderá o apagara.
digitalWrite(11, HIGH);
}
else
{
digitalWrite(11,LOW);
}
Serial.println("LA DISTANCIA MEDIDA ES:");
Serial.println(dis);
Serial.println("cm");
delay(500);
}

https://gist.github.com/esmarr58/da8275e5eb763289c0049ffa11f16e47

A continuación, se presentan los resultamos obtenidos de diferentes pruebas. Como resultado, vemos como en la terminal tenemos el dato en centímetros de la distancia. Dato obtenido de el sensor ultrasonico a la superficie.

sensor HC-SR04 y sus mediciones en arduino
Resultado de las mediciones

24 comentarios en «Sensor HC-SR04 para crear una alarma con Arduino»

  1. muy buen trabajo, tu código da la distancia con más exactitud que otros.
    Solo como dato, en la línea 3 si declaras e igualas el pin1 a 11 porque ya no la utilizas?
    en la linea 18 y 22 imagino que seria algo así

    18 digitalWrite (pin1, HIGH);

    1. HOLA, fue de gran ayuda. excelente tutorial. solo un datico, en el montaje hay una fallita con respecto a la alimentacion de corriente le quedaron cruzados los puntos el gnd con vcc. como dije es una pequeñes. el trabajo como tal si esta muy bien.

  2. Hola buenas Héctor,

    Antes de nada buen tutorial, me gustaría saber si sabrías como utilizando dos ultrasonidos los puedes conectar de tal forma que uno emita y el otro reciba la señal simplemente, la idea es que lo utilizare en un robot que constará de varios ultrasonidos que funcionaran como emisores y unas balizas donde irán otros ultrasonidos que al recibir la señal, detectará la posición de este.

    Un saludo y gracias.

        1. Cristian, me puse a investigar un poco en internet y de acuerdo a lo que revise, no lo recomiendan y en pocas palabras no es posible. Ahora, esto que busque solo es usando como el mismo modulo, uno como Tx y uno como Rx. Vi algunos comentarios que apuntan que quizás si pueda existir un combo comercial con esta especificación, pero eso ya no lo revise a detalle.

  3. Hola. Me parece buena información, aunque creo que declaraste mal el pin 11, ya que lo pusiste como entrada, y realmente lo usas como salida, por lo que deberias cambiar la linea 7 por «pinMode(11, OUTPUT);//alarma de la distancia(encenderá el led)»

  4. Buenos días, lo primero felicitarte por el trabajo realizado y por la información compartida. Estoy intentando desarrollar un proyecto basado en riego automático y quería utilizar este sensor para medir el nivel de agua del depósito. Este depósito mide aproximadamente unos 3.5 metros. Quería saber si podía utilizar este sensor para saber la altura a la que se encuentra el nivel del agua en el depósito? Muchas gracias.

  5. Buenas, disculpen, pregunta ¿Y si quisiera agregarle algo más al circuito? Ejemplo, un motor. Me sería de mucha ayuda y estaría mil veces agradecido. Espero su respuesta. Que tengan buenas noches.

  6. muy buenos días, tengo un error al momento de poner el código, quisiera saber cual seria el problema o que es lo q estaría fallando, gracias. El error es el siguiente al momento de subirlo a la placa uno, me sale esto:

    «El Sketch usa 3252 bytes (10%) del espacio de almacenamiento de programa. El máximo es 32256 bytes.
    Las variables Globales usan 222 bytes (10%) de la memoria dinámica, dejando 1826 bytes para las variables locales. El máximo es 2048 bytes.»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *