Wie man Temperaturen mit Arduino liest

Das Ablesen der Temperatur mit einem Arduino ist eine äußerst nützliche Funktion. Diese Art von Funktion ist für viele Projekte unerlässlich, vom Erstellen eines eigenen Thermostats für die Wohnung bis zur Erstellung einer Wetterstation. Außerdem ist es einfach genug, um in wenigen Minuten mit einem beliebigen Arduino und nur zwei einfachen Komponenten implementiert zu werden.

In diesem Tutorial zeige ich Ihnen, wie Sie mit einem Arduino die Temperatur eines Thermistors ablesen und an der seriellen Schnittstelle ausdrucken können. Ein Thermistor ist eine einfache elektronische Komponente, die den Widerstand in Abhängigkeit von der Temperatur ändert. Dieses Tutorial konzentriert sich auf die einfachsten und kostengünstigsten Methoden zum Ablesen der Temperatur. Auf dem Weg lernen Sie einen einfachen, grundlegenden Baustein der Elektronik, mit dem Sie mit Ihrem Arduino eine ganze Welt von Sensoren erkunden können.


Wie Arduino die Temperatur liest

Es gibt mehrere Möglichkeiten, die Temperatur mit einem Arduino abzulesen. Einige davon sind:

  • I2C- oder serielle Sensoren - Es gibt fortschrittliche Sensormodule, die häufig Luftdruck, Temperatur, Luftfeuchtigkeit und andere Bedingungen in einem Paket messen können. Diese Module sind jedoch in der Regel wesentlich teurer und erfordern zum Lesen das I2C- oder das serielle Protokoll. Dies könnte für ein fortgeschritteneres Wettersensorprojekt von Vorteil sein.
  • Thermischer analoger Sensor - Eine dreipolige Komponente, die Strom liefert, Masse aufnimmt und basierend auf der Temperatur eine variable Spannung ausgibt, indem ein Bandabstandskern in einer einzelnen Komponente implementiert wird. Diese Klasse von Komponenten ist nützlich, und ich werde das in einem zukünftigen Tutorial untersuchen.
  • Thermistor - Ein Widerstand, der den Widerstand basierend auf der Umgebungstemperatur ändert.

Dieses Tutorial konzentriert sich aus mehreren Gründen auf die Verwendung der Thermistor-Methode. Erstens reagiert es schnell auf Temperaturänderungen, zweitens ist es billig und schließlich einfach zu bedienen.

Es gibt auch zwei sehr wichtige Konzepte, die aus diesem Tutorial gelernt werden können:

  1. Lesen eines Wertes von einem Arduino-Analog-Pin.
  2. Verwenden einer Spannungsteilerschaltung zum Lesen von Sensoren mit variablem Widerstand.

Variable Widerstandssensoren werden hergestellt, um alle möglichen Dinge in der physischen Welt zu messen, und die Fähigkeit, diese Sensoren mit Ihrem Arduino auszulesen, ist eine ausgezeichnete grundlegende Fähigkeit, die es zu meistern gilt. Rotation, Druck, Dehnung, Flex, Licht und Wärme sind alles Beispiele, die Sie mit einem analogen Pin und einer Spannungsteilerschaltung messen können.


Sammeln Sie die Teile

Für dieses Projekt benötigen Sie

  • Brotschneidebrett
  • Arduino (Eine Uno wird in meinen Beispielen verwendet, aber jedes Modell sollte dies tun)
  • 10K Ohm-Thermistor
  • 10K Ohm Widerstand (Braun, Schwarz, Orange)
  • Anschlussdrähte
  • Computer mit installierter Arduino IDE (Installation und Verwendung der IDE werden in diesem Lernprogramm nicht behandelt.)
  • USB-Kabel (zur Verbindung von Arduino und PC)

Wie es funktioniert

Arduino-Analog-Pins lesen eine Spannung aus, von der erwartet wird, dass sie im Bereich von 0 V bis 5 V liegt. Eine Standardmethode, um eine Widerstandsänderung in einem Thermistor in eine Spannungsänderung umzuwandeln, die der Arduino-Analog-Pin lesen kann, ist das Erstellen einer Spannungsteilerschaltung. Die Schaltung verwendet zwei Widerstände in einer Schaltung mit einer bekannten Spannung, um einen mathematisch vorhersagbaren Spannungswert zu erzeugen: Vout.

