Conexión de múltiples sensores ultrasónicos a un Arduino

Estoy tratando de conectar cinco sensores ultrasónicos (HC-SR04, para ser exactos) a una placa Arduino para detectar obstáculos en cinco direcciones (cuatro cardinales + un eje Z). También leí la hoja de datos del HC-SR04 y del Arduino Uno, y descubrí que el sensor ultrasónico consume 15 mA cuando está activo, y el Uno puede suministrar un máximo de 40 mA a través de cada pin y un total de 200 mA desde todos los pines.

Ahora que no tengo diez pines de E/S PWM, he pensado que, dado que dispararé todos los sensores a la vez, un pin de activación es suficiente. Los pines ECHO irán a un pin PWM separado para cada módulo.

Tengo dos preocupaciones aquí (solo soy un principiante en electrónica :)):

  1. Voy a suministrar energía a cada sensor con un BEC de 5V/2A. Entonces, ¿esto causará un sobregiro de corriente de los pines Arduino PWM? Si es así, ¿hay alguna solución? ¿Quizás una solución impulsada por transistores? (Hice un curso básico de electrónica en la universidad, pero nunca tuve la oportunidad de diseñar uno por mi cuenta).

  2. La segunda preocupación tiene que ver con el diseño de mi pasador de activación. ¿Un pin podrá pulsar cinco de los sensores, o la caída de corriente no les permitirá disparar (ya que todos están en paralelo)? Supongo que es solo el voltaje lo que los enciende (suposición) y en paralelo todo sería igual, por lo que debería funcionar, ¿verdad?

Busqué, pero solo encontré información sobre cómo conectar un sensor al Arduino. Leí algo sobre el funcionamiento de motores de alto amperaje con Arduino suministrando corriente a través de una batería, así que creo que mi primera preocupación debería estar bien. Pero no estoy seguro, así que pensé en preguntar aquí. ¡Gracias!

Esto suena sensato: fuente de alimentación separada para todos los sensores. No esperaría que haya un consumo de corriente significativo del gatillo. Sin embargo, me preocuparía que los sensores detecten los ecos de los demás. ¿Necesita PWM de los pines de retorno, dado que solo está tratando de detectar el ancho del pulso?
Bien, entonces la preocupación por la fuente de alimentación es clara. Tengo cuatro BEC de todos modos, pero uno debería funcionar, ¿verdad? Tiene una corriente máxima nominal de 5V y 2A. Y sí, también necesito PWM para los pines de retorno. El retorno de cada sensor va a un pin separado en el Arduino.
Sí, un BEC para todos, no uno para cada uno.
¡Bien gracias! Eso ayudó. :) Y acabo de leer un poco más: PWM no es esencial. Tengo mucho que aprender. :)
¿Qué pasa con la activación de 2 sensores desde un puerto? consumirán 20 mA, por lo que deberían funcionar correctamente ... ¡Eso espero!

Respuestas (2)

El problema con las soluciones relacionadas con pasatiempos es que la documentación es limitada y no está especificada como componentes o módulos comerciales.

Es posible que funcione, pero se recomienda hacer un diagrama de cableado de bloques y consultar con el OEM. Eso sí, no sé si tienen el soporte adecuado para su pregunta, ya que se construyen en China.

Hobby Services 3002 N. Apollo Dr. Suite 1 Champaign, IL 61822 (217) 398-0007 Correo electrónico: hobbyservices@hobbico.com Dirección de Internet: www.supertigre.com

Parece que su carga ultrasónica es TTL, por lo que no hay problema para cambiar 5 al mismo tiempo con un BEC, pero me pregunto si ha considerado los efectos de la diafonía al disparar todo al mismo tiempo. Indican un ángulo de detección de 15 grados, pero esto dependerá del ángulo de reflexión de los objetos que desee detectar. Puede haber problemas de fase con cancelaciones de reflexión como tener 5 tweeters dirigidos en una habitación. Leer la respuesta de cada eco en paralelo con un conteo de intervalos de tiempo no será un simple resultado de libro de texto con objetos no uniformes con 5 emisores.ingrese la descripción de la imagen aquí

Puede probar su diseño de matriz ortogonal con cualquier generador de impulsos de señal y observar la señal en un analizador lógico o alcance de puerto paralelo para asegurarse de que su diseño funcionará.

La unidad de potencia es la menor de sus preocupaciones con respecto a estos dispositivos de bajo consumo. Evitar el ruido de fuentes conducidas y radiadas será primordial y el diseño de la matriz de transpondedores debe ser lo primero. Dedicaría algo de tiempo a probar esta primera parte para identificar todas las fuentes de interferencia eléctricas, físicas, acústicas, EMI, térmicas, de vibraciones, tanto conducidas como radiadas, y cómo cada una afecta sus expectativas de SONAR con diferentes objetos. ¿Será microfónico con vibración o ruidos fuertes de pulso? ¿Qué tan bien rechaza otras fuentes de ultrasonido de ruido? ¿La salida TTL Echo cambiará en ancho de pulso con la intensidad de la señal o solo el tiempo de retardo?

¿Recibirá ecos del remitente incorrecto debido a los efectos de reflexión de las esquinas?

Sí, estos son chinos baratos. Pero para un proyecto de bajo costo que recién estoy comenzando, estos son un robo porque no arruinarán el banco si no funcionan o si no encuentro uso para ellos (no ahora de todos modos). Solo sigo las especificaciones que leí en alguna parte: no sé cuánta corriente consumen en realidad, pero por ahora solo me aferro a estos valores.
Son interruptores MOSFET clasificados para ese valor, pero no indican la corriente de accionamiento. Puede medir el voltaje del variador conectando uno a la vez para ver si hay alguna carga significativa. Un alcance ayudaría a ver cualquier ruido. Pero en cualquier caso, les enviaría un correo electrónico para pedirles consejo.
El BEC significa circuito eliminador de batería, por lo que está destinado a reemplazar una segunda batería para una radio de la batería del servo principal y ya es un interruptor de transistor (MOSFET) con límites de V y A para la carga.
Hmmm, está bien, hay muchas cosas a considerar, pero sí, también he pensado en la diafonía, pero no en los otros problemas que ha resaltado. Para el problema de la diafonía, estaba pensando en disparar los sensores en un patrón que no interfiera con los otros sensores (tal vez sensores opuestos o, en el peor de los casos, uno a la vez). Todavía no los he recibido, pero he leído un poco sobre ellos. No parecen ser muy precisos, pero en este momento solo estoy mirando para ver cómo funciona todo. Es solo un módulo de robótica simple para la detección y evasión de objetos en la universidad.
Sin embargo, tendré que comprobar las otras fuentes de ruido como has mencionado. No pensé en los efectos de la vibración en estos sensores hasta que leí tu publicación (y dado que será en un robot en movimiento...). Estoy planeando probar individualmente cada módulo y calibrarlos (no sé cómo, pero encontraré una manera: D) y luego configurarlo todo en una placa de prueba antes de que entre en el bot.
Un osciloscopio o analizador lógico parece esencial y luego diseñar su contador de intervalos de tiempo en el firmware. Pruebe con un solo sensor T/R y luego una matriz múltiple con varios objetos hasta el rango de distancia. Tenga cuidado con el ruido V+ y gnd.
Vale, lo haré a ver qué tal. ¡Gracias por la ayuda! :)
si algo de esto realmente ayuda, +1 donde corresponda es un comentario útil.

Me doy cuenta de que este es un hilo un poco viejo, pero... Tengo un par de estos, y el problema es que para "leer" el resultado usas un pulseIn, que "ata" el Arduino para el tiempo del eco.

Entonces, primero, debe poner un tiempo de espera en pulseIn, como unsigned long pulse_length = pulseIn(iEchoPin, HIGH, 9000); donde 9000 es 9000 microsegundos o 9 milisegundos, lo que equivale a unos 150 cm o 5 pies (velocidad del sonido, distancia recorrida dos veces, muchas matemáticas). La razón para tener un tiempo de espera es que el tiempo de espera predeterminado es un segundo completo, por lo que podría estar esperando un resultado de 1,000 milisegundos o 1,000,000 de microsegundos (y volver a 0 porque se agotó el tiempo de espera). Así que puse 9000us, eso me da 150 cm, que es suficiente para la ubicación de obstáculos.

Y, en segundo lugar, no puedo entender cómo leer ambos sensores al mismo tiempo, ya que mi Arduino solo hará un pulso a la vez, y el eco del segundo sensor ya ha regresado para entonces.

Y en tercer lugar, debe esperar un período de tiempo para cualquier eco "secundario", la hoja de datos dice 60 ms, he tenido un buen éxito con 40 ms. Pero si tengo 2 de ellos, tengo que esperar 40 ms antes de disparar el segundo, o obtendrá ecos falsos del primero (están enfrentados a unos 30 grados uno del otro).

La razón por la que estaba buscando aquí es que quería saber si podía usar el mismo pin de eco para múltiples sensores SR04 (o para el caso, también para múltiples sensores de distancia IR). Si activé 1 SR04, luego leí el pin de eco "combinado", entonces solo necesito 1 pin para leer cualquier cantidad de sensores, pero 1 pin para activar cada uno.

La otra opción es cambiar el pin a salida, enviar el disparador, luego cambiarlo a entrada y hacer el pulso y hacer que el mismo cable vaya a los pines de disparo y eco en la placa SR04. Voy a probar estos dos. Pero quería ver si alguien había hecho alguno de estos antes.