Alimentation pilot�e par micro-contr�leur

ArticleCategory: [Choose a category, do not translate this]

Hardware

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Guido Socher

en to fr Iznogood

AboutTheAuthor:[A small biography about the author]

Guido aime Linux non seulement parce qu'il est amusant d'en d�couvrir les grandes possibilit�s mais aussi � cause des personnes impliqu�es dans sa conception.

Abstract:[Here you write a little summary]

Cet article est le quatri�me volet de la s�rie sur les micro-contr�leurs AT90S4433 de LinuxFocus. Je vous sugg�re de lire les articles pr�c�dents sur la programmation des micro-contr�leurs Atmel pour ce qui concerne :
  1. Comment installer et utiliser l'environnement de d�veloppement d'AVR pour Linux et comment fabriquer le programmateur :
    Mars 2002, Programmer le micro-contr�leur AVR avec GCC
  2. Comment cr�er votre propre circuit imprim� :
    Mai 2002, Un panneau de contr�le LCD pour votre serveur Linux
  3. Comment construire le bo�tier de votre alimentation :
    Septembre 2002, Compteur de Fr�quence 1Hz-100Mhz avec afficheur LCD et interface RS232
Un des �l�ments les plus importants de votre laboratoire personnel est une bonne alimentation fiable. Dans cet article, nous allons construire cette alimentation. Et elle sera r�gul�e par micro-contr�leur. Elle poss�de un afficheur LCD et vous pouvez lui envoyer des commandes depuis votre machine Linux par une interface RS232. Elle est �galement tr�s robuste.

Cet article montre aussi la versatilit� des micro-contr�leurs. Ce n'est pas, malgr� tout, le circuit le plus simple.
Si vous cherchez une simple alimentation � courant continu, jetez un coup d'oeil � "une simple alimentation � courant continu". L'alimentation simple est suffisante pour les autres exp�rimentations �lectroniques pr�sent�es dans LinuxFocus. Cela n'a n�anmoins rien � voir avec Linux et les logiciels en g�n�ral.
M�me si vous avez seulement construit l'unit� "alimentation simple � courant continu", cette lecture vous permettra de d�couvrir de nombreux aspects int�ressants des micro-contr�leurs.

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

Introduction

Cette alimentation pilot�e par micro-contr�leur ne poss�de pas le circuit le plus simple mais je peux vous assurer que vous ne regretterez pas le temps pass� � la construire. Elle est tr�s robuste et fiable. Elle est aussi techniquement tr�s int�ressante car vous apprendrez comment g�n�rer une tension analogique avec un micro-contr�leur sans convertisseur num�rique-analogique.

Il vous faut de nombreux composants pour la r�alisation de cette alimentation, mais ils sont tous bon march�. Elle ne co�te vraiment pas cher.

Ce dont vous avez besoin

Lisez la liste des composants pour savoir ce qu'il vous faut. Vous pouvez aussi voir les composants et leurs valeurs dans le sch�ma ci-dessous.
Il existe trois variantes de notre alimentation. A l'exception du transformateur et d'une r�sistance, les diff�rences ne concernent que le logiciel. Tous les autres composants sont identiques pour les 3 options :
  1. 0-16V Imax=2.2A
    acheter un transformateur de 15V 2.5A
  2. 0-24V Imax=2.2A
    acheter un transformateur de 24V 2.5A
  3. 0-30V Imax=3A
    acheter un transformateur de 30V 3A
Note : Dans les trois cas, il vous faut �videmment un transformateur additionnel 9V, 100mA pour l'alimentation de la carte principale.

Sch�ma et circuit

J'ai utilis� eagle pour Linux pour concevoir le sch�ma et le circuit. Les fichiers eagle sont aussi inclus dans le paquetage tar.gz avec le logiciel. Vous pouvez le t�l�charger � la fin de l'article.

Le circuit est divis� en deux parties. Une partie principale et une partie qui doit �tre � proximit� des transistors de puissance. Vous voyez ci-dessous deux sch�mas ind�pendants pour les deux blocs mais ils doivent ensuite �tre connect�s par des fils.

Le sch�ma principal (cliquez dessus pour une image plus grande) :
[main schematic]

Le sch�ma pour la partie puissance (cliquez dessus pour une image plus grande) :
[power part schematic]
Comment connecter les boutons poussoirs � une matrice (cliquez dessus pour avoir une image plus grande) :
[push buttons schematic]

Le circuit principal, vue de dessus (cliquez dessus pour une image plus grande) :
[board]


Le circuit est sp�cialement con�u pour les �lectroniciens amateurs. Seule la couche bleue est destin�e � �tre grav�e sous forme de circuit imprim�. Les lignes rouges sont des fils. Une carte simple face est plus facile et demande moins de pr�cision dans sa conception. Vous pouvez disposer les fils (en rouge) de mani�re � ce qu'ils soient le plus courts possible. Je n'ai pas r�ussi � le faire avec eagle.

Les quelques composants de la partie puissance de l'alimentation peuvent �tre mont�s sur des cartes prototypes standard (ces cartes avec de nombreux trous). La carte principale et la partie puissance sont connect�es par des fils (JP2 et JP3). Vous noterez que le fil de masse de la partie principale se connecte � la sortie de courant. C'est correct et c'est la raison pour laquelle nous avons besoin de deux transformateurs (un pour la partie puissance et l'autre pour la partie logique du micro-contr�leur et des amplificateurs).

Comment �a marche

En regardant le sch�ma principal, vous pouvez constater qu'il est constitu� deux blocs logiques. L'un est marqu� comme � contr�le de courant � et l'autre comme � contr�le de tension �. Ce sont deux boucles de contr�le ind�pendantes. Une boucle contr�le la tension de sortie pendant que l'autre surveille la chute de tension de la r�sistance de 0.275 Ohm dans la partie puissance. La perte de tension est �quivalente au courant. Les deux blocs de contr�le sont � combin�s � via les diodes D2 et D3. Ces diodes forment une porte OR analogique. C'est-�-dire que si le courant est trop �lev�, la partie de contr�le de courant abaisse la tension jusqu'� ce qu'elle soit au-dessous de la limite (courant suffisamment bas) et la partie de contr�le de tension est charg�e de r�guler la tension en sortie.

Ce OU (OR) logique fonctionne car le transistor T3 est connect� par R19 au +5V. S'il n'y avait pas d'amplificateurs op�rationnels connect�s derri�re D2 et D3 vous obtiendriez le maximum de puissance de sortie. Les amplificateurs op�rationnels dans la boucle contr�lent la sortie en enlevant le +5V de T3 (il en d�tourne autant que n�cessaire vers la masse).

La boucle de contr�le de tension asservit la tension de sortie en fonction du niveau obtenu sur la broche 5 de IC6B. En d'autres termes, la tension sur la broche 5 est �quivalente � la sortie multipli�e par le facteur d'amplification qui est d�termin� par les r�sistances R15, R10 et R16. La m�me chose se produit pour le courant sauf qu'il s'agit de la tension sur la r�sistance R30 et qu'elle est �quivalente au courant de sortie maximum.

De mani�re � obtenir le courant maximum ou � r�guler la sortie de l'alimentation, nous devons seulement fournir les tensions appropri�es sur les deux points (broche 5 d'IC6B et r�sistance R30). C'est ce que fait le micro-contr�leur... mais comment peut-il g�n�rer et r�guler une tension de r�f�rence ? Regardez l'image suivante :
[pwm]

Ce que vous voyez sur l'image est la mani�re dont un signal par impulsion peut �tre transform� en un signal continu. Il suffit de le faire fonctionner au travers d'un filtre passe-bas avec une fr�quence de coupure cent fois (ou plus) inf�rieure � la fr�quence du signal. Comme notre micro-contr�leur fonctionne � 4 MHz, il n'est pas difficile de concevoir un tel filtre passe-bas. M�me si nous mettons en place la g�n�ration du signal par logiciel, nous obtiendrons encore quelques kHz et le filtre sera encore tr�s petit.

La diff�rence dans l'image entre les deux sch�mas est appel�e modulation par impulsion. En changeant la longueur de l'impulsion, nous pouvons modifier la tension derri�re le filtre.

C'est bien, non ? Nous pouvons g�n�rer une tension exacte � partir d'un signal num�rique !