Es ist eine sehr einfache Schaltung, wie unten gezeigt. Wenn sich der Wert von R1 (Widerstand 1) ändert, ändert sich Vout. In unserem Tutorial wird R1 der Thermistor sein und sein Wert wird sich relativ zur Temperatur ändern. Vout ist an unseren analogen Port des Arduino angeschlossen, damit wir ihn überwachen können.

Schaltplan des Spannungsteilers

Genug Theorie, lass uns weitergehen, um das Steckbrett und Arduino aufzubauen.


Einrichten

Richten Sie Ihr Steckbrett und Ihr Arduino-Board wie in der folgenden Abbildung ein. Das Diagramm wurde mit Fritzing erstellt und ist ein hervorragendes Werkzeug, um Projekte logisch zu verdrahten, bevor Drähte und Komponenten gegriffen werden. Die obere, graue Komponente ist der Thermistor oder R1 im obigen Diagramm. Dies ist eine von vielen Möglichkeiten, die Schaltung zu verkabeln. Ich habe mich für sie entschieden, weil sie einigen guten Grundübungen entspricht.

Breadboard-Layout mit Thermistor- und Spannungsteilerschaltung

Programmierung des Arduino

Das Lesen des Analog-Pins eines Arduino ist ziemlich einfach. Die mit A0 - A5 gekennzeichneten Pins des Arduino sind spezielle Pins, die beim Lesen mit der analogRead () Die Funktion gibt den Wert zwischen 0 und 1023 zurück, wobei die Eingangsspannung zwischen 0 V und 5 V liegt. Wenn der Wert von R1 den Thermistor auf der Grundlage der Temperatur ändert, ändert sich die Spannung an dem A0-Pin vorhersagbar zwischen 0 V und 5 V.

Lassen Sie uns etwas Code aufschreiben und zum Arduino verschieben.

  1. Schließen Sie den Ardunio mit dem USB-Kabel an Ihren Computer an
  2. Öffnen Sie die Arduino IDE
  3. Kopieren Sie den folgenden Code und fügen Sie ihn ein
  4. Drücken Sie die Hochladen Schaltfläche, um den Code in Ihr Arduino zu laden
  5. Öffnen Sie den seriellen Monitor der Arduino IDE, indem Sie drücken STRG-UMSCHALTTASTE M oder Menü auswählen Extras> Serienmonitor.
 void setup () // Diese Funktion wird aufgerufen, wenn das Arduino Serial.begin (115200) startet. // Dieser Code richtet den seriellen Port auf 115200 Baudrate ein. Void loop () // Diese Funktion wird wiederholt, wenn der Arduino mit Strom versorgt wird. Int val; // Eine ganzzahlige Variable erstellen val = analogRead (0); // Lese den analogen Port 0 und speichere den Wert in val Serial.println (val); // Drucke den Wert an die Verzögerung der seriellen Schnittstelle (1000); // Warten Sie eine Sekunde, bevor wir es noch einmal tun

Spitze: Stellen Sie sicher, dass die Baudrate des seriellen Monitors dem entspricht, was wir im eingestellt haben Konfiguration() Funktion. In diesem Beispiel: 115200.

Die Ausgabe sollte ungefähr so ​​aussehen:

463
463
463
463
463
463

Wenn sich Ihr Steckbrett nicht in einem sehr heißen Ofen befindet, sind diese Werte nicht sinnvoll. Das liegt daran, dass dies einfach Spannungswerte sind, die in eine Skala von 0 bis 1023 übersetzt werden. Als Nächstes müssen wir diese in einen brauchbaren Temperaturwert umwandeln.


Analogwerte in Temperatur umrechnen

