Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Puissance Arduino

Composants et fournitures

Adafruit PowerBoost Charger Shield
× 1
Batterie Lipoly rechargeable (générique)
3.7 - 4.2V
× 1
Arduino UNO
× 1

À propos de ce projet

Les projets impliquant la famille de cartes de microcontrôleur Arduino n'ont généralement pas besoin de circuits de gestion de l'alimentation spéciaux. Vous connectez une source d'alimentation, l'appareil démarre, fait son travail puis s'arrête lorsque l'alimentation est déconnectée. Contrairement à un système Raspberry Pi, il n'y a aucun risque de corrompre une carte mémoire SD.

Mais pour certaines applications, vous souhaiterez peut-être surveiller l'état de l'alimentation et répondre de manière plus gérée, au lieu de simplement arrêter.

Prenons l'exemple d'un appareil de télédétection qui enregistre les données de température. Si la batterie s'épuise alors qu'elle est sans surveillance, les journaux s'arrêtent simplement. Il n'y a aucun moyen de dire immédiatement que la batterie faible était le problème. Il peut s'agir d'une défaillance logicielle ou matérielle.

De même, pour un système portable, il serait utile de savoir combien de temps il reste à la batterie et quand elle doit être rechargée.

Ce projet présente plusieurs approches de la gestion de l'alimentation Arduino avec des circuits, des logiciels et des descriptions pour chacun d'eux. En commençant par un simple interrupteur marche/arrêt jusqu'à un système d'enregistrement de données qui inclut l'état de la batterie qui est destiné à la surveillance de l'environnement sans surveillance.

Vous pouvez choisir les sous-systèmes qui vous intéressent. Je vais tous les décrire avec une complexité croissante, mais vous pouvez commenter les parties qui ne vous intéressent pas.

Le projet est basé sur les idées des projets LiPoPi et Pi Power, qui fournissent des fonctionnalités similaires pour les systèmes Raspberry Pi.

Présentation

Le système offre plusieurs fonctions :

  • Mise sous/hors tension à l'aide d'un bouton-poussoir
  • Surveiller la tension de la batterie à l'aide de l'Arduino ADC
  • Arrêter le système en basse tension
  • Enregistrez la tension de la batterie et un message d'arrêt dans un fichier
  • Afficher l'état de la batterie à l'aide d'une LED rouge/verte

Je vais présenter chacun d'eux à tour de rôle, mais le fil conducteur à tous est la combinaison de l'Adafruit PowerBoost et de l'Arduino.

Avec chacune d'entre elles, vous ajoutez et personnalisez deux fonctions, arduinoPowerSetup() et arduinoPowerMonitor( ) , au setup() standard et boucle() fonctions dans votre code.

Bouclier Adafruit PowerBoost

Le système utilise une batterie LiPoly rechargeable et un bouclier de chargeur Adafruit PowerBoost, qui peuvent à la fois charger la batterie et augmenter sa sortie à 5V.

Adafruit fabrique trois versions du Power Boost - deux cartes de dérivation et un bouclier Arduino. La plupart des travaux décrits ici utilisent le Power Shield, mais je parlerai plus tard de l'utilisation des cartes de dérivation.

Veuillez lire cette page sur la façon de configurer le PowerBoost Shield. Pour préparer le kit Shield, vous devez :

  • Soudure sur les bandes d'en-tête d'empilage
  • Mais n'attachez pas l'interrupteur
  • Souder une longueur de fil (4 pouces, noyau solide 22AWG) à la broche d'activation
  • Pontez les plots pour la broche analogique A0 sur la face inférieure du blindage

Circuit de mise sous/hors tension

Ce circuit de base utilise la pression d'un bouton-poussoir momentané pour mettre le système sous tension et, lorsqu'il est en marche, pour l'éteindre, de la même manière que mon téléphone fonctionne.

Lorsque vous appuyez et maintenez sur un système hors tension, le PowerBoost est allumé et alimente l'Arduino qui démarre ensuite et exécute le programme que vous avez chargé dessus.

Lorsque vous appuyez à nouveau sur le bouton et que vous le relâchez, l'Arduino désactive le PowerBoost et, comme il ne fournit plus d'alimentation, l'Arduino s'éteint.