Le micro-contr�leur AT90S4433 poss�de deux compteurs internes. L'un est de 16 bits et l'autre de 8 bits. Le compteur 16 bits peut utiliser la modulation � largeur d'impulsion (PWM) qui existe d�j� mat�riellement dans le circuit AT90S4433 avec une r�solution de 10 bits. Le compteur 8 bits n'a pas cette facult� mais nous pouvons la mettre en place par logiciel. Il est encore suffisamment rapide. Nous utilisons le compteur 16 bits pour la r�gulation de tension, ce qui nous donne 10 bits = 1023 pas de r�solution pour le contr�le de tension. Le courant de sortie est contr�l� par le compteur 8 bits, ce qui nous donne 255 pas pour contr�ler 1-3000 mA. Cela signifie que nous avons une pr�cision de pr�s de 12 mA (ou moins). C'est encore suffisant pour le contr�le du courant.

Toutes les autres parties du circuit concernent l'alimentation et la tension de r�f�rence (le 7805 est notre point de r�f�rence) et permettent de s'assurer que l'alimentation ne devient pas instable lors de la mise sous tension ou hors tension.

Le logiciel

Le logiciel pour le micro-contr�leur utilise beaucoup d'aspects que vous connaissez d�j� depuis les premiers articles (uart pour RS232, afficheur LCD, compteur en mode interruption). Vous pouvez y jeter un coup d'oeil ici :
linuxdcp.c.

Le plus int�ressant, est probablement le logiciel PWM (Pulse Width Modulation). La variable ipwm_phase g�re, avec ipwm_h, le PWM pour le courant. Nous lan�ons simplement le compteur 8 bits en mode interruption et � chaque fois qu'il g�n�re un d�passement, la fonction � SIGNAL(SIG_OVERFLOW0) � est appel�e. Nous contr�lons ici ipwm_phase pour voir si nous devons g�n�rer un 1 ou un z�ro sur la sortie et nous red�marrons le compteur de temps. Facile.

Le logiciel n'est pas du tout compliqu� mais pour le comprendre exactement, vous devez lire la documentation technique du 4433 (voyez les r�f�rences).

Le 4433 est un micro-contr�leur 8 bits et ses capacit�s math�matiques sont tr�s limit�es. Les fonctions divXbyY et multiXbyY g�rent les maths 24 bits, dont nous avons besoin pour calculer avec pr�cision la largeur de l'impulsion � partir d'une tension donn�e, fournie par l'utilisateur.

Notre alimentation poss�de 7 boutons. 6 boutons sont disponibles pour changer les niveaux de tension et de courant et un bouton sert � la mise en � pause �. En utilisant le bouton � pause �, vous pouvez temporairement d�sactiver l'alimentation et encore changer les limites de tension et de courant. L'�tat des boutons est � pulled � (relach�) dans la boucle principale du programme. La variable ignorebutton est utilis�e pour �viter les rebonds des boutons. Lorsque vous pressez un bouton avec le doigt, il rebondit un peu. En tant qu'�tre humain, nous ne le remarquez pas mais le micro-contr�leur est si rapide qu'il verra un bouton press�, relach�, press�... Le compteur ignorebutton attend un peu apr�s la pression sur le bouton pour �viter ce rebond.

Cr�er le circuit imprim�

Le circuit principal :
[main board]
Le bo�tier pour l'alimentation. Du bois pour les cot�s, des feuilles de m�tal pour le fond, le dessus et la face avant :
[box]
La face avant :
[front]
Le paquetage logiciel contient un fichier postscript (linuxDCpower.ps) pour le circuit imprim�. Je trouve personnellement que les pastilles sont toujours un peu trop petites. C'est la raison pour laquelle je recommande fortement de les �largir un peu avec un marqueur avant de graver le circuit. Le processus pour r�aliser un circuit � la maison est d�crit dans : Mai 2002, Un panneau de contr�le LCD pour votre serveur Linux.
Comment construire un boitier �conomique mais esth�tique pour votre alimentation est d�crit dans l'article � Septembre 2002, Compteur de Fr�quence 1Hz-100Mhz avec afficheur LCD et interface RS232 �. Vous pouvez voir le bo�tier et la face avant que j'ai r�alis�s sur la droite. Cliquez sur les images pour des images plus grandes.

Tester

