Práctica 8. Midiendo distancias con un sensor de ultrasonidos

8.1  Objetivo General:

Utilizar un sensor de ultrasonido, HC-SR04 o PING de Parallax, para medir distancias

8.2  Materiales y Métodos

  1. Una tarjeta Arduino Uno-R3 o Arduino Mega 2560.
  2. Un cable USB impresora.
  3. Un computador.
  4. Cables para el montaje del circuito.
  5. Tarjeta Protoboard.
  6. Un sensor de ultrasonido  HC-SR04 o PING de Parallax.

El sensor ultrasonido tiene como principio de funcionamiento de que emite un sonido, este rebota sobre la superficie que tiene frente de él, al mismo tiempo mide el tiempo que la señal tarda en regresar. La velocidad que va el sonido junto con el tiempo que tarda en regresar la señal va a indicar la distancia a la cual está el objeto.

8.3  Montaje de la práctica:

Con el fin de comprender el funcionamiento del circuito, así como verificar todas las conexiones existentes, se realiza en primer lugar el montaje en el programa Fritzing.

Figura 1 - P8

Figura 1. Montaje del circuito para el sensor HC-SR04.

Figura 2. Montaje del circuito para el sensor PING de Parallax.

Si se va a trabajar con el sensor HC-SR04, ver Figura 3, hay que tener en cuenta que tiene 4 pines, la conexión del cable rojo va desde el pin VCC del sensor al pin de 5V de la tarjeta Arduino. El cable azul va desde el pin TRIG del sensor al pin 12 de la tarjeta Arduino. El cable verde va desde el pin ECHO del sensor al pin 11 de la tarjeta Arduino. El pin 11 de la tarjeta tiene al lado un símbolo ( ̴) .  Por último, el cable negro va desde el pin GND de sensor al pin de tierra de la tarjeta Arduino.

Figura 2 - P8

Figura 3. Sensor de Ultrasonido utilizado en la práctica. (Imagen de www.Felectronilab.com)

Luego que construir el circuito en el programa Fritzing, se desarrolla del programa en el IDE de Arduino.

8.4  Código en el IDE de Arduino:

-Se debe seleccionar en la IDE de Arduino el tipo de tarjeta con el que vamos a trabajar siendo Arduino Uno-R3 o Arduino Mega 2560.

– Se selecciona el Puerto Serial, es decir, el puerto USB al cual se va a conectar la tarjeta Arduino con el computador.

