Ein Mikrocontroller gesteuertes Labornetzteil
ArticleCategory: [Choose a category, do not translate
this]
Hardware
AuthorImage:[Here we need a little image from you]
TranslationInfo:[Author + translation history. mailto: or
http://homepage]
original in en Guido
Socher
en to de Guido
Socher
AboutTheAuthor:[A small biography about the author]
Guido mag Linux nicht nur, weil es Spa� macht, die gro�artigen M�glichkeiten,
die dieses System bietet zu entdecken, sondern auch wegen der Leute, die an
seiner Entwicklung beteiligt sind.
Abstract:[Here you write a little summary]
Dieses ist der vierte Artikel in der LinuxFocus
AT90S4433 Mikrocontroller Serie. Es empfiehlt sich, vorangegangene Artikel aus
der Serie im Hinblick auf folgende Punkte zu lesen:
- Wie man die Linux AVR Entwicklungsumgebung installiert und
wie man die Programmierer-Hardware baut:
M�rz 2002, Den AVR
Mikrocontroller mit GCC programmieren
- Wie man eine gedruckte Schaltung selbst herstellt:
Mai 2002, Eine LCD Anzeige und
Steuertasten f�r den Linux Server
- Wie man ein Geh�use f�r die Stromversorgung baut:
September 2002,
Frequenzz�hler 1Hz-100Mhz mit LCD Display und RS232 Interface
Eines der wichtigsten und am h�ufigsten ben�tigten Ger�te in einer
Elektronikwerkstatt ist ein zuverl�ssiges Labornetzger�t.
In diesem Artikel werden wir so ein Netzger�t bauen. Es wird Mikrocontroller
gesteuert sein. Es hat eine LCD Anzeige und man kann es per Kommando
von Linux aus �ber eine RS232 Schnittstelle steuern. Es hat ein
sehr robustes Design.
Dieser Artikel zeigt auch, wie vielseitig Mikrocontroller sind. Es
ist jedoch nicht die einfachste Schaltung. Falls du auf der Suche nach
einer einfachen Stromversorgung bist, empfehle ich
"Simple DC
Power". Die Simple DC Schaltung ist gut, wenn man eine einfache Stromversorgung
f�r andere elektronische Experimente von LinuxFocus braucht. Sie hat
jedoch nichts mit Linux oder Software im allgemeinen zu tun.
Selbst wenn du die "Simple DC Power" Schaltung bauen m�chtest, kann es
interessant sein, diesen Artikel zu lesen. Er behandelt interessante Aspekte
eines
Mikrocontrollers.
ArticleIllustration:[This is the title picture for your
article]
ArticleBody:[The article body]
Einführung
Diese Mikrocontroller basierte Stromversorgung ist nicht die
einfachste Schaltung, aber ich kann dir versichern, dass du es
nicht bereuen wirst, diese Schaltung gebaut zu haben. Sie ist
extrem robust und zuverl�ssig. Sie ist technisch interessant, weil
man sehen kann, wie man mit einem Mikrocontroller eine Gleichspannung
erzeugen kann, ohne einen DA-Konverter-Chip zu benutzen.
Man braucht f�r diesen Artikel eine ganze Reihe Bauteile, aber alles
sind billige Standardteile. Diese Schaltung ist �berhaupt nicht teuer.
Was man braucht
Alle Bauteile die man braucht sind in der Bauteilliste aufgef�hrt.
Man kann die Teile auch in dem Schaltplan weiter unten sehen. Unsere
Stromversorgung kommt in drei Varianten. Au�er dem Transformator
und einem Widerstand unterscheiden sich die Versionen nur in der
Software. Alle anderen Teile sind identisch f�r alle 3 Versionen:
- 0-16V Max=2.2A
man braucht einen Transformator mit 15V 2.5A
- 0-24V Imax=2.2A
man braucht einen Transformator mit 24V 2.5A
- 0-30V Imax=3A
man braucht einen Transformator mit 30V 3A
Beachte: In allen drei F�llen braucht man nat�rlich noch den
9V, 100mA Transformator f�r die Stromversorgung zur Hauptplatine.
Schaltplan und Platine
Ich habe eagle f�r Linux
benutzt, um Schaltung und Platine zu entwickeln. Die Eagle Dateien
sind zusammen mit der Software in dem tar.gz Paket enthalten. Dieses
Paket kann man am Ende des Artikels herunterladen.
Die Schaltung ist in zwei Teile unterteilt: Hauptplatine und einen
Teil, der nahe an den Leistungstransistoren sitzen sollte (Hochstromteil). Unten finden
sich zwei getrennte Schaltpl�ne f�r diese Teile. Sie werden �ber
Dr�hte miteinander verbunden.
Der Schaltplan (Klick auf den Schaltplan f�r ein gr��eres Bild):
Der Schaltplan f�r den Hochstromteil (Klick auf den Schaltplan f�r ein
gr��eres Bild):
Wie man die Taster in einer Matrix verbindet (Klick auf den Schaltplan f�r ein
gr��eres Bild):
Die Hauptplatine. Ansicht von oben (Klick f�r eine gr��ere Ansicht):
Die Platine wurde speziell f�r Hobbyelektronik entwickelt. Nur die
blauen Bahnen werden ge�tzt. Die roten Bahnen sind Dr�hte. Es ist
viel einfacher, eine einseitige Platine herzustellen, weil eine
viel geringere Genauigkeit gebraucht wird. Man kann die roten Dr�hte so
legen, dass sie m�glichst kurz sind. In Eagle war das nicht so einfach
m�glich.
Die wenigen Teile f�r den Hochstromteil kann man auf einer einfachen
Lochrasterplatine montieren. Die Hauptplatine und der Hochstromteil
werden mit Dr�hten �ber die Verbinder JP2 und JP3 verbunden.
Du wirst feststellen, dass Masse von der Hauptplatine mit Plus auf der
Hochstrom-Platine verbunden ist. Das ist richtig. Aus diesem Grund
brauchen wir zwei Transformatoren (einen f�r den Hochstromteil und
einen f�r die Logik und den Mikrocontroller auf der Hauptplatine).
Und so funktioniert's
Betrachtet man den Schaltplan, dann sieht man, dass er aus
2 logisch getrennten Teilen besteht. Einer ist mit "current control"
(Stromregelung) und der andere mit "voltage control" (Spannungsregelung)
bezeichnet. Diese zwei Teile stellen unabh�ngige Regelkreise dar.
Die eine Schleife regelt die Spannung und die andere den Spannungsabfall
�ber dem 0.275 Ohm Widerstand. Der Spannungsabfall ist �quivalent zum
Strom. Diese zwei Regelkreise werden "kombiniert" �ber die Dioden D2 und
D3. Diese Dioden sind ein analoges ODER. Mit anderen Worten, wenn der
Strom zu hoch ist, dann regelt die Stromregelung bis er passt und wenn
die Spannung zu hoch ist, wird diese durch die Spannungsregelung
begrenzt.
Das logische ODER funktioniert, weil der Transistor T3 �ber R19 an
+5V angeschlossen ist. Wenn kein Operationsverst�rker hinter D2
und D3 angeschlossen ist, dann h�tte man maximale Ausgangsleistung.
Die Operationsverst�rker regeln also, indem sie dem Transistor T3
die Spannung wegnehmen (�ber die Dioden gegen Masse ziehen).
Die Spannungsregelung regelt gem�� der Spannung die an Pin 5 von
IC6B liegt. Mit anderen Worten, Pin 5 ist �quivalent zur Ausgangsspannung
multipliziert mit dem Verst�rkungsfaktor, der sich aus R15, R10 und R16 ergibt.
Das gleiche gilt f�r den Strom. Hier ist es nur die Spannung
an Widerstand R30.
Um die Spannung oder den Strom einzustellen, braucht man also nur
entsprechende Spannungen an den Punkten Pin 5 von IC6B und Widerstand R30
anlegen. Das ist, was der Mikrocontroller hier macht. Wie erzeugt man
aber eine Referenzgleichspannung mit einem Mikrocontroller?
Betrachte folgendes Bild:
Hier kann man sehen, wie ein gepulstes Signal in Gleichspannung
umgewandelt werden kann. Alles was man tun mu�, ist das Signal durch
einen Tiefpass zu schicken, der eine sehr niedrige Grenzfrequenz hat.
Hundertmal (oder mehr) niedriger. Da unser Mikrocontroller mit
4Mhz arbeitet, ist es nicht so schwer, solch einen Tiefpass zu bauen.
Selbst wenn wir die Pulse �ber Software erzeugen und eine Frequenz von
einigen kHz erreichen, ist der Tiefpass immer noch sehr klein, was
die Gr��e der Bauteile angeht.
Den Unterschied in dem Bild zwischen dem oberen und unterem Diagramm
nennt man Pulsweitenmodulation. Indem man die L�nge des Pulses �ndert,
kann man die Spannung hinter dem Filter �ndern.
Genial, nicht wahr? Wir k�nnen ein exaktes Gleichspannungssignal aus
einem digitalen Signal erzeugen!
Der AT90S4433 Mikrocontroller hat zwei interne Z�hler. Einer ist
16bit breit und der andere 8bit. Der 16bit Z�hler kann f�r
Pulsweitenmodulation (PWM) benutzt werden und alles n�tige ist
in dem AT90S4433 schon in Hardware implementiert. Die Aufl�sung ist
hierbei 10bit. Der 8bit Z�hler bietet das nicht, aber wir k�nnen
es in Software implementieren. Das ist immer noch schnell genug.
Wir benutzen den 16bit Z�hler f�r die Spannungsregelung. Das gibt
uns 10bit=1023 Stufen. Der 8bit Z�hler, 255 Stufen, wird benutzt um
den Strom zu regeln, 1-3000mA. Das bedeutet wir haben etwa 12mA (oder
weniger) Aufl�sung. Ausreichend f�r eine Strombegrenzung.
Alle anderen Teile in der Schaltung sind f�r Stromversorgung,
Referenzspannung (der 7805 ist unser Referenzpunkt) und
um sicherzustellen, dass die Schaltung beim Ein- oder Ausschalten
nicht instabil wird.
Die Software
Die Software f�r den Mikrocontroller benutzt viele Dinge, die wir
schon aus fr�heren Artikeln kennen (uart f�r rs232,
LCD Treiber, Z�hler im Interruptmode). Du kannst hier einen
Blick auf die Software werfen:
linuxdcp.c.
Interessant ist vielleicht die Software-PWM (Pulse Width Modulation,
Pulsweitenmodulation). Die Variable ipwm_phase implementiert zusammen
mit ipwm_h die PWM f�r den Strom. Wir lassen den 8bit Z�hler im
Interruptmodus laufen und jedes Mal, wenn der Z�hler �berl�uft, wird
die Funktion "SIGNAL(SIG_OVERFLOW0)" aufgerufen. Hier pr�fen wir
ipwm_phase, um festzustellen, ob eine 1 oder eine 0 erzeugt werden soll.
Danach starten wir den Z�hler wieder. Ganz einfach.
Die Software ist �berhaupt nicht kompliziert, aber um sie zu verstehen, mu�
man das Datenblatt f�r den 4433 kennen (siehe Referenzen).
Der 4433 ist ein 8bit Mikrocontroller und seine mathematischen
F�higkeiten sind begrenzt. Die Funktionen divXbyY und multiXbyY
implementieren 24bit Mathematik. Das gibt uns die Genauigkeit, die
wir brauchen, um die Pulsl�nge aufgrund der vorgegebenen Spannung
zu errechnen.
Das Netzger�t hat 7 Taster. 6 Taster um Strom und Spannung zu ver�ndern
und ein Taster f�r "standby". Mit dem "standby" kann man die
Ausgangsspannung absenken und dann Strom und Spannungsbegrenzung �ndern.
Der Zustand der Taster wird in der Hauptschleife
abgefragt. Die Variable ignorebutton wird benutzt, um die Taster zu
entprellen. Wenn man mit der Hand einen Taster dr�ckt, dann federt er etwas
und schlie�t nicht nur einmal sondern zehnmal oder hundertmal. Ein
Mensch merkt das nicht, aber der Mikrocontroller ist viel zu schnell.
Mit der ignorebutton Variable warten wir nach dem ersten Puls vom
Taster etwas und verhindern dadurch das Prellen.
Die gedruckte Schaltung bauen
Die Hauptplatine:
|
Das Geh�use, Holz an den Seiten und Alu-Bleche oben, unten und
vorne:
|
Die Frontseite:
|
Das Softwarepaket enth�lt eine Postscript Datei (linuxDCpower.ps)
f�r die gedruckte Schaltung. Pers�nlich finde ich das die L�taugen
immer etwas zu klein sind. Ich empfehle daher, einen Lackstift zu nehmen
und alle Augen von Hand nachzuzeichnen. Wie man eine gedruckte
Schaltung macht ist in
Mai 2002, Eine LCD Anzeige und
Steuertasten f�r den LinuxServer beschrieben.
Wie man das Geh�use
baut ist in
September 2002,
Frequenzz�hler 1Hz-100Mhz mit LCD Display und RS232 Interface
beschrieben. Das Geh�use und die Frontseite, wie ich
sie gebaut habe, kann man rechts sehen.
Testen
Wie bei jeder Schaltung, die man gebaut hat sollte man nicht
alles auf einmal an die volle Spannung anschlie�en. Es ist viel
besser, schrittweise alles zu testen. Man macht immer kleine
Fehler und auf diese Weise kann man sie finden, ohne dass eine
Rauchwolke aufsteigt.
- Baue die Hauptplatine mit allen Teilen zusammen, aber stecke die
ICs noch nicht in die Sockel.
- Nimm eine 9V Batterie und schlie�e sie in der Schaltung an die
Pins, die mit AC_POWER markiert sind, an. Plus an Pin 2, Minus an Pin 1.
Nimm ein Voltmeter und pr�fe, dass du +5V an dem max232 zwischen
8 und 16 hast und an dem Mikrocontroller Pin 7 und 8. An den OPs sollten
fast 9V liegen.
- Jetzt die Batterie umdrehen (Pin 1 Plus) und pr�fe, dass du ca. -9V an
der negativen Stromversorgung der OPs hast.
- Wenn das geklappt hat, funktioniert die Stromversorgung f�r die
Hauptplatine und max 232 sowie Mikrocontroller k�nnen in die Fassung gesteckt
werden.
- Nimm wieder die 9V Batterie und schlie�e sie so an, da� +5V vorhanden
sind (siehe oben). Schlie�e das Programmierkabel an den Parallelport und
die Hauptplatine an.
Entpacke die Software (siehe Referenzen am Ende), "cd" in das Verzeichnis,
das beim Entpacken entsteht und dann:
make avr_led_lcd_test.hex
make testload
make ttydevinit
Nun sollte die Testsoftware in der Schaltung geladen sein. Auf dem
LCD sollte "hello" stehen, die rote LED sollte blinken und wenn du die
RS232 Schnittstelle anschlie�t, solltest du sehen, dass "ok" gedruckt wird.
(initialisiere die rs232 Verbindung mit ttydevinit, und tippe dann
cat /dev/ttyS0, oder cat /dev/ttyS1 f�r COM2).
- Bau nun den Hochstromteil zusammen, aber schlie�e den Transformator
noch nicht an. Anstelle des Transformators schlie�e die 9V Batterie an.
Egal, in welcher Richtung die Batterie angeschlossen ist, der 4700uF
Kondensator sollte sich immer bis auf 9V aufladen. �berpr�fe das mit
einem Voltmeter.
- Wenn der letzte Test erfolgreich war, sollte man nochmal
alle Kabel pr�fen und dann die Transformatoren anschlie�en. Ohne
Operationsverst�rker (OP) im Sockel sollte man maximale Ausgangsspannung
erhalten. Bitte aufpassen, dass man keinen Kurzschluss verursacht, da
ohne OPs keine Strombegrenzung vorhanden ist und die Leistungstransistoren
bei einem Kurzschluss durchbrennen w�rden..
- Schalte wieder aus und stecke die Operationsverst�rker in die
Schaltung. Schlie�e nun auch wieder das Programmierkabel an. Einschalten
und dann folgende Zeilen tippen:
make
make load
- Nun sollte das Netzteil voll funktionieren. Beachte, dass, solange
das Programmierkabel angeschlossen ist, die Ausgangsspannung leicht falsch ist.
Entferne das Kabel, um exakte Werte zu erhalten.
Da ist es: Unser eigenes Netzteil
Du hast oben gesehen, dass es 3 Versionen gibt. Die unver�nderte Software ist
f�r 16V, 2.2A. Um das zu �ndern, mu� man die Datei linuxdcp.c
editieren und nach MAX_U, IMINSTEP, MAX_I, suchen. In der Funktion
set_i mu� man die Kalibrierung �ndern, wenn man 3A max. Ausgansstrom hat.
Der Code enth�lt entsprechende Kommentare, die alles erkl�ren.
Nun noch einige Bilder von der Stromversorgung, wie ich sie gebaut
habe. Es ist einiges an Arbeit, aber es ist wirklich ein gutes und
robustes Netzteil. Zeit und M�he sind gut investiert, da ein
Netzteil wirklich eines der wichtigsten Ger�te ist.
Das Netzteil benutzen
Es ist sicherlich fast offensichtlich, wie man das Netzteil benutzt.
Es gibt 4 Taster zum Ver�ndern der Spannung. 2 Taster, um die Spannung
in 1V Schritten zu �ndern und 2 Taster f�r 0.1V Schritte.
Die Strombegrenzung kann mit 2 Tastern ver�ndert werden. Hier sind
die Stufen nicht linear. F�r kleinere Werte kann man den Strom in
50mA Stufen �ndern und f�r Werte �ber 200mA in 100mA Stufen.
�ber 1A in 200mA Schritten. Auf diese Art ist es einfach mit nur
2 Tastern durch den ganzen Wertebereich zu kommen.
Mit Standby kann man die Spannung ausschalten, aber Anzeige und
Einstellungen bleiben.
Die rote LED geht an, wenn die Strombegrenzung anspricht und sie blinkt
im Standby.
Das Netzteil kann v�llig �ber die RS232 Schnittstelle gesteuert werden.
Folgende Ascii Befehle stehen zur Verf�gung:
u=X Setzt die Spannung (z.B. u=105 setzt die
Spannung auf
10.5V)
i=Xmax setzt den Maximalstrom (z.B. i=500 hei�t
500mA)
s=1 oder s=0 standby
u=? oder i=? oder s=? druckt die augenblicklichen Einstellungen. Das sieht so aus:
u: 50 s:0 i: 100 l:0
u: bedeutet Spannung=50 =5V, s:0 bedeutet standby aus, i: 100 ist
100mA, und l:0 bedeutet, dass die Strombegrenzung nicht erreicht ist.
Mit diesen ASCII Befehlen als Sprache k�nnte man auch eine grafische
Bedienungsschnittstelle f�r das Netzteil schreiben. Um die Rs232 Verbindung
zu nutzen, mu� man sie erst initialisieren. Das geht mit dem Befehl
ttydevinit, der im Softwarepaket enthalten ist. Das ist auch in
September 2002,
Frequenzz�hler 1Hz-100Mhz mit LCD Display und RS232 Interface
beschrieben.
Wie du in dem Schaltplan gesehen hast, benutzen wir zwei Trafos und
die Masseleitung der Steuerlogik ist mit dem Plus-Ausgang verbunden.
Die zwei Trafos trennen die Spannung und es gibt normalerweise kein
Problem. Wir m�ssen das so beschalten, um die richtige Polarit�t f�r die
Regelkreise zu haben.
Eine Warnung: Das bedeutet auch, da� die
Masseleitung der Rs232 mit dem Plus-Ausgang verbunden ist! Mit anderen
Worten, man kann die Rs232 Schnittstelle nicht benutzen, wenn man das Netzteil
und eine Schaltung anschlie�t, die auch irgendwie mit der Masseleitung
des Computers verbunden ist. Es ist sicher eine gute Idee einen Aufkleber
auf das Netzteil zu kleben, auf dem steht: "Die Masse-Leitung der RS232
Schnittstelle ist intern mit dem Plus-Ausgang verbunden". Wenn du
sicherstellen m�chtest, da� du keinen Kurzschluss �ber die Masseleitung
deines Computer verursachst, dann benutze entweder einen mit Batterie
betriebenen Laptop oder nimm die RS232 Schnittstelle nicht, wenn die
Schaltung noch irgendwo anders angeschlossen ist. Du brauchst jetzt nicht
zu schockiert zu sein. Wenn die Strombegrenzung im Netzteil auf
maximal 250mA steht, dann kann nichts passieren und das Netzteil wird
dir sagen, wenn du einen Fehler gemacht hast (die rote Strombegrenzungslampe
geht an). Unter 250mA besteht keine Gefahr f�r deinen Computer, selbst wenn
du einen Fehler gemacht hast.
Sicherheit
Die Schaltung enth�lt Transformatoren, die ans Netz angeschlossen sind
(230V oder 110V je nach Land). Bitte sorge f�r richtige Isolierung. Wenn das
dein erstes Netzteil ist, dann bitte eine erfahrene Person, Sicherheit und
Isolation zu pr�fen, bevor die Schaltung mit dem Netz verbunden wird.
Tuning
Die Software f�r das Netzteil ist schon kalibriert. Vermutlich
wirst du nichts �ndern m�ssen. Auf der Hardwareseite h�ngt die
Kalibrierung nur von 7805, R15, R10, R16 und R38, R30, R26 ab.
Nur diese Bauteile bestimmen Strom und Spannung. Um die Kalibrierung
zu �ndern, kann man entweder diese Bauteile �ndern oder die Software
�ndern. Beachte, dass das Programmierkabel die Einstellungen beeinflusst.
Es mu� entfernt werden, bevor man genaue Messungen macht. In der
Software kann man die Funktionen set_u und set_i �ndern. Kommentare
im Code erkl�ren das:
linuxdcp.c
Referenzen
- Die AVR UISP Programmiersoftware: www.amelek.gda.pl/avr/
lokale Kopie: uisp-20011025.tar.gz
- Wie man die Linux AVR Entwicklungsumgebung installiert und
wie man die Programmierer-Hardware baut:
M�rz 2002, Den AVR
Mikrocontroller mit GCC programmieren
- Der Quellcode f�r diesen Artikel: linuxdcpower-0.1.tar.gz,
1201K . Der Schaltplan, die Eagle Dateien und Fotos sind auch
enthalten.
- Alle Software (Updates werden hier auftauchen) und Dokumente
:Software/Datenbl�tter
- Datenblatt f�r bd379 bd379.pdf
44K
- Datenblatt f�r TL082 TL082.pdf
110K
- Datenblatt f�r TL071 TL071.pdf
268K
- Datenblatt f�r 2n3055 2n3055.pdf
64K
- Datenblatt f�r MAX232 MAX220-MAX249.pdf
448K
- Datenblatt f�r ST232, eine billige Variante des echten MAX232:
st232.pdf
100K
- Datenblatt f�r Atmel AT90S4433 avr4433.pdf
2356K
- Atmel Webseite: www.atmel.com/
- Eagle f�r Linux cadsoftusa.com