×
produktlogotitle

Seite: ddg_ampel
Diese Seite wurde aktualisiert am 06.01.2021

LOGIN
Benutzer:
Passwort:
 
   if1.net-schulbuch.de

ESP32 Grundlagen - Ports als Ausgänge konfigurieren und verwenden
 - Ampelsteuerung -

 

 

Eine LED wird in Schaltplänen mit dem nebenstehenden Symbol dargestellt.

LEDs müssen korrekt in Flussrichtung des Stroms vom Pluspol zum Minuspol in einer Schaltung verwendet werden. Die Spitze des Dreiecks zeigt auf den Minuspol.

An der LED selbst erkennt man den Minuspol (Kathode genannt) an dem kurzen Draht (Eselsbrücke: Kathode = kurz). Das Gehäuse der LED ist an dieser Seite abgeflacht, wie man in der Abbildung erkennen kann.

Achtung: Ein zu hoher Strom zerstört die LED.

Sie muss deshalb immer zusammen mit einem Widerstand in Reihe geschaltet werden.

Die Abbildung zeigt einen Widerstand in typischer Bauform (axial bedrahtet) und das zugehörige Symbol für den Schaltplan.

Die von uns verwendeten Kohleschichtwiderstände sind mit vier farbigen Ringen (in der Abbildung: braun schwarz schwarz gold = 10Ω±5%) gekennzeichnet. Die beiden ersten Farben bezeichnen Ziffern, der dritte einen Multiplikator und der vierte die Toleranz. Dieser Toleranzring ist meistens gold oder silbern, Farben die auf den ersten Ringen nicht vorkommen.

Widerstandsfarbcode-Tabelle

Die Einbaurichtung eines Widerstandes ist - im Gegensatz zur LED - beliebig.

 

Schaltplan und Schaltungsaufbau

Grundsätzlich geben wir zu jeder Schaltung einen Schaltplan an. Hier den für die Schaltung, mit der wir eine LED an einen Port anschließen.

 

Der Angabe für den Widerstandswert ist hier etwas willkürlich. Jede LED hat in Abhängigkeit von Bauform und Farbe eine fest vorgegebene Durchlassspannung und einen optimalen Breich für die Stromstärke, mit der sie betrieben werden kann. Diese Werte müssen dem Zugehörigen Datenblatt entnommen werden. Für die hier verwendeten LEDs haben wir folgende Daten ermittelt:

Rote LED: 1,6V und 10-20mA
Gelbe LED: 2,2V und 10-20mA
Grüne LED: 2,1V und 10-20mA

Jeder GPIO-PIN des ESP32 liefert eine Spannung von ca. 3,3V im eingeschalteten Zustand. Ihm darf dann ein Strom von maximal 12mA entnommen werden (siehe Datenblatt des ESP32). Nach dem Ohmschen Gesetz entspricht derSpannungsabfall an einem Widerstand dem Produkt aus Strom und Widerstand: U = R * I. Aus der Umformung R = `U/I` kann man damit die für die LEDs benötigten Vorwiderstände berechnen, wenn der Ausgang mit 10 mA belastet werden soll:

Rote LED: R = `(3.3 - 1.6)/0.01` = 170Ω (optimal ist ein Widerstand von 180Ω aus der Reihe E12 mit 10%-iger Toleranz)
Gelbe LED: R = `(3.3 - 2.2)/0.01` = 110Ω (optimal ist ein Widerstand von 120Ω aus der Reihe E12 mit 10%-iger Toleranz)
Grüne LED: R = `(3.3 - 1.2)/0.01` = 120Ω (optimal ist ein Widerstand von 120Ω aus der Reihe E12 mit 10%-iger Toleranz)

   

Tatsächlich wird einheitlich ein Widerstand von 150Ω verwendet, weil auch dann in jedem Fall ein geringerer Strom als 12mA jedem Port entnommen wird.

ACHTUNG: Während des Versuchsaufbaus und bei allen Veränderungen immer das USB-Kabel vom Entwicklungsboard trennen! ... und erst nach sorgfältiger Überprüfung des Aufbaus wieder anschließen. Fehler beim Anschließen können zur Zerstörung des empfindlichen Chips führen.

Die LEDs (langes Beinchen) werden werden folgenden Ports verbunden: 

Rote LED an GPIO25
Gelbe LED an GPIO26
Grüne LED an GPIO27

