Como ya comenté en un post anterior, este año estoy dando clases de IT a alumnos de diferentes niveles. Por lo que me he decidido a escribir pequeñas entradas con opciones que nos brinda arduino con su conexionado y su sketch correspondiente, así me servirá también como un repositorio a la hora de mostrarles ejemplos que pueden utilizar para aprender a programar y montar proyectos con arduino.
En esta ocasión le toca el turno a los sensores de distancia, el que voy a utilizar es el HC-SR04, comprado en dealextreme por poco más de 3$.
El sensor funciona por ultrasonidos y el mecanismo consiste en una señal de ultrasonido que envía uno de esos cilindros y que el otro recibe, en función del tiempo que tarde en volver el ultrasonido se determina la distancia hasta el objeto que tiene en frente.
Tiene un rango de 2 a 450 cm por lo que tiene muchas utilidades como detección de intrusos, contador de personas, detección de obstáculos para pequeños proyectos de coches autodirigidos y cualquier otra cosa que se nos ocurra.
Cuenta con 4 pines que por suerte vienen etiquetados en la misma placa, así tenemos vcc para el voltaje, Trig que es el que envía la señal y va conectado a una salida digital, echo que es el que recibe la señal y se conecta a una entrada analógica y por último Gnd para la toma a tierra. Esto nos facilita mucho las cosas a la hora de hacer el conexionado en una placa de montaje por ejemplo. Aquí tenéis como ejemplo el esquema he estado usando yo para pruebas.
Y aunque muy simple, os dejo un esquema del conexionado:
Una vez que tenemos el hardware listo vamos a pasar al software, para poder utilizar este sensor necesitaremos enviar una señal durante dos microsegundos, después silenciar esa señal y leer el valor que nos devuelve el pin de ECHO. De esta forma aplicando una pequeña fórmula nos devuelve el valor en CM. He aquí el sketch:
En esta ocasión le toca el turno a los sensores de distancia, el que voy a utilizar es el HC-SR04, comprado en dealextreme por poco más de 3$.
El sensor funciona por ultrasonidos y el mecanismo consiste en una señal de ultrasonido que envía uno de esos cilindros y que el otro recibe, en función del tiempo que tarde en volver el ultrasonido se determina la distancia hasta el objeto que tiene en frente.
Tiene un rango de 2 a 450 cm por lo que tiene muchas utilidades como detección de intrusos, contador de personas, detección de obstáculos para pequeños proyectos de coches autodirigidos y cualquier otra cosa que se nos ocurra.
Cuenta con 4 pines que por suerte vienen etiquetados en la misma placa, así tenemos vcc para el voltaje, Trig que es el que envía la señal y va conectado a una salida digital, echo que es el que recibe la señal y se conecta a una entrada analógica y por último Gnd para la toma a tierra. Esto nos facilita mucho las cosas a la hora de hacer el conexionado en una placa de montaje por ejemplo. Aquí tenéis como ejemplo el esquema he estado usando yo para pruebas.
Y aunque muy simple, os dejo un esquema del conexionado:
Una vez que tenemos el hardware listo vamos a pasar al software, para poder utilizar este sensor necesitaremos enviar una señal durante dos microsegundos, después silenciar esa señal y leer el valor que nos devuelve el pin de ECHO. De esta forma aplicando una pequeña fórmula nos devuelve el valor en CM. He aquí el sketch:
// Definimos para que vamos a usar cada pin #define ECHO 6 #define TRIGGER 7 //Primera bateria de instrucciones que se ejecutara //Solo cuando inicie arduino void setup() { //Declaramos la velocidad con la que operaremos el puerto serie Serial.begin(9600); //Definimos que el pin de echo (6) es de entrada pinMode(ECHO, INPUT); //Y que el TRIGGER pinMode(TRIGGER, OUTPUT); //Mostrampos un mensaje por pantalla diciendo que estamos conectados Serial.println("El dispositivo se ha conectado."); } /* * Funcion de loop que se ejecutara de forma reiterativa * */ void loop() { // Ponemos el TRIGGER a 0 digitalWrite(TRIGGER, LOW); // Esperamos 2 microsegundos delayMicroseconds(2); // Ponemos el TRIGGER a 1 digitalWrite(TRIGGER, HIGH); // Y volvemos a esperar, ahora 10 microsegundos delayMicroseconds(10); // Por ultimo volvemos a poner el TRIGGER a 0 digitalWrite(TRIGGER, LOW); // Ahora recogemos el valor recibido en el pin de ECHO // El cual determinara la distancia float distancia = pulseIn(ECHO, HIGH); // Para pasar el valor a CM tendremos que dividir el valor // obtenido por 58 y esto nos dara como resultado los cm distancia= distancia/58; // Imprimimos por el puerto serie la distancia recien calculada Serial.print(distancia); Serial.println(" CM"); // Ponemos otra pausa de 200 milisegundos // a tener en cuenta que son milisegundos, lo de antes // eran microsegundos, un valor aun mas pequeño delay(200); }
Por último un pequeño vídeo de como funciona el sensor:
what are the advantages of the HC-SR04?
ReplyDelete