Telémetro láser de fase casero. Telémetro ultrasónico hc-sr04 - Tecnología de medición - Herramientas Telémetro ultrasónico en microcontrolador

Algunas notas:
Todas las piezas necesarias para crear un telémetro ultrasónico de acuerdo con este esquema se venden en chipidip, todo cuesta entre 500 y 900 rublos (no recuerdo exactamente, había mucho dinero, no lo conté :- ). (carcasa, tweeters, conectores, etc.)
Algunos comentarios sobre el circuito del telémetro ultrasónico:
1. Puedes usar cualquier tweeter, diferentes son mejores para diferentes tareas... para mi tarea: cuanto mayores sean las dimensiones, mejor, el ángulo es 50.
2. Puedes intentar usar solo un AD822 relativamente caro y en lugar del comparador algo más barato (simplemente no tenía nada más a mano)
3. En el mega puedes usar un temporizador para generar 40 kilohercios, para ello necesitas seleccionar otro resonador. (Solo tenía 16 y 12... no encajan)
4. La velocidad del sonido en el aire en realidad depende de la temperatura; si la precisión es muy importante (no me importa), téngalo en cuenta.
5. Tenga en cuenta que en la imagen del telémetro en el estuche (los tweeters no tocan el plástico), una persona dijo que con configuraciones megaprecisas (este circuito es capaz de hacer esto) el sonido del tweeter al micrófono será Se transmite a través del cuerpo, por lo que es mejor ir a lo seguro.
6. Se puede ver un ejemplo del mega firmware más simple en C (debajo de este diagrama).
7. Es mejor utilizar el programador STK200/300, también conocido como avreal: el software y el circuito se pueden extraer
8. Según mi opinión, en el firmware es necesario rastrear tanto el principio como el final del "paquete", en el ejemplo solo el comienzo (la precisión aumentará específicamente)... tal vez lo agregue y publícalo.
9. Al tweeter le gustan mucho los 40 kHz - un poco hacia un lado no es lo mismo... probablemente sea cierto lo que dicen en el manual, que es resonante :-)
10. No en vano, los transistores están apiñados en el emisor en el diagrama; para aquellos que quieran dar más voltios que 12, bienvenidos; una persona dijo que chirriaría más fuerte (cuente más). No hice esto por tres razones: en primer lugar, todavía es necesario encontrar 24 voltios en algún lugar y, en segundo lugar, la versión actual, al configurar la resistencia en consecuencia, ve una pared a 4 metros de distancia, es decir. No tengo lugar para probarlo y no lo necesito. Bueno, la tercera razón que dijo esta misma persona es que los tweeters tienden a morir con este voltaje.
11. Consejo general: puede encontrar todas las resistencias y condensadores en una fuente de alimentación que no funciona desde una computadora ATX (todos miden aproximadamente 1/8 de vatio): ¡ahorrará dinero!
12. Existe la idea errónea de que el ultrasonido emitido por un chirriador puede ser escuchado de alguna manera por los perros y otras criaturas, les afecta mal: mi perro vino una noche y se quedó dormido frente al chirriador que estaba encendido.
13. Además, solo para tu información, los megas y otros controladores de 8 bits de Atmel funcionan muy bien... en algunas tareas, en lugar de los 16 requeridos, funcionan a 24 y están bien.
14. Al configurar R5 por encima de un kiloohmio (10, 50, 100), obtendrá una ganancia muy grande y lo más probable es que necesite bocinas, pero el rango de medición aumentará considerablemente.
15. En lugar de quitar las bocinas (con un R5 grande), ver arriba, puede actualizar el firmware para que no espere una señal útil en el momento inicial. Pero entonces será imposible medir distancias de unos 10 cm o menos.

