Hi,

in der letzten Lektion haben wir mit den Grundlagen der Schaltungstechnik begonnen.

Dieses mal wirst du dein neu gewonnenes Wissen an einem ganz praktischen Beispiel ausprobieren.

Wir bauen eine Ampel mit Tag- und Nachtschaltung.

Viel Spaß!

Rechts ranfahren zur Verkehrsmikrokontrolle

In einer echten Verkehrsampel könnte auch ein Mikrocontroller seinen Dienst verrichten. Im Unterschied zu unserer Artduino-Lösung ist die reale Ampelsteuerung vernetzt und kann auf die Signale anderer Ampeln oder auf die Verkehrssituation reagieren. Aber ansonsten kommt unsere Lösung einer echten Ampelsteuerung schon ziemlich nah.  Daran siehst du, wie flexibel so ein Mikrocontroller ist. Ob du nun 3 LEDs mit ein paar Milliampere schaltest, oder eine echte Ampelanlage, in der leistungsstarke Signallampen ihren Dienst tun, ist für die Steuerungslogik gleichgültig. Du könntest denselben Sketch verwenden und anstatt der LEDs sogenannte Relais einsetzen und schon schaltet dein Programm auch eine große Ampel.

Ein Relais ist ein Schalter, der automatisch von einer Steuerung geöffnet und geschlossen werden kann. Dort fließen viel höhere Ströme  als in der Steuerelektronik. Dass man niedrige Ströme und Spannungen für die Schaltlogik verwendet und damit größere Ströme und Leistungen schaltet ist in der Elektronik ganz typisch.

Hier kommt die Auflösung aus Lektion 2

Doch bevor wir loslegehn, muss ich noch ein Versprechen einlösen. Erinnerst du dich an das Ende von Lektion 2?  Wir hatten dort eine LED mit einem Taster ein- und ausgeschaltet und als Vorschlag zur eigenen Weiterentwicklung geschrieben:

  • Für Fortgeschrittene: Definiere eine Variable TOGGLE, die Werte True oder False annehmen kann. Die LED soll leuchten, wenn TOGGLE=wahr ist. Der Taster soll nun lediglich den Zustand von TOGGLE umkehren und damit auf Knopfdruck die LED ein- oder ausschalten.  (Die Auflösung kommt in Lektion 4.)

Den Aufbau dazu findest du unter der Lektion 2, hier nochmal das Bild dazu. Der Taster liegt zwischen Pin 4 und GND, die LED mit Vorwiderstand liegt zwischen +5V und Pin 9.

led_und_taster_komplett3

 

Wenn du die Aufgabe gelöst hast: Super! Dann hast du mit deinen Programmierkenntnissen einen großen Sprung gemacht!

Da wir die Teile dieses Aufbaus auch für die Ampel brauchen, können wir danach auch direkt damit weitermachen.

Was wir hier umgesetzt haben, kommt in der Praxis oft vor, wenn man etwas schalten will, das nur zwei Zustände annehmen kann, so wie die LED an oder aus sein kann. Dafür genügt ein einziger Taster und was beim Drücken des Tasters passiert, hängt davon ab, in welchem Zustand die LED vorher ist. Ist sie an, so schaltet der Taster sie aus und umgekehrt. Dieses Hin- und Herschalten nennt man auch toggeln.

Hier also erstmal die Auflösung:

In Zeile 3 definieren wir die Variable TOGGLE als false.  Die Werte true  und false  sind vom Arduino-Compiler bereits vordefinierte Konstanten, die du für die Programmierung logischer Bedingungen nutzen kannst, zum Beispiel in einer if-Abfrage oder anderen bedingten Kontrollstrukturen wie while , dazu später mehr.

In Zeile 14 fragen wie wieder den Zustand des Tasters ab. Was danach kommt, überrascht dich vielleicht zunächst, aber wenn du versucht hast, das Programm zunächst selbst zu entwickeln, dann ist dir vielleicht aufgefallen, dass sich die Schaltung nicht ganz so, wie erwartet verhält.