Die Auswahl der Ports ist in diesem Falle etwas willkürlich, weil die meisten GPIO-Ports als Ausgänge verwendet werden können. Die angegebenen liegen zufällig am Entwicklungsboard so nebeneinander, dass sich eine "schöne" Ampel ergibt.

Jede LED wird durch ihren Vorwiderstand mit GND verbunden (blaue Stromschine). 
Die blaue Stromschine wird mit dem GND-PIN des Boards verbunden.

ACHTUNG: Die Reihenfolge in der LED und Widerstand verbunden werden ist beliebig! Man kann also auch zuerst die Widerstände am Board anschließen und dann jede LED zwischen Widerstand und GND-Schiene.

Mit dem folgenden kleinen Pythonprogramm wird der Versuchsaufbau geprüft.


"""
    Ampel - Lampentest
    (c)2021 if1.net-schulbuch.de (ddf_ampel)
"""
import machine
import time

# Initialisierung der Port-Pins
Rot = machine.Pin(25, machine.Pin.OUT) #Port 25 als Ausgang - rote LED
Gelb = machine.Pin(26, machine.Pin.OUT) #Port 26 als Ausgang - gelbe LED
Gruen = machine.Pin(27, machine.Pin.OUT) #Port 27 als Ausgang - gruene LED

# === Lampentest ===
# einschalten
Rot.on()
Gelb.on()
Gruen.on()
# 5 Sekunden warten
time.sleep(5)
# ausschalten
Rot.off()
Gelb.off()
Gruen.off()
 

Ganz wesentlich ist die Initialisierung der ESP-Ports:

Die Zeile Rot = machine.Pin(25, machine.Pin.OUT) konfiguriert den GPIO25-Port als Ausgang und stellt ihn unter dem Namen Rot dem Programm als Objekt zur Verfügung, so dass mit den Methoden on() undf off() dieser Ausgang geschaltet werden kann:
Rot.off() schaltet den Ausgang aus (= 0 Volt)
Rot.on() schaltet den Ausgang ein (= 3.3 Volt)
Mit Wert = Rot.value() kann man den augenblicklichen Zustand des Ports abfragen (Ergebnis: 0 oder 1 - entspricht off und on) 

 

Aufgabe 1   

Ersetzte den Lampentest durch ein Programm, dass die drei LEDs "ampelgemäß" schaltet.

  1. Verwende eine Schleife für mehrere Durchläufe
  2. Definiere Methoden für die Ampelphasen. Welche werden benötigt?
  3. Welche Zeiten sind für die Ampelphasen sinnvoll? 
    (Schätze zuerst. Erfasse dann die Zeiten an einer realen Ampel)

Selbstverständlich soll die fertige Ampel in einer Endlosschleife arbeiten.

Speicher das fertige Programm in der Datei ampel.py


def RotPhase(Dauer):
    Rot.on()
    Gelb.off()
    Gruen.off()
    time.sleep(Dauer)

 

Aufgabe 2   

Ergänze die Ampelanlage durch eine Fußgängerampel.
Das Ergebnis soll die Steuerung eines Fußgängerüberwegs steuern.

  1. Verwende dafür zusätzlich GPIO18 und GPIO19
  2. Benenne die Ports sinnvoll.
  3. Welche Phasen sind jetzt nötig?
  4. Definiere diese und lege die Reihenfolge in einer Schleife fest.

Teste Dein Programm und lass es in einer Endlosschleife arbeiten.

Das fertige Programm soll in der Datei fussgaengerampel.py gespeichert werden.

 

Aufgabe 3   

Die Vorwiderstände von LEDs werden mit dem Ohmschen Gesetz berechnet, dessen Grundgleichung
`U = R * I` lautet.

Die Gesamtspannung (Uges) teilt sich dabei auf in UD und UR. Also lautet die zugehörige Gleichung des ohmschen Gesetzes für den abgebildeten Stromkreis: `U_ges = U_R + U_D = R_V * I` .
Berechne den benötigten Vorwiderstand in Ohm für die vorgegebenen Daten von Leuchtdiode und für eine Gesamtspannung von 3.3V und 5V.

  1. Blaue Leuchtdiode: 2.9V und 5mA
  2. Grüne Leuchtdiode: 2.4V und 10mA
  3. Rote Leuchtdiode; 1,6V und 15mA
  4. Gelbe Leuchtidode: 2.0V und 20mA
  5. Orange Leuchtdiode: 3.1V und 15 mA
  6. Pink Leuchtdiode: 3.6V und 20mA
  7. Weiße Leuchtdiode: 4V und 20mA