Comentario al consejo 8: el amarillo indica el momento en que se activa la interrupción del telémetro ultrasónico MK en la recepción; de hecho, puede limitarse a este primer momento, esperar un poco y realizar la siguiente medición, generando la siguiente ráfaga de pulsos, y el Se considera tiempo de vuelo del sonido el tiempo desde el primer pulso enviado (o el último no es importante) hasta el PRIMERO aceptado.
La segunda opción, marcada en rojo, es más precisa, ya que el paquete de pulsos, por regla general, no llega en perfectas condiciones ni completamente (puede que no queden un par del primer o último pulso), de hecho, incluso en la imagen se puede ver que está "aplanado" en los bordes, aunque se envió un rectángulo ideal de pulsos; entonces: el punto es que el centro del paquete debe permanecer en su lugar a pesar de que es posible que sus bordes ya no estén sentido por el comparador. Por lo tanto, la precisión es de varios... (hay que pensar en milímetros) depende de si en el firmware del telémetro ultrasónico se tuvo en cuenta la mitad o sólo el principio del paquete al recibirlo.

En una ocasión me compré un telémetro ultrasónico HC-SR04. El dispositivo es un módulo con dos piezoemisores, uno de los cuales sirve como emisor y el segundo como receptor de una onda ultrasónica; además de electrónica de control para controlar el emisor y el receptor. Para la conexión, el módulo tiene un conector de 4 pines: dos de los cuales proporcionan energía (se requieren 5 voltios) y dos más para la comunicación con el microcontrolador.

La interfaz de comunicación aquí está organizada de manera muy simple: aplicamos un pulso corto con una duración de 10 a 15 microsegundos a la entrada y esperamos un pulso en la salida. Tan pronto como la onda reflejada llega al receptor, el propio módulo calcula la distancia y envía un impulso de alto nivel de hasta 25 ms al tramo Echo. La longitud del pulso de salida será proporcional a la distancia al obstáculo desde el cual se reflejó la onda ultrasónica. Todo lo que tenemos que hacer es captar este impulso, calcular su longitud y convertir este valor en distancia.

Especificaciones:

  • Tensión de alimentación: 5V
  • Corriente de reposo:< 2 мА
  • Ángulo de visión efectivo:< 15 °
  • Rango de distancia: 2 cm - 500 cm
  • Resolución: 0,3 cm

Las características han sido copiadas de la documentación del módulo. Además, el fabricante proporciona una fórmula para calcular la distancia en función de la duración del pulso.

S=F/58 ; donde S es la distancia en centímetros, F es la longitud del pulso en microsegundos

Como puedes ver, ni siquiera es necesario conocer la velocidad del sonido.

Para realizar las pruebas, monté el siguiente circuito:

El módulo se conecta directamente al microcontrolador. No es necesario instalar resistencias pull-up; ya están en la placa del módulo.

Entonces, necesitamos captar solo un impulso y luego calcular su longitud. Al principio quería utilizar una de las interrupciones externas del microcontrolador para este propósito, y la interrupción tenía que ocurrir tanto en el flanco ascendente (transición de estado bajo a alto) como en el flanco descendente (de alto a bajo). Es decir, tendrás que cambiar la configuración de esta interrupción sobre la marcha. Además, debe utilizar uno de los temporizadores, que debería medir la duración del pulso. Demasiado complicado para una operación de fijación de señal pequeña. Bascom-AVR tiene un comando especial para este caso. Legumbres . Aquí hay un ejemplo de cómo captar una señal usando este comando:

Legumbres A, Pintar, 5 , 1

Aquí en la variable A el valor de la duración del pulso se escribirá en decenas de microsegundos tomado de la pierna Pind.5. El que está al final del comando dice que necesitas captar una señal de alto nivel. Si se cambia a 0, el controlador captará una señal de bajo nivel.

Este comando no utiliza interrupciones ni un temporizador de hardware, pero es capaz de detectar la aparición de un pulso y registrar su longitud con una resolución de 10 μs. El comando utiliza un tipo de variable de 2 bytes para almacenar la longitud del pulso, por lo que la longitud máxima de la señal recibida puede ser 655,35 ms. Esto es suficiente para la tarea en cuestión, pero si es necesario, puede editar el archivo de la biblioteca mcs.lib y cambiar la duración máxima del pulso grabado.

La lista completa del programa está a continuación.

$archivo de registro = "m8def.dat"

$cristal = 8000000

"configuración de la conexión de la pantalla a los puertos MK

configuración pantalla LCD = 16 * 2

configuración pin lcd= Alfiler, Rs= Puertoc. 5 , mi= Puertoc. 4 , Db4= Puertoc. 3 , Db5= Puertoc. 2 , Db6= Puertoc. 1 , Db7= Puertoc. 0

