Non-blocking Sensor de ultrasonidos para Arduino

El módulo alcance ultrasonido HC-SR04 es una fantástica adición a cualquier proyecto de robot. Su seguimiento un robots (suponiendo que nos hemos fijado puntos de referencia) en un rango reportado de 2 400cm con exactitudes de 3mm de posibles de forma muy sencilla y barata. También es una gran manera de añadir la evitación del objeto para detener tu preciosa creación estrellándose en el escenario.

La operación de los módulos es muy sencilla. Cuando se dispara con un pulso de 10us en el pasador del gatillo el módulo envía ocho pulsos de ultrasonidos de 40kHz. El módulo entonces toma el pin eco alta y mantiene allí hasta que recibe un eco hacia el módulo. La longitud del tiempo que el pin eco es alta es directamente proporcional a la distancia a un objeto. De hecho, este tiempo es el tiempo que tardan los pulsos para viajar hacia el objeto y hacia atrás y, porque sabemos que la velocidad del sonido a 20° C en aire seco a nivel del mar en 343.2 m/s, podemos utilizar la siguiente fórmula para calcular la distancia entre el módulo y el objeto:

distancia (m) = (veces * velocidad (m/s)) / 2

Como vamos a medir el tiempo en microsegundos es fácil para nosotros trabajar cuánto sonido viaja por microsegundo y simplemente multipliquen el tiempo medido por este número.

343.2 m/s = 0.0343.2cm/us

Así que ahora podemos decir:

distancia (cm) = (time(us) * speed(cm/us)) / 2 = (tiempo * 0.0343.2)/2

Como multiplicar y dividir son medidas costosas (en términos de tiempo) en un microcontrolador que puede también dividir la constante de velocidad por 2 ahora y ahorra el esfuerzo de repetición más adelante, así:

distancia (cm) = time(us) * 0.01716

Ahora, vamos a medir un número (entero) entero de microsegundos y sabemos que el flotante punto matemáticas es menos eficiente en un microcontrolador que el entero equivalente. Así, en vez de multiplicando la cantidad medida de tiempo por un flotante punto número podríamos dividirlo por un entero porque 0.01716 es aproximadamente igual a 1/58, así:

distancia (cm) = time(us) / 58(cm/us)

Utilizando el mismo método podemos determinar que la distancia a un objeto en pulgadas es el siguiente:

distancia (en) = time(us) / 148(in/us)

Así que, ahora que sabemos cómo funciona el sensor, cómo usarlo y cómo obtener un valor útil de su salida. El problema final, para mí, es que esperando el pin de echo ir baja bloqueará la ejecución de programas. Esto significa que espera el módulo tomar una lectura no podemos hacer otra cosa. Dada la gama de módulos de 400cm nos podríamos estar esperando tanto como 23ms. Ahora, esto no puede parecer mucho, pero para un robot que tiene un bucle de control iterativo y muchas otras cosas para hacer (controladores motores, otros datos de sensor) esto es una demora significativa.

Afortunadamente, hay una manera que el microcontrolador puede decirnos cuándo cambia el pin eco en lugar de nosotros tener que observar y esperar. Este mecanismo se llama una 'interrupción' porque el microcontrolador literalmente interrumpe la ejecución del programa cuando una condición de interrupción ocurre y llamar a una función de nuestra elección. Y este es el método que he usado para este ejemplo. Cuando el pin eco va alto al principio de las nuestra interrupción se llama rutina de servicio (ISR, función que se ocupa de la interrupción) y guardamos la hora actual en nuestra hora de inicio. Cuando el pin eco baja al final de la que van nuestro ISR se llama otra vez y nos guarde la hora actual como nuestro tiempo de fin. La diferencia entre los tiempos de inicio y el final es el tiempo necesario para que los que van. ¡ Simple! Hay un montón de recursos que hay que describen cómo interrumpe el momento mejor que he podido y ya he escrito mucho por aquí mucho! También, he envuelto el código en una biblioteca pequeña, así que si quieres usarlo y no importa cómo funcionan las interrupciones, no necesita.

Artículos Relacionados

SensoDuino: Convertir su teléfono Android en un concentrador de sensores inalámbricos para Arduino

SensoDuino: Convertir su teléfono Android en un concentrador de sensores inalámbricos para Arduino