Ich habe oben erwähnt, dass die Verwendung des Thermistors einfach ist, weil wir auf den Schultern von Giganten stehen können. Es gibt eine Gleichung, um die Übersetzung vom Abtastwert in die Temperatur auszuführen, die Steinhart-Hart-Gleichung. (http://en.wikipedia.org/wiki/Thermistor) Die Steinhart-Hart-Gleichung wurde bereits für den Arduino übersetzt. Ein Beispiel dafür finden Sie unter playground.arduino.cc in einem Artikel von Milan Malesevic und Zoran Stupic. Ich habe ihre Funktion veranschaulicht Thermistor () unten und fügte Kommentare hinzu, wie man es benutzt.

  1. Kopieren Sie den folgenden Code in die Arduino IDE, um das ursprüngliche Beispiel zu ersetzen
  2. Klicke auf das Hochladen Taste, um diesen Code zu Ihrem Arduino zu drücken.
  3. Öffnen Sie das Arduino Serial Monitor-Fenster erneut, da es beim Hochladen des Codes verschwunden ist.
 #umfassen  // lädt die erweiterten mathematischen Funktionen void setup () // Diese Funktion wird aufgerufen, wenn das Arduino startet. Serial.begin (115200); // Dieser Code richtet den seriellen Port auf 115200 Baudrate ein. Double Thermister (int RawADC) // Funktion zum Ausführen der fantastischen Mathematik der Steinhart-Hart-Gleichung double Temp; Temp = log (((10240000 / RawADC) - 10000)); Temp = 1 / (0,001129148 + (0,000234125 + (0,0000000876741 * Temp * Temp)) * Temp); Temp = Temp - 273,15; // Konvertiere Kelvin in Celsius Temp = (Temp * 9.0) / 5.0 + 32.0; // Celsius in Fahrenheit - Kommentieren Sie diese Zeile aus, wenn Sie die Rücklauftemperatur benötigen.  void loop () // Diese Funktion wird wiederholt, wenn das Arduino int val ist. // Eine Ganzzahlvariable erstellen double temp; // Variable zum Halten eines Temperaturwerts val = analogRead (0); // Lese den analogen Port 0 und speichere den Wert in val temp = Thermister (val); // Führt die fantastische Mathematik für den rohen Analogwert aus Serial.println (temp); // Drucke den Wert an die Verzögerung der seriellen Schnittstelle (1000); // Warten Sie eine Sekunde, bevor wir es noch einmal tun

Nun sollte die Ausgabe viel ähnlicher aussehen:

69.22
69.07
69.22
69.22
70.33
72.07
72,86
73.34
74.13

Das macht jetzt Sinn. Meine Werkstatt ist in der Tat 69 Grad Fahrenheit. In diesem Beispiel berührte ich die Oberseite des Thermistors mit meinem Finger und er spürte den Temperaturanstieg, wie Sie sehen können.

Versuchen Sie, mit Ihrem Setup zu experimentieren, um sich mit diesen neuen Fähigkeiten vertraut zu machen. Hier sind ein paar Vorschläge.

  • Verringern Sie den Verzögerungswert in der Schleife, um zu sehen, wie schnell der Thermistor auf Temperaturänderungen reagieren kann. (Ich empfehle nicht, diesen Wert unter 50 zu ändern, da sonst der serielle Puffer überlaufen könnte.)
  • Ändern Sie das Programm, um Celsius-Werte zu erhalten (Hinweis: Lesen Sie die Kommentare im Code).
  • Ändern Sie das Steckbrett und den Code so, dass Pin A1 anstelle von A0 verwendet wird
  • Zusätzliches Guthaben: Konfigurieren Sie die Schaltung neu, um einen 10K Ohm Mini-Fotowiderstand und ein Dokument zu verwenden analogRead () Werte basierend auf Beleuchtungsänderungen (Hinweis: Verwenden Sie das erste Codesegment).

Zusammenfassung

Das ist alles dazu. Jetzt können Sie jede Art von Erfindung mit einem sehr günstigen Thermistor erstellen.

  • Sie haben die Fähigkeiten des Baus einer Steckbrettschaltung eingesetzt
  • Eine Skizze erstellen und in Ihr Arduino hochladen

Zusätzlich haben Sie in diesem Tutorial gelernt, wie Sie:

  • Analogwerte vom Arduino mit lesen analogRead ()
  • den Wert verstehen und bearbeiten, der vom zurückgegeben wird analogRead () Funktion
  • Verwenden Sie eine Spannungsteilerschaltung, um Änderungen an einem Widerstandssensor wie dem Thermistor zu lesen
  • Konvertieren Sie die analogen Thermistorwerte in Temperaturwerte

Während das Programmieren Ihres Arduino zum ersten Mal so programmiert ist, dass es die Umgebung umschreibt, kann es kompliziert klingen. In Wirklichkeit gibt es eine ganze Reihe einfacher und kostengünstiger Sensoren, mit denen Sie schnell und einfach mit der realen Welt kommunizieren können. Die Spannungsteilerschaltung und ein einfacher Code können Ihrer nächsten Kreation neue und kraftvolle Sinne verleihen.