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

¿Es posible usar un sensor ultrasónico para despertar un Arduino que está en suspensión profunda cuando se detecta un objeto dentro de unos pocos cm y luego hacer cosas?

Es un sensor activo: aplica pings para recopilar información sobre su entorno. Para producir pings, tiene que consumir energía. ¿Cuánta energía consumirá el sensor? ¿Cómo se compara con el sueño profundo de Arduino? ¿Vale la pena mantener el Arduino en reposo profundo?

Respuestas (2)

Para una solución basada en Arduino de bajo consumo, se necesita al menos lo siguiente:

A) LADO DEL HERRAJES:

  1. Utilice una tensión de alimentación y una frecuencia de reloj lo más bajas posible. La placa Arduino Pro Mini 3.3V @ 8Mhz es un buen punto de partida para un primer proyecto.
  2. Deshazte de todos los LED de la placa. Su consumo está en el rango de mA, demasiado alto.
  3. Deshágase del regulador incorporado y reemplácelo con un regulador de baja caída y baja corriente de reposo como el MCP1700 . Puede generar solo 250 mA, mientras que el AMS1117 tiene una clasificación de hasta 1 A, pero 250 mA probablemente sea 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 descarta para este tipo de aplicaciones.
  4. Seleccione un sensor de bajo consumo de energía y un circuito de acondicionamiento de señal. La familia 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 hará inútil el ahorro de energía en el Arduino. Evítalo.
  5. El circuito de acondicionamiento de señales debe generar una interrupción de nivel a partir de cualquier señal que entregue el sensor. Es posible que se requieran elementos de temporización (como condensadores) o pestillos para esto. Para estar seguro, diséñelo para un pulso reiniciable de 100 ms.

B) LADO DEL SOFTWARE:

  1. Instale una biblioteca Arduino de bajo consumo como esta . 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 ante 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:

Fuentes de despertador

Aquí puede encontrar información muy buena y práctica sobre cómo utilizar el bajo consumo de energía. Para una guía más completa, lea esto también.

Hola @Enric, mi pregunta es si el sensor de ping de dosis funciona en segundo plano mientras ATMega está en modo de suspensión profunda.
Sí, ATMega estará en suspensión profunda, pero el regulador no (es un IC externo), por lo que el sensor aún obtendrá la corriente que necesita. ¡Pero tenga en cuenta que, como dijo Nick, la energía consumida por el sensor puede ser lo suficientemente alta como para ensombrecer cualquier ahorro de energía proveniente de mantener la MCU en suspensión profunda!
El circuito consume actualmente alrededor de 22mA, tiene: regulador, ATMega 328PU, módulo RF y módulo ping... ¿Qué consume más corriente?
Debería averiguarlo examinando más de cerca las hojas de datos. Mire también esto: gammon.com.au/power Si su circuito consume 22 mA con ATmega durmiendo, eso es malo.
Sin dormir consume 22mA...

Si realmente desea minimizar la energía, no solo necesita tener un circuito MCU de baja potencia, sino también un receptor ultrasónico que pueda desactivar.

Despierte la MCU desde un temporizador periódico de baja potencia y dispare un pulso, luego vuelva a dormir durante al menos el tiempo de timbre del sensor, o el tiempo del rango mínimo de interés.

Despierte la MCU y el receptor nuevamente en el momento en el que espera un eco interesante por primera vez, y permanezca despierto solo hasta que vea uno o durante el intervalo de tiempo en el que podría llegar su eco.

Actúa si escuchas un eco.

Una vez que escuche un eco o expire la ventana de interés, vuelva a apagar todo menos el temporizador de baja potencia hasta el próximo intervalo de medición.

La frecuencia con la que necesita repetir la medición depende de la rapidez con la que se muevan sus objetos y/o de la duración significativa de la activación de la salida y/o de la latencia máxima permitida para responder a la aparición o desaparición de uno. Como límite inferior, debe asegurarse de no realizar una nueva medición hasta que se hayan extinguido los reflejos de pared distante o de rebote múltiple del pulso de transmisión anterior.