Banner Ausblenden
Kleines Logo

Willkommen auf PSI-Online

Sie befinden sich in: Unterrichtsangebote Fächer Fachbereich III Informatik WU_Info Arduino 2019-20 Porth, Florian Arduino Projektvorstellung Temperatursensor mit Alarmfunktion (Arduino-Projekt)

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:

  1. Arduino Genuino UNO
  2. Temperatursensor LM35
  3. Befestigungsmaterial - hier gibt es mehrere Möglichkeiten:
    • Entweder werden die Strom- und Datenkabel fest an den Sensor angelötet...
    • ...oder an einem Schraubklemmenshield befestigt
  4. Kabel
  5. 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:

Tempmesser_Alarm_2020_05_31_fritzing

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

 

 

 

Anmerkungen:

Erstellt: Florian Porth (31.05.2020) Letzte Änderung: Florian Porth (08.06.2020)