MEDIR DISTANCIAS CON SENSOR US-100 o HC-SR04 PARA ARDUINO

1 – MEDIR DISTANCIAS CON ARDUINO

Para este montaje vamos a necesitar los siguientes elementos:

– Una Placa Protoboard.

– Una Placa Arduino (En mi caso uso la Arduino UNO).

– Un Módulo sensor ultrasonidos US-100 o HC-SR04 (Desconozco si existen otros módulos de ultrasonidos similares).

– Un Display LCD 16×2.

– Dos Potenciómetros de 10Kohm.

– Unos cuantos Cables para protoboard.

Tenemos que asegurarnos de que quitamos el jumper del modulo de ultrasonidos que esta colocado en los pines “UART Select”, una vez hecho esto hacemos el siguiente montaje:

Con los potenciómetros regulamos el brillo y el contraste del LCD en el que visualizaremos la distancia medida con el sensor de ultrasonidos.

El programa que he utilizado para realizar la medida y mostrarla es el siguiente:

//http://zygzax.com/webproyectos/websensorus-100/
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const int trigger=10;
const int echo=13;

float distance;

void setup(){
Serial.begin(9600);
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
lcd.begin(16,2);
}

void loop(){
//Inicializamos el sensor
digitalWrite(trigger,LOW);
delayMicroseconds(5);
// Comenzamos las mediciones
// Enviamos una señal activando la salida trigger durante 10 microsegundos
digitalWrite(trigger,HIGH);
delayMicroseconds(10);
digitalWrite(trigger,LOW);
// Adquirimos los datos y convertimos la medida a metros
distance=pulseIn(echo,HIGH); // Medimos el ancho del pulso
// (Cuando la lectura del pin sea HIGH medira
// el tiempo que transcurre hasta que sea LOW
distance=distance*0.0001657;
// Enviamos los datos medidos a traves del puerto serie y al display LCD
Serial.println(distance);
lcd.setCursor(0,0);
lcd.print(distance);
delay(100);
}

 

2 – ALARMA CON EL SENSOR DE ULTRASONIDOS

Esta alarma sonará cuando la distancia leída baje de un determinado limite que estableceremos con un potenciómetro. Para usar el sensor de ultrasonidos como una alarma, que se active cuando la distancia baja de un determinado umbral establecido con un potenciómetro tendremos que añadir al circuito del apartado anterior un altavoz piezoeléctrico y un potenciómetro. Las conexiones serían las siguientes: En el código del programa tendremos que añadir la lectura de la entrada analógica del potenciómetro y su adaptación de bits (0-1023) a metros (0-3). También tendremos que configurar una salida pwm que haga sonar el altavoz.

//http://zygzax.com/webproyectos/websensorus-100/
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const int trigger=10;
const int echo=13;
const int altavoz=9;
const int potAlarma=0;

float distance;
int val;
float lim;

void setup(){
Serial.begin(9600);
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
lcd.begin(16,2);
}

void loop(){

//Leemos el valor del potenciometro que nos indica el limite de la alarma
val=analogRead(potAlarma);
lim=val*0.00293;
//Inicializamos el sensor
digitalWrite(trigger,LOW);
delayMicroseconds(5);
// Comenzamos las mediciones
// Enviamos una señal activando la salida trigger durante 10 microsegundos
digitalWrite(trigger,HIGH);
delayMicroseconds(10);
digitalWrite(trigger,LOW);
// Adquirimos los datos y convertimos la medida a metros
distance=pulseIn(echo,HIGH); // Medimos el ancho del pulso
// (Cuando la lectura del pin sea HIGH medira
// el tiempo que transcurre hasta que sea LOW
distance=distance*0.0001657;
//Alarma
if(distance<lim){
analogWrite(altavoz,100);
}
else{analogWrite(altavoz,0);}

// Enviamos los datos medidos a traves del puerto serie y al display LCD
Serial.println(distance);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(&quot;Distancia:&quot;);
lcd.setCursor(12,0);
lcd.print(distance);
lcd.setCursor(0,1);
lcd.print(&quot;Limite:&quot;);
lcd.setCursor(9,1);
lcd.print(lim);
delay(50);
}

 

Para ver como leer los datos del sensor con Matlab por el puerto serie: Tutorial leer datos de Arduino con Matlab por el puerto serie.

