Table des matières:

Alimentation numérique à piles : 7 étapes (avec photos)
Alimentation numérique à piles : 7 étapes (avec photos)

Vidéo: Alimentation numérique à piles : 7 étapes (avec photos)

Vidéo: Alimentation numérique à piles : 7 étapes (avec photos)
Vidéo: Les Distributeurs Ne Veulent Pas Que Vous Sachiez Ça 2024, Novembre
Anonim
Alimentation numérique à piles
Alimentation numérique à piles
Alimentation numérique à piles
Alimentation numérique à piles
Alimentation numérique à piles
Alimentation numérique à piles
Alimentation numérique à piles
Alimentation numérique à piles

Vous avez toujours voulu une alimentation que vous pouvez utiliser en déplacement, même sans prise murale à proximité ? Et ne serait-ce pas cool s'il était aussi très précis, numérique et contrôlable via PC ?

Dans ce instructable, je vais vous montrer comment construire exactement cela: un bloc d'alimentation numérique à piles, qui est compatible arduino et peut être contrôlé via le PC via USB.

Il y a quelque temps, j'ai construit une alimentation à partir d'un ancien bloc d'alimentation ATX, et même si cela fonctionne très bien, je voulais accélérer mon jeu avec une alimentation numérique. Comme déjà dit, il est alimenté par des batteries (2 piles au lithium pour être précis), et il peut délivrer un maximum de 20 V à 1 A; ce qui est suffisant pour la plupart de mes projets qui nécessitent une alimentation précise.

Je vais montrer l'ensemble du processus de conception et tous les fichiers du projet se trouvent sur ma page GitHub:

Commençons!

Étape 1: Caractéristiques et coût

Caractéristiques et coût
Caractéristiques et coût

Caractéristiques

  • Modes tension constante et courant constant
  • Utilise un régulateur linéaire à faible bruit, précédé d'un prérégulateur de suivi pour minimiser la dissipation de puissance
  • Utilisation de composants soudables à la main pour garder le projet accessible
  • Alimenté par ATMEGA328P, programmé avec Arduino IDE
  • Communication PC via application Java via micro USB
  • Alimenté par 2 cellules lithium-ion 18650 protégées
  • Fiches bananes espacées de 18 mm pour une compatibilité avec les adaptateurs BNC

Caractéristiques

  • 0 - 1A, pas de 1 mA (DAC 10 bits)
  • 0 - 20V, pas de 20 mV (DAC 10 bits) (vrai fonctionnement 0V)
  • Mesure de tension: résolution 20 mV (10 bits ADC)
  • Mesure actuelle:

    • < 40mA: résolution 10uA (ina219)
    • < 80mA: résolution 20uA (ina219)
    • < 160mA: résolution 40uA (ina219)
    • < 320mA: résolution 80uA (ina219)
    • > 320mA: résolution 1mA (ADC 10 bits)

Coût

L'alimentation complète m'a coûté environ 135 $, avec tous les composants uniques. Les batteries sont la partie la plus chère (30$ pour 2 cellules), puisqu'elles sont protégées par des cellules au lithium 18650. Il est possible de baisser considérablement le coût si aucun fonctionnement sur batterie n'est nécessaire. En omettant les batteries et les circuits de charge, le prix tombe à environ 100 $. Bien que cela puisse sembler coûteux, les alimentations avec des performances et des fonctionnalités bien inférieures coûtent souvent plus que cela.

Si cela ne vous dérange pas de commander vos composants sur ebay ou aliexpress, le prix avec les batteries chuterait à 100 $ et 70 $ sans. Il faut plus de temps pour que les pièces arrivent, mais c'est une option viable.

Étape 2: Schéma et théorie de fonctionnement

Schéma et théorie de fonctionnement
Schéma et théorie de fonctionnement

Pour comprendre le fonctionnement du circuit, nous devrons regarder le schéma. Je l'ai divisé en blocs fonctionnels, de manière à ce qu'il soit plus facile à comprendre; Je vais donc également vous expliquer le fonctionnement étape par étape. Cette partie est assez approfondie et nécessite une bonne connaissance en électronique. Si vous voulez juste savoir comment construire le circuit, vous pouvez passer à l'étape suivante.

