====== Atten PPS3005S programmierbares Labornetzgerät ====== Unser [[http://shop.boxtec.ch/pps3005s-single-programmable-regulated-power-supply-p-41744.html|Atten PPS3005S]] ist ein sehr robustes und zuverlässiges, wenn zuweilen auch etwas lautes Labornetzgerät für Einsteiger und Fortgeschrittene mit 0-30V Ausgangsspannung und bis 150W Ausgangsleistung. {{ http://cdn.boxtec.ch/images/46701.jpg?400 }} Das Gerät ist programmierbar, das heisst es erlaubt die Steuerung der Spannungseinstellung und Strombegrenzung über eine USB- oder RS232-Schnittstelle (unsere Geräte verfügen über beide Schnittstellen). Ausserdem können auch die momentanen Spannungs- und Stromwerte auf diesem Weg ausgelesen werden. Versuchsaufbauten können so mit einer Datenaufzeichung oder mit dem Abfahren definierter Spannungs-/Stromprofile erweitert werden. ===== Schnittstelle PPS3005S ===== Unabhängig davon ob die RS232- oder die USB-Schnittstelle verwendet wird, sind Protokoll und Parameter wie Baudrate identisch. Alle nachfolgenden Angaben gelten also für RS232 wie USB. ==== Schnittstellenparameter ==== Die Schnittstelle wird normal mit 9600 Baud 8N1 angesteuert. ==== Protokoll ==== Das PPS3005S erwartet immer eine 24-byte lange Nachricht vom steuernden Programm und liefert eine 24-byte Antwort zurück die unter anderem die aktuellen Messwerte enthält. Werte für Spannung und Strom werden dabei als 16bit Integer in zwei Bytes (High Byte und Low Byte) übertragen. ^ Byte ^ Beschreibung ^ Default Wert ^ | 0 | Header Byte | 0xAA | | 1 | Adresse | 0x20 | | 2 | **Kanal 1 Spannung High Byte** | 0 | | 3 | **Kanal 1 Spannung Low Byte** | 0 | | 4 | **Kanal 1 Strom High Byte** | 0 | | 5 | **Kanal 1 Strom Low Byte** | 0 | | 6 | Kanal 2 Spannung High Byte | 0 | | 7 | Kanal 2 Spannung Low Byte | 0 | | 8 | Kanal 2 Strom High Byte | 0 | | 9 | Kanal 2 Strom Low Byte | 0 | | 10 | Kanal 3 Spannung High Byte | 0 | | 11 | Kanal 3 Spannung Low Byte | 0 | | 12 | Kanal 3 Strom High Byte | 0 | | 13 | Kanal 3 Strom Low Byte | 0 | | 14 | n/a | 0x01 | | 15 | **Ausgang Ein/Aus** | 0 | | 16 | Alarm Ein/Aus | 0x1 | | 17 | n/a | 0 | | 18 | 1 = Konstantstromausgang\\ 0 = Überspannungsschutz | 0x1 | | 19 | 0 = unabhängige Ausgänge\\ 1 = Serie geschaltete Ausgänge\\ 2 = Parallel geschaltete Ausgänge | 0 | | 20 | n/a | 0 | | 21 | n/a | 0 | | 22 | n/a | 0 | | 23 | n/a | 0x68 | Da das Protokoll auch für das APS3005S-3D entworfen wurde, unterstützt es bis zu 3 Kanäle - unser PPS3005S nutzt aber nur den ersten, die zwei weiteren sind bei der Ansteuerung eines PPS3005S bedeutungslos. Grundsätzlich werden also zur normalen Steuerung nur die Bytes 2, 3, 4, 5 und 15 verwendet. Leider ist es nicht möglich, nur Werte abzufragen - es muss vorher immer ein Einstellungsbefehl folgen. ===== Software ===== Leider ist die beim Gerät mitgelieferte Software ausschliesslich für Windows und zwar ausschliesslich für Anwender die mit Chinesischen Schriftzeichen umgehen können :-? Aber es gibt Rettung, von [[http://ww.mathias-wilhelm.de/arduino/|Mathias Wilhelm]] steht ein Programm für Windows mit allen Schikanen zum freien Download zur Verfügung und von [[http://boxtec.ch|Boxtec]] gibt es einen Kommandozeilen Client in Python zur Steuerung des PPS3005S: ==== Windows Client ==== Der Client von Mathias Wilhelm für Windows 7 wurde in Visual Basic geschrieben und setzt das [[http://www.microsoft.com/de-ch/download/details.aspx?id=17718|.net Framework]] voraus: {{ :products:pps3005-control2.png?540 |PPS3005-Control Screenshot}} === Download Windows Client === * {{:products:pps3005sv1.0b.zip|pps3005sv1.0b.zip}} .net Windows Client für PPS3005S oder Du kannst den Client direkt von [[http://www.mathias-wilhelm.de/arduino/reviews/atten-power-supply/|Mathias Wilhelms Webseite]] herunterladen. ==== Python Kommandozeilen Client für Linux/BSD/MacOSX/Windows ==== Der Python Client ist gedacht als einfaches Beispiel für die Ansteuerung des PPS3005S. Das Skript kann aber dank seinen Optionen ohne weiteres von anderen Programmen wie PHP Skripts, CGI Skripts, Shell Scripts, Batch Dateien etc. aufgerufen werden. === System Voraussetzungen === * Python 2.7 oder höher * [[http://pyserial.sourceforge.net/|python-serial]] Modul === Anwendung pps3005ctl.py === Der Python Client pps3005ctl.py wird ausschliesslich über Kommandozeilenparameter gesteuert: $ ./pps3005ctl.py usage: pps3005ctl.py [-h] [-v VOLTAGE] [-i CURRENT] [-o {0,1}] -p PORT [-q] [-l] Mit der Option **-h** wird die Hilfe ausgegeben: usage: pps3005ctl.py [-h] [-v VOLTAGE] [-i CURRENT] [-o {0,1}] -p PORT [-q] [-l] optional arguments: -h, --help show this help message and exit -v VOLTAGE, --voltage VOLTAGE Set voltage to [0-30]V -i CURRENT, --current CURRENT Set current to [0-5]A -o {0,1}, --output {0,1} Switch output to ON/OFF [0|1] -p PORT, --port PORT Set serial port to: [COM0-99|/dev/ttyUSB0-99] -q, --quiet Don't be verbose -l, --loop Constantly read and output values from device == Beispiel Verwendung == Um nun z.B. **5.5V** mit **150mA** Strombegrenzung an einem PPS3005S welches an /dev/ttyUSB0 angeschlossen ist einzustellen, verwendet man z.B. folgenden Befehl: ./pps3005ctl.py -p /dev/ttyUSB0 -v 5.5 -i 0.150 Das Programm meldet darauf zurück: Setting serial port to /dev/ttyUSB0 Setting voltage to 5.5 Setting current to 0.15 Voltage: 0.0 Current: 0.0 Output: OFF Damit ist der Ausgang noch nicht aktiv geschaltet, das heisst die Spannung und Strombegrenzung sind eingestellt, aber noch nicht aktiv. Den Ausgang aktiviert man mit: ./pps3005ctl.py -p /dev/ttyUSB0 -v 5.5 -i 0.150 -o 1 In diesem Fall ist der Ausgang nun eingeschaltet, das Programm gibt folgendes zurück: Setting serial port to /dev/ttyUSB0 Setting voltage to 5.5 Setting current to 0.15 Switching output to 1 Voltage: 0.0 Current: 0.0 Output: ON == Loop (Schlaufenbetrieb) == Eine weitere Option ist **-l** für Schlaufenbetrieb, das heisst das Programm liest laufend Messwerte aus und gibt diese auf der Konsole aus, ideal zur Datenaufzeichnung. Das Programm beendet sich erst wenn es ein CTRL+C sieht: ./pps3005ctl.py -p /dev/ttyUSB0 -v 5.5 -i 0.250 -o 1 -l Ergibt mit einem angeschlossenen [[http://shop.boxtec.ch/heating-pad-5x10cm-p-40960.html|Heizpad]] eine fortlaufende Ausgabe von: Setting serial port to /dev/ttyUSB0 Setting voltage to 5.5 Setting current to 0.25 Switching output to 1 Voltage: 1.27 Current: 0.248 Output: ON Voltage: 1.27 Current: 0.248 ... == Maschinenlesbare Messwerte == Um die Messwerte einfach in anderen Programmen weiterzuverwerten kann die Option **-q** verwendet werden, diese gibt die Messwerte in maschinenlesbarer Form aus: ./pps3005ctl.py -p /dev/ttyUSB0 -v 5.5 -i 0.250 -o 1 -l -q 1.35 0.248 ON 1.27 0.248 ON 1.35 0.248 ON ... === Download Python Client === * [[{{:products:pps3005ctl.py.zip|pps3005ctl.py}} (ZIP Archiv)