Allumez Arduino avec minuterie toutes les 24h


9

Je travaille actuellement sur un projet Arduino qui m'envoie la charge de la batterie de ma voiture une fois par jour via un ESP8266. Pendant l'hiver, je ne conduis pas ma voiture et je voudrais être informé lorsque la batterie tombe au-delà d'une valeur critique, afin de pouvoir la recharger et éviter tout dommage.

L'efficacité énergétique est donc importante pour le projet, donc elle ne décharge pas la batterie elle-même. J'ai lu beaucoup de choses sur le mode veille, les régulateurs efficaces, etc. Ils ont tous en commun que le régulateur de tension fonctionne toujours, ce qui n'est pas ce que je veux.

Je cherche une sorte de "circuit swich-on-timer". Il devrait décompter 24 heures, puis allumer un relais ou MOSFET, qui connecte le régulateur de tension à l'alimentation et qui allume l'Arduino et l'ESP8266. Lorsque l'Arduino a terminé la transmission, il réinitialise la minuterie, ce qui déconnecte le régulateur de tension de l'alimentation, etc. Bien sûr, le circuit de minuterie ne devrait utiliser que très peu d'énergie.

Est-ce que quelqu'un connaît un circuit comme ça? J'ai cherché sur AliExpress avec toutes les variantes de mots qui me venaient à l'esprit, sans succès. Ou peut-être un circuit intégré qui peut être utilisé (facilement) pour créer un tel circuit?


1
Tous les régulateurs de tension ne sont pas identiques. Certains n'utiliseront que quelques micro-amplis.
Gerben

Sortir des sentiers battus ... Un minuteur standard ne suffira-t-il pas?
user31208

Réponses:


5

Une approche consisterait à utiliser un module DS3231 (Precision Real Time Clock). Ces modules se vendent sur Ebay pour moins de 1 $. Recherchez ds3231 arduino.

En règle générale, ces modules ont un connecteur à six broches, avec des broches étiquetées 32K, SQW, SCL, SDA, VCC et GND. Comme indiqué dans les spécifications du DS3231, la broche INT / SQW est utilisée soit pour une sortie rectangulaire ou pour une sortie d'interruption. À la page 13 des spécifications, dans la section Registre de contrôle, il est indiqué:

Bit 2: Contrôle d'interruption (INTCN). Ce bit contrôle le signal INT / SQW. Lorsque le bit INTCN est défini sur la logique 0, une onde carrée est émise sur la broche INT / SQW. Lorsque le bit INTCN est défini sur la logique 1, une correspondance entre les registres de chronométrage et l'un des registres d'alarme active la sortie INT / SQW (si l'alarme est également activée).

Initialement, vous exécuteriez un croquis pour configurer le DS3231: allumez une alarme quotidienne, activez une interruption plutôt qu'une onde carrée, réglez l'heure actuelle, etc. Ensuite, chargez un programme opérationnel qui lit la tension de la batterie de la voiture à chaque exécution. et agit de manière appropriée.

La broche DS3231 INT / SQW serait câblée à la porte d'un mosfet à canal P qui commute l'alimentation 12V sur l'Arduino. Le P-fet s'allumerait lorsque la broche de sortie à drain ouvert de l'alarme INT / SQW s'allume. Le programme opérationnel fait son travail et efface ensuite l'indicateur d'interruption DS3231, pour couper l'alimentation jusqu'à ce que la prochaine alarme se produise. (Pour le débogage, définissez des intervalles plus courts qu'une journée; par exemple, une fois par minute, comme décrit dans le Tableau 2, Bits de masque d'alarme, à la page 12 des spécifications.)

En règle générale, le DS3231 consomme 0,84 μA lorsqu'il fonctionne avec une batterie de 3,3 V ou 1 μA de 5 V. Voir Caractéristiques électriques, page 3 des spécifications.


1
La porte P-fet devrait probablement être tirée jusqu'à +12 à travers quelque chose comme une résistance de 1 mégohm; sinon, il serait effectivement ouvert lorsque la broche INT / SQW est désactivée et pourrait flotter à des niveaux arbitraires
James Waldby - jwpat7

3

La minuterie ou le circuit de minuterie lui-même devrait tirer du courant. Aucune des puces pico-power AVR ne consomme très peu de courant en mode veille - dans les 10s de micro-amplis pour le 328, si je me souviens bien. Dormir un AVR pour le tirage le moins courant nécessite à peu près tout ce qui est arrêté, mais la minuterie de surveillance, et la période WDT maximale est de 8 secondes. Une bibliothèque comme Narcoleptic gérera des périodes plus longues pour vous. Ce que vous devez faire cependant, c'est fournir une alimentation régulée beaucoup plus efficace que celle intégrée sur la carte Arduino (si c'est ce que vous allez utiliser). Cela fait, la charge de l'Arduino sur la batterie de votre voiture devrait être microscopique.

Une conception possible pour une alimentation efficace est un réseau de piles alcalines, disons 3 en série pour une sortie 4,5 (tout en étant fraîche) fois 2 ou plus de ces chaînes en parallèle, connectées directement au bus 5v.

Je n'ai pas fait la budgétisation de la puissance pour connaître la capacité dont vous auriez besoin et si vous auriez besoin de cellules D ou si vous pourriez faire un tableau pratique à partir de plus petites, disent les AA, mais c'est un moyen de réaliser une charge nulle sur la batterie de la voiture (actualisation de l'exigence du capteur de tension de batterie de voiture). Vous voudrez peut-être inclure l'état de santé de la batterie Arduino dans le rapport quotidien, ou, pour le prix de quelques Alcalines, vous pourriez tellement sur-concevoir la batterie Arduino que la surveiller deviendrait inutile.

Quelques points de données suggèrent qu'une batterie distincte est une approche réalisable:

  • Un seul alcalin 9v fait fonctionner un détecteur de fumée pendant plus d'un an, y compris l'hivernage dans un grenier non chauffé (selon ma propre expérience), et les alcalins 9v ne sont pas connus pour leur capacité.
  • Mon thermostat numérique de recul a fonctionné pendant quelques années sur 2 piles AA, avant a) qu'elles ne soient mortes et b) que je me sois trompé et que j'ai commencé à les changer chaque année. :)

J'ai un ATmega48 (très similaire au 328P) fonctionnant avec quelques cellules AA depuis juin 2012. Il est éveillé un peu plus de 4 minutes par jour, dormant le reste du temps. Pas changé les piles jusqu'à présent.
Edgar Bonet

C'est un temps d'exécution impressionnant - merci pour le point de données supplémentaire, @EdgarBonet! Je m'attendais à ce qu'un Arduino endormi et une batterie alcaline puissent être un système "installez-le et oubliez-le", mais sans calculer la consommation d'énergie, je ne pensais pas qu'il fonctionnerait aussi bien. Donc, @DirkPitt, il y a des données d'assistance réelles.
JRobert

Ce n'est pas un Arduino complet: je n'ai pas réussi à descendre en dessous de ~ 40 mA avec mon Uno, tandis que l'ATmega nu SLEEP_MODE_PWR_SAVE, avec uniquement la minuterie asynchrone active, a pris quelque chose comme 2 µA.
Edgar Bonet


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.