Bloc principal

Le fonctionnement est basé sur la puce LT3080: c'est un régulateur de tension linéaire, qui peut abaisser les tensions, en fonction d'un signal de commande. Ce signal de commande sera généré par un microcontrôleur; comment cela est fait, sera expliqué en détail plus tard.

Réglage de la tension

Les circuits autour du LT3080 génèrent les signaux de commande appropriés. Tout d'abord, nous allons voir comment la tension est réglée. Le réglage de tension du microcontrôleur est un signal PWM (PWM_Vset), qui est filtré par un filtre passe-bas (C9 & R26). Cela produit une tension analogique - entre 0 et 5 V - proportionnelle à la tension de sortie souhaitée. Étant donné que notre plage de sortie est de 0 à 20 V, nous devrons amplifier ce signal avec un facteur de 4. Ceci est fait par la configuration opamp non inverseuse de U3C. Le gain de la broche de réglage est déterminé par R23//R24//R25 et R34. Ces résistances sont tolérantes à 0,1%, pour minimiser les erreurs. R39 et R36 n'ont pas d'importance ici, car ils font partie de la boucle de rétroaction.

Paramètre actuel

Cette broche de réglage peut également être utilisée pour le deuxième réglage: mode courant. Nous voulons mesurer la consommation de courant et désactiver la sortie lorsque celle-ci dépasse le courant souhaité. On recommence donc par un signal PWM (PWM_Iset), généré par le microcontrôleur, qui est maintenant filtré passe-bas et atténué pour passer d'une plage 0 - 5 V à une plage 0 - 2 V. Cette tension est maintenant comparée à la chute de tension aux bornes de la résistance de détection de courant (ADC_Iout, voir ci-dessous) par la configuration du comparateur de l'amplificateur opérationnel U3D. Si le courant est trop élevé, cela allumera une LED et tirera également la ligne définie du LT3080 à la terre (via Q2), éteignant ainsi la sortie. La mesure du courant, et la génération du signal ADC_Iout se fait comme suit. Le courant de sortie traverse les résistances R7 - R16. Ceux-ci totalisent 1 ohm; la raison de ne pas utiliser 1R en premier lieu est double: 1 résistance devrait avoir une puissance nominale plus élevée (elle doit dissiper au moins 1 W), et en utilisant 10 résistances à 1% en parallèle, nous obtenons une précision plus élevée que avec une seule résistance de 1 %. Une bonne vidéo expliquant pourquoi cela fonctionne peut être trouvée ici: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Lorsque le courant traverse ces résistances, cela crée une chute de tension, que nous pouvons mesurer, et c'est placé avant le LT3080, car la chute de tension à ses bornes ne doit pas influencer la tension de sortie. La chute de tension est mesurée avec un amplificateur différentiel (U3B) avec un gain de 2. Cela se traduit par une plage de tension de 0 à 2 V (nous y reviendrons plus loin), d'où le diviseur de tension au signal PWM du courant. Le tampon (U3A) est là pour s'assurer que le courant circulant dans les résistances R21, R32 et R33 ne passe pas par la résistance de détection de courant, ce qui influencerait sa lecture. Notez également qu'il devrait s'agir d'un amplificateur opérationnel rail à rail, car la tension d'entrée à l'entrée positive est égale à la tension d'alimentation. L'amplificateur non inverseur n'est destiné qu'à la mesure du parcours, cependant, pour des mesures très précises, nous avons la puce INA219 à bord. Cette puce nous permet de mesurer des courants très faibles, et est adressée via I2C.

Choses supplémentaires

