Nachdem wir beim
letzten Mal die gesamte Hardware aufgebaut und den ersten Sketch in Betrieb genommen haben, bekommt das LabSupply nun Komfortfunktionen. Die Anweisungsliste des CommandProcessors sieht jetzt so aus:
const MD_cmdProcessor::cmdItem_t PROGMEM cmdTable[] =
{
{ "?", handlerHelp, "", "Help", 0 },
{ "h", handlerHelp, "", "Help", 0 },
{ "st", handlerST, "", "Systemeinstellungen anzeigen", 0 },
{ "u", handlerU, " u", "Usoll: [V]", 1 },
{ "i", handlerI, " i", "Isoll: [mA]", 1 }, //Stromquelle
{ "ix", handlerIX, " x", "Imax: [mA]", 1 },
{ "px", handlerPX, " p", "Pmax: [mW]", 1 },
{ "r", handlerR, "", "Regelung ein/aus", 1 },
{ "um", handlerUM, "", "Spannung messen", 1 },
{ "im", handlerIM, "", "Strom messen", 1 },
{ "ra", handlerRA, " r", "Ramp Parameter
Ustart:Ustop:wie oft?:Steptime[ms]", 2},
{ "rt", handlerRT, "", "Ramp Funktionstest", 2 },
{ "ca", handlerCA, "", "Calibrierlauf", 3 },
{ "cp", handlerCP, "", "Calibrierdaten ausgeben", 3 },
{ "wp", handlerWP, "wp", "Wiper direkt setzen 0-255", 3 },
Strombegrenzung mit ix
Der M401-Wandler verfügt über eine integrierte Strom– und Temperaturbegrenzung. Wir brauchen also keine zusätzliche Strombegrenzung zu seinem Schutz aufbauen. Außerdem ist er gegen Verpolung der Eingangsklemmen und Kurzschluss geschützt.
Unsere einstellbare Strombegrenzung dient dazu, den Versuchsaufbau zu schützen, der mit dem LabSupply betrieben wird. Da unser Gerät in rechnergesteuerte Versuchsaufbauten integrierbar sein soll, liefert es für die Strombegrenzung eine Fehlermeldung via Serial-USB. Der steuernde Rechner liest die Fehlermeldung, extrahiert sie und lässt seinen Parser darüber laufen. Der Parser kennt die normierte Fehlermeldung und liefert die Nummer der Fehlermeldung zusammen mit den Werten beim Steuerprogramm ab. Dieses Programm entscheidet, was passieren soll. Es kann z.B. die Ausgangsspannung zurückregeln (Foldback). Das Steuerprogramm läuft auf einem externen Rechner.
Anweisung ix: Strombegrenzung einstellen
Um die Strombegrenzung einzurichten, geben wir den Wert in mA an. Default ist 4000 mA.
ix 350 z.B. stellt die Strombegrenzung auf 350 mA ein.
Wird dieser Grenzwert überschritten, leuchtet die rote LED „Imax erreicht“ (LED an D3) auf. Gleichzeitig kommt folgende Meldung über die serielle USB-Schnittstelle:
Die letzte Zeile enthält die Fehlerbeschreibung für den Steuerrechner. In spitzen Klammern steht an erster Stelle der Sollwert, an zweiter Stelle der gemessene Istwert.
Die Strombegrenzung funktioniert auch im manuellen Modus. Wenn Sie das 50 k-Poti nach rechts drehen, erkennt das LabSupply sofort, dass der manuelle Modus aktiviert wurde. Die LED an D2 (rot) leuchtet auf. Wenn Sie z.B. mit ix=250 eine Strombegrenzung auf 250 mA einrichten, dann einen passenden Lastwiderstand anschließen, z.B. 10 Ω und das Poti weiter nach rechts drehen, können Sie sehr schön verfolgen, wie die Überstromanzeige-LED an D3 (rot für „Imax erreicht“) aufleuchtet.
Anweisung px: Leistungsbegrenzung einstellen
Für viele Bauteile, z.B. Widerstände, Transistoren u.v.a.m., gibt es Leistungsgrenzwerte. Es kann durchaus sein, dass ein Stromgrenzwert eingehalten wird, die Leistungsbegrenzung aber nicht. Deswegen gibt es die Anweisung px, die einen Grenzwert in Milliwatt gemessen [mW] an das LabSupply gibt.
Wenn bei 5 V maximal 2,5 W möglich sein sollen, gibt es keine Strombegrenzung, sondern für 2500 mW die Anweisung: px 2500 Damit sind wir vom Spannungs- und Stromwert unabhängig.
Die Fehlermeldung ist exakt so aufgebaut, wie bei der Strombegrenzung. LED 3 & 4 blinken abwechselnd.
Anweisung i: Das LabSupply als Stromquelle
Eine Spannungsquelle ist uns Allen sicherlich wohl vertraut. Doch wofür ist eine Stromquelle gut? Um es ganz einfach zu erklären: Eine Stromquelle stellt sicher, dass durch ein externes Element - z.B. einen Widerstand - immer der vorgegebene Strom fließt. Nehmen wir mal an, wir wollen erreichen, dass durch ein Potentiometer immer der gleiche Strom fließt, wenn wir es verstellen.

Unser Poti soll 100 Ω Widerstand haben, wenn dessen Abgriff an einem Ende steht. Wenn er am anderen Ende steht, ist der Widerstand 0 Ω - also ein Kurzschluss. Deswegen empfehle ich zum Test diese einfache Schaltung, die zwischen den Anschlüssen A-B immer mindestens 10 Ω Widerstand garantiert. Wir stellen mit der Anweisung ix 150 einen Strom von 150 mA ein. Nun stellen wir das Poti auf die Stellung, in der es einen Kurzschluss darstellt. Wir sehen, das unser LabSupply eine Spannung von 1,5 V einstellt. Es fließen genau 150 mA. Wir drehen das Poti nach rechts und vergrößern damit den Widerstand. Wir sehen, dass die Spannung immer weiter steigt, der Strom bleibt konstant.
Die theoretische und praktische Grenze liegt ungefähr bei der Mittelstellung des Potis, wenn es 50 Ω erreicht. Da unser LabSuppy bis ca. 6 V Spannung abgeben kann, bleibt auch der Strom bis zu dieser Spannung konstant. Danach kann die Stromquelle nicht noch mehr Spannung liefern und der Strom durch die beiden Widerstände beginnt zu sinken.
Ein Hinweis noch: Der Betriebsmodus als Stromquelle wird durch die grüne LED an D5 angezeigt. Auch während des Stromquellenbetriebs können die Strom- und/oder Leistungsbegrenzung genutzt werden.
Praktischer Einsatz der Strom- und Leistungsbegrenzung
Als ich das Konzept des LabSupply Freunden vorgestellt habe, kamen Fragen und Einwände, warum das Gerät auf überschrittene Grenzwerte nicht selbst reagiert, sondern sie nur meldet. Aus meiner Erfahrung ist das eine philosophische Frage. Im professionellen Labor wählt man für eine Aufgabe - wo immer es möglich ist - ein überdimensioniertes Gerät. Ein Gerät, das keinen Schaden nimmt, wenn Grenzwerte überschritten werden. Das versorgte Experiment bekommt seine eigene Absicherung, die Teil der Versuchssteuerung ist, nicht Teil der Stromversorgung.
In unserem Fall ist das auch so. Sowohl das LabSupply selbst, als auch das vorgeschaltete Laptop-Netzteil sind für den Zweck überdimensioniert. Wenn es anders wäre, müsste das LabSupply bei Überlastung z.B. den „wiper =0“ setzen und damit die niedrigste mögliche Spannung vorgeben. Denkbar ist auch ein Power-MOSFET zwischen Spannungsausgang und Verbraucher, der bei Überlast sofort nichtleitend wird und den Ausgang vom Verbraucher trennt.
Anweisung ra: RAMP-Funktion - das LabSupply bekommt Eigenschaften eines Funktionsgenerators
Für viele Versuche und manche Bastelarbeiten benötigt man eine Spannungsquelle mit Rampenfunktion, einer steigenden bzw. fallenden Spannung. Die einzelnen „Treppenstufen“ sollen innerhalb genau definierter Zeitintervalle durchlaufen werden.
Dazu verwenden wir diese Anweisung mit vier Parametern:
ra Ustart:Ustop:wie oft?:Steptime[ms]
Die Anweisung lautet ra, gefolgt von einem Zwischenraum. Es folgt die Spannung, bei der unsere Rampe starten soll. UStart kann kleiner sein als Ustop, dann führt die Rampe von unten nach oben. Oder umgekehrt, dann läuft sie von der höheren Spannung zur niedrigeren Spannung.
Es folgt der Parameter wie oft?, der eine Integerzahl für die Anzahl an Wiederholungen erwartet. Zuletzt möchte die Anweisung noch wissen, wie viele Millisekunden Sie zwischen den Schritten warten soll: Steptime[ms]. Eine weitere Option wäre möglich gewesen: Die Spannungsdifferenz zwischen den Stufen auch noch vorzugeben. Mir reichte die Anweisung mit vier Parametern.
Bitte die Doppelpunkte zwischen den Parametern nicht vergessen, denn die braucht unser Parser zur Zerlegung der Anweisung.
Wenn die Ramp-Funktion gestartet wurde, meldet sie die Parametereinstellungen via Serial-USB:
Am Ende des Durchlaufes erfolgt eine Fertig-Meldung.
Wer noch keinen solchen „Mini-Parser“ selbst gebaut hat, dem empfehle ich das Studium des Sketches, dort die Zeilen ab #129. Wie sonst auch, habe ich „ausführlich programmiert“, also Wert darauf gelegt, übersichtlich (hoffe ich) und mit Anleihen bei guten Beispielen zu arbeiten, damit sich der Sketch gut nachvollziehen und in eigene Projekte übernehmen lässt.
Ramp-Funktion in der Praxis
Bevor wir die Ramp-Funktion nutzen, ein paar Überlegungen, was wir damit tun wollen und was wir erwarten dürfen.
Zunächst muss klar sein: Das LabSupply ist kein Funktionsgenerator. Es ist eine Stromversorgung mit Steuerung. Weil deren Regler darauf ausgelegt sind, eine Spannung oder einen Strom konstant zu halten, haben sie einige „dicke“ Kondensatoren auf der Platine. Damit ist das Tempo der Regelung limitiert. Es kommt hinzu: Wenn wir ohne Belastung messen, z.B. mit einem Oszilloskop, kann die Ausgangsspannung nur so schnell sinken, wie sich die Kondensatoren von einer höheren zu einer niedrigeren Spannung entladen. Ohne Last ist das aber schlecht möglich. Wenn wir also zu schnell die Spannung senken wollen (RampDown), wird das ohne Belastung schwierig. Der Kondensator braucht auch Zeit, um aufzuladen.
Schauen wir uns praktische Ergebnisse an: Dieses Oszillogramm zeigt das mit 47 Ω belastete LabSupply.
Die Anweisung für diese „Rampe“ war:
ra 1.5:5:10:50
Die unterste Linie markiert 0 V. Die gestrichelte Linie von unten nach oben gesehen, markiert exakt 1,5 V. Die Spannung stieg von 1,5 V auf 5 V an, man erkennt die einzelnen „Treppenstufen“. Man sieht auch, dass die abfallende Flanke etwas Zeit braucht, um wieder bei 1,5 V anzukommen. Diese Zeit lässt sich durch den Belastungswiderstand recht gut steuern. Je kleiner er ist, desto steiler wird die Flanke sein.
Anweisung rt: RAMP-Test
Nun wollen wir doch noch wissen, wie schnell unser LabSupply eine Rampe auf den Bildschirm zaubern kann. Dazu verwenden wir RAMP-Test, eine minimalistische Funktion ohne alle Schnörkel:
Die äußere Hauptschleife wird 1000x durchlaufen, damit Sie in Ruhe die Speicherfunktionen am Oszilloskop einstellen und das Signal sauber triggern können. Die innere Schleife setzt den wiper schrittweise von 0 … 200. Nach 200 Durchläufen fängt der Zyklus von vorne an.
Auf dem Oszillogramm sieht man, dass das LabSupply sauber bei 1.3 V (wiper = 0) mit der Rampe startet und bis knapp 6 V hochzieht. Bei 5 V wird deutlich, dass der 10 Ω-Lastwiderstand die Spannung so weit nach unten zieht, dass die Spannung etwas abfällt. Das hatten wir mit den 47 Ω beim Test der ra-Funktion noch nicht. Dafür ist die Flanke scharf, ca. 10 ms.
Wie lange dauert ein Zyklus? 200 Läufe mit 1ms delay ergeben 200 ms + 2 x ca. 10 ms für die Abläufe im Prozessor. Damit liegt das Ergebnis sicherlich im Rahmen der Erwartungen.
Anweisung st: Status / Systemeinstellungen anzeigen
Nachdem das LabSupply so viele Zusatzfunktionen erhalten hat, kann die Übersichtlichkeit durchaus leiden. Was genau habe ich denn jetzt eingestellt? Wie war das noch? Um die Übersicht herzustellen, gibt es die Auskunftsfunktion: st - ohne Parameter - die unsere Einstellungen zeigt:
In diesem Beispiel ist keine Last angeschlossen, aber eine Strombegrenzung auf 275 mA eingerichtet. Die restlichen Werte sind sicherlich selbsterklärend.
Der Sketch
Unser Sketch ist mit den neuen Funktionen auf etwas über 400 Zeilen angewachsen. Damit er dennoch gut lesbar bleibt, habe ich für die Spannungsmessung die Funktion umeasure, für die Strommessung die Funktion imeasure ausgelagert. Beide Funktionen errechnen einen Mittelwert über 10 Messungen. Bitte beachten Sie, das unser ACS712-Hallmessmodul recht empfindlich auf externe Magnetfelder reagiert. Ich verweise auf meinen AZ-Beitrag zu „TDMM - das sprechende Multimeter“, in dem auf die Thematik näher eingegangen wird. Also bitte das LabSupply nicht direkt neben einen Transformator oder das LabTop-Netzteil stellen, das es versorgt. Ggfls. hilft die Korrektur der imeasure-Funktion. Die „Nullstellung“ wird in Programmzeile 373 festgelegt. Es ist der Wert „520“: Ix = (520.0-float(ii))*25; Eventuell bitte ändern! Wenn die Ausgangsklemmen des LabSupply unbelastet sind, muss der Strom = 0 mA sein.
Für die Signalisierung einer überschrittenen Leistungsgrenze bei der Anweisung px gibt es eine Funktion „flasher“, die unsere LEDs an D3 (rot für „Imax erreicht“) und D4 (gelb für „Gerät kalibriert“) abwechselnd blinken lassen.
Eine Ergänzung am Sketch sind die neuen Variablendeklarationen. Wir haben als maximalen Laststrom Imax = 4000 mA, als Leistungsgrenzwert Pmax = 25000 mW. Es gibt eine boolsche Variable iquelle die uns sagt, ob die Stromquellenfunktion aktiviert ist.
Sobald eine Spannungsvorgabe mit u xxx erfolgt, die ra- oder rt-Funktion verwendet wird, schaltet der Sketch die Stromquellenfunktion automatisch ab.
Fazit
Die beiden Blogbeiträge haben gezeigt, wie Sie mit ganz wenig Aufwand an Zeit und Geld ein leistungsfähiges Labornetzgerät für viele Anwendungen selbst bauen können. Mir tut es exzellente Dienste bei allen Arbeiten mit Mikroprozessoren und der damit verbundenen Messtechnik. Auch zum Testen von Bauteilen, z.B. um eine Transistorkennlinie aufzunehmen, oder ein MOSFET zu untersuchen, setze ich das LabSupply M401 gerne ein.
Für den Einsatz in der Funkanlage habe ich ein modifiziertes Gerät gebaut, das über ein Metallgehäuse verfügt, sowie Netzfilter und Ausgangsfilter. Das M401 taugt durchaus als Mittel- und Kurzwellensender :-) - wenn man auf die Abschirmung verzichtet. Empfindliche Empfänger werden gestört (QRM). Die Störungen lassen sich jedoch mit den beschriebenen Maßnahmen bis an die Grenze des Mess- und Hörbaren begrenzen.
Auf ihre Ideen, Anregungen und Rückmeldungen freue ich mich.
1 comentario
Hans W.
guten Abend, ich plane mir ihre 2 Projekte mal nach zu Bauen.
Steuerbares Netzgerät, und sprechendes Multimeter.
Ich habe da einige probleme mit Fritzing….ihr beider aufbau ist mir zu viel Kabel Salat.
könnte man geg. die beider Fritzing datei mal zuim runterladen bekommen?
eine Andere Bitte sind die Beiden Gehäuse….woher haben sie die? täte mir gerne welche Ordern.
einen schönen Feiertag
grüße und Danke für ihre Rückantwort…