Comme pour tout circuit que vous soudez, il est raisonnable de ne pas connecter directement les �l�ments � l'alimentation mais de proc�der par �tapes. Cela permet de d�tecter les erreurs faites pendant la construction du circuit.
  1. Assemblez le circuit principal mais sans mettre les composants dans leurs supports.
  2. Prenez une batterie de 9V et connectez le plus � la broche 2 et le moins � la broche 1 du connecteur marqu� AC_POWER sur le sch�ma. Utilisez un voltm�tre et v�rifiez que vous avez du +5V sur le max232 entre les broches 8 et 16 et sur les broches 7 et 8 du micro-contr�leur. Sur les amplificateurs op�rationnels, vous devez avoir presque 9V sur la broche d'alimentation positive.
  3. Branchez maintenant la batterie 9V (broche 1 au plus et broche 2 au moins) et v�rifiez que vous avez -9V sur les broches d'alimentation n�gatives des amplificateurs op�rationnels.
  4. Si tous les tests sont pass�s jusque l�, alors l'alimentation de la carte principale fonctionne et il n'est plus risqu� d'ins�rer le max 232 et le micro-contr�leur dans leurs supports.
  5. Utilisez encore la batterie de 9V et connectez-la de mani�re � ce que le +5V fonctionne (voir ci-dessus). Connectez le c�ble du programmateur au port parall�le et au connecteur pour programmer le circuit.
    D�compressez le logiciel (pour le t�l�chargement, voyez le chapitre des r�f�rences), � cd � dans le r�pertoire qui est cr�� et tapez :
    make avr_led_lcd_test.hex
    make testload
    make ttydevinit

    Le logiciel de test doit maintenant �tre charg� dans la carte. Sur l'afficheur du LCD, vous devez voir � hello �, la LED rouge doit clignoter et si vous connectez votre ordinateur � la rs232, vous devriez voir s'afficher � ok � (initialisez la ligne RS232 avec ttydevinit, puis tapez cat /dev/ttyS0 ou cat /dev/ttyS1 pour COM2).
  6. Assemblez maintenant la partie alimentation mais ne connectez pas encore le transformateur principal. Connectez plut�t la batterie de 9V aux c�bles o� le transformateur sera connect�. Quel que soit le sens de connection de la batterie, le condensateur de 4700uF doit toujours �tre charg� autour de 9V. Contr�lez-le avec un voltm�tre.
  7. Lorsque la derni�re �tape de test est pass�e, faites un contr�le final des fils et connectez ensuite tous les transformateurs et alimentez le tout. Sans amplificateurs op�rationnels dans leurs supports, vous devriez obtenir la valeur maximum de tension de sortie. Mesurez-la en faisant attention de ne pas cr�er de court circuit sinon vous grilleriez les transistors puisqu'il n'y a pas encore de limitation de courant.
  8. D�branchez, ins�rez les amplificateurs op�rationnels et reconnectez le c�ble du programmateur, mettez sous tension et tapez :
    make
    make load
  9. L'alimentation doit �tre maintenant pleinement fonctionnelle. Notez que pendant que le c�ble du programmateur est encore connect�, la sortie est toujours d�sactiv�e. D�branchez-le pour avoir la bonne tension et le bon courant en sortie.

Et voici notre propre alimentation

Vous avez vu que nous avions trois options disponibles en fonction du transformateur utilis�. Le logiciel est par d�faut pour une tension de sortie de 16V, 2.2A. Pour le modifier, �ditez le fichier linuxdcp.c et recherchez :
MAX_U, IMINSTEP, MAX_I, et dans la fonction set_i, vous devez changer la calibration si vous avez une sortie de 3A maximum. Le code est bien comment� et vous verrez ce que vous devez changer.

Enfin, voici quelques images de l'alimentation telle que je l'ai fabriqu�e. Cela repr�sente du travail mais c'est vraiment une alimentation tr�s bonne et tr�s robuste. Le temps investi est rentable car une alimentation de laboratoire est r�ellement une des choses les plus utilis�es.

[front view]

[top view]

Utilisation de l'alimentation

