sensor-ultrasonido-bitbloq-2

¿Qué es un sensor de ultrasonidos?

Un sensor de ultrasonidos es un componente que utiliza ondas de alta frecuencia para saber la distancia a un objeto. Este tipo de sensores tienen dos partes, una es el emisor que emite la señal y la otra el receptor que recibe la señal si ésta rebota sobre algún obstáculo cercano.

Este sistema es el mismo que utilizan los murciélagos para orientarse y se aplica de forma similar en robótica para detectar obstáculos y medir distancias.

Vaya, cuántos cables… ¿Cómo se conecta el sensor de ultrasonidos?

El sensor de ultrasonidos tiene cuatro pines marcados como: GND, ECH, TRI, VCC.

El TRI (Trigger) es el encargado de ordenar al sensor que emita la onda y el ECH (Echo) la recibe. En función del tiempo que transcurre entre la emisión y recepción de la señal, nuestra placa calcula la distancia. Estos dos cables deben ir conectados a un pin de señal, que en tu placa ZUM son de color blanco. Los otros dos cables, GND y VCC, se conectan a cualquier pin negro y rojo respectivamente.

Comprobemos cómo funciona

Podemos visualizar la distancia a un objeto utilizando el puerto serie. El sensor de ultrasonidos siempre nos devolverá la distancia en centímetros.

Sensor de aparcamiento

¡Qué desastre! acabo de sacarme el carnet de conducir y el tema de aparcar aún no lo tengo dominado. Se que aparcar “de oído” no es lo correcto, pero soy incapaz de calcular bien las distancias. Si tuviera algún sistema que me informara antes de golpear al vehículo de atrás…

Vamos a diseñar un sistema que avise al conductor de la distancia que le separa de otros objetos para facilitar las maniobras de estacionamiento. Para ello, programamos que cuando la distancia a un objeto sea menor de 50 cm, el zumbador comience a emitir un pitido intermitente, que irá pitando con más frecuencia cuanto más se vaya aproximando.
Primero creamos la variable tiempo como el valor de la distancia devuelto por el sensor de ultrasonidos y lo multiplicamos por 10. Esto nos permitirá percibir mejor cómo varía el intervalo entre pitidos del zumbador.

Aún hay más

    A continuación te proponemos algunas ideas para seguir practicando:

  • Con un sensor de ultrasonidos y un zumbador, podemos diseñar un theremín electrónico, un instrumento muy peculiar. Simplemente piensa en la manera de relacionar la distancia detectada con la frecuencia emitida. Si necesitas inspiración, aquí tienes un ejemplo para Arduino.
  • Si dispones de un PrintBot u otro robot similar, ya puedes programar ¡un robot esquiva obstáculos!


Programar un robot capaz de resolver un laberinto, esquivar obstáculos, avisarte cuando hay algún objeto cerca… Este componente nos va a dar mucho juego al incorporarlo en nuestros robots, permitiendo un comportamiento mucho más autónomo. ¿Se te ocurren más ideas originales? ¡Compártelas con nosotros!

