Trastejant

Crea, comparte, aprende y disfruta

Sensor de Ultrasonidos SR04

SR04

El sensor SR04 esta compuesto por dos elementos, un emisor de ultrasonidos y un micrófono capaz de «escuchar» esas frecuencias.

Ambos elementos apuntan en la misma dirección, por lo tanto si algún objeto se sitúa frente a él las ondas sonoras rebotarán y el sensor podrá escucharlas de vuelta. De esta manera sabrá que tenemos un objeto delante. Si además calculamos lo que ha tardado en volver y lo multiplicamos por la velocidad del sonido sabremos la distancia a la que está.

Sensor SR04

Pin Función Descripción
1 Vcc Alimentación (5V)
2 Trig Entrada. Le indica al sensor que debe enviar un impulso ultrasónico.
3 Echo Salida. Devuelve lo captado por el sensor.
4 GND Conectado a tierra

Funcionamiento

El SR04 funciona de forma similar a como lo hace el sonar de un un barco o un submarino.

Envía ondas ultrasónicas que no pueden ser escuchadas por los humanos – aun que si por otros animales, como los perros. Cuidad si hay mascotas cerca.- estas ondas sonoras de propagan y si encuentran un objeto chocan y regresan en forma de eco.

El sensor escucha este eco y manda la señal de que hay un objeto delante.
Pero no solo eso, ya que sabemos que el sonido se desplaza por el aire a una velocidad de 343 m/s es fácil calcular la distancia a la que se encuentra nuestro obstáculo simplemente multiplicando el tiempo que tardo el eco en volver por la constante de la velocidad del sonido.

Montajes con el SR04

Veamos algunos ejemplos de como usar el sensor SR04.

SR04 con Arduino

La conexión es muy simple:

Circuito con SR04 y Arduino

Pin del Sensor Pin del Pingüino
Trig 9
Echo 8
Vcc +
GND GND

Y gracias a la librería Ultrasonic la programación es igual de simple:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include 
 
Ultrasonic ultrasonic(9,8); // (Trig PIN,Echo PIN)
 
void setup() {
  Serial.begin(9600); //abrimos la comunicación serial
}
 
void loop()
{
  Serial.print(ultrasonic.Ranging(CM));//mostramos la distancia
  Serial.println(" cm" );
  delay(500);//Esperamos 500 milisegundos antes de tomar otra lectura
}

 

SR04 y Raspberry Pi

También podemos usar este sensor con Raspberry Pi, es igualmente sencillo:

SR04 y Raspberry Pi

Pin Sensor de Ultrasonidos GPIO de Raspberry
 TRIGGER  25
 ECHO  07
 Vcc  5V
 GND GND

El programa en Python que usaremos para leer los sensores también es sencillo:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import time                #Importamos time (time.sleep)
GPIO.setmode(GPIO.BCM)     #Ponemos la placa en modo BCM
GPIO_TRIGGER = 25          #Usamos el pin GPIO 25 como TRIGGER
GPIO_ECHO    = 7           #Usamos el pin GPIO 7 como ECHO
GPIO.setup(GPIO_TRIGGER,GPIO.OUT)  #Configuramos Trigger como salida
GPIO.setup(GPIO_ECHO,GPIO.IN)      #Configuramos Echo como entrada
GPIO.output(GPIO_TRIGGER,False)    #Ponemos el pin 25 como LOW
 
 
try:
    while True:     #Iniciamos un loop infinito
        GPIO.output(GPIO_TRIGGER,True)   #Enviamos un pulso de ultrasonidos
        time.sleep(0.00001)              #Mantenemos el pulso durante un instante           GPIO.output(GPIO_TRIGGER,False)  #Apagamos el pulso
        start = time.time()              #Guarda el tiempo actual mediante time.time()
        while GPIO.input(GPIO_ECHO)==0:  #Mientras el sensor no reciba señal...
            start = time.time()          #Mantenemos el tiempo actual mediante time.time()
        while GPIO.input(GPIO_ECHO)==1:  #Si el sensor recibe señal...
            stop = time.time()           #Guarda el tiempo actual mediante time.time() en otra variable
        elapsed = stop-start             #Obtenemos el tiempo transcurrido entre envío y recepción
        distance = (elapsed * 34300)/2   #Distancia es igual a tiempo por velocidad partido por 2   D = (T x V)/2
        print distance                   #Devolvemos la distancia (en centímetros) por pantalla
        time.sleep(1)                    
except KeyboardInterrupt:                #Si el usuario pulsa CONTROL+C...
    print "quit"                         #Avisamos del cierre al usuario
    GPIO.cleanup()                       #Limpiamos los pines GPIO y salimos

SR04 y Pingüino

Por supuesto también podemos usar este sensor con Pingüino, bastará realizar el siguiente montaje:

SR04 y Pinguino

Pin del Sensor Pin del Pingüino
Trig 8
Echo 9
Vcc +
GND GND

Y programarlo para que tome las lecturas, de una forma muy similar a la lógica empleada en Raspberry Pi:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#define Trig 8 //Configuro el pin 8 como el Trig
#define Echo 9 //Configuro el pin 9 como el echo
int Lectura;
 
void setup(){
pinMode(Trig, OUTPUT);//Configuro el pin 8 como una salida
pinMode(Echo, INPUT);//configuro el pin 9 como una entrada
Lectura=0;//inicializo la variable
TRISB=0;//Configuro puerto B como salida
}
 
void loop() {
while (digitalRead(Echo) == LOW) {
digitalWrite(Trig, HIGH);//Envio un pulso de ultrasonido
delayMicroseconds(50);//Duración del pulso
digitalWrite(Trig, LOW);//Fin del pulso
}
while (digitalRead(Echo) == HIGH) {//Espero al eco de mi pulso ultrasonico
Lectura++;//voy almacenando el tiempo que tarda en llegar el eco
delayMicroseconds(58);//Tiempo en recorrer dos centimetros 1 de ida 1 de vuelta
}
PORTB=Dato;//Muestro dato por el puerto B
delay(1000);//Espera un segundo para visualizar el dato
Dato=0;//Reinicio dato a 0
}

También te puede interesar...

No hay temas relacionados

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.