La mani�re d'utiliser l'alimentation est � peu pr�s �vidente. Vous avez 4 boutons pour d�finir la tension de sortie. 2 boutons pour augmenter/diminuer de 1V et 2 boutons pour augmenter/diminuer de 0.1V. La limitation de courant peut �tre aussi d�finie par deux boutons. Mais ici, l'�chelonnage n'est pas lin�aire. Pour des valeurs plus petites, vous pouvez incr�menter ou d�cr�menter par pas de 50mA. Pour des valeurs sup�rieures � 200mA, vous avez des pas de 100mA et de 200mA au-dessus de 1A. De cette mani�re, il est facile de parcourir l'�chelle compl�te avec seulement deux boutons.
Le bouton attente peut �tre utilis� pour d�sactiver temporairement l'alimentation sans avoir besoin de red�finir les valeurs lors du retour sous tension.
La LED rouge s'allumera lorsque vous atteindrez la limite du courant et elle clignotera en mode attente.
L'alimentation peut aussi �tre totalement contr�l�e par des commandes ASCII via la ligne s�rie RS232. Les commandes suivantes sont disponibles :

u=X d�finit la tension (i.e. u=105 fixe la tension � 10.5V)
i=Xmax d�termine le courant maximum (i.e. i=500 d�finit la limite de courant � 500mA)
s=1 ou s=0 met en mode attente
u=? ou i=? ou s=? affiche les valeurs actuelles. Par exemple :
u: 50 s:0 i: 100 l:0
u: signifie tension = 50 = 5V, s:0 signifie mode attente d�sactiv�, i: 100 repr�sente 100mA et l:0 signifie que la limite de courant n'a pas �t� atteinte.

En utilisant ce langage de commande ASCII, vous pouvez aussi �crire une interface de commande graphique pour l'alimentation. Pour utiliser la ligne RS232, vous devez d'abord l'initialiser par la commande ttydevinit, qui est incluse dans le paquetage logiciel. Tout ceci est d�crit dans l'article de Septembre 2002, Compteur de fr�quence.

Comme vous l'avez vu dans le sch�ma au-dessus, nous utilisons deux transformateurs et le plan de masse de la logique de contr�le est connect� � la sortie positive. Les deux transformateurs s�parent les tensions et il n'y a normalement pas de probl�me avec ce proc�d�. Nous devons �tablir les connexions de cette mani�re pour avoir la bonne polarit� sur la boucle de retour des amplificateurs op�rationnels. Un mot d'avertissement : Cette installation signifie aussi que la ligne de terre de la ligne RS232 est connect�e � la sortie positive ! En d'autres termes, vous ne pouvez pas utiliser la ligne RS232 si vous utilisez l'alimentation avec des �l�ments qui sont connect�s par ailleurs � la masse de votre ordinateur. Il pourrait �tre judicieux de mettre une �tiquette sur le bo�tier de l'alimentation indiquant � la ligne de masse de la connexion RS232 est connect�e � la sortie positive �. Si vous voulez vous assurer qu'il n'y a pas de possibilit�s de court circuit avec les fils de masse de la RS232, utilisez alors une batterie de portable ou v�rifiez que le circuit aliment� ne poss�de pas d'autres connexions ou n'utilise pas l'interface de commande RS232. Ne soyez pas trop inquiets de cette mise en garde. Si vous ne d�passez pas 250mA sur l'alimentation, la LED rouge vous indiquera que vous avez fait une erreur et qu'il n'y pas de danger pour votre ordinateur m�me si vous avez fait quelque chose de stupide.

S�curit�

Ce circuit contient un transformateur qui est connect� � l'alimentation principale (230V ou 110V en fonction de votre pays). Veuillez vous assurez d'une bonne isolation. Si vous n'avez jamais travaill� avec des alimentations alors demandez � des personnes exp�riment�es de contr�ler votre circuit pour ce qui concerne l'isolation et la s�curit� avant de brancher pour la premi�re fois.

Ajustement

Le logiciel pour l'alimentation est d�j� calibr�. Dans la plupart des cas, il n'y aura rien � modifier. Le mat�riel concern� par la calibration d�pend seulement des 7805, R15, R10, R16 et R38, R30, R26. Seuls ces composants influencent la tension et les niveaux de courant. Si vous voulez faire un ajustement plus fin, vous pouvez soit changer ces r�sistances, soit modifier le logiciel. Notez qu'un c�ble de programmateur connect� influence la sortie. Avant de faire des mesures, vous devez d�connecter le c�ble. Dans le logiciel, vous pouvez faire des modifications dans les fonctions set_u et set_i. Ceci est comment� dans le code de linuxdcp.c

R�f�rences