Actualizaciones23 de noviembre de 2013: SensoDuino 0.160 obtiene una cara izquierda.19 de noviembre. 2031: opinión: la increíble sinergia entre Arduino y Android.19 de noviembre de 2013: SensoDuino 0.159 está hacia fuera. Fecha teléfono Android (y, m
Cómo usar un Sensor de ultrasonidos con Arduino

Cómo usar un Sensor de ultrasonidos con Arduino

Sensores de ultrasonidos HC-SR04 pueden medir distancias con bastante precisión y son muy útiles en muchos proyectos de Arduino. He utilizado les en robots autónomos, instrumentos electrónicos y muchos otros proyectos. Tienen una gama de 2 cm - 400 c
Detector ultrasónico gama utilizando Arduino y el sensor de ultrasonidos de SR04

Detector ultrasónico gama utilizando Arduino y el sensor de ultrasonidos de SR04

este es un instructivo preliminar que le llevará a través de los pasos para obtener el SR04 SENSOR ultrasónico conectado y trabajando para el Arduino. Luego se incorporará a mi monitor de medio ambiente mini.  Finalmente, si todo se ajusta, terminará
Como hacer un Sensor de distancia por ultrasonidos Simple Arduino

Como hacer un Sensor de distancia por ultrasonidos Simple Arduino

Se trata de un simple tutorial de como hacer un sensor de distancia ultrasonido Arduino en centímetros. Usted necesitará saber cómo utilizar un protoboard, electrónica básica y Arduino.Paso 1: Qué es un Sensor de ultrasonidos Un sensor ultrasónico es
Contar y medir objetos usando arduino y potenciómetro o un sensor de ultrasonidos en un transportador de producción

Contar y medir objetos usando arduino y potenciómetro o un sensor de ultrasonidos en un transportador de producción

Este instructable explica cómo utilizar un potenciómetro y un sensor de ultrasonidos con arduino para registro de cuenta de medida diferentes objetos sobre una cinta transportadora. También habrá algunos LED que parpadea con rapidez diferentes y un n
Jugar Block Breaker(Unity3D) con sensor ultrasónico de Arduino

Jugar Block Breaker(Unity3D) con sensor ultrasónico de Arduino

en este instructable que mostrará usted chicos cómo hacer un bloque breaker juego y jugarlo usando un sensor de ultrasonidos de arduino que será utilizado como un detector de proximidad para moe nuestra paleta izquierda y derechaUsted puede seguir el
Sensor de pulso LED (PPG) para Arduino

Sensor de pulso LED (PPG) para Arduino

Dentro de este Instructable te mostraré, cómo implementar un simple sensor PPG (photoplethysmogram) para arduino. Este dispositivo utiliza luz infrarroja para medir pulso usted. Puede conocer esta técnica de los sensores del pulso de la yema del dedo
Capturar la imagen mediante sensor ultrasónico con arduino

Capturar la imagen mediante sensor ultrasónico con arduino

Llevo muy pocos meses en el espacio de la IOT y tratar de integrar cosas con placa Arduino, recientemente me encontré con sensor ultrasónico, es interesante. Así que pensé en crear un pequeño proyecto. El objetivo del proyecto es capturar el obstácul
Sensor de ultrasonidos detecta alguien delante de su ordenador portátil

Sensor de ultrasonidos detecta alguien delante de su ordenador portátil

Como un recién llegado al mundo de Arduino que quiero compartir con ustedes mi primer proyecto con el dispositivo ultrasónico.Después de leer esto, usted sabrá cómo obtener la hora exacta cuando alguien se sienta frente a su computadora y grabar en u
Como interfaz de Sensor de ultrasonidos (HCSR04) para arduino uno

Como interfaz de Sensor de ultrasonidos (HCSR04) para arduino uno

Sensores de ultrasonidos son mucho más eficientes que otros sensores de detección de obstáculo. Sensores ultrasónicos relativamente baratos y también los emisores de ultrasonido y detectores son portables sin necesidad de circuitos complejos. Se ofre
Cómo utilizar el Sensor de ultrasonidos HC-SR04 - Arduino Tutorial

Cómo utilizar el Sensor de ultrasonidos HC-SR04 - Arduino Tutorial

El sensor de ultrasonidos HC-SR04 utiliza el sonar para determinar distancia a un objeto como murciélagos o delfines. Ofrece detección de gama sin contacto excelente con alta exactitud y las lecturas estables en un paquete fácil de usar. Desde 2cm ha
Sensor de ultrasonidos en openFrameworks utilizando Arduino

Sensor de ultrasonidos en openFrameworks utilizando Arduino

Este instructivo le permitirá enviar gama encontrar datos a openFrameworks (de) por medio de una entretela de Arduino con un sensor de ultrasonidos, específicamente el HC-SR04. Este sensor es conocido por sus problemas para comunicarse con la bibliot
Cómo hacer un instrumento de Arduino (usando un Sensor de ultrasonidos)

Cómo hacer un instrumento de Arduino (usando un Sensor de ultrasonidos)

Este instrumento se realiza utilizando un sensor de ultrasonidos HC-SR04 y un Resistor sensible fuerza un zumbador piezoeléctrico. Pulsa el sensor de fuerza para empezar a tocar música y mueva la mano frente al sensor ultrasónico a diferentes distanc
Sensor de ultrasonidos HC-SR04 con Arduino

Sensor de ultrasonidos HC-SR04 con Arduino

Ver más en:http://www.theorycircuit.com/interface-Ultrasonic-sensor-HC-Sr-04-with-Arduino/Enlace Facebook: https://www.facebook.com/pages/Theorycircuit/82511...El SR HC 04 es sensor de la gama ultrasónica famoso y su muy fácil de usar con muchos micr