Cómo detener el comportamiento indefinido en la pérdida de energía en arduino

Estoy trabajando en un proyecto simple de Arduino que cuenta la rotación usando un codificador rotatorio. Después de algunos cálculos, guardo estos datos en EEPROM.

He usado Arduino nano.

El diagrama de circuito de bloque rudimentario del proyecto es el siguiente.ingrese la descripción de la imagen aquí

todo el sistema funciona completamente bien cuando la fuente de alimentación está encendida. Pero cuando se desconecta la fuente de alimentación, Arduino detecta algún pulso aleatorio en los pines del sensor del codificador rotatorio y modifica el conteo y lo almacena en EEPROM.

Tengo muy poco conocimiento sobre el diseño de circuitos. Pero sospecho que este comportamiento indefinido se debe al condensador de 1000uF.

Sugiérame un diseño de circuito para eliminar este comportamiento indefinido.

Gracias.

Se requiere detección de oscurecimiento. Míralo.
Los AVR solían tener un problema conocido con la corrupción de EEPROM. Realmente necesita un reinicio adecuado si las fuentes de alimentación no están dentro de las especificaciones para funcionar. Una solución era no usar la primera página de EEPROM y mantener el registro de dirección de escritura apuntando a la dirección 0 cuando no se usaba.
¿Cuántas veces se ha escrito la EEPROM?
Tal vez instale un divisor de voltaje y controle la entrada del regulador, fuerce un apagado cuando comience a caer.
@MarkoBuršič La EEPROM se escribirá aproximadamente una vez cada 30 segundos.
@ChrisStratton disculpe mi pregunta infantil. ¿Cómo puedo usar el regulador de voltaje aquí? ¿Puede proporcionarme un circuito de demostración?
No estoy hablando del regulador, sino de detectar la pérdida de energía y apagar inmediatamente o al menos bloquear las escrituras.
coloque un opto en el riel de 12v con una resistencia lo suficientemente grande como para que normalmente apenas se encienda, lea la salida con su boceto, no guarde si la salida opto está desactivada.
¿Usar Schmitt Trigger ayudará aquí?

Respuestas (1)

Use resistencias desplegables en los pines de entrada de Arduino. Suponiendo que la salida del codificador es lógica alta.