configuración Puerto. 4 = Producción "salida para conectar la pata del gatillo

DesencadenarAlias Puerto. 4

Desencadenar= 0

configuración Puerto. 5 = Aporte "entrada para impulso de eco

configuración Puerto. 7 = Producción "configuración para conexión LED

CondujoAlias Puerto. 7

Condujo= 0

Oscuro AComo Palabra "El valor de la longitud de la señal se copia aquí

Oscuro SComo Soltero "variable para almacenar distancia

constante k= 0 . 1725 "coeficiente para convertir la longitud del pulso en distancia

Esperando 50

Cursor Apagado

cls

pantalla LCD "Sónar HC-SR04"

Localizar 2 , 1

pantalla LCD "sitio web"

Condujo= 1

Esperando 100

Condujo= 0

Esperar 3

Hacer

Desencadenar= 1 "le damos un impulso a la pierna Portd.4 con una duración de 15 μs

Esperanos 15

Desencadenar= 0

Esperanos 10

Legumbres A, Pintar, 5 , 1 "captamos un impulso de alto nivel en PinD.5

Telémetro Es un dispositivo para medir la distancia a un objeto. El telémetro ayuda a los robots en diferentes situaciones. Un simple robot con ruedas puede utilizar este dispositivo para detectar obstáculos. El dron volador utiliza un telémetro para flotar sobre el suelo a una altitud predeterminada. Con un telémetro, incluso puedes construir un mapa de la habitación usando un algoritmo SLAM especial.

1. Principio de funcionamiento

Esta vez analizaremos el funcionamiento de uno de los sensores más populares: un telémetro ultrasónico (EE. UU.). Existen muchas modificaciones diferentes de estos dispositivos, pero todas funcionan según el principio de medir el tiempo de viaje del sonido reflejado. Es decir, el sensor envía una señal sonora en una dirección determinada, luego capta el eco reflejado y calcula el tiempo de vuelo del sonido desde el sensor hasta el obstáculo y viceversa. De un curso de física escolar sabemos que la velocidad del sonido en un determinado medio es constante, pero depende de la densidad del medio. Conociendo la velocidad del sonido en el aire y el tiempo de vuelo del sonido hasta el objetivo, podemos calcular la distancia recorrida por el sonido mediante la fórmula: s = v*t donde v es la velocidad del sonido en m/s y t es el tiempo en segundos. La velocidad del sonido en el aire, por cierto, es de 340,29 m/s. Para hacer frente a su tarea, el telémetro tiene dos características de diseño importantes. En primer lugar, para que el sonido se refleje bien en los obstáculos, el sensor emite ultrasonidos con una frecuencia de 40 kHz. Para ello, el sensor dispone de un emisor piezocerámico que es capaz de generar un sonido de tan alta frecuencia. En segundo lugar, el emisor está diseñado de tal manera que el sonido no se difunde en todas direcciones (como ocurre con los altavoces convencionales), sino en una dirección estrecha. La figura muestra el patrón de radiación de un telémetro ultrasónico típico. Como se puede ver en el diagrama, el ángulo de visión del telémetro ultrasónico más simple es de aproximadamente 50 a 60 grados. Para un caso de uso típico, donde el sensor detecta obstáculos frente a él, este ángulo de visión es bastante adecuado. El ultrasonido puede incluso detectar la pata de una silla, mientras que un telémetro láser, por ejemplo, puede no detectarla. Si decidimos escanear el espacio circundante girando el telémetro en círculo como si fuera un radar, el telémetro ultrasónico nos dará una imagen muy inexacta y ruidosa. Para tales fines, es mejor utilizar un telémetro láser. También vale la pena señalar dos graves desventajas del telémetro ultrasónico. La primera es que las superficies con una estructura porosa absorben bien los ultrasonidos y el sensor no puede medir la distancia hasta ellas. Por ejemplo, si decidimos medir la distancia desde un multicóptero hasta la superficie de un campo con hierba alta, lo más probable es que obtengamos datos muy borrosos. Los mismos problemas nos esperan a la hora de medir la distancia a una pared recubierta de gomaespuma. La segunda desventaja está relacionada con la velocidad de la onda sonora. Esta velocidad no es lo suficientemente rápida como para hacer que el proceso de medición sea más frecuente. Digamos que hay un obstáculo delante del robot a una distancia de 4 metros. El sonido tarda hasta 24 ms en viajar de un lado a otro. Debes medir 7 veces antes de instalar un telémetro ultrasónico en robots voladores.