Die Zeitspanne zwischen Herunterdrücken und Loslassen des Tasters ist nur einige Sekundenbruchteile lang, aber der Arduino ist schnell genug, um während dieser Zeit den Loop-Block mehr als einmal auszuführen. Während der Taster gedrückt bleibt, wird die LED sehr schnell immer hin und her schalten und beim Loslassen des Tasters wird der Zustand stehen bleiben, der zufällig gerade aktiv war. Das wollten wir so natürlich nicht. Deshalb warten wir, nachdem der Taster als gedrückt erkannt wurde, noch einige Millisekunden und fragen ihn dann nochmal ab. Das nennt man Entprellen des Tasters und damit wird genau der undefinierte Zwischenzustand von vorher aufgehoben. Allerdings musst du jetzt mindestens 100 ms drücken, um die LED umzuschalten. Versuche auch, mit anderen delay-Werten zu  experimentieren!

In Zeile 16 wird schließlich, nachdem der Tastendruck erkannt und durch die erneute Abfrage bestätigt wurde, die Variable TOGGLE  umgeschaltet. Das lösen wir wieder durch den Verneinungs-Operator ! , der aus true  false  macht und umgekehrt. Die Anweisung TOGGLE=!TOGGLE  kehrt also den Wahrheitswert immer um, wenn der Taster länger als 100 Millisekunden gedrückt wird. In Zeile 17 schalten wir in Abhängigkeit vom Wert der Variablen die LED an oder aus.

Wir können hier noch etwas wichtiges mitnehmen: Der erste Aufbau mit dem Taster aus Lektion 2 war ein Morseapparat. Die LED leuchtete genau so lange, wie der Taster gedrückt gehalten wurde. Jetzt haben wir einen Ein/Aus-Schalter daraus gemacht, haben aber an der Schaltung selbst nichts verändert. Wir haben nur einen anderen Sketch übertragen, also sozusagen lediglich die Firmware geändert. Das zeigt die Flexibilität, die so eine Mikrocontroller-Lösung bietet. Derselbe Aufbau kann viele verschiedene Aufgaben erledigen. Das werden wir später noch öfter sehen.

 

Die Ampel zeigt grün für den Arduino…

Doch kommen wir nun endlich zum Aufbau unserer Ampelsteuerung. Bevor wir den Fotowiderstand mit der Tag- und Nachtschaltung einbauen, kommt erstmal die Ansteuerung der Ampel. Du hast ja inzwischen schon Erfahrung mit dem Aufbau von Schaltungen und wirst folgenden Aufbau schnell mit dem Breadboard zusammenstecken können:

Die LED Verschaltung für die Ampelsteuerung
Die LED Verschaltung für die Ampelsteuerung

Wir gehen jeweils über einen Vorwiderstand an die digitalen Pins zwei bis vier. Die Minus-Seiten der LEDs (Kathoden genannt) legen wir mit Drahstückchen zusammen auf einen gemeinsamen Kontakt und verbinden diesen mit GND.

Und hier kommt der Sketch dazu. Wir implementieren zuerst die Tagschaltung und entscheiden uns für einen klassischen Ampelzyklus mit Gelbrot-Phase, bevor es auf Grün springt:

 

 

Die Dauer der einzelnen Phasen und die Zuordnung der LEDs zu den digitalen Ausgängen kannst du im Header bei den Variablendefinitionen anpassen. Im Setup-Block schalten wir zuerst die drei Ausgänge scharf und alle LEDs aus. Dann kommt der Loop-Block, in dem wir mit der delay -Funktion die Ampelphasen nacheinander einstellen.  Unsere kleine Ampel schaltet munter vor sich hin und wiederholt immer wieder die Abfolge, so wie sie im Loop-Block steht. Soweit nichts Neues für dich, alles was wir hier verwendet haben, kam schon mal vorher vor.

