viernes, 10 de abril de 2015

Sensor de distancia/ultrasonido HC-SR04










El sensor de distancia ultrasónico HC-SR04 es una excelente opción si estás buscando un módulo ultrasónico potente pero barato y que sea compatible con Arduino y otras plataformas de microcontroladores. Éste es uno de los módulos ultrasónicos más económicos en el mercado, ¡pero sigue siendo uno de los mejores! Su rendimiento estable es incomparable: la resolución es tan baja como de 3mm, tiene una alta precisión, funciona con 5V (DC), es altamente compatible con las tarjetas Arduino, etc.

Características:

Voltaje de funcionamiento: 5V (DC)
Corriente estática: <2 mA
Trabajo actual: 15mA
Frecuencia de trabajo: 40KHz
Señal de salida: frecuencia de la señal eléctrica, 5V de alto nivel, bajo nivel de 0V
Ángulo Eficaz: <15 º
Distancia de detección: 2 cm - 450 cm
Resolución: 0,3 cm
Medición de ángulo: 30 º
Disparo de la señal de entrada: TTL pulso 10μs
Echo señal de salida: señal PWL de TTL
VCC = +5VDC

Trig = Entrada de Trigger de sensor

Echo = Salida de Echo de sensor

GND = GND


La salida de "velocidad" es solo una muestre como aproximadamente debería ser

Código del sensor de distancia con un LED como muestro en la foto
//sensor de distancia
int ecoPin= 12;  // cabe amarillo
int trigPin= 13; // cable blanco
//led
int ledPin= 8; 

long duracion, distancia; //distancia

void setup(){
  Serial.begin(9600); 
  pinMode(trigPin, OUTPUT);   //envia la señal de ultrasonido
  pinMode(ecoPin, INPUT);     //reciba la señal de ultrasonido
  pinMode(ledPin, OUTPUT);    //prende el LED
}

 void loop(){
 //funcionamento del sensor envia y recibe la señal
 digitalWrite(trigPin, LOW);  delayMicroseconds(2); 
 digitalWrite(trigPin, HIGH); delayMicroseconds(5); 
 digitalWrite(trigPin, LOW);
 //fin
 duracion = pulseIn(ecoPin, HIGH); 
  //HIGH Si alto, comienza a contar
  //LOW se detiene el tiempo
  //http://arduino.cc/en/pmwiki.php?n=Reference/PulseIn 
  //retorna el pulso en microsegundos
 
 distancia = microsecondsToCentimeters(duracion);
 //transformo los microsegundos en centimetros
 
 Serial.print ("Tiempo en microsegundos: "); Serial.print(duracion);
 Serial.print("  Distancia estimada: "); Serial.print(distancia);
 Serial.print(" cm");
 Serial.println(" ");  
 delay(1000);
 if(distancia>70){
   digitalWrite(ledPin, HIGH);
   delay(20);}
 if(distancia<70){
   digitalWrite(ledPin, LOW);
   delay(20);}
 }
long microsecondsToCentimeters(long microseconds){
  // La velocidad del sonido a 20º de temperatura es 340 m/s o
  // 29 microsegundos por centrimetro.
  // La señal tiene que ir y volver por lo que la distancia a 
  // la que se encuentra el objeto es la mitad de la recorrida.
  return microseconds / 29 / 2;
}

Fuente: http://arduino.cc/en/pmwiki.php?n=Tutorial/Ping

Como se vería si trabajamos con un Arduino NANO

2 comentarios: