Lichtwächter

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Autor: Marvin Flach und Andreas Werning
Betreuer: Prof. Göbel

Autor: Marvin Flach und Andreas Werning


Einleitung

In diesem Rätsel geht es darum verschiedene Lichtstärken zu finden und ermitteln. Die Lichtstärke wird mit Hilfe eines Fotowiderstandes gemessen. Entspricht die gemessene Lichtstärke der gesuchten Lichtstärke (+- Toleranz), zählt ein Timer die Zeit. Liegt die Lichtstärke mindestens 5 Sekunden im gesuchten Bereich, wird eine Lösungsziffer für die Lösungskombination auf dem LCD - Display angezeigt. Verlässt die Lichtstärke den gesuchten Bereich unter der 5 Sekunden Grenze, wird die Zeit auf 0 zurückgesetzt. Das Finden verschiedener Lichtstärken kann beliebig oft, für beliebig viele benötigte Lösungsziffern wiederholt werden. Optional kann man Hilfe anfordern, sodass auf dem LCD Display dann angezeigt wird, ob man den Fotowiderstand abdunkeln oder aufhellen muss.

Anforderungen

Tabelle 1: Anforderungen an den Lichtwächter
ID Inhalt Prio Ersteller Datum Geprüft von Datum
Req. 01 Der Arduino muss die Lichtstärke mit dem Fotowiderstand messen und auslesen können. 1 Andreas Werning 17.12.2024
Req. 02 Der Arduino muss die 3 Taster auslesen können. 1 Andreas Werning 17.12.2024
Req. 03 Die gemessene Lichtstärke muss mit dem gesuchten Referenzwert +- Toleranz verglichen werden 1 Andreas Werning 17.12.2024
Req. 04 Liegt die gemessene Lichtstärke innerhalb der Grenzen, soll eine Zeit hochgezählt werden. 1 Andreas Werning 17.12.2024
Req. 05 Verlässt die gemessene Lichtstärke die Toleranzen, dann soll die Zeit auf 0 zurückgesetzt werden. 1 Andreas Werning 17.12.2024
Req. 06 Wird der Fotowiderstand mindestens 5 Sekunden mit der passenden Lichtstärke bestrahlt, muss die Lösungsziffer auf dem Display ausgegeben werden. 1 Andreas Werning 17.12.2024
Req. 07 Durch Drücken des Tasters "Starte Spiel" soll das Spiel gestartet/neu gestartet werden können. 1 Andreas Werning 17.12.2024
Req. 07 Durch drücken des Tasters "Starte Messung" sollen die vier Messungen der zu suchenden Lichtstärken gestartet werden. 1 Andreas Werning 17.12.2024
Req. 08 Nach Starten der Messung soll auf dem Bildschirm der Messfortschritt angezeigt werden. 1 Andreas Werning 17.12.2024
Req. 09 Durch drücken des Tasters "Hilfe", soll durch "++", "+", "-" oder "--" auf dem LCD eine Hilfestellung angezeigt werden. Die Hilfe soll nur beim Finden der Lichtstärke angezeigt werden, bei der der Taster gedrückt wurde 2 Andreas Werning 17.12.2024
Req. 10 Projektdateien auf SVN dokumentiert 2 Marvin Flach 11.10.2024

Funktionaler Systementwurf/Technischer Systementwurf

Abb. 01: Skizze des Systementwurfs in der Draufsicht
Abb. 02: Skizze des Systementwurfs in der Draufsicht

Komponentenspezifikation

Material und Stückliste

ID Anzahl Kosten pro Stück € Summe Bezeichnung / Komponente technische Bezeichnung
1 1 20,99€ 20,99€ Arduino UNO Rev 3 Arduino A000073 Board Uno Rev3 SMD Core ATMega328
2 1 3,29€ 3,29€ Fotowiderstand Fotowiderstand LDR
3 3 1,99€ 5,97€ Einschraubdrucktaster Einschraubdrucktaster schwarz 6mm
4 1 9,88€ 9,88€ LC-Display LC-Display 16x2 i²C
5 1 2,99 € 2,99 € Breadboard Breadboard ausklappbar Polzahl Gesamt 400 (L x B) 82.5 cm x 54.6 mm