A la sortie du LT3080, on a encore du matos. Tout d'abord, il y a un puits de courant (LM334). Celui-ci consomme un courant constant de 677 uA (réglé par la résistance R41), pour stabiliser le LT3080. Il n'est cependant pas relié à la masse, mais au VEE, une tension négative. Ceci est nécessaire pour permettre au LT3080 de fonctionner jusqu'à 0 V. Lorsqu'il est connecté à la terre, la tension la plus basse serait d'environ 0,7 V. Cela semble assez faible, mais gardez à l'esprit que cela nous empêche de couper complètement l'alimentation. La diode Zener D3 est utilisée pour bloquer la tension de sortie si elle dépasse 22 V, et le diviseur de résistance fait chuter la plage de tension de sortie de 0 - 20 V à 0 - 2 V (ADC_Vout). Malheureusement, ces circuits sont à la sortie du LT3080, ce qui signifie que leur courant contribuera au courant de sortie que nous voulons mesurer. Heureusement, ces courants sont constants si la tension reste constante; nous pouvons donc calibrer le courant lorsque la charge est déconnectée en premier.

Pompe de charge

La tension négative dont nous avons parlé précédemment est générée par un curieux petit circuit: la pompe de charge. Pour son fonctionnement, je me référerais ici: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Il est alimenté par un PWM à 50% du microcontrôleur (PWM)

Convertisseur boost

Jetons maintenant un œil à la tension d'entrée de notre bloc principal: Vboost. On voit que c'est du 8 - 24V, mais attendez, 2 piles lithium en série donne un maximum de 8,4 V ? En effet, et c'est pourquoi nous devons augmenter la tension, avec un convertisseur dit boost. Nous pourrions toujours augmenter la tension à 24 V, quelle que soit la sortie que nous voulons; Cependant, cela gaspillerait beaucoup d'énergie dans le LT3080 et les choses deviendraient chaudes ! Donc, au lieu de faire cela, nous augmenterons la tension un peu plus que la tension de sortie. Une augmentation d'environ 2,5 V est appropriée pour tenir compte de la chute de tension dans la résistance de détection de courant et de la tension de chute du LT3080. La tension est définie par des résistances sur le signal de sortie du convertisseur élévateur. Pour changer cette tension à la volée, nous utilisons un potentiomètre numérique, le MCP41010, qui est contrôlé via SPI.

Batterie en charge

Cela nous amène à la vraie tension d'entrée: les batteries ! Comme on utilise des cellules protégées, il suffit de les mettre en série et le tour est joué ! Il est important d'utiliser des cellules protégées ici, pour éviter une surintensité ou une décharge excessive, et ainsi endommager les cellules. Encore une fois, nous utilisons un diviseur de tension pour mesurer la tension de la batterie et la réduire à une plage utilisable. Passons maintenant à la partie intéressante: le circuit de charge. Nous utilisons la puce BQ2057WSN à cette fin: en combinaison avec le TIP32CG, elle forme elle-même essentiellement une alimentation linéaire. Cette puce charge les cellules via une trajectoire CV CC appropriée. Étant donné que mes batteries n'ont pas de sonde de température, cette entrée doit être liée à la moitié de la tension de la batterie. Ceci conclut la partie régulation de tension de l'alimentation.

Régulateur 5V

La tension d'alimentation 5 V de l'arduino est réalisée avec ce simple régulateur de tension. Ce n'est cependant pas la sortie 5 V la plus précise, mais cela sera résolu ci-dessous.

Référence de tension 2,048 V

Cette petite puce fournit une référence de tension de 2,048 V très précise. Celui-ci sert de référence pour les signaux analogiques ADC_Vout, ADC_Iout, ADC_Vbatt. C'est pourquoi nous avions besoin de diviseurs de tension pour ramener ces signaux à 2 V. Microcontrôleur Le cerveau de ce projet est l'ATMEGA328P, c'est la même puce qui est utilisée dans l'Arduino Uno. Nous avons déjà passé en revue la plupart des signaux de contrôle, mais il y a néanmoins quelques ajouts intéressants. Les encodeurs rotatifs sont connectés aux 2 seules broches d'interruption externes de l'arduino: PD2 et PD3. Ceci est nécessaire pour une implémentation logicielle fiable. Les commutateurs situés en dessous utilisent une résistance de rappel interne. Ensuite, il y a cet étrange diviseur de tension sur la ligne de sélection de puce du potentiomètre (Pot). Un diviseur de tension sur une sortie, à quoi ça sert; tu pourrais dire. Comme mentionné précédemment, l'alimentation 5 V n'est pas très précise. Il serait donc bon de mesurer cela avec précision et d'ajuster le rapport cyclique du signal PWM en conséquence. Mais comme je n'avais plus d'entrées libres, j'ai dû faire une double fonction. Lorsque l'alimentation démarre, cette broche est d'abord définie comme entrée: elle mesure le rail d'alimentation et se calibre. Ensuite, il est défini comme une sortie et il peut piloter la ligne de sélection de puce.

