Aufgabe Vorschlag C - Aufgabe 4.2 - Mikrocontroller progr… · Abitur Hessen Elektrotechnik LK 2022

Thema: Mikrocontroller programmieren (Arduino) · Aus der Prüfung LK (2022)

Aufgabenstellung

Die Schranke wird durch einen doppeltwirkenden Hydraulikzylinder angetrieben. Dieser Zylinder wird durch ein elektrisch betätigtes, monostabiles, federrückgestelltes 5/2-Wegeventil (Magnetventil) geschaltet. Wird das Magnetventil elektrisch angesteuert, fährt die Schranke bis in die obere Endlage, dort erfolgt eine mechanische Abschaltung. Schaltet man das Ventil hingegen spannungslos, fährt die Schranke bis in die untere Endlage, dort erfolgt eine mechanische Abschaltung.

Das Magnetventil Q1 wird an einer Gleichspannung von 24 V24\,\text{V} betrieben, daher ist ein NPN-Transistor als Schaltverstärker mit Vorwiderstand zu verwenden.

Die Personalzufahrt (Material 1) wird durch drei digitale Sensoren (Schließerkontakte) überwacht:

Sensor B1: Zufahrtskontrolle (RFID), Überprüfung der Zufahrtsberechtigung

Sensor B2: Reflexionslichtschranke, Überwachung des Schrankenbereichs

Sensor B3: Induktionsschleife, Erkennen der Durchfahrt

Fährt Personal ein und ist zufahrtsberechtigt, soll sich die Schranke öffnen. Erst wenn die Lichtschranke die Durchfahrt erkannt hat und das Personal die Induktionsschleife überfahren hat, schließt sich die Schranke. Befindet sich ein Fahrzeug unterhalb der Schranke, darf die Schranke nicht schließen. Wenn die Einfahrt in die Schranke nicht innerhalb einer Zeit von 10 Sekunden10\,\text{Sekunden} vollzogen wurde (Lichtschranke erkennt kein Fahrzeug), schließt die Schranke wieder und es muss erneut die Zufahrtskontrolle ausgelöst werden. Der Abstand zwischen der Reflexionslichtschranke und der Induktionsschleife ist so gewählt, dass ein Fahrzeug niemals von beiden Sensoren gleichzeitig erfasst werden kann.

Material 7: Zu ergänzender Schaltplan

Material 8: Programmcode (unvollständig)

const int zufahrt = 2; // Zufahrtskontrolle B1

const int lichtschranke = 3; // Reflexionslichtschranke B2

const int schleife = 4; // Induktionsschleife B3

const int ventil = 10; // Magnetventil Q1

void setup() {

pinMode(zufahrt, INPUT);

pinMode(lichtschranke, INPUT);

pinMode(schleife, INPUT);

pinMode(ventil, OUTPUT);

}

void schranke(int zustand){

digitalWrite(ventil, zustand);

delay(1);

}

void loop() {

Hier fehlt Programmcode

}

4.2 Implementieren Sie den fehlenden Programmcode in Material 8, so dass die beschriebene Funktion der Personalzufahrt gewährleistet ist.

const int zufahrt = 2; // Zufahrtskontrolle B1

const int lichtschranke = 3; // Reflexionslichtschranke B2

const int schleife = 4; // Induktionsschleife B3

const int ventil = 10; // Magnetventil Q1

void setup() {

pinMode(zufahrt, INPUT);

pinMode(lichtschranke, INPUT);

pinMode(schleife, INPUT);

pinMode(ventil, OUTPUT);

}

void schranke(int zustand){

digitalWrite(ventil, zustand);

delay(1);

}

void loop() { }

Aufgabenstellung: Aufgabe Vorschlag C - Aufgabe 4.2 - Mikrocontroller progr… · Abitur Hessen Elektrotechnik LK 2022

Lösung

Nach den offiziellen Korrekturhinweisen

4.2 Implementieren Sie den fehlenden Programmcode in Material 8, so dass die beschriebene Funktion der Personalzufahrt gewährleistet ist.

Lösung: ```cpp schranke(LOW); boolean einfahrt = false; boolean durchfahrt = false; boolean ausfahrt = false; einfahrt = digitalRead(zufahrt); durchfahrt = digitalRead(lichtschranke); ausfahrt = digitalRead(schleife); if(einfahrt == true && durchfahrt == false && ausfahrt == false){ schranke(HIGH); unsigned long einfahrtszeit = 0; unsigned long deltazeit = 0; unsigned long schrankenzeit = 0; einfahrtszeit = millis(); while(durchfahrt == false){ durchfahrt = digitalRead(lichtschranke); schrankenzeit = millis(); deltazeit = schrankenzeit - einfahrtszeit; if(deltazeit > 10000 && durchfahrt == false){ schranke(LOW); ausfahrt = true; break; } } while(ausfahrt == false){ ausfahrt = digitalRead(schleife); } durchfahrt = digitalRead(lichtschranke); if(ausfahrt == true && durchfahrt == false){ schranke(LOW); delay(1); } } else { schranke(LOW); delay(1); } ```

Die ausführliche Erklärung Schritt für Schritt (mit KI) gibt es mit Premium. Premium

Löse sie direkt hier: automatische Korrektur, Hinweise und Lösung Schritt für Schritt.

‹ Aufgabe Vorschlag B - Aufgabe 2 - Mikrocontroller program… · LK 2022 · Aufgabe Vorschlag A - Aufgabe 2.3–2.5 · LK 2021 ›

Mehr Aufgaben zu Mikrocontroller programmieren (Arduino)