Veuillez lire cette page pour les détails. Voici le schéma :

Remarque : Vous n'avez pas besoin de ce circuit pour utiliser le reste de ce projet. Vous pouvez utiliser le commutateur en option fourni avec le bouclier PowerBoost. La principale différence est que le commutateur de base arrête simplement le système sans aucun moyen d'enregistrer un message de journal.

Surveiller la tension de la batterie

L'Arduino dispose de 6 convertisseurs analogiques-numériques (ADC) sur les broches analogiques 0-5, ce qui simplifie la mesure de la tension. Le shield PowerBoost permet de connecter la tension de la Batterie (Vbat ) à l'un d'eux en reliant les plots de soudure appropriés comme décrit sur la page PowerBoost Shield. Dans cet exemple, je l'ai lié à la broche analogique 0 .

La tension des batteries LiPoly varie d'environ 4,25V lorsqu'il est complètement chargé à environ 3,7 V lorsqu'il est déchargé. L'ADC convertit la plage de tension de 0V à 5V dans la plage d'entiers de 0 à 1023 , et nous accédons à cette valeur en appelant analogRead() .

Cet extrait de code montre comment procéder ainsi que le calcul de l'état relatif de la batterie à l'aide des tensions minimale et maximale de la batterie.

float maxVoltage =4,25 ; float minTension =3,75 ; arduinoPowerVoltage =float (analogRead (arduinoPowerVoltagePin)) / 1024,0 * 5,0 ; float fractionalVoltage =(arduinoPowerVoltage - minVoltage) / (maxVoltage - minVoltage);

Les batteries LiPoly ne perdent pas de tension de manière linéaire lorsqu'elles se déchargent, mais elles sont assez proches que nous pouvons estimer la durée de vie restante de la batterie en utilisant la tension fractionnaire.

Nous pouvons donc obtenir la tension de la batterie et estimer la durée de vie restante, mais nous avons besoin d'un moyen de le communiquer à l'utilisateur. Nous pourrions utiliser un affichage alphanumérique et dans la section suivante, je montrerai comment enregistrer cela dans un fichier sur une carte SD. Mais ceux-ci peuvent être excessifs pour de nombreux projets.

Une approche plus simple consiste à utiliser un RVB et à changer la couleur pour refléter la durée de vie de la batterie. Par exemple :

  • Vert - plus de 50 %
  • Jaune - 20 % à 50 %
  • Rouge - moins de 20 % - temps de recharge

Pour implémenter cela, il vous suffit d'ajouter une LED RVB et deux résistances 1K au circuit et d'ajouter un peu de code à arduinoPowerMonitor() .

Les LED RVB utilisent généralement une anode commune donc ce circuit fonctionne avec ça :

REMARQUE : En pratique, j'utilise l'alimentation 3,3V avec mes LED.

REMARQUE : Comme je le montrerai plus tard, il peut y avoir une 'oscillation' significative dans la tension mesurée, pour des raisons que je ne comprends pas. Si la batterie est proche de l'une des valeurs où la couleur de la LED change, vous pouvez la voir basculer entre les deux états - très ennuyeux. Une solution rapide consiste à placer un condensateur 0,1 uF entre la broche analogique A0 et Terre .

Cette disposition de la maquette ne montre pas la batterie ou l'Arduino. Le croquis arduino_2_voltage_led implémente la mise sous/hors tension et l'affichage de la tension LED. Le code définit la broche verte ou rouge sur faible pour allumer la led et high pour l'éteindre.

REMARQUE : Vous pouvez vérifier les tensions mesurées et/ou déboguer en décommentant les appels à Serial dans le code et en exécutant le Serial Monitor dans l'IDE. Vous verrez la tension réelle et fractionnaire de la batterie. Pour une raison quelconque, le premier appel est incorrect.

Enregistrement de la tension de la batterie sur une carte SD

L'indicateur LED de tension est utile pour les systèmes Arduino portables alimentés par batterie où vous ne vous souciez pas trop des détails, vous voulez juste savoir quand vous devez recharger la batterie.

Mais si vous surveillez des capteurs dans un système autonome, par exemple, vous souhaiterez peut-être enregistrer la tension de la batterie avec les données des capteurs pour vous donner une meilleure idée de la consommation d'énergie au fil du temps.

