Arduino – Temperatur auslesen und auf Display ausgeben

Heute möchte ich euch mein erstes reales Projekt vorstellen dass ich mit Arduino erstellt habe. Ich lese über einen oder mehrere an den Arduino angeschlossene ds18x20-Temperatur-Sensoren die Temperatur aus und gebe diese auf einem 16×2 LCD-Display aus. Jedem Temperatur-Sensor kann man dabei einen Namen geben um diese besser unterscheiden zu können. Auf diese Weise kann man den Namen des Sensors gleich mit auf dem Display ausgeben was wesentlich schöner ist als  eine Anzeige wie Temperatur1 oder Temp1. Wenn mehrere Sensoren angeschlossen sind, dann wird die Anzeige in einem vorgegebenen Intervall gewechselt.

Zusätzlich zur Ausgabe der Temperatur auf dem Display habe ich noch eine RGB-LED angeschlossen das je nach Temperaturbereich eine andere Farbe anzeigt.
Liegt die Temperatur des gerade im Display angezeigten Temperatur-Sensors unter 10°C dann leuchtet die LED blau, liegt die Temperatur zwischen 10°C und 20°C dann leuchtet sie grün und wenn die Temperatur über 30°C liegt dann leuchtet die LED rot.

Den Aufbau habe ich auf einem Breadboard gesteckt.

Anschluss der Temperatur-Sensoren
Ich habe mich für die OneWire-Temperatur-Sensoren ds18s20 von Maxim, ehemals Dallas entschieden da man nur einen digitalen I/O-Pin am Arduino in Anspruch nimmt und die Sensoren zuvor nicht kalibriert werden müssen. Es können Temperaturen im Bereich von -55 bis +125°C gemessen werden wobei die Abweichung bei gerade einmal 0,5°C liegt.

Anhand der folgenden Grafik kann man ganz gut sehen wie mehrere ds1820-Temperatur-Sensoren per OneWire an das Arduino angeschlossen werden. Der Vorwiderstand für den ds1820 Sensor hat einen Wert von 4,7 kOhm.

Pin-Belegung des DS1820 Temperatur-Sensors

Anschluss der RGB-LED
RGB-LEDs sind schon eine feine Sache. Man nutzt eine LED und kann beliebig viele Farben damit imitieren. In meinem Fall werde ich bei verschiedenen Temperaturbereichen jedoch nur die 3 Farben Blau, Grün und Rot nutzen.  Die RGB LED hat vier Anschlüsse. Eine gemeinsame Kathode (längster Anschluss) und drei Anschlüsse für jede Farbe R (Rot) G (Grün) B (Blau). Durch unterschiedliche Ansteuerung der einzelnen Grund-Farben kann eine individuelle Mischfarbe erstellt werden.  In den technischen Daten einer RGB werden für jede Farbe separate Betriebsspannungen angegeben was man bei der Berechnung der einzelnen Vorwiderstände berücksichtigen sollte.

 

 

Anschluss eines 16×2 LCD-Displays
Ich habe mir bei Pollin das LCD Display „LCD-Modul TC1602A-09“ besorgt das in zwei Zeilen jeweils 16 Zeichen darstellen kann.

Als erstes habe ich eine 16polige Stiftleiste an die Kontakte des Displays gelötet so dass ich das Display direkt auf das Steckbrett stecken konnte. Stiftleisten gibt es in verschiedenen Längen. Ich habe einfach ein Stück mit 16 Pins von einer 50 poligen Stiftleiste abgebrochen.

Zum experimentieren und aufbauen von Schaltungen habe ich mir ein Experimentier-Steckboard und ein Steckbrücken Sortiment gekauft. So lassen sich Schaltungen aufbauen ohne dass man etwas löten muss.

Display-Pin (Beschreibung) -> Pin Arduino

  1. Vss (GND) -> GND
  2. Vdd (+5V) -> +5V
  3. V0 (Kontrastspannung (0V bis 5V)) -> Schleifer Mitte (10k Drehpotentiometer)
  4. RS (Register Select (Befehle/Daten)) -> Digital 9
  5. R/W (Read/Write) -> Schleifer Rechts (10k Drehpotentiometer)
  6. E (Enable) -> Digital 8
  7. DB0 (Datenbit 0)
  8. DB1 (Datenbit 1)
  9. DB2 (Datenbit 2)
  10. DB3 (Datenbit 3)
  11. DB4 (Datenbit 4) -> Digital 6
  12. DB5 (Datenbit 5) -> Digital 5
  13. DB6 (Datenbit 6) -> Digital 4
  14. DB7 (Datenbit 7) -> Digital 3
  15. A (Anode Hintergrundbeleuchtung) -> Mit einem Vorwiderstand an +5V
  16. K (Kathode Hintergrundbeleuchtung) -> GND