2. Telémetro ultrasónico HC-SR04

En este tutorial trabajaremos con el sensor HC-SR04 y el controlador Arduino Uno. Este popular telémetro puede medir distancias desde 1-2 cm hasta 4-6 metros. Al mismo tiempo, la precisión de la medición es de 0,5 a 1 cm Existen diferentes versiones del mismo HC-SR04. Algunos funcionan mejor, otros peor. Puedes distinguirlos por el patrón del tablero en el reverso. La versión que funciona bien se ve así:

Aquí hay una versión que puede fallar:

3. Conexión HC-SR04

El sensor HC-SR04 tiene cuatro salidas. Además de tierra (Gnd) y alimentación (Vcc), también están Trig y Echo. Ambos pines son digitales, por lo que los conectamos a cualquier pin del Arduino Uno:
HC-SR04 Tierra VCC Trigonometría Eco
ArduinoUno Tierra +5V 3 2
Diagrama esquemático del dispositivo. Aspecto del diseño

4. Programa

Entonces, intentemos ordenarle al sensor que envíe un pulso ultrasónico de sondeo y luego registremos su retorno. Veamos cómo es el diagrama de tiempos del HC-SR04.
El diagrama muestra que para comenzar a medir necesitamos generar en la salida. Trigonometría pulso positivo de 10 µs de duración. Después de esto, el sensor liberará una serie de 8 pulsos y elevará el nivel en la salida. Eco, cambiando al modo de espera de la señal reflejada. Una vez que el telémetro detecta que el sonido ha regresado, completará un pulso positivo en Eco. Resulta que solo necesitamos hacer dos cosas: crear un pulso en Trig para comenzar a medir y medir la longitud del pulso en Echo, para luego poder calcular la distancia usando una fórmula simple. Vamos a hacerlo. int ecoPin = 2; int pinpin = 3; configuración vacía() ( Serial.begin (9600); pinMode(trigPin, SALIDA); pinMode(echoPin, ENTRADA); ) void loop() ( int duración, cm; digitalWrite(trigPin, LOW); delayMicrosegundos(2); digitalWrite (trigPin, ALTO); retrasoMicrosegundos(10); digitalWrite(trigPin, BAJO); duración = pulseIn(echoPin, ALTO); cm = duración / 58; Serial.print(cm); Serial.println(" cm"); retraso (100); ) Función pulsoEn Mide la duración del pulso positivo en la pata del echoPin en microsegundos. En el programa registramos el tiempo de vuelo del sonido en la variable duración. Como descubrimos anteriormente, necesitaremos multiplicar el tiempo por la velocidad del sonido: s = duración * v = duración * 340 m/s Convierta la velocidad del sonido de m/s a cm/μs: s = duración * 0,034 m/μs Por conveniencia, convertimos la fracción decimal a una fracción ordinaria: s = duración * 1/29 = duración / 29 Ahora recordemos que el sonido viajó dos distancias requeridas: hasta el objetivo y de regreso. Dividamos todo por 2: s = duración / 58¡Ahora sabemos de dónde salió el número 58 del programa! Cargue el programa en el Arduino Uno y abra el monitor del puerto serie. Intentemos ahora apuntar el sensor a diferentes objetos y observemos la distancia calculada en el monitor.

Tareas

Ahora que podemos calcular la distancia usando un telémetro, crearemos varios dispositivos útiles.
  1. Telémetro de construcción. El programa mide la distancia cada 100 ms utilizando un telémetro y muestra el resultado en una pantalla LCD simbólica. Para mayor comodidad, el dispositivo resultante se puede colocar en un estuche pequeño y alimentar con baterías.
  2. Bastón ultrasónico. Escribamos un programa que haga sonar un timbre a diferentes frecuencias, dependiendo de la distancia medida. Por ejemplo, si la distancia hasta un obstáculo es superior a tres metros, el timbre emite un sonido cada medio segundo. A una distancia de 1 metro, una vez cada 100 ms. Menos de 10 cm: emite un pitido constantemente.

