China Sensor Hersteller

China Temperature Sensor & Thermistor manufacturer

Arduino Sammelt Mehrere DS18B20-Temperaturwerte

DS18B20 ist ein digitaler intelligenter Single-Bus-Temperatursensor von DALLAS Semiconductor Company in den Vereinigten Staaten. Im Vergleich zu herkömmlichen Thermistoren kann er die gemessene Temperatur direkt ablesen und durch einfache Programmierung entsprechend den tatsächlichen Anforderungen eine 9- bis 12-stellige digitale Wertablesung erreichen. Zum Lesen und Schreiben von Informationen vom DS18B20 ist nur eine Leitung (einzelner Bus) erforderlich, und der Bus selbst kann das angeschlossene Gerät auch mit Strom versorgen, ohne dass eine zusätzliche Stromversorgung erforderlich ist.

In diesem Blogbeitrag wird LabVIEW implementiert, um Arduino so zu steuern, dass mehrere DS18B20-Temperaturwerte erfasst werden. Bezüglich der LabVIEW-Steuerung von Arduino haben wir bereits in den Grundlagen die Erfassungsmethoden vieler Arten von Temperatursensoren erläutert. Einzelheiten finden Sie unter folgendem Link:

LabVIEW steuert Arduino, um den Wert des LM35-Temperatursensors zu erfassen (Grundlagen – 12)
LabVIEW steuert Arduino, um den Thermistor-Temperaturwert zu erfassen (Grundlagen – 13)
Digitaler Sensor DS18B20 mit 1, 2, 3, 4M abgeschirmtem Kabel DS18b20 Temperatursensor + 3,5-mm-Kopfhörerstecker
Digitaler Sensor DS18B20 mit 1, 2, 3, 4M abgeschirmtem Kabel DS18b20 Temperatursensor + 3,5-mm-Kopfhörerstecker

2. Projektstruktur
In diesem Projekt wird die Verwendung von 2 DS18B20-Sensoren, Arduino Uno und LabVIEW vorgestellt, um ein digitales Mehrkanal-Temperaturmesssystem zu bilden. Das Blockdiagramm des digitalen Mehrkanal-Temperaturmesssystems ist unten dargestellt:
Darunter sind zwei DS18B20-Temperatursensoren parallel an einen einzigen Bus angeschlossen, und Arduino Uno dient als Slave-Computer, der für das Lesen, Schreiben und die Datenübertragung von DS18B20 verantwortlich ist. Die in LabVIEW geschriebene Anzeigesoftware dient als Host-Computer, und der Host- und Slave-Computer nutzen die USB-TTL-Schnittstelle zur Kommunikation.

3. Hardwareumgebung
Verbinden Sie Vcc und GND des DS18B20-Temperatursensors mit +5 V bzw. GND des Arduino Uno-Controllers, um den DS18B20 mit Strom zu versorgen. Der DQ-Pin von DS18B20 ist mit dem digitalen Pin D2 des Arduino Uno-Controllers verbunden und ein 4,7-kΩ-Pull-up-Widerstand ist angeschlossen, da der DQ-Pin von DS18B20 für den Normalbetrieb einen Pull-up-Widerstand hinzufügen muss. Das Hardware-Anschlussdiagramm des digitalen Mehrkanal-Temperaturmesssystems ist unten dargestellt:

4. Arduino-Funktionsdesign
Im oberen und unteren Computertemperaturüberwachungssystem basierend auf Arduino und LabVIEW muss die Arduino Uno-Steuerplatine die folgenden Funktionen ausführen: Empfangen und Beurteilen von Befehlen sowie Sammeln und Senden von Temperaturdaten. Die Arduino Uno-Steuerplatine empfängt Befehle vom Host-Computer über die serielle Schnittstelle, analysiert und erhält gültige Befehle, liest und schreibt den DS18B20-Sensor, um die Temperatur zu ermitteln, und lädt die Temperaturdaten in die LabVIEW-Software hoch.
Der Arduino Uno-Controller ist für das Lesen des vom LabVIEW-Hostcomputer gesendeten Temperaturerfassungsbefehls und das Lesen des entsprechenden DS18B20-Sensors verantwortlich, um die Temperaturdaten zu erhalten, und sendet diese über die serielle Schnittstelle an die LabVIEW-Software des Hostcomputers zurück. Der Programmcode für den Arduino Uno Controller lautet wie folgt:

