Zwei-Quadranten-Netzgeräte-Serie NGL200 Manchmal muss es linear sein

Automatisierung mit VISA

Die Virtual Instrument Software Architecture (VISA) ist ein, in den 90er-Jahren geborener Standard [3], für Universalität und semantische Interoperabilität in der Laborumgebung. Am FrontEnd steuert der Laboringenieur mit SCPI-Kommandos [4]: eine ":"-separierte Wortsequenz, gefolgt von der zugehörigen Parameterliste. Die häufige Notation Wort[:Silbe]:Buchstabe sagt: die Verkürzung Wort:Buchstabe bewirkt dasselbe, zur SCPI-Konformität muss das Gerät jedoch die lange Variante verstehen. Da unter Python viele gebräuchliche Messgeräteschnittstellen direkt ansprechbar sind, wurde auch der VISA-Standard vom PyVISA-Projekt dafür implementiert. Nach Installation von FrontEnd ($ pip install -U pyvisa) und nativem Treiber ($ pip install -U pyvisa-py) können die SCPI-Kommandos direkt und schnittstellenunabhängig mit der PyVISA-API ausgelöst werden [2]. In der Netzwerkumgebung kann NGL202 beispielsweise mit

"RudisNGL = rm.open_resource('TCPIP::IP_ADRESSE::INSTR')"

als RudisNGL initialisiert und angesprochen werden. Ein SCPI-Kommando mit Rückmeldung leistet dann der Python-Befehl print(RudisNGL.query('SCIP XY')). Das ist gerade für den Embedded-Entwickler spannend, der sein Tool zur Ausführungssteuerung und -analyse (z.B. gdb über PyOCD) ebenfalls aus Python heraus steuert.

Sämtliche NGL200-relevanten SCPI-Kommandos sind im Handbuch auf etwa 50 Seiten dargelegt. Tabelle 1 zeigt daraus einige mögliche elementare Steuerkommandos und damit gleichzeitig den verfügbaren Parameterraum auf NGL200 auf. Das Programmierbeispiel [5] parametriert Kanal 1 als Quelle und Kanal 2 als Last. Das nach dem Handbuch potenziell vorhandene SCPI-Kommando RES:STEP führte die Produktdemo allerdings nicht aus.

Kurze Beispielmessung

Das Netzgerät wird mit dem MSO der Serie 6 vermessen. Die Messreihen werden über PyVISA gesteuert. Alle gezeigten Messwerte unterliegen den Einschränkungen eines Prototyping-Labors.

Restwelligkeit und Rauschen

Es ist fragwürdig, ob sich der geringe Netzgerätelärm über die Bananenbuchsen auch auf das Steckbrett bringen lässt. Deshalb wird mit der profanen Verbindetechnik nachgemessen: der passive 10-MOhm-Tastkopf an 4-mm-Messerleisten und ein 50-Ohm-Koaxialkabel mit BNC- auf Bananenstecker. Die Messung erfolgt in der angeschalteten Quelle, bei Quellparameter UQ = 0 V . Für jede Verbindung und Eingangsbereich wurde einige Minuten ein Histogramm von VRMS und VPP aufgenommen (Bild 10). Die Spannungsbasis wird derart gewählt, dass gerade kein Clipping mehr stattfindet.

Im Ergebnis kann die Quellqualität im 50-Ohm-Bereich ohne spezielle Schirmung mit dem BNC durchaus von den Bananensteckern abgegriffen werden, vermutlich wird man auf spezielle Schirmung nicht verzichten wollen. Ein Pythonbeispiel für die Evaluation des Transientenlärms zeigt [6].

Die Messung konnte nicht im belasteten Betrieb wiederholt werden da ad-hoc keine, über den gesamten Parameterbereich, hinreichend rauscharme Last vorhanden war. Auch der Lastmodus von NGL200 ist dazu ungeeignet, wie bei der nachfolgenden Timingmessung erklärt wird.

Timing

Die Timingmessung benötigt keine besondere Empfindlichkeit und erfolgt mit dem passiven Tastkopf an den Messerleisten (bei 10-MΩ-Kopplung). Dann wird die Anschaltzeit in Abhängigkeit von FTR und Normalmodus im Spannungsbereich von 0 V bis 20 V evaluiert [7]. Im FTR-Modus beträgt diese konstant etwa 100 µs, im Normalmodus steigt sie hin zu kleineren Spannungswerten an (Bild 11).

Beim Versuch eine Ausregelzeit mit unkritischen Werten UQuelle =1 V, ULast = 0 V, RL = 1 Ω unter Verbindung beider Kanäle zu beobachten, machen sich “Überschwinger” bemerkbar (Titelbild). Dabei handelt es sich höchstwahrscheinlich um Relaispreller der Lastverbindung. Da der Spannungspegel am Tastkopf den Sollwert zeitweise fast um ein ganzes Volt überschreitet, taugt dieser Aufbau nicht zur Lärmmessung mit dem niederohmigen Eingangsbereich.

Aufzeichnungen

Mit einem Bananen-auf-USB-Stecker können bidirektional, Strom-Spannungs-Charakeristika von allerhand Embedded-Geräten, aufgezeichnet werden. Das Beispiel betrachtet die Stromaufnahme eines Raspberry-Pi3B+ während des Bootens, das Ladeverhalten von OnePlus-5 und dem reel_board unter Akquise und Anzeige (Bild 12, Bild 13). In einem realistischen Anwendungsfall startet ein Embedded-Entwickler den Datenlogger und initialisiert sein Device in einen Low-Power-Zustand, aus einem einzigen Pythonskript heraus.

Maximal 10 Hz tasten dann aber oberhalb der Taskebene, einzelne Befehle oder Zyklen lassen sich in der generischen Anwendung mangels Synchronisierung ad-hoc nicht erfassen. Zumindest der Energiezähler kann unmittelbar auch für einen Zyklus, eine Instruktion oder Task gelesen werden. Die Batteriecharakterisierung gehorcht der selben Ratio: sofern die Zelldynamik oberhalb der 100-ms-Skala spielt, kann NGL200 eine aussagekräftige Entladekurve aufnehmen.