- Matériaux nécessaires
- Schéma du circuit de charge électronique Arduino DC
- Conception de PCB et fichier Gerber
- Commander votre PCB auprès d'AllPCB
- Code Arduino pour charge CC réglable
- Test de notre charge DC réglable
Si vous avez déjà travaillé avec des batteries, des circuits SMPS ou d'autres circuits d'alimentation, il est souvent arrivé que vous deviez tester votre source d'alimentation en la chargeant pour vérifier son fonctionnement dans différentes conditions de charge. Un appareil couramment utilisé pour effectuer ce type de test est appelé charge CC à courant constant, ce qui nous permet d'ajuster le courant de sortie de votre source d'alimentation, puis de le maintenir constant jusqu'à ce qu'il soit à nouveau ajusté. Dans ce didacticiel, nous allons apprendre à construire notre propre charge électronique réglable à l'aide d'Arduino, qui peut prendre une tension d'entrée maximale de 24 V et drainer un courant aussi élevé que 5 A. Pour ce projet, nous avons utilisé des cartes de circuits imprimés fabriquées par AllPCB, un fournisseur de services de fabrication et d'assemblage de circuits imprimés professionnel basé en Chine.
Dans notre précédent didacticiel sur la source de courant contrôlée en tension, nous avons expliqué comment utiliser un amplificateur opérationnel avec un MOSFET et utiliser un circuit de source de courant contrôlé en tension. Mais dans ce tutoriel, nous appliquerons ce circuit et créerons une source de courant contrôlée numériquement. De toute évidence, une source de courant contrôlée numériquement nécessite un circuit numérique et pour remplir cet objectif, un Arduino NANO est utilisé. L'Arduino NANO fournira les commandes requises pour la charge CC.
Le circuit se compose de trois parties. La première partie est la section Arduino Nano, la deuxième partie est le convertisseur numérique-analogique et la troisième partie est un circuit analogique pur dans lequel un double amplificateur opérationnel dans un seul boîtier est utilisé pour contrôler la section de charge. Ce projet est inspiré d'un article sur Arduino, cependant, le circuit est modifié pour moins de complexité avec des fonctionnalités de base pour que tout le monde le construise.
Notre charge électronique est conçue pour avoir les sections d'entrée et de sortie suivantes.
- Deux commutateurs d'entrée pour augmenter et diminuer la charge.
- Un écran LCD qui affichera la charge définie, la charge réelle et la tension de charge.
- Le courant de charge maximal est limité à 5A.
- La tension d'entrée maximale est de 24V pour la charge.
Matériaux nécessaires
Les composants nécessaires pour construire une charge électronique CC sont répertoriés ci-dessous.
- Arduino nano
- LCD 16x2 caractères
- Douille à deux cylindres
- Mosfet irf540n
- Mcp4921
- Lm358
- Résistance shunt 5 watts.1 ohms
- 1k
- 10k - 6 pièces
- Dissipateur de chaleur
- .1uF 50v
- 2k - 2 pièces
Schéma du circuit de charge électronique Arduino DC
Dans le schéma ci-dessous, l'amplificateur opérationnel comporte deux sections. L'un consiste à contrôler le MOSFET et l'autre à amplifier le courant détecté. Vous pouvez également consulter la vidéo en bas de cette page qui explique le fonctionnement complet du circuit. La première section a R12, R13 et MOSFET. R12 est utilisé pour réduire l'effet de charge sur la section de rétroaction et R13 est utilisé comme résistance de grille Mosfet.
Deux résistances supplémentaires R8 et R9 sont utilisées pour détecter la tension d'alimentation de l'alimentation qui sera sollicitée par cette charge fictive. Conformément à la règle du diviseur de tension, ces deux résistances supportent un maximum de 24V. Plus de 24V produira une tension qui ne sera pas adaptée aux broches Arduino. Veillez donc à ne pas connecter une alimentation ayant une tension de sortie supérieure à 24V.
La résistance R7 est ici la résistance de charge réelle. Il s'agit d'une résistance de 5 watts, 0,1 ohm. Conformément à la loi de puissance, il supportera au maximum 7A (P = I 2 R), mais pour des raisons de sécurité, il est plus sage de limiter le courant de charge maximum de 5A. Par conséquent, à l'heure actuelle, une charge maximale de 24 V, 5 A peut être définie par cette charge fictive.
Une autre section de l'amplificateur est configurée comme un amplificateur de gain. Il fournira un gain de 6x. Pendant la circulation du courant, une chute de tension apparaîtra. Par exemple, lorsque 5 A de courant circule à travers la résistance, la chute de tension sera de 0,5 V sur la résistance shunt de 0,1 Ohms (V = I x R) selon la loi d'Ohm. L'amplificateur non inverseur l'amplifiera à x6, donc 3V sera la sortie de la deuxième partie de l'amplificateur. Cette sortie sera détectée par la broche d'entrée analogique Arduino nano et le courant sera calculé.
La première partie de l'amplificateur est configurée comme un circuit suiveur de tension qui contrôlera le MOSFET selon la tension d'entrée et obtiendra la tension de rétroaction souhaitée en raison du courant de charge circulant à travers la résistance shunt.
MCP4921 est le convertisseur numérique-analogique. Le DAC utilise le protocole de communication SPI pour obtenir les données numériques de n'importe quel microcontrôleur et fournir une sortie de tension analogique en fonction de celle-ci. Cette tension est l'entrée de l'ampli-op. Nous avons également appris précédemment comment utiliser ce DAC MCP4921 avec PIC.
De l'autre côté, il y a un Arduino Nano qui fournira les données numériques au DAC via le protocole SPI et contrôlera la charge, affichant également les données dans l'affichage 16x2 caractères. Deux choses supplémentaires sont utilisées, à savoir le bouton de diminution et d'augmentation. Au lieu de se connecter à une broche numérique, il est connecté aux broches analogiques. Par conséquent, on peut le changer pour un autre type de commutateurs tels que curseur ou codeur analogique. De plus, en modifiant le code, on peut fournir des données analogiques brutes pour contrôler la charge. Cela évite également le problème d'anti-rebond du commutateur.
Enfin, en augmentant la charge, l'Arduino nano fournira les données de charge au DAC au format numérique, le DAC fournira des données analogiques à l'amplificateur opérationnel, et l'amplificateur opérationnel contrôlera le MOSFET selon la tension d'entrée de l'amplificateur opérationnel.. Enfin, en fonction du courant de charge circulant à travers la résistance shunt, une chute de tension apparaîtra qui sera encore amplifiée par le deuxième canal du LM358 et obtiendra par l'Arduino nano. Ceci sera affiché sur l'affichage des caractères. La même chose se produit lorsque l'utilisateur appuie sur le bouton de diminution.
Conception de PCB et fichier Gerber
Étant donné que ce circuit a un chemin de courant élevé, il est plus judicieux d'utiliser des tactiques de conception de PCB appropriées pour éliminer les cas de défaillance indésirables. Ainsi, un PCB est conçu pour cette charge CC. J'ai utilisé le logiciel Eagle PCB Design pour concevoir mon PCB. Vous pouvez choisir n'importe quel logiciel PCB Cad. Le PCB conçu final dans le logiciel de CAO est montré dans l'image ci-dessous,
Un facteur important à noter lors de la conception de ce circuit imprimé est d'utiliser un plan d'alimentation épais pour un flux de courant approprié dans tout le circuit. Il existe également des VIAS de couture au sol (vias aléatoires dans le plan de masse) qui sont utilisés pour un flux de sol correct dans les couches du haut et du bas.
Vous pouvez également télécharger le fichier Gerber de ce PCB à partir du lien ci-dessous et l'utiliser pour la fabrication.
- Télécharger le fichier Gerber de charge électronique réglable en courant continu
Commander votre PCB auprès d'AllPCB
Une fois que vous êtes prêt avec votre fichier Gerber, vous pouvez l'utiliser pour fabriquer votre PCB. En parlant de cela, amène le sponsor de cet article ALLPCB, qui sont connus pour leurs PCB de haute qualité et leur expédition ultra-rapide. Outre la fabrication de PCB, AllPCB fournit égalementAssemblage de PCB et approvisionnement en composants.
Pour obtenir votre commande de PCB de leur part, visitez allpcb.com et inscrivez-vous. Ensuite, sur la page d'accueil, entrez les dimensions de votre PCB et la quantité requise comme indiqué ci-dessous. Cliquez ensuite sur Devis maintenant.
Vous pouvez maintenant modifier les autres paramètres de votre PCB comme le nombre de couches, la couleur du masque, l'épaisseur, etc. Sur le côté droit, vous pouvez choisir votre pays et l'option d'expédition préférée. Cela vous montrera le délai et le montant total à payer. J'ai choisi DHL et mon montant total est de 26 $, mais si vous êtes un client pour la première fois, les prix baisseront à la caisse. Cliquez ensuite sur Ajouter au panier, puis sur vérifier maintenant.
Maintenant, vous pouvez cliquer sur uploader votre fichier Gerber en cliquant sur «Upload Gerber» puis sur acheter.
Sur la page suivante, vous pouvez entrer votre adresse de livraison et vérifier le prix final que vous devez payer pour votre PCB. Vous pouvez ensuite revoir votre commande puis cliquer sur Soumettre pour effectuer le paiement.
Une fois votre commande confirmée, vous pouvez vous asseoir et relayer votre PCB pour qu'il arrive à votre porte. J'ai reçu ma commande au bout de quelques jours, puis l'emballage était soigné comme indiqué ci-dessous.
La qualité du PCB était bonne comme toujours, comme vous pouvez le voir par vous-même sur les images ci-dessous. La face supérieure et la face inférieure de la carte sont illustrées ci-dessous.
Une fois que vous avez votre carte, vous pouvez procéder à l'assemblage de tous les composants. Mon tableau fini ressemble à ceci ci-dessous.
Ensuite, vous pouvez télécharger le code et mettre le module sous tension pour vérifier son fonctionnement. Le code complet de ce projet est donné en bas de cette page. L'explication du code est la suivante.
Code Arduino pour charge CC réglable
Le code est assez simple. Au début, nous avons inclus les fichiers d'en-tête SPI et LCD, ainsi que défini la tension logique maximale, les broches de sélection de puce, etc.
#comprendre
Cette section comprend les déclarations d'entiers et de variables liées au flux de programme. En outre, nous définissons les broches des périphériques associés avec Arduino Nano.
const int slaveSelectPin = 10; // Chip sélectionner pin int number = 0; augmentation int = A2; // Augmenter la broche int diminution = A3; // Diminue la broche int current_sense = A0; // broche de détection de courant int voltage_sense = A1; // broche de détection de tension int state1 = 0; int état2 = 0; int Set = 0; float volt = 0; float load_current = 0.0; float load_voltage = 0,0; courant flottant = 0,0; tension flottante = 0,0; LCD LiquidCrystal (7, 6, 5, 4, 3, 2); // Broches LCD
Ceci est utilisé pour la configuration de l'écran LCD et SPI. De plus, les directions des broches sont définies ici.
void setup () { pinMode (slaveSelectPin, OUTPUT); pinMode (augmenter, INPUT); pinMode (diminution, INPUT); pinMode (current_sense, INPUT); pinMode (tension_sense, INPUT); // initialise SPI: SPI.begin (); // configure le nombre de colonnes et de lignes de l'écran LCD: lcd.begin (16, 2); // Imprime un message sur l'écran LCD. lcd.print ("Digital Load"); lcd.setCursor (0, 1); lcd.print ("Circuit Digest"); retard (2000); }
Il est utilisé pour convertir la valeur DAC.
void convert_DAC (unsigned int value) { / * Step Size = 2 ^ n, Donc 12bit 2 ^ 12 = 4096 Pour la référence 5V, le step sera 5/4095 = 0.0012210012210012V ou 1mV (approx) * / unsigned int container; unsigned int MSB; unsigned int LSB; / * Étape: 1, stocké les données 12 bits dans le conteneur Supposons que les données soient 4095, en binaire 1111 1111 1111 * / conteneur = valeur; / * Étape: 2 Création de Dummy 8 bits. Ainsi, en divisant 256, les 4 bits supérieurs sont capturés dans LSB LSB = 0000 1111 * / LSB = container / 256; / * Étape: 3 Envoi de la configuration avec perforation des données 4 bits. LSB = 0011 0000 OU 0000 1111. Le résultat est 0011 1111 * / LSB = (0x30) - LSB; / * Étape: 4 Le conteneur a toujours la valeur 21 bits. Extraction des 8 bits inférieurs. 1111 1111 ET 1111 1111 1111. Le résultat est 1111 1111 qui est MSB * / MSB = 0xFF & container; / * Étape: 4 Envoi des données 16 bits en les divisant en deux octets. * / digitalWrite (slaveSelectPin, LOW); retard (100); Transfert SPI (LSB); Transfert SPI (MSB); retard (100); // prend la broche SS haute pour désélectionner la puce: digitalWrite (slaveSelectPin, HIGH); }
Cette section est utilisée pour les opérations liées à la détection de courant.
float read_current (void) { load_current = 0; for (int a = 0; a <average; a ++) { load_current = load_current + analogRead (current_sense); } load_current = load_current / average; load_current = (load_current * MAX_VOLT) / 1024; load_current = (load_current / opamp_gain) / load_resistor; return load_current; }
Ceci est utilisé pour lire la tension de charge.
float read_voltage (void) { load_voltage = 0; for (int a = 0; a <average; a ++) { load_voltage = load_voltage + analogRead (voltage_sense); } load_voltage = load_voltage / average; load_voltage = ((load_voltage * MAX_VOLT) /1024.0) * 6; return load_voltage; }
C'est la boucle réelle. Ici, les étapes de commutation sont mesurées et les données sont envoyées au DAC. Après la transmission des données, le flux de courant réel et la tension de charge sont mesurés. Les deux valeurs sont également finalement imprimées sur l'écran LCD.
void loop () { state1 = analogRead (augmentation); if (état1> 500) { délai (50); state1 = analogRead (augmentation); si (état1> 500) { volt = volt + 0,02; } } state2 = analogRead (diminution); if (état2> 500) { délai (50); state2 = analogRead (diminution); if (état2> 500) { if (volt == 0) { volt = 0; } else { volt = volt-0,02; } } } nombre = volt / 0,0012210012210012; convert_DAC (nombre); voltage = read_voltage (); courant = read_current (); lcd.setCursor (0, 0); lcd.print ("Définir la valeur"); lcd.print ("="); Définir = (volt / 2) * 10000; lcd.print (ensemble); lcd.print ("mA"); lcd.setCursor (0, 1); lcd.print ("I"); lcd.print ("="); lcd.print (actuel); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (tension); lcd.print ("V"); // lcd.print (load_voltage); //lcd.print("mA "); // délai (1000); //lcd.clear (); }
Test de notre charge DC réglable
Le circuit de charge numérique est soudé et alimenté à l'aide d'une source d'alimentation 12V. J'ai utilisé ma batterie au lithium de 7,4 V du côté de la source d'alimentation et connecté une pince multimètre pour vérifier son fonctionnement. Comme vous pouvez le voir lorsque le courant réglé est de 300 mA, le circuit tire 300 mA de la batterie, ce qui est également mesuré par une pince multimètre à 310 mA.
Le fonctionnement complet du circuit peut être trouvé dans la vidéo ci-dessous. J'espère que vous avez compris le projet et aimé construire quelque chose d'utile. Si vous avez des questions, laissez-les dans la section des commentaires ou utilisez les forums.