Como armazenar em buffer um ATMEGA para interrupção de energia em milissegundos sem comportamento estranho?

8

Eu tenho um arduino ATMEGA328p-pu com um circuito de faixa de registro de turno LED + conectado ao SPI. Quando ligado, aumenta uma variável na EEPROM para avançar no modo de exibição.

  • Temos o detector de queda de energia definido no nível 1 (2,7V).
  • Existe um capacitor de 1500 uf conectado em paralelo aos condutores de energia, para evitar que o arduino mude de modo com um impacto físico, pois os terminais da bateria podem se desconectar levemente por um milissegundo (?) Ou mais.
  • Há um diodo no cabo positivo da tampa para impedir que a tampa seja descarregada nos LEDs, portanto, ele armazena apenas o arduino.
  • Também há um resistor de 1000 ohms em paralelo na tampa para drená-lo, pois ele estava mantendo uma tensão, o que assumimos estar por trás de um problema em que o chip não estava acendendo o circuito de LED às vezes na inicialização.
  • O arduino pro mini e strip são classificados em 5v, mas rotineiramente os rodamos em 3,7V para que eles possam ser alimentados com uma única célula de íon de lítio.

Às vezes, depois de ficar sentado por 10 ou 15 segundos, o circuito não acende. Às vezes, depois de desconectar a bateria e reconectá-la várias vezes seguidas, ela acende.

Alguém poderia recomendar uma maneira melhor de fornecer um buffer de energia para o ATMEGA (mas não para a faixa de LED)? Estamos fazendo isso corretamente na maior parte?

Diagrama (desculpe se estiver bagunçado, posso fazer com que meu amigo o refaça no Illustrator se não estiver claro, pode levar algumas horas): Diagrama de circuito

blkmage
fonte
2
Você pode desenhar um diagrama de circuito da situação com o AVR, fonte de alimentação, resistor, capacitor, diodo, ...
jippie
É a única razão pela qual você precisa desse "buffer" porque os terminais da bateria podem se desconectar um pouco se baterem? Nesse caso, basta remover o conector e soldar os fios diretamente na placa.
Garrett Fogerlie
Para ecoar jippie, você começou com uma boa descrição escrita, a adição de um esquema ajudará imensamente. Se você tiver problemas para publicar, há ajuda disponível.
placeholder
2
Seu resistor de purga está no lado pequeno, consumindo energia substancial em comparação às necessidades típicas de espera. Se você puder detectar uma interrupção no software, configure um programa que "conte" na saída UART a partir da interrupção e monitore-o enquanto puxa a fonte de alimentação e vê quanto tempo ela dura, calculando de volta através da taxa de transmissão. Também tenha cuidado com a possibilidade de ligar inadvertidamente periféricos através de linhas de dados.
Chris Stratton
1
Talvez você possa tentar fornecer ao arduino uma saída independente (serial, com seus próprios LEDs discretos) para poder fazer uma pequena indicação de depuração lá de que o arduino foi redefinido, diferente do sucesso em conversar com a faixa de LEDs. Suponho que a faixa de LED nem sequer tenha uma redefinição, distinta da progressão comum de seus estados toda vez que você a acessa?
Chris Stratton

Respostas:

3

Você pode usar um super capacitor (1F / 5.5v) após o diodo, conectando-o diretamente ao VCC e ao GND. Isso irá ajudá-lo a proteger o poder.

Chetan Bhargava
fonte