Approved Reseller
Approved Reseller
En este pequeño tutorial veremos cómo conectar un sensor de distancia Ultrasónico HC-SR04 a una tarjeta Arduino, también encontrarás un código de programación para tus primeras pruebas.
El sensor HC-SR04 nos permite conocer la distancia a la que se encuentra un objeto, cuenta con dos transductores ultrasónicos y con 4 terminales de conexión:
Su funcionamiento consiste en emitir una señal ultrasónica con uno de sus transductores para después recibir el rebote de dicha señal en su segundo transductor. Si medimos el tiempo que le toma a la señal alcanzar el objeto más cercano y regresar y conocemos la velocidad del sonido podemos calcular la distancia a la que se encuentra dicho objeto con la siguiente formula:
Distancia = ( Tiempo_medido ) * (velocidad_del_sonido) / 2
El sensor HC-SR04 es entonces un componente de entrada, es decir, su funcionamiento consiste en entregar la información correspondiente a la distancia a través del tiempo de un pulso en su pin de señal ECHO, la tarjeta Arduino a su vez recibe la señal y obtiene el tiempo de duración del pulso con uno de sus pines digitales de entrada y con ayuda de la función pulseIn(). En este ejemplo conectaremos el pin de señal ECHO de nuestro sensor al pin digital #3 de la tarjeta y el pin de señal TRIGGER al pin digital #2.
Cargamos el código a la tarjeta Arduino Uno y abrimos el monitor serie para observar la distancia medida cada 0.1 segundos aproximadamente.
const int pinTrigger = 2; //Variable que contiene el número del pin al cual conectamos la señal "trigger" const int pinEcho = 3; //Variable que contiene el número del pin al cual conectamos la señal "echo" void setup() { Serial.begin(9600);//Configuramos la comunicación serial pinMode(pinTrigger, OUTPUT); //Configuramoms el pin de "trigger" como salida pinMode(pinEcho, INPUT); //Configuramoms el pin de "echo" como entrada digitalWrite(pinTrigger, LOW);//Ponemos en voltaje bajo(0V) el pin de "trigger" } void loop() { unsigned long t; //Variable de tipo unsigned long que contendrá el tiempo que le toma a la señal ir y regresar float d; //Variable de tipo float que contendrá la distancia en cm digitalWrite(pinTrigger, HIGH);//Ponemos en voltaje alto(5V) el pin de "trigger" delayMicroseconds(10);//Esperamos en esta línea para conseguir un pulso de 10us digitalWrite(pinTrigger, LOW);//Ponemos en voltaje bajo(0V) el pin de "trigger" t = pulseIn(pinEcho, HIGH); //Utilizamos la función pulseIn() para medir el tiempo del pulso/echo d = t * 0.000001 * 34300.0 / 2.0; //Obtenemos la distancia considerando que la señal recorre dos veces la distancia a medir y que la velocidad del sonido es 343m/s Serial.print("Distancia: "); Serial.print(d); Serial.print("cm"); Serial.println(); delay(100); //Nos mantenemos en esta línea durante 100ms antes de terminar el loop }