Nachts sind alle Ampeln gelb

Jetzt möchten wir aber, dass die Ampel nachts, wenn wenig Verkehr ist, nicht den kompletten Zyklus durchschaltet. Sondern dann soll einfach die gelbe LED als Warnsignal blinken.

Dazu kommt ein neues Bauteil zum Einsatz:  Der Fotowiderstand.

Das ist ein Halbleiterbauelement, das wie ein Widerstand in einer Schaltung eingesetzt wird, im Unterschied zum festen Widerstand sinkt aber der Widerstandswert, wenn Licht auf den Fotowiderstand fällt. Die genauen Widerstandswerte unterscheiden sich ein wenig, je nachdem welchen Typ Fotowiderstand du hast. Du findest hierzu beim Händler technische Angaben und Datenblätter. Meistens ist es aber so, dass der Fotowiderstand bei Dunkelheit einige hundert kΩ groß ist, während er bei vollem Tageslicht auf wenige kΩ oder auch bis auf einige hundert Ω absinkt.  So genau kommt es auch gar nicht drauf an, da wir im Sketch die Umschaltschwelle selbst festlegen können.

Schau dir nun die Schaltung genau an:

Der komplette Aufbau mit Forowiderstand
Der komplette Aufbau mit Fotowiderstand

 

Das ist der Schaltplan des kompletten Aufbaus:

Schaltplan für die Ampel mit Tag- und Nachtschaltung
Schaltplan für die Ampel mit Tag- und Nachtschaltung

Ein Spannungsteiler in Aktion und ein neuer Eingang am Arduino

Wir verwenden hier erstmals einen der analogen Eingänge. Bisher haben wir nur digitale Ein- und Ausgänge verwendet. Die sind immer dann geeignet, wenn unser Schaltvorgang zwei Zustände haben kann, Null oder Eins,  LED ein oder aus, Taster gedrückt oder nicht gedrückt u.s.w.

Das ist beim Fotowiderstand anders: Er verändert den Widerstandswert nicht sprunghaft, sondern kontinuierlich – so wie die Helligkeit im Raum. Wenn du nachts das Licht einschaltest, hast du eine digitale Änderung: Ein Sprung von Dunkel nach Hell. Aber wenn du stattdessen morgens den Sonnenaufgang abwartest, dann wird es langsam und stetig immer heller, es geht mit vielen Zwischenwerten von Dunkel nach Hell. Ebenso stetig verändert der Fotowiderstand seine Ohmzahl.

Am Digitalpin können wir das nicht ausnutzen, wohl aber an den analogen Pins, die du auf dem Arduino Uno unter „Analog IN“ findest. Dahinter verbergen sich sogenannte Analog-Digital Wandler.  Sie wandeln den analogen Wert, der am Pin anliegt in eine Zahl um, die dann der Arduino mit digitalen Mitteln weiterverarbeiten kann. Das funktioniert wieder über eine Spannung:

Der Analog-Digital-Wandler im Arduino wandelt die Spannung, die an einem Analogpin anliegt, in eine Zahl zwischen 0 und 1023 um. Null entspricht GND und 1023 steht für +5V.

Wie kommen wir nun vom veränderlichen Widerstand zur veränderlichen Spannung? Klar, das weißt du aus der letzten Lektion: Ein Spannungsteiler. Dieser besteht aus dem Widerstand R5 in unsererem Schaltplan und dem Fotowiderstand R4. Die Spannung über R5 schicken wir an den analogen Eingang A0.