58 pensamientos en “MEDIR DISTANCIAS CON SENSOR US-100 o HC-SR04 PARA ARDUINO

  1. francisco

    hola disculpa una pregunta copio y pego el programa y ala hora de copilar me sale este error
    Arduino:1.6.3 (Windows 8.1), Placa:”Arduino Uno”

    proy.ino:2:10: error: #include expects “FILENAME” or

    proy.ino:3:1: error: ‘LiquidCrystal’ does not name a type

    proy.ino: In function ‘void setup()':

    proy.ino:18:3: error: ‘lcd’ was not declared in this scope

    proy.ino: In function ‘void loop()':

    proy.ino:40:13: error: ‘amp’ was not declared in this scope

    proy.ino:40:16: error: expected ‘)’ before ‘;’ token

    proy.ino:40:17: error: ‘lt’ was not declared in this scope

    proy.ino:40:23: error: expected ‘;’ before ‘)’ token

    proy.ino:43:1: error: ‘else’ without a previous ‘if’

    proy.ino:47:3: error: ‘lcd’ was not declared in this scope

    proy.ino:49:14: error: ‘amp’ was not declared in this scope

    proy.ino:49:18: error: ‘quot’ was not declared in this scope

    proy.ino:49:43: error: expected primary-expression before ‘)’ token

    proy.ino:49:43: error: expected ‘;’ before ‘)’ token

    proy.ino:53:40: error: expected primary-expression before ‘)’ token

    proy.ino:53:40: error: expected ‘;’ before ‘)’ token

    Error de compilación

    This report would have more information with
    “Show verbose output during compilation”
    activala desde Archivo > Preferencias

      1. ivan.rodrigo

        mmm la paguina no muestra al parecer lo que esta dentro de ()
        #include () escribe esto sin parentesis en vez de #include &lt;LiquidCrystal.h&gt;

        1. Alfonso

          Pues entonces ya me quedé sin terminar el proyecto, ponlo quizá con espacios o algo, que se yo, no se si tu blog es de blogger o de wordprees o de que pero cada uno tiene la manera de escribir código en los comentarios o cámbialo en el post y avisa que ya está arreglado porque entonces esto no sirvió de nada.

        2. Alfonso

          Espero te sirva este link para resolver tus dudas, es simple y al parecer si funciona.

          Como cambiar el código

          //http://zygzax.com/webproyectos/websensorus-100/
          #include <&lt;LiquidCrystal.h&gt>;
          LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

          Te dejo el blog con la explicación:

      2. andres

        ya hice todo lo que dices ahi y me sigue saliendo el error que otra cosa puedo hacer

  2. Emilio

    quiero que el pitido del parlante se vaya aumentando según el objeto se vaya acercando …por que apenas pongo el objeto solo suena piiiiiiiiiiiiii y asi se queda ayuda porfavor.

    1. Michael VArgas

      Hola, facil haces el circuito con un transistor por ejemplo un 2N222, la base del transistor le conectas una resistencia de 1k y luego lo conectas a un pin PWM del arduino, el buzzer el positivo lo conectas a una fuenta depende de tu buzzer puede ser 5v y el negativo del buzzer lo conectas al colector del transistor y por ultimo conectas el emisor a tierra :) segun la distancia varias el PWM de 8 bits

  3. LEOPOLDO MARTINEZ

    mi pregunta es la siguiente: Armé el diagrama tal y como lo especificas (el de sensor ultrasonico sin alarma y con pantalla LCD) pero me sale este mensaje cuando lo cargo:

    Tamaño binario del Sketch: 6,028 bytes (de un máximo de 32,256 bytes)
    avrdude: stk500_getsync(): not in sync: resp=0x30

  4. loraine A

    Hola tengo una pregunta a que te refieres con
    const int trigger=10;

    ( trigger que es ?)

    const int echo=13;

    ( echo que es ?)
    const int altavoz=9;

    (el altavoz es un buzzer ?)

    const int potAlarma=0;

    la alarma que es en el circuito ? no entiendo

    int val; ( para que usamos este)???

    porfavor responde Javier

  5. Pingback: Manejo de sensores y servomotores arduino | El blog de arduino

  6. carlos

    como habría que conectarse si quiero que la alarma se active cuando la distancia en vez de disminuir aumente. Es decir en vez de que se active cuando el objeto se acercar se active cuando e objeto se aleje.

  7. Javier

    que tal, saludos!!
    una pregunta, hice un programa parecido al ejemplo que explicas con la alarma, pero en lugar de utilizar el monitor serial de arduino para observar la distancia, quisiera utilizar el programa processing para saber la distancia medida en una gráfica,
    ¿me podrías ayudar?

Los comentarios están cerrados.