Comment tamponner un ATMEGA pour une coupure de courant de niveau milliseconde sans comportement étrange?

8

J'ai un arduino ATMEGA328p-pu avec un circuit de bande LED + registre à décalage attaché sur SPI. Lorsqu'il s'allume, il augmente une variable en EEPROM pour faire avancer le mode d'affichage.

  • Nous avons le détecteur de coupure réglé au niveau 1 (2,7 V).
  • Il y a un condensateur de 1500 uf connecté en parallèle aux fils d'alimentation pour, espérons-le, empêcher l'arduino de changer de mode sur un impact physique, car les bornes de la batterie peuvent se déconnecter légèrement pendant une milliseconde (?) Ou plus.
  • Il y a une diode sur le fil positif du capuchon pour empêcher le capuchon de se décharger dans les LED, il ne tamponne donc que l'arduino.
  • Il y a aussi une résistance de 1000 ohms en parallèle sur le capuchon pour le drainer car il maintenait une tension, ce qui, nous supposons, était à l'origine d'un problème où la puce n'allumait pas le circuit LED parfois au démarrage.
  • L'arduino pro mini et la bande sont évalués à 5 V, mais nous les exécutons régulièrement à 3,7 V afin qu'ils puissent être alimentés avec une seule cellule Li-Ion.

Parfois, après s'être assis pendant 10 ou 15 secondes, le circuit ne s'allume pas. Parfois, après avoir déconnecté la batterie et l'avoir reconnectée plusieurs fois de suite, elle s'allumera.

Quelqu'un pourrait-il recommander une meilleure façon de fournir un tampon d'alimentation à l'ATMEGA (mais pas à la bande LED)? Le faisons-nous correctement pour la plupart?

Diagramme (désolé s'il est en désordre, je peux demander à mon ami de le refaire dans Illustrator s'il n'est pas clair, cela pourrait prendre quelques heures): Schéma

blkmage
la source
2
Pouvez-vous dessiner un schéma de circuit de la situation avec l'AVR, l'alimentation, la résistance, le condensateur, la diode, ...
jippie
Est-ce la seule raison pour laquelle vous avez besoin de ce "tampon" parce que les bornes de la batterie peuvent se déconnecter légèrement en cas de choc? Si c'est le cas, vous devez simplement retirer le connecteur et souder les fils directement sur la carte.
Garrett Fogerlie
Pour faire écho à Jippie, vous avez commencé avec une bonne description écrite, l'ajout d'un schéma vous aidera énormément. Si vous rencontrez des problèmes d'affichage, une aide est disponible.
espace réservé
2
Votre résistance de purge est petite, consommant une puissance substantielle par rapport aux besoins de veille typiques. Si vous pouvez détecter une baisse de tension dans le logiciel, configurez un programme qui "compte" sur la sortie UART à partir de la baisse de tension et surveillez cela tout en tirant sur l'alimentation et voyez combien de temps cela fonctionne, calculant en arrière à travers le baudrate. Attention également à la possibilité d'alimenter par inadvertance des périphériques via des lignes de données.
Chris Stratton
1
Vous pouvez peut-être essayer de donner à l'arduino une sortie indépendante (série, ce sont ses propres LED discrètes) afin que vous puissiez y faire une petite indication de débogage que l'arduino a réinitialisé, distinct de son succès à parler à la bande de LED. Je suppose que la bande LED n'a même pas vraiment de réinitialisation, distincte de la progression ordinaire de ses états chaque fois que vous y accédez?
Chris Stratton

Réponses:

3

Vous pouvez utiliser un super condensateur (1F / 5.5v) après la diode, en le connectant directement au VCC et GND. Cela vous aidera à mettre la puissance en mémoire tampon.

Chetan Bhargava
la source