– Se realiza el código:

  • Inicialmente se debe identificar el programa que se esta desarrollando, por tanto se asigna un nombre al programa, esto se hace empleando el símbolo //.
  • Se deben declarar las variables que serán utilizadas en el programa. Pero primero se debe incluir  el paquete dentro de la IDE de Arduino llamado NewPing. El paquete carga los objetos que permiten usar el  dispositivo (HC-SR04). El comando para llamar al paquete es #include.
  • Se debe declarar la variable de accionar el sensor con el comando #define TRIGGER_PIN, se define la variable y se coloca el valor del pin en la cual enviará el sonido, en nuestro caso será el pin  #define TRIGGER_PIN 12.
  • Luego se declara la variable de repetición, la cual  permitire saber a qué distancia se encontra con un obstáculo. Para esto utilizamos el comando #define ECHO_PIN, el pin que permite enviar la señal modulada entre el obstáculo y el sensor y va al  pin 11. Nos quedaría entonces #define ECHO_PIN 11.
  • Por último, debemos definir a que distancia máxima podrá leer el sensor, para esto utilizaremos el comando #define MAX_DISTANCE, en este caso se indicará una distancia de 200 centímetro. Este comando es importante ya que es el que le dará a la señal la distancia de ir y venir para que el sensor pueda leer una respuesta.
  • Seguidamente se realiza la declaración de las configuraciones de las variables o la inicialización de la comunicación serie dentro de los corchetes que delimitan el bloque de programa void setup (). Para la realización de esta práctica se trabaja con la comunicación serie, es decir, la comunicación de datos con el computador. Para abrir el puerto serie se utiliza el comando Serial.Begin(115200); indicando dentro de los paréntesis la velocidad de comunicación con el computador, esta generalmente es 9600 bits por segundo, aunque otras tasas pueden ser soportadas.
  • Luego de inicializada la comunicación serie, se procede con el bloque de programación que se encuentra ubicado en el interior de los corchetes del comando void loop () el cual se ejecuta continuamente leyendo las entradas y generando las salidas. En las primeras instrucciones del bloque de programa se quiere darle un delay de 50, ya que es necesario que tenga un tiempo de espera entre los pines. Luego a través del comando unsigned int uS = sonar.ping(), permite enviar la señal digital la cual se encar de enviar el sonar y medir el tiempo en que tarda en retornar.
  • Posteriormente, se emplea la función Serial.print(); para mostrar el valor medido a través del monitor Si se quieren desplegar en el puerto serial palabras o frases estas deben ir delimitadas mediante los comillas, es decir, Serial.print (“Ping:    ”). Luego para que pueda convertir el tiempo en que la señal va y viene en distancia (cm) debemos utilizar el comando Serial.print (uS/ US_ROUNDTRIP_CM). Luego Serial.println(“cm:    ”).
  • Finalmente se debe verificar que al final de cada instrucción se haya colocado el respectivo punto y coma, de lo contrario habrán errores a la hora de compilar.
  • Una vez compilado el programa se ejecuta el mismo. Si las conexiones se hicieron de manera correcta el señor capta y envía las señal a la tarjeta y esta posteriormente al monitor, sin embargo para poder observar estos datos es necesario activar el monitor serial, esto se realiza oprimiendo click izquierdo en la barra de herramientas del IDE de Arduino que señaliza el monitor serial en la parte superior derecha, Figura 4.

NOTA: Para quel IDE de Arduino pueda entender los comandos es necesario que al final de cada instrucción se coloque punto y coma (;).

En el siguiente algoritmo se muestra el código en el IDE de Arduino de los procedimientos anteriormente señalados:

// Medir distancia con sensor ultrasonido HC-SR04
#include<NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define  MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
void setup(){
Serial.begin(115200);
}
void loop(){
delay (50);
unsigned int  uS=sonar.ping ();
Serial.print (“Ping: “);
Serial.print (uS/ US_ROUNDTRIP_CM);
Serial.print (“cm”);
}

Algoritmo 1 Código de Lectura de valor de distancia a través de un sensor de ultrasonido

Figura 4. Botón para activar el Monitor Serial.

La explicación y el código anterior son para el sensor HC-SR04. Si se dispone del sensor Ping Parallax el código del programa así como la simulación virtual del circuito lo puede ver en el portal https//123d.circuits.io::

https://circuits.io/circuits/3757681-practicas-8-midiendo-distancias-con-un-sensor-de-ultrasonidos

8.5  Conclusión:

Se ha utilizado  el sensor de ultrasonido con una librería que facilita en gran medida el desarrollo de aplicaciones. Sin embargo, es de destacar que también se pueden  desarrollar paquetes propios de código que optimice el uso del tiempo del CPU.

El código realizado con la librería NewPing queda bastante sencillo conjuntamente con el sensor ultrasónico HC-SR04.

Las ventajas e inconvenientes de estos sensores son,  al no necesitar el contacto físico con el objeto, ofrece la posibilidad de detectar objetos frágiles, como pintura fresca. Además, detecta cualquier material, independientemente del color, al mismo alcance, sin ajuste ni factor de corrección.

Los sensores ultrasónicos tienen una función de aprendizaje para definir el campo de detección, con un alcance máximo y uno mínimo de precisión de 6 mm. El problema que presentan estos dispositivos son las zonas ciegas y el problema de las falsas alarmas. La zona ciega es la zona comprendida entre el lado sensible del detector y el alcance mínimo en el que ningún objeto puede detectarse de forma fiable.