Vor vielen Jahren, als ich meine ersten Netzteile gebaut habe, war es nicht anders als heute. Irgendwie musste geklärt werden, ob das Netzteil auch unter Last stabil ist. Damals habe ich das mit einer Ladung unterschiedlich räumlich und resistiv grossen Widerständen geklärt; dass dabei der eine oder andere mit viel Gestank abgebrannt ist, brauche ich nicht ausschweifend zu erwähnen. Zwar ist eine rein resistive Last immer noch eine feine Sache, aber halt eine sehr statische Angelegenheit. So kam schon vor einigen Jahren die Idee einer elektronischen Last, wobei die allererste aus einem Poti, einem Darlington Q und 4 2N3055 bestand. Diese brauchte keine dezidierte Stromversorgung, war aber ein ziemlicher Mist, da ohne irgendwelche Regelung auch mit Emitterwiderständen keine gleichmässige Lastverteilung gelungen ist.
In einem nächsten Schritt bemühte ich dann einen DAC via Atmega 8 und 2 grosse FETs, was gute Ergebnisse lieferte, aber zu wenig genau war.
Somit sollte beim dritten Anlauf alles viel besser werden. Wie so oft hatte ich zuvor diverse Bauteile gekauft, in der Vorstellung irgendwann einmal etwas damit zu bauen. Unter diesen Bauteilen befand sich auch ein MCP4728, ein 4-Kanal 12bit DAC. Dazu fanden sich 4 IRFP250, ein IRF820 und ein SMD Kleinsignal-FET, den ich schon wieder vergessen habe. Wie in letzter Zeit häufiger habe ich gleich einen STM32 genommen, dies mal zur Abwechslung ein STM32F030. Dabei machte ich die wenig erfreulicher Erfahrung, dass ich die I2C-Library, die ich für den STM32F103 geschrieben hab, gleich ganz neu aufsetzen kann, was sich als ziemlicher Krampf herausstellte, aber schliesslich dennoch gelang.
Das Konzept waren 4 Kanäle, einer für den 1mA Bereich, den zweiten für 10mA, den dritten für 100mA und den vierten für den 1A Bereich. Mit Ausnahme des 1mA und des 10mA-Bereich sind beide anderen Strombereiche doppelt ausgelegt - die Last wird also auf je zwei FETs verteilt. Als Shunts hab ich 200Ω, 20Ω, 2x 2Ω und 2x 0,2Ω verbaut. Auf die 2,048V onboard-Referenz des DAC wird also z.B. für 90mA eine Spannung von ~1,8V ausgegeben - natürlich ist der genaue Wert via Kalibrierung im EEPROM ablegbar. Die finale Genauigkeit hängt also nur noch vom verwendeten Multimeter zu Kalibrierung und dem Tempco der Bauteile ab. Für den 1A-Bereich habe ich Dickschicht-Chipwiderstände mit 30W Belastbarkeit eingesetzt, die durchaus etwas driften; ebenso zeigte sich der DAC mit seiner Referenz etwas anfällig, was sich durch ein Minikühlblech etwas bessern liess.
Als Kühlkörper kommt ein zwangsbelüfteter 0,3K/W-Alukörper zum Einsatz; der 60x60mm PWM-geregelte Lüfter hält die Temperatur am Kühlkörper selbst bei 100W stabil bei etwa 45°C.
Zum ersten Mal habe ich in einem Projekt die onchip realtime clock des STM32 eingesetzt, und zwar zur Erfassung der Arbeit - sowohl in Wh als auf Ah; zudem hab ich eine Cutoff-Voltage Funktion programmiert, die beim Unterschreiten einer gesetzten Spannung die Last in standby versetzt. Zur Erfassung der Spannung habe ich wieder den MCP3421 eingesetzt, der mit seinen 17bit bei single-ended Einsatz genug Details erfassen kann, um die maximal erlaubte Spannung von 100V abzudecken.
Im Gegensatz zu meiner anderen uC-Load habe ich statt single supply I/O-RR Opamps simple TL084 verbaut, mit symmetrischer Spannung aus einem kleinen 1W DC/DC Wandler, was sich für die Regelkreise der FETs als sehr gut bewährt hat. Mit dem damit aufgebauten hochohmigen Buffer für den ADC bin ich allerdings noch nichts zufrieden, da der Offset zu sehr ins Gewicht fällt und soweit keine Kalibrierung für den ADC vorgesehen ist. In einem weitere Schnitt der Funktionsumfangserweiterung werde ich noch Sense-Eingänge implementieren und damit auch die Spannungserfassung bzw. Pufferung überarbeiten. Ebenso wäre es interessant, die Load auf constant-power und constant-resistance umzubauen bzw. zu erweitern, was sich sicherlich softwareseitig ohne grosses Aufheben erreichen liesse, allerdings vom Regelverhalten her nach meinen Erfahrungen eher suboptimal verhält.