Pilote d'affichage

Pour l'affichage, je voulais un écran LCD Hitachi couramment disponible - et bon marché. Ils sont entraînés par 6 broches, mais comme je n'avais plus de broches, j'avais besoin d'une autre solution. Une caisse à décalage à la rescousse ! Le 74HC595 me permet d'utiliser la ligne SPI pour contrôler l'affichage, n'ayant donc besoin que d'une ligne de sélection de puce supplémentaire.

FTDI

La dernière partie de cette alimentation est la connexion avec le monde extérieur cruel. Pour cela, nous devons convertir les signaux série en signaux USB. Cela se fait par une puce FTDI, qui est connectée à un port micro USB pour une connexion facile.

Et c'est tout !

Étape 3: PCB et électronique

PCB et électronique
PCB et électronique
PCB et électronique
PCB et électronique
PCB et électronique
PCB et électronique
PCB et électronique
PCB et électronique

Maintenant que nous comprenons le fonctionnement du circuit, nous pouvons commencer à le construire ! Vous pouvez simplement commander le PCB en ligne auprès de votre fabricant préféré (le mien coûte environ 10 $), les fichiers gerber se trouvent sur mon GitHub, avec la nomenclature. L'assemblage du PCB consiste alors essentiellement à souder les composants en place selon la sérigraphie et la nomenclature.

La première étape consiste à souder les composants SMD. La plupart d'entre eux sont faciles à faire à la main, à l'exception de la puce FTDI et du connecteur micro USB. Par conséquent, vous pouvez éviter de souder ces 2 composants vous-même et utiliser une carte de dérivation FTDI à la place. J'ai fourni des broches d'en-tête où cela peut être soudé.

Lorsque le travail SMD est terminé, vous pouvez passer à tous les composants de trou traversant. Ceux-ci sont très simples. Pour les puces, vous voudrez peut-être utiliser des sockets au lieu de les souder directement à la carte. Il est préférable d'utiliser un ATMEGA328P avec le bootloader Arduino, sinon vous devrez le télécharger en utilisant l'en-tête ICSP (illustré ici).

La seule partie qui nécessite un peu plus d'attention est l'écran LCD, car il doit être monté en biais. Soudez des embases mâles coudées dessus, la pièce en plastique faisant face au dessous de l'écran. Cela permettra un bon placement de l'écran sur le PCB. Après cela, il peut être soudé en place comme n'importe quel autre composant à trou traversant.

Il ne reste plus qu'à ajouter 2 fils, qui se connecteront aux bornes bananes de la plaque avant.

Étape 4: boîtier et assemblage

Boîtier et assemblage
Boîtier et assemblage
Boîtier et assemblage
Boîtier et assemblage
Boîtier et assemblage
Boîtier et assemblage

Une fois le pcb fait, on peut passer au boitier. J'ai spécifiquement conçu le PCB autour de ce boîtier Hammond, il n'est donc pas recommandé d'utiliser un autre boîtier. Cependant, vous pouvez toujours imprimer en 3D un boîtier avec les mêmes dimensions.

La première étape consiste à préparer le panneau d'extrémité. Nous devrons percer des trous pour les vis, les interrupteurs, etc. Je l'ai fait à la main, mais si vous avez accès à une CNC, ce serait une option plus précise. J'ai fait les trous selon le schéma et taraudé les trous de vis.

C'est une bonne idée d'ajouter des tampons de soie maintenant et de les maintenir en place avec une petite goutte de super colle. Ceux-ci isoleront le LT3080 et le TIP32 de la plaque arrière, tout en permettant le transfert de chaleur. Ne les oubliez pas ! Lors du vissage des puces sur le panneau arrière, utilisez une rondelle en mica pour assurer l'isolation !