14 comentarios

  1. He probado varios ejemplos, y siempre obtengo este error al compilar:

    Error al compilar: D:/usuarios/usuario/.web2board/tmp.ino:10: error: ‘US’ does not name a type D:/usuarios/usuario/.web2board/tmp.ino: In function ‘void loop()': D:/usuarios/usuario/.web2board/tmp.ino:16: error: ‘sensorUltrasonidos’ was not declared in this scope

    El código Arduino que genera es este:

    /*** Included libraries ***/
    #include
    #include
    #include
    #include

    /*** Global variables and function definition ***/
    int zumbador_A13 = 13;US sensorUltrasonidos(3,2);

    /*** Setup ***/
    void setup(){}

    /*** Loop ***/
    void loop(){float distancia = sensorUltrasonidos.read();float tiempo = distancia * 10;if(distancia < 50){tone(zumbador_A13,500,tiempo);
    delay(tiempo);delay(tiempo);}}

    1. Pablo Lozano

      Hola Mariano,

      Parece que hay un problema a la hora de incluir las librerías.
      ¿Podrías escribir a nuestros compañeros de soporte a través de support-bitbloq@bq.com para que te puedan ayudar?
      Les sería de gran ayuda que les dijeses que sistema operativo tienes, y en que arquitectura (32 o 64 bits)

      Muchas gracias y disculpa las molestias.

      Un saludo.

      1. Tengo el mismo problema con el sensor de ultrasonidos comentado anteriormente. Trabajo con Windows XP 32 bits.

        1. Pablo Lozano

          Hola David,

          ¿Podrías probar a desinstalar web2board, y volver a instalarlo? De esta forma se deberían reinstalar las librerías correctamente.

          Si el problema persiste contacta con soporte, por teléfono o e-mail a través de las siguiente página: http://bitbloq.bq.com/#/bitbloq-help/

          Un saludo.

  2. Buenos días.

    He montado el robot pero no me queda claro donde conectar los cables V y G del sensor de ultrasonidos. ¿En qué pines exactos se deben conectar?

    Gracias.

    1. SGracia

      Buenos días, Juanjo:

      Los cables V y G los debes conectar en cualquiera de los pines analógicos V y G, es decir, el cable negro (GND) lo puedes conectar en cualquier PIN negro desde el A0 al A5, y el cable naranja (VCC)lo puedes conectar en cualquier PIN rojo del A0 al A5.

  3. Buenas!

    Estoy intentando probar el sensor ultrasonido programando el ejemplo que ofrecéis, para que responda el zumbador cuando se acerque a un objeto y no consigo que funcione. He conectado el cable TRI al s3, el ECH al s2 y el GND y VCC al v3 y gA1 respectivamente, el código de programación es el siguiente:

    /*** Included libraries ***/
    #include
    #include
    #include

    /*** Global variables and function definition ***/
    int zumbador_0 = 13;
    US ultrasonidos_0(4, 2);
    bqSoftwareSerial puerto_serie_0(0, 1, 9600);

    /*** Setup ***/
    void setup() {
    puerto_serie_0.println(ultrasonidos_0.read());
    }

    /*** Loop ***/
    void loop() {
    float distancia = ultrasonidos_0.read();
    float tiempo = (distancia * 10);
    if (distancia < 50) {
    tone(zumbador_0, 500, tiempo);
    delay(tiempo);
    delay(tiempo);
    }
    }
    No responde ante ningún objeto, en el serial monitor aparece todo el rato el mismo numero 999.
    Gracias.

    1. SGracia

      Buenos días, María:

      Por lo que comentas, parece que el problema está en dónde has conectado el TRI en la placa, pues, en el código, indica que has empleado el PIN 4.

      Puedes arreglarlo conectando el cable del TRI en el PIN 4 o cambiando la conexión en Bitbloq y colocándolo en el PIN 3.

      1. Es verdad, pero nada. Además ahora en el serial monitor solo aparece una línea con 1000.00 en ocasiones anteriores leía continuamente 999.

        Gracias.

        1. SGracia

          Hola de nuevo María:

          Disculpa, pero tras leer de nuevo tu primer comentario veo que indicas que has conectado el GND y VCC al v3 y gA1, es decir, ¿el GND está en el V (PIN rojo) y el VCC está en el G (PIN negro)?

        2. Hola a todos. A mi me ocurre los mismo que a Maria. El puerto serie recibe 1000.00 independiente de poner algo o no delante del sensor.

  4. Hola a todos:

    Me pasa algo similar a María. Sólo recibo por el Serial monitor el valor 1000.00.
    En mi caso TRI en S4, ECHO en S5, GND en A4G y VCC en A5V.

    /*** Included libraries ***/
    #include
    #include
    #include

    /*** Global variables and function definition ***/
    const int zumbador = 12;
    US ultrasensor(4, 5);
    bqSoftwareSerial puerto_serie(0, 1, 9600);

    /*** Setup ***/
    void setup() {}

    /*** Loop ***/
    void loop() {
    float distancia = ultrasensor.read();
    float tiempo = (distancia * 10);
    puerto_serie.println(distancia);
    }

    1. Hola chicos. Revisando en este foro y en los otros colgados en:
      http://www.mibqyyo.com/comunidad/discussion/63008/ultrasonido-no-funciona/p1
      http://www.mibqyyo.com/comunidad/discussion/65670/sensor-ultrasonidos/p1
      Veo que a otros les ocurre el mismo problema estando aparentemente bien conectados los pines del sensor pero nadie da una respuesta a por qué el sensor devuelve al puerto serie siempre el mismo valor. Si es un problema del sensor y hay que cambiarlo que lo digan para no estar esperando una semana tras otra a que alguien de la solucion a ese problema.

      1. Enrique Heredia

        Hola,
        Hemos estado probando y no hemos detectado ningún fallo en varios de los sensores testados. Una lectura de 1000 constantemente puede deberse a que los cables no estén conectados correctamente. Por ejemplo en el caso del cable cuádruple, el cable rojo no coincide con VCC del sensor si no con el ECH. Es el cable naranja el que se debe conectar a VCC. ¿Lo has tenido en cuenta?
        Si la placa está apagada (recuerda que tiene un interruptor) no detectará la lectura correcta.
        Si esto no lo resuelve es posible que esté dando problemas el sensor en sí, si ese es el caso ponte en contacto con soporte.3d@bq.com para que te lo solucionen.
        Un saludo

Los comentarios están cerrados.