Einstieg in die Regelungstechnik mit Python

Fachbuch von Hans-Werner Philippsen

MicroPython

MicroPython bietet die Möglichkeit Python auf bestimmten Mikrocontrollern direkt auszuführen. Es handelt sich um eine auf Basis von Python 3 entwickelte Untermenge von Python, siehe docs.micropython.org. Da Mikrocontroller ihre Besonderheiten aufweisen, musste jeweils eine spezielle Implementation/Firmware von microPython entwickelt werden. Darüber hinaus wurde auf Speicher und IO-Komponenten der Boards geachtet. Für regelungstechnische Anwendungen sind gerade die IOs in Form von Analog-Digital- und Digital-Analog-Wandlern von Interesse. Damit lassen sich auf einem Breadboard einfache regelungstechnische Versuche praktisch durchführen.

Da sich die Zahl microPython-fähiger Boards ständig ändert, lohnt sich ein Blick auf die Seiten von microPython.org.

Hier soll zunächst das Original, das Pyboard D von microPython vorgestellt werden. Das Pyboard D (und auch die Vorgängerversion) verhält sich nach dem Anschluss an einen USB-Port wie ein zusätzliches Laufwerk. MicroPython ist bereits installiert und kann über eine REPL-Konsole (read-eval-print-loop) direkt ausgeführt werden. Allerdings ist noch mittels Windows-Gerätemanager die Nummer des COM-Ports zu ermitteln. Mit Putty ist das Board nun direkt ansprechbar, sichtbar durch den Prompt mit drei >>>.

Ein Programm, das den Namen main.py trägt, wird nach dem Reset sofort ausgeführt. Für die Entwicklung ist es aber günstiger eine IDE zu verwenden. Allerdings gibt es keine vollständige microPython IDE für alle Boards. Mit Hilfe des pymakr – plugins von Pycom können unter dem Atom-Editor Programme auf dem PC editiert und per RUN-Befehl auf dem microPython-Board ausgeführt werden. Ein upload und download für Dateien funktionieren für das Pyboard. Das Programmsystem uPyCraft (Version 1.1) kann ebenfalls für die Programmierung des Pyboards verwendet werden.

Unter dem Webcode web803 findet sich ein digitaler PI-Regler in Form eines microPython-Programms für das Pyboard D. Als Strecke wurde an den IOs die Reihenschaltung zweier gleicher RC-Glieder (R = 10kOhm, C = 100uF) angeschlossen. Der Ausgangswiderstand des Bords beträgt 12kOhm. Die gemessene Regelgröße und berechnete Stellgröße finden sich in der Datei plog1.txt auf dem Pyboard.

Ein weiterer microPython-fähiger Controler stellt der ESP32 von Espressif dar, der auf diversen Entwicklerboards zur Verfügung steht. Allerdings muss microPython erst auf das Board geflasht werden. Dazu wird eine USB-Verbindung hergestellt und gegebenenfalls der USB-Treiber CP2104 installiert.

Installation microPython auf einem ESP32-Board

Konsole (Anaconda Prompt) als Administrator öffen und in das Verzeichnis …\Anaconda3\Scripts gehen. Dort nacheinander die Befehle

pip install esptool

pip install adafruit-ampy

pip install msgpack ausführen.

Unter …\Anaconda3> den Befehl python -m esptool –port COM3 erase_flash

eingeben. Möglicherweise muss die COM-Port-Nummer noch geändert werden, siehe Gerätemanager. Mit diesem Befehl wird der komplette Flash-Speicher gelöscht.

Nun wird microPython aufgespielt, wobei unter http://micropython.org/download vorab zu prüfen ist, ob eine neuere Version für den ESP32 vorhanden ist.

…\Anaconda3>python -m esptool –port COM3 –baud 460800 write_flash –flash_mode dio –flash_size=detect 0x1000 esp32-20190125-v1.10.bin

Die einzelnen Vorgänge können einige Zeit in Anspruch nehmen, wurden jedoch erfolgreich auf verschiedenen PCs unter Windows 10 ausgeführt. Das ESP32-Board hat nun microPython geladen und kann via Putty (115200 Baud) oder pymakr/Atom angesprochen werden. Weiterhin können Dateien mit Hilfe von ampy vom ESP32-Board auf den PC kopiert werden. Ampy ist testbar mit ampy –help

Es sollte bei der Ausführung von ampy ein delay hinzugefügt werden. Falls keine Verbindung zwischen REPL-Konsole und ESP32 besteht, kopiert der Befehl

ampy –p COM3 –d2 get ‘Dateiname‘ > ‘Dateiname‘ eine ESP32-Datei auf den PC.

Wem das zu umständlich erscheint, kann das Programm uPyCraft nutzen. Damit stehen ein Editor, eine REPL-Konsole und eine Kopierfunktion für bestimmte Dateitypen für den ESP32 zur Verfügung.

Ebenfalls unter dem Webcode web803 findet sich ein digitaler PI-Regler in Form eines microPython-Programms für ein ESP32-Board. Als Strecke wurde an den IOs die Reihenschaltung zweier gleicher RC-Glieder (R = 10kOhm, C = 220uF) angeschlossen. Die gemessene Regelgröße und berechnete Stellgröße finden sich in der Datei elog1.txt auf dem ESP32-Board .

Das Bild zeigt die Sprungantwort der Strecke (blau) sowie x(t) und y(t) für einen Sprung von w. Weitere Informationen über microPython und die Boards finden sich z.B. unter micropython.org und in der make 2/2019.

Theme von Anders Norén