Pour cette partie du projet, j'utilise Adafruit Data Logging Shield qui peut enregistrer des données dans un CSV formater le fichier sur la carte SD jointe, ainsi que les horodatages. Le Guide Adafruit explique comment le SD et RTC les bibliothèques fonctionnent et vous devez le comprendre avant de travailler sur cette partie du projet.

Le circuit est inchangé par rapport à l'exemple précédent - il vaut la peine de conserver la LED car elle fournit un retour immédiat sur l'état de la batterie, mais ce n'est pas nécessaire.

Étant donné que nous enregistrons des données sur la carte, il est important que nous enregistrions un message d'arrêt. De cette façon, nous pouvons savoir si l'arrêt était intentionnel ou si une erreur s'est produite dans le système.

De plus, comme nous surveillons la tension, nous pouvons vérifier quand la tension chute en dessous d'un certain niveau minimum et arrêter le système en toute sécurité. Encore une fois, nous pouvons enregistrer un message à ce sujet juste avant l'arrêt.

Le croquis pour cela est dans arduino_3_voltage_logging. Cela inclut quelques routines utilitaires pour générer une chaîne d'horodatage correctement formatée, etc. et comprend un hack pour faire clignoter la LED rouge si vous oubliez d'insérer une carte SD, ce que je fais tout le temps.

L'ensemble de la pile d'Arduino Uno, de Data Logging Shield, de PowerBoost Shield et de la maquette ressemble à ceci :

Données de tension

Voici un graphique de la tension de la batterie au fil du temps montrant la baisse progressive sur une période d'environ 20 heures. La baisse n'est pas vraiment linéaire mais, pour estimer la puissance restante, elle est assez proche.

Comme je l'ai mentionné plus tôt, il est vraiment utile d'ajouter un condensateur de 0,1 uF entre la broche analogique A0 et Terre . Dans cet exemple, la ligne violette montre l'impact du condensateur par rapport à l'original en bleu.

Enregistrement des données environnementales sur une carte SD

Pour finir, voici un autre ajout au projet. Un projet que j'ai en tête est un moniteur environnemental autonome pour mon jardin - température, humidité du sol, etc.

J'installerai l'Arduino, etc., dans une boîte scellée qui restera sans surveillance pendant un certain temps. En plus de l'épuisement de la batterie, je souhaite vérifier qu'aucune humidité ne pénètre à l'intérieur du boîtier et qu'il ne subit pas de températures extrêmes qui pourraient endommager le système. Un moyen bon marché et facile de mesurer la température et l'humidité est le capteur DHT22 - consultez le didacticiel d'Adafruit pour plus de détails.

Dans mon exemple de code, j'utilise la broche numérique 5 au lieu de la broche 2, car je l'utilise déjà pour l'interruption du bouton de mise hors tension.

Le code pour cela est dans arduino_4_voltage_temp_humidity_logging. Une fois que cela fonctionnait sur une planche à pain, je l'ai câblé sur un Adafruit Proto Shield. Le capteur DHT22 est assez volumineux - mais il est bon marché. Jetez un œil à d'autres tableaux de bord d'Adafruit, Sparkfun, etc. pour d'autres alternatives.

Conservation de l'énergie dans les projets Arduino

La prochaine étape de mon projet consiste à réduire la consommation d'énergie et à prolonger la durée de vie de la batterie.

Mon point de départ pour cela est l'excellent didacticiel Adafruit sur l'enregistrement de données à faible consommation de Tony DiCola.

Code

Github
https://github.com/craic/arduino_powerhttps://github.com/craic/arduino_power
Github
https://github.com/NeonHorizon/lipopihttps://github.com/NeonHorizon/lipopi
Github
https://github.com/craic/pi_powerhttps://github.com/craic/pi_power

Processus de fabrication

  1. Dissipation de puissance
  2. Sources d'alimentation
  3. Bulldozer
  4. Batterie
  5. Arduino Spybot
  6. FlickMote
  7. Téléviseur maison B-Gone
  8. Énergie éolienne
  9. Comment la réduction des subventions affecte l'industrie des batteries de puissance