Arduino en español
Circuitos con Arduino - Juan Antonio Villalpando
-- Tutorial de iniciación a Arduino --
Volver al índice del tutorial
____________________________
25.- Ultrasonido. Medidor de distancia.
- Vamos a tomar contacto con el funcionamiento de un módulo de Ultrasonido.
- Se puede utilizar para medir distancias o para dar una señal cuando un objeto se acerque a una determinada distancia.
- En mi caso utilizo el Ultrasonic Sensor Distance Measuring Module for Arduino viene a costar menos de 1 €.
- En sus característica indica que puede medir distancias entre 2 cm y 700 cm
- Funciona con 5 VDC. Intensidad de reposo <3mA. Ángulo del sensor: menos de 15º.
- El módulo tiene 4 pines (Vcc, Trig, Echo, GND).
- Características.
_______________
- Librería.
- Esta librería está diseñada para IDE 1.X.X Ultrasonic.zip. La descomprimes y la copias en la carpeta libraries con el nombre de Ultrasonic (sin más letras) y dentro de ella el archivo Ultrasonic.h.
Prueba el ejemplo PlugandPlay.
(Para el IDE 0022 puedes probar esta otra librería: Ultrasonic2)
_____________________
- Conexiones.
- Para realizar nuestro proyecto conectamos el módulo al Arduino:
Vcc .......... 5 V
GND ........ GND
Trig .......... Pin 12
Echo ......... Pin 13
_______________
- Código.
- Realizamos el programa visto en... http://arduino-info.wikispaces.com/UltraSonicDistance
- Según acercamos o alejamos un objeto, nos muestra la distancia respecto al sensor en centímetros y pulgadas (inches).
Código.
|
/* YourDuino SKETCH UltraSonic Serial 1.0
Runs HC-04 and hopefully SRF-06 Ultrasonic Modules
Uses: Ultrasonic Library (Copy to Arduino Library folder)
http://iteadstudio.com/store/images/produce/Sensor/HCSR04/Ultrasonic.rar
terry@yourduino.com */
/*-----( Import needed libraries )-----*/
#include "Ultrasonic.h"
/*-----( Declare Constants and Pin Numbers )-----*/
#define TRIG_PIN 12
#define ECHO_PIN 13
/*-----( Declare objects )-----*/
Ultrasonic OurModule(TRIG_PIN, ECHO_PIN);
// Ultrasonic OurModule(TRIG_PIN, ECHO_PIN, 60000); // Cambia distancia máxima.
/*-----( Declare Variables )-----*/
void setup() /****** SETUP: RUNS ONCE ******/
{
Serial.begin(9600);
Serial.println("UltraSonic Distance Measurement");
Serial.println("YourDuino.com terry@yourduino.com");
}//--(end setup )---
void loop() /****** LOOP: RUNS CONSTANTLY ******/
{
Serial.print(OurModule.Ranging(CM));
Serial.print("cm ");
delay(100); //Let echos from room dissipate
Serial.print(OurModule.Ranging(INC));
Serial.println("inches");
delay(500);
}//--(end main loop )---
/*-----( Declare User-written Functions )-----*/
//*********( THE END )*********** |
- Para cambiar la distancia máxima modificamos esta línea:
Ultrasonic OurModule(TRIG_PIN, ECHO_PIN);
a
Ultrasonic OurModule(TRIG_PIN, ECHO_PIN, 60000);
_______________________
- Serial Monitor.
- Una vez conectado el módulo de ultrasonido y cargado el programa, vamos al Serial Monitor, acercamos algo al sensor y obtendremos la distancia al sensor.
- Mide entre 2cm y 30cm, a partir de 30cm siempre marca 51cm. Si quieres más distancia cambia esta línea:
Ultrasonic OurModule(TRIG_PIN, ECHO_PIN, 60000);
Expresa el resultado en centímetros y pulgadas (inches).
1 pulgada = 2,54 cm
inches = pulgadas.
_____________________
_____________________
_____________________
2.- Detector de distancia.
Basado en el código anterior, vamos a ver un programa que detecta si un objeto está a 15 cm.
Si el objeto está a menos de 15 cm encenderá el LED 13.
Si el objeto está a más de 15 cm se apagará el LED 13.
NOTA: para realizar este proyecto el pin Echo del módulo de ultrasonido lo he conectado al pin 11 del Arduino, es decir...
Vcc ........... 5 V
GND ......... GND
Trig ........... Pin 12
Echo ......... Pin 11
Repasa bien la conexión de Trig y Echo, está cambiada con respecto a los otros códigos.
Código.
|
/*
Juan A. Villalpando
kio4.com
agosto 2015
*/
#include "Ultrasonic.h"
#define TRIG_PIN 12
#define ECHO_PIN 11
Ultrasonic OurModule(TRIG_PIN, ECHO_PIN);
void setup()
{
Serial.begin(9600);
Serial.println("Aviso a 15 cm");
pinMode(13, OUTPUT);
}
void loop()
{
Serial.print(OurModule.Ranging(CM));
Serial.println(" cm");
delay(500);
if (OurModule.Ranging(CM) < 15) {
digitalWrite(13, HIGH); }
else {
digitalWrite(13, LOW); }
} |
_____________________
3.- Otro programa para medir distancias. Sin librería.
Este es otro medidor de distancia, en este caso no utiliza librería.
Envía por el Pin 13 (Trig) un pulso de 2-10-2 microsegundos.
Recibe por el Pin 12 (Echo) el rebote del pulso en la variable duration. Mediante PulseIn mide el tiempo que la señal ha estado en ALTO.
Mediante dos funciones (microsecondsToInches y microsecondsToCentimeters), pasa la duration a centímetros y pulgadas.
Conexiones al Arduino.
Vcc .......... 5 V
GND ........ GND
Trig .......... Pin 13
Echo ......... Pin 12
Repasa bien la conexión de Trig y Echo, está cambiada con respecto a los otros códigos.
También puedes cambiar los terminales en el mismo código.
http://arduino.cc/en/Tutorial/Ping?from=Tutorial.UltrasoundSensor
Ver función PulseIn: http://www.arduino.cc/es/Reference/PulseIn
Código.
|
int pingPin = 13; // Trig
int inPin = 12; // Echo
long microseconds;
void setup() {
Serial.begin(9600);
pinMode(pingPin, OUTPUT);
pinMode(inPin, INPUT);
}
void loop() {
long duration, inches, cm;
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
duration = pulseIn(inPin, HIGH);
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.print(duration);
Serial.print(" microseg, ");
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(100);
}
long microsecondsToInches(long microseconds) {
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds) {
return microseconds / 29 / 2;
} |
_____________________
- Cálculo de distancia.
Para calcular la distancia utilizamos ésta fórmula:
D = V . T / 2
donde V es la velocidad del sonido (340 m/s). T el tiempo que tarda la señal en ir y venir. D la distancia.
Por ejemplo si el T es 2960 microsegundos, obtenemos una distancia.
D = 34000 cm/s x 0,002960 / 2 = 50 cm
Otra web sobre Ultrasonido y cálculo de distancia.
_____________________
- Módulo de 3 pines.
- Hay otros módulos ultrasónicos de 3 pines, como el que explica el tutorial de Arduino...
http://arduino.cc/en/Tutorial/Ping?from=Tutorial.UltrasoundSensor
En este caso primero envía una señal por el pin7 configurado como salida: pinMode (pingPin , OUTPUT) ;
y luego capta la señal también por el pin7, esta vez configurado como entrada: pinMode (pingPin , INPUT) ;
________________________________
|