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.
Es gibt mehrere Möglichkeiten, die Temperatur mit einem Arduino abzulesen. Einige davon sind:
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:
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.
Für dieses Projekt benötigen Sie
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 SpannungsteilersGenug Theorie, lass uns weitergehen, um das Steckbrett und Arduino aufzubauen.
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 SpannungsteilerschaltungDas 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.
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.
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.
#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.
analogRead ()
Werte basierend auf Beleuchtungsänderungen (Hinweis: Verwenden Sie das erste Codesegment).Das ist alles dazu. Jetzt können Sie jede Art von Erfindung mit einem sehr günstigen Thermistor erstellen.
Zusätzlich haben Sie in diesem Tutorial gelernt, wie Sie:
analogRead ()
analogRead ()
FunktionWä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.