Gib zu dem berechneten Widerstandswert jeweils den nächst größeren Wert aus der E12-Reihe (siehe Aufgabe 4) an.

 

 

Aufgabe 4   

Widerstände mit der Toleranz von 10% werden in der E12-Reihe festgelegt. 
Recherchiere die folgenden Fragestellungen:

  1. Was bedeutet "Toleranz von 10%" bei Widerständen? (Erläutere am Beispiel eines Widerstanden von 220Ω)
  2. Welche Widerstandswerte gehören zur Reihe E12?
  3. Wie ist der Name E12 zu erklären?
  4. Was bedeutet die Angabe 0,25W im Datenblatt eines Widerstandes?

Notiere jeweils, wo du die Antwort auf die Frage gefunden hast.

 

Aufgabe 5   

IDie Abbildung zeigt einen unvollständigen Entwurf für einen  "Signalplan" einer Ampelkreuzung

  1. Analysiere den Plan und seine Elemente
  2. Ändere den Plan passend für den Fußgängerüberweg aus Aufgabe 2 um.
  3. Trage PINs und Zeiten richtig ein.

Signalpläne dieser Art sind sehr übersichtlich und werden deshalb besonders für umfangreiche Ampelanlagen größerer Kreuzungen verwendet.

 

Aufgabe 6   

Die Ampelsteuerung soll für eine vollständige Kreuzung ausgebaut werden. Dazu ist neben der vorhandenen Hauptrichtung zusätzlich eine Steuerung für die Nebenrichtung nebst Fußgängerampel vorzusehen.

  1. Verwende für die Fahrzeugampel der Nebenrichtung LEDs an den GPIOs 12, 13 und 14
  2. Verwende für die zusätzliche Fußgängerampel die GPIOs 4 und 5
  3. Erstelle eine Zeichnung zur Ampelkreuzung
  4. Entwickele einen Signalplan zur Steuerung der Ampelkreuzung
  5. Setze den Signalplan in ein Programm zur Steuerung um. Speichere in die Datei ampelkreuzung.py .
  6. Teste und korrigiere ggf. dein Programm

Du wirst bemerkt haben, dass das Schreiben eines Programms zur Steuerung wesentlich flüssiger "von der Hand" geht, wenn der fertige Signalplan vorliegt. Im folgenden Abschnitt wird eine andere etwas universellere Methode mit derselben Zielsetzung vorgestellt.

 

 

Zum Entwickeln des Programms ist der ESP32 mit dem Computer oder Laptop über die USB-Schnittstelle verbunden. Ein "Embedded System Prozessor" soll aber, wenn das Programm fertig entwickelt ist, unabhängig von der Verbindung zum Computer arbeiten können. Die dahin führenden Schritte werden jetzt dargestellt.

Schritt 1: Das Programm fussgaengerampel.py wird im Speicher des ESP32 (= MicroPython device) abgelegt mit "Datei => speichern unter ...". und dabei umbenannt in main.py. Das schon vorhandene Programm main.py wird dabei überschrieben!

Schritt 2: Das USB-Kabel wird vom Computer getrennt und an ein Ladegerät für ein Handy angeschlossen

Nun sollte der ESP32 unabhängig vom Computer starten und das Programm main.py mit seiner Endlosschleife solange laufen, bis das Gerät vom Strom getrennt wird.

 

boot.py und main.py auf dem MicroPython device

Die beiden Programme boot.py und main.py müssen auf dem "MicroPython device" immer vorhanden sein, wenn dieses unabhängig arbeiten soll. Nach dem Einschalten der Stromversorgung wird zuerst das Programm boot.py  und nach dessen Ablauf das Programm main.py ausgeführt. Das Programm boot.py enthält in diesem Falle keine Anweisungen - tut also nix!
Dieser Vorgang wird IMMER gestartet! Ist das Device an einen Computer angeschlossen, wird durch die Entwicklungsumgebung (hier Thonny) manuell (Stop/Restart) ein Unterbrechungssignal gesendet und  Thonny steuert die weiteren Abläufe. 

 

 

 

 

 

Impressum
© 2023  Net-Schulbuch.de (i123)
10.00  0.1921  8.1.29