#include <OneWire.h>#include <DallasTemperature.h>#define ONE_WIRE_BUS 2 //DS18B20 ist mit dem digitalen Arduino-Port 2 verbunden
#define T1_COMMAND 0x80 //Befehlswörter sammeln #define T2_COMMAND 0x81 //Befehlswörter sammeln
OneWire oneWire(ONE_WIRE_BUS);DallasTemperatursensoren(&oneWire);
Byte comdata[3]={0};
   // Definieren Sie Array-Daten zum Speichern von Befehlsdaten für die serielle Schnittstelle void keep_data(void);
//Daten der seriellen Schnittstelle empfangen void test_do_data(void);
//Testen Sie, ob die Daten der seriellen Schnittstelle korrekt sind, und führen Sie den Befehl aus. void setup(){ Serial.begin(9600); // Starten Sie die Bibliothek sensores.begin();} void loop(){ while (Serial.available( ) > 0)
//Kontinuierlich erkennen, ob Daten auf der seriellen Schnittstelle vorhanden sind {empfangen_data();
//Daten der seriellen Schnittstelle akzeptieren test_do_data();
//Testen Sie, ob die Daten korrekt sind, und führen Sie den Befehl aus }} void take_data(void) ​{ int i ; for(i=0;i<3;i++) { comdata[i] =Serial.read();
​//Eine Weile verzögern, damit der Cache der seriellen Schnittstelle das nächste Byte vorbereiten kann. Wenn die Verzögerung nicht erfolgt, kann dies zu Datenverlust führenverzögerung(2); }} void test_do_data(void)
//Testen und führen Sie den Befehl aus { if(comdata[0] == 0x55) /
/0x55 und 0xAA sind beide gültige Befehle, um zu bestimmen, ob { if(comdata[1] == 0xAA) { switch (comdata[2]) { case T1_COMMAND: sensores.requestTemperatures();
//ratures Serial.print(sensors.getTempCByIndex(0)); break; case T2_COMMAND: sensoren.requestTemperatures(); /
/ Temperaturen einstellen Serial.print(sensors.getTempCByIndex(1)); break; } } }}

5. Funktionsdesign von LabVIEW
Der LabVIEW-Hostcomputerteil muss die folgenden Funktionen ausführen: Senden von Temperaturerfassungsbefehlen an den Arduino-Controller des Hostcomputers. Der ino-Controller empfängt Befehle vom Host-Computer über die serielle Schnittstelle und überträgt die Daten nach Abschluss der Erfassung der Temperaturdaten zurück. Die LabVIEW-Software zeigt die zurückgegebenen Temperaturdaten auf dem Frontpanel an.

5.1. Design der Frontplatte
Die LabVIEW-Frontplatte ist in Temperaturanzeige- und Sensorauswahlanschlüsse unterteilt. Das Sensorauswahlterminal wird verwendet, um den aktuell überwachten Sensor zu bestimmen, und die Wellenformdaten werden verwendet, um den sich ändernden Trend der Temperaturdaten anzuzeigen. Die Vorderseite des LabVIEW-Hostcomputers des digitalen Mehrkanal-Temperaturmesssystems ist in der folgenden Abbildung dargestellt:

5.2. Entwurf eines Programmblockdiagramms
Die Struktur des Hauptprogramms des LabVIEW-Hostcomputers ist eine sequentielle Struktur + While-Schleife. Zunächst wird im Rahmen der Sequenzstruktur die Kommunikation über die serielle Schnittstelle über die eingestellte Nummer der seriellen Schnittstelle initialisiert und das Wellenformdiagramm gelöscht. Dann tritt das Programm in die While-Schleife und die flache Sequenzstruktur ein, sendet den Befehlscode für die Temperaturmessung von Sensor 1 oder Sensor 2 an den Arduino Uno-Controller, wartet 100 ms und zeigt die zurückgegebene Temperatur nach Erhalt auf dem Frontpanel an die Temperaturwellenform. Schließen Sie abschließend die serielle Kommunikation.

Verwenden Sie die Optionsfelder auf der Vorderseite, um den zu messenden Sensor auszuwählen, und senden Sie dann den entsprechenden Befehlscode für die Temperaturerfassung an den Arduino Uno-Controller. Der Befehlscode für Sensor 1 ist 0x55AA80 und der Befehlscode für Sensor 2 ist 0x55AA81. Und durch die Verzögerung von 800 Millisekunden wird die Funktion einer Abtastung einmal pro Sekunde erreicht. Das Programmblockdiagramm für Sensor 1 und Sensor 2 ist unten dargestellt:
PREV:Anwendung des Digitalen Temperatursensors 1 wire DS18B20
NEXT:Design-Schaltplan des Temperatursensors DS18B20

RELATED POSTS




Skype

WhatsApp

WangWang

QQ
Email me

Mail to us