Temperatursensor mit Alarmfunktion (Arduino-Projekt)
Ein ebenfalls interessantes Projekt ist die Temperaturmessung mit dem Temperatursensor LM35. Zusätzlich zur Messung kann eine Messgrenze und ein damit verbundenes Alarmsignal eingefügt werden, beispielsweise zur richtigen Temperierung des Nudelwassers oder des Wassers in der Badewanne
Material:
- Arduino Genuino UNO
- Temperatursensor LM35
-
Befestigungsmaterial - hier gibt es mehrere Möglichkeiten:
- Entweder werden die Strom- und Datenkabel fest an den Sensor angelötet...
- ...oder an einem Schraubklemmenshield befestigt
- Kabel
-
Zusatz für Alarm:
- LED +Kabel...
- ...oder Buzzer+Kabel
Funktionsweise:
Der Sensor kann einen Messbereich von 0 bis 150 grad Celsius erfassen; übertragen auf die technische Ebene bedeutet dies einen Spannungsbereich von 0 bis 1.5V und einen Zahlenbereich von 0 bis 307. Die aus der Spannung ermittelte Zahl wird als Variable - in unserem Fall "sensorwert" gespeichert und dann in eine Temperaturangabe verwandelt:
Der map-Befehl:
temperatur = map(sensorwert, 0, 307, 0, 150);
temperatur = map ( a , b , c , d , e)
a= umzuwandelnde Zahl
b= minimum Messbereich
c= maximum Messbereich
d= minimum Ausgabewert
e= maximum Ausgabewert
Nach der Umwandlung des analog ausgelsenen Wertes in einen Temperaturwert, wird die ermittelte Zahl an den seriellen Monitor weitergereicht und dort mit dem Textzusatz "Grad Celsius" protokolliert.
In unserem Beispiel wird in den Sketch noch eine "Alarmgrenze" integriert. Sobald eine bestimmte Temperatur über- oder unterschritten wird, ertönt ein Warnsignal aus einem Piezo - Lautsprecher.
Pinzuteilung:
Arduino - Pin | Anschluss Bauteil |
---|---|
+5V | +5V (roter Kontakt) |
GND | GND (schwarzer Kontakt) |
Pin A0 | Temp.-Signal (gelber Kontakt) |
Zusatz: Temperaturalarm | |
Pin D5 | + Pol (Piezo-Lautsprecher) |
GND | - Pol (Piezo-Lautsprecher) |
wenn möglich sollte der Sensor über eine externe Stromquelle mit 9V versorgt werden (beispielsweise über eine Blockbatterie oder einen 9V Netzteil
Aufbau:
Hier befindet sich ein Link zum Bild des fertigen Aufbaus auf einer externen Website:
Programmcode:
Unter "Download" ist der Sketch im .ino - Format für die Verwendung mit der Arduino IDE - Software verlinkt:
Code Download: Temperaturmessung_Alarm_ino
/*Sketch zur Steuerung eines Temperatursensors, der zusätzlich zur Messung ab einem
*definierten Wert Alarm schlagen kann.
*Bitte unbedingt korrekten Anschluss des Sensors beachten, da dieser bei Vertauschen
*der Anschlüsse sofort durchbrennt!
*Quelle Sketch+Idee:
*https://funduino.de/anleitung#Anleitung_Nr29_Temperatur_messen_mit_dem_LM35
*Ausarbeitung+Anmerkungen: Florian Porth
*/
int LM35 = A0; //Das Sensorsignal wird an Pin A0 empfangen
int sensorwert; //Der Zahlenwert, der später in die Temperaturangabe verwandelt wird
int temperatur = 0;
int t=500; //Delay zwischen den einzelnen Messungen - anpassbar
int piezo=5; //Das Piezo-Signal wird an Pin 5 ausgegeben
int Alarmgrenze = 30 //Ab 30 Grad schlägt der Buzzer Alarm - anpassbar!
void setup()
{
Serial.begin(9600); //seielle Kommunikation starten
pinMode (piezo, OUTPUT); //Definition als OUTPUT
}
void loop()
{
sensorwert=analogRead(LM35); //Definition des Sensorwertes
temperatur= map(sensorwert, 0, 307, 0, 150); //map-befehl
delay(t);
Serial.print(temperatur);
Serial.println(" Grad Celsius"); //Auf dem seriellen Monitor erscheint die Temperatur
//inkl. dem Text "Grad Celsius"
if (temperatur>=Alarmgrenze) //Definition, was bei Erreichen der Alarmgrenze passieren soll
{
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
digitalWrite(piezo, LOW);
digitalWrite(piezo, HIGH);
}
else //Wenn die Alarmgrenze nicht erreicht ist
{
digitalWrite(piezo,LOW); //kein Ton
}
} //beginne von vorne
- Quelle Idee+Sketch
- Anmerkungen+Ausarbeitung: Florian Porth, 10b