Nous pouvons maintenant nous concentrer sur le panneau avant, qui glisse juste en place. Nous pouvons maintenant ajouter les prises bananes et les boutons pour les encodeurs rotatifs.

Avec les deux panneaux en place, nous pouvons maintenant insérer l'ensemble dans le boîtier, ajouter les piles et fermer le tout. Assurez-vous d'utiliser des piles protégées, vous ne voulez pas que les cellules explosent !

À ce stade, le matériel est terminé, il ne reste plus qu'à lui donner un peu de vie avec le logiciel !

Étape 5: Code Arduino

Code Arduino
Code Arduino

Le cerveau de ce projet est l'ATMEGA328P, que nous programmerons avec l'IDE Arduino. Dans cette section, je vais passer en revue le fonctionnement de base du code, les détails peuvent être trouvés sous forme de commentaires à l'intérieur du code.

Le code parcourt essentiellement ces étapes:

  1. Lire les données série à partir de Java
  2. Boutons de sondage
  3. Mesurer la tension
  4. Mesurer le courant
  5. Mesurer le courant avec INA219
  6. Envoyer des données série à Java
  7. Configurer boostconvertor
  8. Obtenir la charge de la batterie
  9. Écran de mise à jour

Les codeurs rotatifs sont gérés par une routine de service d'interruption pour qu'ils soient aussi réactifs que possible.

Le code peut maintenant être téléchargé sur la carte via le port micro USB (si la puce a un chargeur de démarrage). Carte: Arduino pro ou pro mini Programmeur: AVR ISP / AVRISP MKII

Nous pouvons maintenant jeter un œil à l'interaction entre l'Arduino et le PC.

Étape 6: Code Java

Code Java
Code Java

Pour enregistrer les données et contrôler l'alimentation via le PC, j'ai créé une application java. Cela nous permet de contrôler facilement la carte via une interface graphique. Comme avec le code Arduino, je ne vais pas entrer dans tous les détails, mais donner un aperçu.

Nous commençons par créer une fenêtre avec des boutons, des champs de texte, etc. trucs de base de l'interface graphique.

Vient maintenant la partie amusante: ajouter les ports USB, pour lesquels j'ai utilisé la bibliothèque jSerialComm. Une fois qu'un port est sélectionné, Java écoutera toutes les données entrantes. Nous pouvons également envoyer des données à l'appareil.

De plus, toutes les données entrantes sont enregistrées dans un fichier csv, pour un traitement ultérieur des données.

Lors de l'exécution du fichier.jar, nous devons d'abord choisir le bon port dans le menu déroulant. Après la connexion, les données commenceront à entrer et nous pourrons envoyer nos paramètres à l'alimentation.

Bien que le programme soit assez basique, il peut être très utile de le contrôler via un PC et d'enregistrer ses données.

Étape 7: Succès

Succès!
Succès!
Succès!
Succès!
Succès!
Succès!

Après tout ce travail, nous avons maintenant une alimentation entièrement fonctionnelle !

Je dois aussi remercier certaines personnes pour leur soutien:

  • Le projet était basé sur le projet uSupply d'EEVBLOG et son schéma Rev C. Donc un merci spécial à David L. Jones pour avoir publié ses schémas sous licence open source et partagé toutes ses connaissances.
  • Un grand merci à Johan Pattyn pour avoir réalisé les prototypes de ce projet.
  • Cedric Busschots et Hans Ingelberts méritent également le crédit pour leur aide au dépannage.

Nous pouvons maintenant profiter de notre propre bloc d'alimentation fait maison, ce qui nous sera utile tout en travaillant sur d'autres projets impressionnants ! Et le plus important: nous avons appris beaucoup de choses en cours de route.

Si vous avez aimé ce projet, veuillez voter pour moi dans le concours powerupply, je l'apprécierais vraiment !https://www.instructables.com/contest/powersupply/

Concours d'alimentation
Concours d'alimentation
Concours d'alimentation
Concours d'alimentation

Deuxième prix du concours d'alimentation

Conseillé: