Sensor ultrasónico (ping) y sueño profundo Arduino

2

¿Es posible usar un sensor ultrasónico para despertar a un Arduino que está en sueño profundo cuando se detecta un objeto dentro de unos pocos cm y luego hacer cosas?

    
pregunta Vladimir

2 respuestas

2

Para una solución basada en Arduino verdaderamente de baja potencia, al menos se necesita lo siguiente:

A) LADO DEL HARDWARE:

  1. Use un voltaje de suministro y una frecuencia de reloj lo más baja posible. La placa Arduino Pro Mini 3.3V @ 8Mhz es un buen punto de partida para un primer proyecto.
  2. Deshazte de todos los LEDs en el tablero. Su consumo está en el rango de mA, demasiado alto.
  3. Deshágase del regulador de a bordo y sustitúyalo por un regulador de baja baja y de baja inactividad como el MCP1700 . Puede generar solo 250 mA, mientras que el AMS1117 tiene una clasificación de hasta 1A, pero 250 mA probablemente será lo suficientemente bueno para su aplicación de baja potencia. OTOH, en caso de que se lo pregunte: no necesita un regulador de conmutación a menos que su Arduino pase la mayor parte del tiempo despierto y consumiendo mucha corriente, lo cual es un escenario muy poco probable. La alta corriente de reposo de los reguladores de conmutación los excluye para este tipo de aplicaciones.
  4. Seleccione un sensor de bajo consumo de energía y un circuito de acondicionamiento de señal. Las familias de lógica PIR y CMOS 74HC son buenas tecnologías para esto. Como señaló Nick Alexeev, un sensor ultrasónico emitirá constantemente, lo que inutilizará sus ahorros de energía en el Arduino. Evitarlo
  5. El circuito de acondicionamiento de la señal debe generar una interrupción de nivel a partir de la señal suministrada por el sensor. Los elementos de temporización (como los condensadores) o los cierres pueden ser necesarios para esto. Para estar en el lado seguro, diseñarlo para un pulso reiniciable de 100 ms.

B) LADO DEL SOFTWARE:

  1. Instale una biblioteca de Arduino de bajo consumo como ésta . Utilice el modo de suspensión de apagado ATmega328p.
  2. Escriba una rutina de servicio de interrupción (ISR). Esta es la pieza de código que se ocupará de lo que sea necesario hacer en un evento de interrupción.
  3. Configure (adjunte) las interrupciones según sea necesario. Tenga en cuenta que solo las interrupciones activadas por nivel pueden activar ATmega328p desde el modo de suspensión de apagado , según su hoja de datos:

Aquí puede encontrar información realmente buena y práctica sobre cómo utilizar la energía baja. Para obtener una guía más completa, lea esto también.

    
respondido por el Enric Blanco
0

Si realmente desea minimizar la potencia, no solo debe tener un circuito de MCU de baja potencia, sino un receptor ultrasónico que puede desactivar.

Encienda la MCU con un temporizador periódico de baja potencia y dispare un pulso, luego vuelva a dormir por lo menos durante el tiempo de llamada del sensor, o el tiempo del rango mínimo de interés.

Vuelva a activar la MCU y el receptor en el momento en el que primero espera un eco interesante, y permanezca despierto solo hasta que vea uno o el intervalo de tiempo durante el cual podría llegar su eco.

Actúa si escuchas un eco.

Una vez que escuche un eco o la ventana de interés caduque, apague todo menos el temporizador de baja potencia hasta el siguiente intervalo de medición.

La frecuencia con la que necesita repetir la medición depende de la rapidez con la que sus objetos puedan moverse y / o de lo breve que sea significativa la actuación de la salida y / o la latencia máxima permitida para responder a una aparición o desaparición. Como límite inferior, debes asegurarte de no tomar una nueva medida hasta que desaparezcan los reflejos de rebote múltiple o de pared distante del pulso de transmisión antiguo.

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas