1.2 Programmieren in Arduino IDE
3. Auslesen des Sensors
Als nächstes wollen wir uns mit dem Auslesen der Sensoren beschäftigen. Hierzu wird wieder der analoge Eingang aus dem Kapitel zuvor als Konstante vom Typ INT definiert. Da es sich bei den analogen Eingängen um Eingänge mit einer Auflösung von 1024 handelt, wird eine Variable zum Einlesen des Bitwertes definiert. Zusätzlich werden noch weitere Variablen (siehe Abbildung 1) definiert, welche für die Umrechnung von Spannung in Temperatur benötigt werden. Hierbei handelt es sich um einfache Rechnungen mithilfe des Ohm'schen Gesetzes. Die Werte der Referenzwiderstände wurden mit einem Multimeter ermittelt und können daher, vom Wert aus dem Kapitel zuvor, abweichen. Der Teil aus Abbildung 1 befindet sich vor der "Setup"-Schleife.
Abbildung 1 Code der benötigten Variablen für den Sensor, Quelle BBS2 Wolfsburg
Nachdem alle benötigten Variablen definiert wurden, können diese benutzt werden. Hierfür gehen wir in die Loop-Schleife. Zunächst liest man über den Befehl "analogRead" den Bitwert der analogen Eingänge der Sensoren aus. Über eine Umwandlung in die Spannung und mit Rechnungen des ohmschen Gesetzes werden die Widerstände der Sensoren berechnet. Über eine lineare Gleichung werden diese Widerstandswerte in Temperaturen umgewandelt. Bei dieser Gleichung handelt es sich lediglich um eine grobe Umwandlung, welche mit Werten aus Internetrecherchen ermittelt wurde. In Abbildung 2 ist der Code hierfür zu sehen.
Abbildung 2 Code Ermittlung der Temperatur der Sensoren, Quelle BBS2 Wolfsburg
Da es sich bei diesem Projekt um ein Prüfverfahren für Sensoren handelt, müssen beide Sensoren miteinander verglichen werden. Hierfür wird innerhalb der Loop-Schleife eine if-Schleife benutzt, welche erst dann "true" wird, wenn der Prüfsensor innerhalb von +- 0,5° des Referenzsensors liegt. Sollte dies der Fall sein wird eine weitere Variable namens "funktion_Sensor" auf 1 gesetzt, ist dies nicht der Fall, wird diese Variable auf 0 gesetzt. Diese Variable wird wie in Abbildung 1 über der Setup-Schleife als INT-Variable deklariert. Zusätzlich zum Vergleich der Sensoren kommt jetzt auch der Taster und die LED ins Spiel. Der Vergleich der Sensordaten erfolgt nämlich erst, wenn der Taster gedrückt wird. Diese wird ebenfalls durch eine if-Schleife umgesetzt, welche mit der Variable "tasterStatus" gefüttert wird. Diese Variable wird zu Beginn der Loop-Schleife über den Befehl "digitalRead" mit Informationen gefüllt, ob der Taster gedrückt ist oder nicht. Geht der Arduino in diese if-Schleife rein, wird dies über die LED mit dem Befehl "digitalWrite" signalisiert. Zusätzlich zum Vergleich der Sensoren werden in dieser Schleife auch Daten an die SPS gesendet (herzu später mehr). Über ein Delay von 2 Sekunden wird verhindert, dass die Schleife beim längeren Drücken des Tasters (z.B. 1 Sekunde) mehrmals aufgerufen wird. Am Ende der Schleife wird die LED wieder auf "AUS" gesetzt. In Abbildung 3 ist die Abfrage des "tasterStatus" und in Abbildung 4 die if-Schleifen zu sehen.
Abbildung 3 Abfrage des tasterStatus, Quelle BBS2 Wolfsburg
Abbildung 4 if-Schleifen, Quelle BBS2 Wolfsburg