Conclusión

El telémetro ultrasónico es un sensor preciso, fácil de usar y de bajo costo que ha desempeñado bien su función en miles de robots. Como aprendimos en la lección, el sensor tiene desventajas que deben tenerse en cuenta al construir un robot. Una buena solución sería utilizar un telémetro ultrasónico combinado con uno láser. En este caso, nivelarán las deficiencias de cada uno.

Hoy veremos otro dispositivo auxiliar electrónico que definitivamente será útil en un sitio de construcción (y cualquier hombre, tarde o temprano, participará en la construcción): un distanciómetro ultrasónico con pantalla LCD. Cuando necesita medir la distancia entre objetos o un tamaño pequeño, inmediatamente le viene a la mente una cinta métrica normal. Esto se justifica cuando se trabaja con tamaños pequeños, hasta un par de metros. Pero cuando necesite medir la altura de una casa, la distancia entre las paredes adyacentes en una habitación grande, un telémetro ultrasónico electrónico será simplemente insustituible. Esto se aplica especialmente a la medición de la altura de los techos; al fin y al cabo, no necesitará escaleras de mano ni sillas para trepar. En general, esta es una de esas herramientas que debe tener. Y para ahorrar dinero, esta copia se encargó en el sitio web. trato extremo.

  • pantalla LCD
  • Medición de distancia: hasta 20 metros.
  • Precisión: ±1,0 cm
  • Iluminación láser
  • Unidades: pies/metros
  • Alimentado por batería G6F22 (incluida)
  • Precio en Dilextream - $22

La especificación técnica describe que la precisión de la medición es de 1 cm. Si comparamos los telémetros ultrasónicos con los láser, entonces, por supuesto, son algo inferiores en precisión, pero tenga en cuenta que se trata de categorías de precios diferentes. Si necesita un telémetro de hasta un milímetro, tendrá que gastar más de 50 dólares, y esto rara vez se justifica.

Aquí el láser brilla durante la medición y durante un segundo aparece un punto en la superficie. El medidor puede dar lecturas falsas al reflejar la señal en algunas superficies curvas complejas. Debe medir cada punto, en diferentes posiciones, aproximadamente 3 veces para asegurarse de obtener lecturas buenas y confiables.

Circuito de telémetro

El circuito se basa en un procesador. EM78P468NQS y un par de amplificadores operacionales LM358 Y LM833. La información se muestra en una gran pantalla LCD. Realmente no tiene luz de fondo, pero no creemos que nadie pueda trabajar en la oscuridad :)

El medidor es muy económico, las baterías incluidas durarán mucho tiempo, ya que el consumo de corriente es mínimo.

El control del dispositivo es simple: enciéndalo presionando el botón ENCENDIDO APAGADO y presione brevemente la tecla central. En este caso, el emisor del telémetro debe mantenerse estrictamente perpendicular al plano de medición. Para ello, en la carcasa se encuentra incluso un pequeño nivel con una bola de aire y marcas.

Existe una función interesante para calcular automáticamente el área de una habitación. Para hacer esto, presione el botón modo y mida secuencialmente el largo, alto y ancho. Inmediatamente tenemos en pantalla el valor del área o de todo el volumen.

Conclusión

En algunos casos, realmente solo necesitas una cinta métrica normal y, a veces, un telémetro ultrasónico te resultará muy útil. Es como los hexágonos: todos tienen que estar ahí. Tarde o temprano, será necesario cualquiera. Y 500-1000r no es mucho dinero para este dispositivo. Además, la calidad de construcción es excelente y ha estado funcionando correctamente durante todo un año.

Discuta el artículo BUSCADOR DE RANGO ULTRASÓNICO

Bruno Gavand

El proyecto, que considera una solución sencilla y de bajo costo para un sensor ultrasónico para medir distancias, se basa en el microcontrolador PIC16F877A de la empresa, pero el código fuente puede ser adaptado por los usuarios a otros microcontroladores. El sensor se puede integrar en diseños y dispositivos personalizados: detectores de presencia, robots, sistemas de aparcamiento, dispositivos de medición de distancia, etc.

