Ampelsteuerung mit dem CH32V003
von Michael Moske
Elektronik-Labor
Projekte
Mikrocontroller PicoBasic
Programmierung umfasst ein sehr weites Gebiet, wobei meistenfalls
Bild- oder Textausgaben produziert werden. Neben der reinen
Darstellung, oder dem Erfassen von Daten mittels Sensoren, ist aber
auch die Prozesssteuerung ein zentrales Thema der Computertechnologie.
Ein einfaches Beispiel für eine Prozesssteuerung ist eine
Ampelschaltung. Hier wird nach festgelegten Zeitintervallen das
Ampellicht gewechselt von z.B. rot auf gelb, grün, gelb oder irgendwie
anders - je nach Nationalstaat durchaus verschieden.
Ziel der vorliegenden Aufgabe ist es eine realistische Abfolge der
Ampelphasen mittels LEDs im Kleinformat bei sich auf dem Schreibtisch
nachzuvollziehen. Neben vielen unterschiedlichen Mikrocontrollern der
Art Atmel/Arduino, RaspberryPi oder anderen gibt es inzwischen den
extrem preisgünstigen CH32V003-Controller. Dieser kann z.B. auf
einfache Art mit grafischer picoBasic Programmierung bedient werden,
die das Programm TestLab liefert, jetzt in Version TestLab31 verfügbar.
Auf diese Weise kann mit einfachen Befehlen per Mausklick programmiert
werden.
Ziel der Aufgabe ist es nun eine realistische Ampelschaltung zu
programmieren, wie wir sie in Deutschland kennen. Hierzu ist es
nützlich zuerst die Zeitverläufen an einer echten Ampelkreuzung zu
ermitteln. Diese sind unterschiedlich je nach erlaubter
Straßengeschwindigkeit. Zuhause nimmt man dann drei LEDs rot, gelb,
grün und steckt sie in das Steckerboard, mit kurzem Beinchen zum
Vorwiderstand (z.B. 1k Ohm) und mit dem langen Beinchen in Richtung
Controllerboard. Diese Seite wird geschaltet (siehe Abbildung). Die
anderen Enden der Widerstände werden zusammen mit dem Minuspol
verbunden. Auf dem Bild unten rechts ist die Stromversorgung wahlweise
mit 3.3 oder 5V angeschlossen.
Es gibt durchaus schon zahlreiche Beispiele für Ampelschaltungen im
Internet. Trotzdem ist zu überlegen, wie man die LEDs nacheinander aus-
und einschaltet -- oder vielleicht sogar gleichzeitig so schaltet, dass
man von einem Zustand (z.B. rot und gleichzeitig gelb vor Beginn der
Grünphase) direkt in den nächsten Zustand wechselt (wo nur noch grün
leuchtet). Ein solches Beispiel liefert das folgende picoBasic
Programm, was es auszuprobieren gilt:
Rem CH32V003
Rem Ampelschaltung
Rem Rot auf Pin C0
Rem Gelb auf Pin C1
Rem Grün auf Pin C2
0x0907 Pdir = 0x07
L1:
0x0801 Pout = 0x01
0x1A0A Delay s = 10
0x0803 Pout = 0x03
0x1A02 Delay s = 2
0x0804 Pout = 0x04
0x1A0A Delay s = 10
0x0802 Pout = 0x02
0x1A05 Delay s = 5
0x2001 Goto L1:
Wer dieses Programm nachvollziehen kann und verstanden hat, der hat
einen großen Schritt in Richtung Prozesssteuerung gemacht. Natürlich
kann man den Aufbau erweitern und eine Fußgängerampel hinzufügen mit
einem Tasterbutton als Bedarfsschalter - oder eine ganze Kreuzung mit
Abbiegerspur. Da sind der Fantasie keine Grenzen gesetzt.
Na dann, viel Spaß und viel Erfolg !
Elektronik-Labor
Projekte
Mikrocontroller PicoBasic