Detector de distancias con ultrasonidos y Arduino
Siempre he querido jugar con sensor de Arduino Ultrasonido . Por suerte, en ebay se puede conseguir el HC-SR04 (sensor ultrasónico) a buen precio.
Conexión del sensor
Sólo después de la entrega he notado un pequeño problema: el sensor Ping original de arduino tenía 3 pines, mientras que mi versión de copia tiene 4 Entonces conecté los pines de esta manera.:
VCC -> Arduino pin 5 V
Pin> Arduino GND – GND
Trig -> Arduino digital Pin 2
Echo -> Arduino digital Pin
El Trig pin se utiliza para enviar la señal y el Echo pin se utiliza para escuchar para el retorno de la señal.
Después de mi cableado desordenado el montaje final se veía así:
Obtención de datos desde el sensor
El código es bastante sencillo. Tomé el ejemplo de código original para Ping))) del sensor y acaba de modificar la clavija de salida sea Pin digital 2 , el pin de entrada para ser digital Pin 4 y duración de disparo a 10 de nosotros.
/ * HC-SR04 del sensor https://www.dealextreme.com/p/hc-sr04-ultrasonic-sensor-distance-measuring-module-133696 Este bosquejo lee un telémetro ultrasónico HC-SR04 y devuelve el distancia al objeto más cercano en el rango. Para ello, envía un pulso para el sensor para iniciar una lectura, luego capta un pulso para volver. La longitud del impulso de retorno es proporcional a la distancia del objeto desde el sensor. El circuito: * La conexión de VCC del sensor conectado a +5 V * Conexión GND del sensor conectado a tierra * Conexión TRIG del sensor conectado al pin digital 2 * Conexión ECHO del sensor conectado al pin digital 4 Código original para Ping))) ejemplo fue creado por David A. Mellis Adaptado para HC-SR04 por Tautvidas Sipavicius Este código de ejemplo se encuentra en el dominio público. * / const int trigPin = 2; const int echoPin = 4; void setup() { / / Inicializa la comunicación en serie: Serial.begin(9600); } void loop() { / / Establecer las variables de duración del ping, / / Y el resultado la distancia en pulgadas y centímetros: long duration, inches, cm; / / El sensor se activa por un alto pulso de 10 microsegundos o más. / / Dale un pulso BAJO corta de antemano para asegurar un pulso ALTO limpia: pinMode(trigPin, OUTPUT); digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); / / Leer la señal del sensor: un pulso ALTO cuya / / Duración es el tiempo (en microsegundos) por el envío / / Del ping para la recepción de su eco fuera de un objeto. pinMode(echoPin, INPUT); duration = pulseIn(echoPin, HIGH); / / Convertir el tiempo en una distancia inches = microsecondsToInches(duration); cm = microsecondsToCentimeters(duration); Serial.print(inches); Serial.print("in, "); Serial.print(cm); Serial.print("cm"); Serial.println(); delay(100); } long microsecondsToInches(long microseconds) { / / Según la hoja de datos del paralaje para el PING))), hay / / 73,746 microsegundos por pulgada (es decir, el sonido viaja a 1130 pies por / / Segundo). Esto le da a la distancia recorrida por el ping, saliente / / Y el regreso, así que dividimos por 2 para obtener la distancia del obstáculo. / / Ver: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf return microseconds / 74 / 2; } long microsecondsToCentimeters(long microseconds) { / / La velocidad del sonido es de 340 m / s ó 29 microsegundos por centímetro. / / La mesa de ping viaja de ida y vuelta, por lo que para encontrar la distancia del / / Object tomamos la mitad de la distancia recorrida. return microseconds / 29 / 2; }
Después de compilar, cargar y ejecutarlo, en el Serial Monitor ( Herramientas -> Serial Monitor o Ctrl + Shift + M ), el sensor estaba enviando datos correctos!
Después de un poco de perder el tiempo me enteré de que el rango es de aproximadamente 2 cm – 300 cm. Que no, no es malo, pero perfecto.
Tuitear 4.170 Veces leído 0 comentarios |
5 junio 2014 en Electronica | tags: Arduino, Circuitos electrónicos, Electronica |