Im Beispiel haben wir einen Widerstand von R5=68 kΩ gewählt. Dieser ist mit dem Fotowiderstand in Reihe geschaltet, zusammen liegen sie an den +5V Betriebsspannung des Arduino. Du erinnerst dich, dass die Spannung  sich über in Reihe geschalteten Widerständen in dem Verhältnis aufteilt, das die Widerstandswerte zueinander haben. Wenn jetzt helles Sonnenlicht auf den Fotowiderstand scheint, hat dieser einen sehr kleinen Widerstand, verglichen mit den 68 kΩ. Daher fällt wenig Spannung über ihm ab, über R5 liegt fast die ganze Betriebsspannung. Wir lesen also vom Analogeingang einen hohen Wert nahe 1000 aus.

Wird es nun dunkel, dann steigt der Wert des Fotowiderstands. Sagen wir er steigt erstmal auf R4=70 kΩ an.

Dann ist R5 auf einmal ähnlich groß wie der Fotowiderstand. Im Fall gleicher Widerstände teilt sich ja die Betriebsspannung auch gleichmäßig über der Reihenschaltung auf. Es liegen also jetzt nur noch etwa 2,5 V über R5. Dementsprechend wird der Analogeingang jetzt Werte um die 512 liefern. Und je dunkler es wird, desto kleiner werden die Auslesewerte.

Im folgenden Sketch lesen wir den Analogeingang aus und vergleichen ihn mit einem Schwellenwert:

Der Knackpunkt liegt in Zeile 29. Hier fragt das Programm den Analogpin ab und verzweigt entsprechend.

Wie zu erwarten war, lösen wir die Abfrage über eine if -Konstruktion. Die Variable Threshold  legt die Umschaltschwelle fest. Wir haben ja überlegt, dass die Auslesewerte um so größer werden, je heller die Umgebung. Bei mir hat ein Wert von 1000 gut funktioniert. Das steht für eine sehr helle Umgebung, der Fotowiderstand geht aif sehr niedrige Werte herunter. Hier musst du etwas experimentieren und verschiedene Werte ausprobieren, weil die Schwelle von vielen Faktoren abhängt und bei jedem Aufbau anders sein wird. Später werden wir auch Möglichkeiten kennenlernen, um eine solche Schwelle per Drehschalter direkt am Aufbau einzustellen.

Wenn nun die Umgebung so dunkel wird, dass der Auslesewert unter den Wert von  Threshold  sinkt, dann wird der else-Block abgearbeitet und die gelbe LED beginnt langsam zu blinken.

So sieht der komplette Aufbau aus, wenn man zwei Breadboards verwendet. Rechts siehst du den Spannungsteiler mit dem Fotowiderstand und links die Ampel:

Der komplette Aufbau
Der komplette Aufbau

 

Zum Testen kannst du auch den Fotowiderstand mit der Hand oder einer Pappe abdecken oder mit einer Taschenlampe oder einem Handy beleuchten.

Geschafft, das war’s für heute!

Du hast heute wieder viel geschafft und einige der theoretischen Grundlagen vom letzten Mal gleich praktisch anwenden können. Außerdem hast du ein neues Bauteil und eine neue Art mit dem Arduino Daten auszutauschen kennengelernt. Das ist erstmal genug, oder? 🙂

Bestimmt hast du schon viele Ideen um weiter zu experimentieren. Hier noch ein paar Anregungen:

  • Ersetze den Fotowiderstand durch einen Taster, um manuell zwischen Tag- und Nachtmodus zu toggeln
  • Ein Belichtungsmesser: Definiere zwei Schaltschwellen S1 und S2. Lies wieder den Analogpin aus und schalte Rot ein  bei einem Wert kleiner S1, Gelb zwischen S1 und S2 und Gün wenn ein Wert größer S2 ausgelesen wird.
  • Wenn du ein Multimeter hast: Greife im Betrieb die Spannung über dem Fotowiderstand ab und vergleiche die Messungen bei heller und dunkler Umgebung.

 

Viel Spaß und bis zum nächsten Mal!

 

 

 

 

 

 

 

 

 

 

 

Eine Ampel mit Tag- und Nachtschaltung

Ein Gedanke zu „Eine Ampel mit Tag- und Nachtschaltung

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.