Umsetzung (HW/SW)

Planung Software

Abb. 03: Programmablaufplan Lichtwächter

Die Software soll folgendermaßen arbeiten. Der Wert des Fotowiderstand wird dauerhaft ausgelesen. Über den Taster "Start Spiel" wird das Spiel gestartet beziehungsweise neu gestartet. Durch den Taster "Start Messung" kann jetzt die entsprechende Messung gestartet/aktiviert werden. Ist eine Messung aktiv wird abgefragt, ob die Hilfe durch den Taster "Hilfe" aktiviert wurde. Je nach Ergebnis der Abfrage wird auf dem LCD-Display eine Hilfestellung ausgegeben. Dann wird der gemessene Lichtwert mit dem geforderten Lichtwert für die jeweilige Messung verglichen. Auf den geforderten Lichtwert wird eine Toleranz berechnet. Liegt der gemessene Lichtwert im gewünschten Bereich, wird begonnen eine Zeit hochzuzählen. Der Fortschritt wird auf dem Display ausgegeben. Nachdem die hochgezählte Zeit die geforderte Zeit überschreitet, wird auf dem Display eine Lösungsziffer ausgegeben. Anschließend werden Hilfsvariablen gesetzt, zurückgesetzt oder geändert. Zum Beispiel wird die nächste Messung aktiviert, die Hilfestellung wird zurückgesetzt und die aktuelle Messung wird deaktiviert. Während die Lösungsziffer auf dem Display wird wieder ein Timer hochgezählt. Erreicht dieser Timer eine gewünschte Wartezeit wird auf dem Display der Hinweis zum Starten der nächsten Messung ausgegeben. Sind alle 4 Messungen abgeschlossen, wird auf dem Display der Hinweis ausgegeben, dass das Spiel beendet ist.



Umsetzung Software


Abb. 04: Simulink Modell


Im Simulinik-Modell werden die Taster über die entsprechenden digitalen Pins eingelesen. Der Fotowiderstand wird über den Analogpin 0 eingelesen. Der Sensorwert wird dann auf die vier verschiedenen Bereiche zur Messung der Lichtstärken 1-4 weiter geleitet. Er wird mit dem oberen und unteren Grenzwert der geforderten Lichtstärke verglichen. Ist der Wert des Fotowiderstandes kleiner der Obergrenze und größer der Untergrenze, dann wird über den AND-Block ein 1 Signal auf den Multiplikator Block geführt. Der zweite Multiplikator kommt aus dem IO-Device Block. Über die Rückführung aus dem IO-Device Block wird festgelegt welche Messung gerade aktiv ist. Ist dieses Signal 1 wird eine 1 vom Multiplikator auf den Zeitdiskreten Integrator Block weitergeleitet. Anderenfalls ist der zweite Multiplikator 0 und es kommt eine 0 aus dem Multiplikator Block. Der Zeitdiskrete Integrator ist so parametriert, dass das Ergebnis im Sekundentakt die nächste ganze Zahl erreicht. Das Ergebnis des Zeitdiskreten Integrators wird in den IO-Device Block geführt. Die Ausgangssignale aus dem IO-Device Block geben entweder an, welche Messung gerade aktiv ist oder welche Messung abgeschlossen wurde. Da diese Signale zurück geführt werden, muss ein Delay-Block eingefügt werden, da ansonsten eine algebraische Schleife entstehen würde. Die Signale, dass eine Messung beendet ist, werden wieder über einen zeitdiskreten Integrator aufintegriert und gehen wieder in den IO-Device Block hinein.

Abb. 05: IO-Device Block Code 1



Im ersten Teil des IO-Device Block sieht man zunächst einen Spielstart beziehungsweise Neustart. Wird der Taster am Eingang "Starte_Spiel" gedrückt, dann werden alle Hilfsvariablen und Ausgänge welche Messung aktiv ist zurück gesetzt. Anschließend wird eine Anweisung zum Starten der ersten Messung auf dem Display ausgegeben und die Hilfsvariable "Spiel_gestartet" = 1 gesetzt.