Das linke der 3 Beinchen des Drehpotentiometers muss noch mit GND verbunden werden.
Ich habe das Display im 4-bit Modus angeschlossen, was den Vorteil bietet, dass man 4 IO-Pins weniger als beim 8-bit Modus benötigt. Das heißt also dass wie D0 – D3 nicht am Arduino anschließen.

LCD-Anschluss

ACHTUNG:
Vor dem Anschließen eines Displays immer zuerst in das zugehörige Datenblatt schauen. Es gibt Displays mit abweichender  Anschlussbelegung. Falsches anschließen kann zur Zerstörung des Displays führen

Wenn alles verbunden wurde und der Strom eingeschaltet ist, sollten weiße Balken auf blauem Hintergrund angezeigt werden. Erscheint trotz korrektem Anschluss nichts, so kann das am Kontrast des LCD-Displays liegen. Die Balken werden dann zwar angezeigt, sind aber nicht sichtbar, weil der Kontrast zu hoch ist. Abhilfe schafft es hier, wenn man die Spannung am Schleifer des Potis nachmisst und in Richtung 0V verstellt. Zwischen 1V und 0V hat man den optimalen Kontrast so dass die Balken gut sichtbar sein sollten.

 

Arduino-Quellcode

Über Enrico S.

Programmierer, Webdesigner, Grafiker, Blogger, Screencaster, Arduino- und eMobility Enthusiast.

11 Kommentare zu “Arduino – Temperatur auslesen und auf Display ausgeben

  1. Das kann ich gar nicht sagen. Habe das noch nicht geprüft.
    Werde ich aber mal tun. Da kann man doch aber sicher einen Mittelwert finden um die Messfehler gering zu halten.

  2. Pingback: Arduino, MySQL - Temperatur-Sensoren über Webserver auslesen

  3. Hy, ich habe zwei DS18S20 am gleichen digital Pin angeschlossen, doch bei mir wechselt die Anzeige der Sensornamen und der jeweiligen Temperatur nicht.
    Es wird nur eine angezeigt..wo liegt das Problem?

  4. Hi,
    Seit einiger Zeit setzte ich mich auch mit Arduion auseinander und wollte heute mal deine Schaltung nachbauen, jedoch habe ich bemerkt das es ein DS18S20 Sensor ist und kein DS18B20. Würde das Program auch mit leichten Abänderungen für einen B Sensor funktionieren?
    Ich weiß aller Anfang ist schwer, jedoch denk ich mir auf eine Blöde frage kommt maximal eine blöde Antwort. ;)

    PS: finde deine HP sehr lessig

  5. Hallo,bin blutiger Anfänger und bin dabei mich auch mit dieser Materie zu beschäftigen.Hardware
    kein Problem,jedoch mit der Software.
    Würde gerne einen Temp.Fühler – DS18S20 auf ein Display Interface IIC / Display J204A übertragen.
    – ADRUINO UNO -Danke im voraus

  6. Guten Tag Enrico S.
    wir haben ein Problem bei einem Arduino Projekt mit externer Spannungsversorgung um Lüfter über Temperatursensoren zu schalten. Würden sie uns da möglicherweise zeitnah weiterhelten? Sollte bis nächste Woche laufen. Wir wollten die Spannung eines 12 Volt Netzteiles mit einem Mosfet aufteilen und dann mit 5 Volt die Sensoren und mit 12 Volt die Lüfter ansteuern. Aber leider zeigt uns dann das Display am Arduino -127 Grad an bzw kommt der Fehler auch wenn man LED über den Arduino ansteuert.
    Können sie uns da weiterhelfen?
    gruß Michael Madl

  7. Hey, ich habe alles nach anleitung aufgebaut bekomme aber immer die meldung device is not a …. gibt es da vl hilfe?