Características distintivas:

  • una pequeña cantidad de componentes externos;
  • tamaño del código 200 bytes;
  • rango de distancia de trabajo: 30 cm - 200 cm;
  • precisión de medición ±1 cm;
  • indicación cuando se exceden los límites de medición.

Como sabes, la velocidad del sonido en el aire es de unos 340 m/s. Por tanto, el principio de un sensor ultrasónico es enviar un pulso ultrasónico con una frecuencia de 40 kHz y monitorear la señal reflejada (eco). Por supuesto, no oirás el sonido, pero el sensor ultrasónico es capaz de detectar el pulso reflejado. Por tanto, conociendo el tiempo de recorrido del pulso y la señal ultrasónica reflejada, podemos obtener la distancia. Dividiendo por dos, obtenemos la distancia desde el sensor ultrasónico hasta el primer obstáculo desde el que se reflejó la señal.

El dispositivo utiliza un emisor ultrasónico piezocerámico MA40B8S y un sensor ultrasónico piezocerámico abierto MA40B8R. Los principales parámetros se muestran en la siguiente tabla.

Dispositivo Objetivo Frecuencia Dirección,
granizo
Capacidad,
pF
Región
detección,
metro
Aporte
Voltaje,
máx, V
MA40B8S emisor 40 kilociclos 50 (simétrico) 2000 0.2 … 6 40
MA40B8R Sensor 40 kilociclos 50 (simétrico) 2000 0.2 … 6

Para las pruebas se utilizó la plataforma de depuración de la empresa.

Sin embargo, el usuario puede utilizar cualquier microcontrolador PIC que tenga al menos un canal ADC y un canal PWM.

Diagrama esquemático de un sensor ultrasónico.

El emisor se controla mediante el transistor BD135. El diodo 1N4007 se utiliza para proteger el transistor del voltaje inverso. Gracias al uso de un transistor y un circuito resonante, que está formado por la conexión en paralelo de un inductor L1 de 330 µH y un condensador formado por el propio emisor, la tensión de alimentación del emisor será de unos 20 V, lo que asegura un rango de detección. de hasta 200 cm, cabe destacar que el emisor se puede controlar directamente desde la salida del microcontrolador, sin embargo, en este caso el rango de distancia no supera los 50 cm.

El sensor está conectado directamente al ADC del microcontrolador (cuando se usa PIC16F877A - canal 1 del ADC), es necesaria una resistencia conectada en paralelo con el sensor para igualar la impedancia.

Primero necesitas enviar un pulso ultrasónico. Se obtiene fácilmente una señal de 40 kHz utilizando un microcontrolador hardware PWM. La señal reflejada del sensor ingresa al ADC, la resolución del ADC es de 4 mV, lo cual es suficiente para leer datos del sensor y no se necesitan componentes adicionales.

Vista externa de la placa de desarrollo del sensor ultrasónico.


Este sensor es la solución más sencilla y, por tanto, tiene varias desventajas: una ligera vibración del receptor ultrasónico puede provocar mediciones incorrectas. Dado que el pulso enviado no está modulado ni codificado, fuentes extrañas de frecuencia ultrasónica pueden interferir con la medición, todo lo cual puede conducir a resultados incorrectos (mediciones fuera de rango).

Leyendas de la imagen:

ráfaga ultrasónica - pulso ultrasónico;
eco mecánico (eliminado por software) - eco mecánico (eliminado por software);
Onda ultrasónica reflejada por un objeto remoto: onda ultrasónica reflejada desde un objeto distante.

Valor de división del osciloscopio: horizontalmente - 1 ms/div, verticalmente - 5 mV/div.

El eco mecánico se elimina en el software mediante la introducción de un retraso. La onda reflejada, que tenía una amplitud de aproximadamente 40 mV, se recibió 9,5 ms después del pulso enviado. Considerando que la velocidad del sonido es 340 m/s, obtenemos:

0,0095 / 2×340 = 1,615m.

En realidad, era el techo de la habitación a una distancia de 172 cm del sensor; el valor de 170 cm se mostraba en la pantalla LCD instalada en la placa de depuración.

Descargas

Código fuente para el proyecto en el microcontrolador PIC16F877A (compilador mikroC) -