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