Wenn diese Hilfsvariable gesetzt ist und dann der Taster am Eingang "Starte Messung" gedrückt wird, dann wird die Hilfsvariable zurückgesetzt und eine weitere Hilfsvariable "Messung_1" = 1 gesetzt. Diese Variable wird am Ende des Programms auf den Ausgang Messung 1 gelegt und zur ersten Abfrage im Simulink Modell zurückgeführt, sodass diese jetzt aktiv ist. Außerdem wird auf dem Dipslay die Anzeige des Fortschritts vorbereitet. Solange "Messung_1" jetzt aktiv ist, wird der Fortschritt der Zeitmessung berechnet und auf dem Display ausgegeben. Wenn jetzt zusätzlich noch der Taster "Hilfe" gedrückt wird, wird die Variable "Hilfe_Messung_1" gesetzt.

Abb. 06: IO-Device Block Code 2



Wenn jetzt die Variable "Hilfe_Messung_1" aktiv ist, wird der Wert des Fotowiderstandes am Eingang "Sensor_Wert" ausgelesen und mit dem geforderten Wert verglichen.

Liegt der Wert 200 oder mehr über/unter dem geforderten Bereich dann wird neben dem Wort "Hilfe:" ein "--"/"++" ausgegeben.

Liegt der Wert bis zu 200 über/unter dem geforderten Bereich, dann wird neben dem "Hilfe:" ein "-"/"+" ausgegeben.

Liegt der Wert in dem geforderten Bereich, dann wird hinter dem Wort "Hilfe:" nichst mehr ausgegeben.

Abb. 07: IO-Device Block Code 3



Wenn der Wert am Eingang "Zeit_Messung_1" größer als 5 ist und die Messung_1 aktiv ist, dann wird die Variable und somit der Ausgang "Messung_1" zurückgesetzt. Die Hilfestellung für Messung 1 wird ebenfalls zurück gesetzt. Auf dem Display wird jetzt die Lösungsziffer ausgegeben. Die Variable "Messung_1_beendet" wird gesetzt und damit auch der Ausgang. Dieser Ausgang wird dann im Simulink Modell mit einen zeitdiskreten Integrator aufintegriert und an den Eingang des IO-Device Blocks zurückgeführt.

Wenn dieser Wert dann größer als 7 ist, wird die Variable "Messung_1_beendet" wieder zurückgesetzt. Auf dem Display wird der Hinweis zum Starten der zweiten Messung ausgegeben und die Variable "Messung_2_vorbereitet" wird gesetzt. Damit ist die Programmierung für die Messung der ersten Lichtstärke abgeschlossen.


Durch drücken des Tasters "Start Messung" kann nun die zweite Messung begonnen werden. Der Code für die weiteren Messungen ist vom Aufbau her identisch aufgebaut, wie der beschriebene Code. Er ist dementsprechend an den Stellen an denen sich die Messungen unterscheiden angepasst.

Planung Hardware


Abb.08: CAD Modell Hardware


Elektrische Planung


Abb. 09: Schaltplan Lichtwächter

Insgesamt ist der elektrische Aufbau einfach gehalten. Die drei Taster (S1 - S3) sind jeweils mit einem Pull down Widerstand versehen, damit die Spannungen am digitalen Eingang jederzeit klar definiert sind. Der Fotowiderstand R5 ist in Reihe mit dem Widerstand R4 geschaltet. Dadurch ergibt sich ein Spannungsteiler. Die Spannung über dem Fotowiderstand wird dann am Analogeingang 0 abgegriffen. Das LCD-Dipslay ist über den I^2C-Bus an den Arduino angeschlossen. Versorgt werden alle Bauteile mit 5 Volt über den Spannungsanschluss am Arduino.


Komponententest

Ergebnis

Zusammenfassung

Lessons Learned

Projektunterlagen

Projektplan

Projektdurchführung

Weblinks

Literatur


→ zurück zur Übersicht: WS 23/24: Angewandte Elektrotechnik (BSE)