Temperatursensorik

Design der Temperaturmessfunktion des digitalen Temperatursensors DS18B20

Temperaturmessfunktion des digitalen Temperatursensors DS18B20

DS18B20 ist ein 1-Wire-digitaler Temperatursensor, der von Dallas erzeugt wird, mit einem 3-poligen bis 92 kleinen Paket. Der Temperaturmessbereich beträgt -55℃~+125℃, und es kann auf eine A/D-Umwandlungsgenauigkeit von 9-Bit bis 12-Bit programmiert werden. Die Auflösung der Temperaturmessung kann 0,0625℃ erreichen, und die gemessene Temperatur wird in Form einer 16-Bit-Digitalgröße mit Vorzeichenerweiterung seriell ausgegeben. Seine Arbeitsstromversorgung kann am entfernten Ende eingeführt oder durch eine parasitäre Stromversorgung erzeugt werden. Mehrere DS18B20 können parallel angeschlossen werden 3 oder 2 Linien. Die CPU benötigt nur eine Portleitung, um mit vielen DS18B20 zu kommunizieren, weniger Ports des Mikroprozessors belegen, Dadurch können viele Leitungen und Logikschaltungen eingespart werden. Aufgrund der oben genannten Eigenschaften eignet sich DS18B20 hervorragend für Mehrpunkt-Temperaturerfassungssysteme über große Entfernungen.

Temperaturmessfunktion des digitalen Temperatursensors DS18B20

Temperaturmessfunktion des digitalen Temperatursensors DS18B20

2. Interne Struktur des Schaltplans DS18B20 ds18b20
Die interne Struktur von DS18B20 ist in Abbildung dargestellt 1, welches hauptsächlich besteht aus 4 Teile: 64-Bit-ROM, Temperatursensor, Nichtflüchtiger Temperaturalarm löst TH und TL aus, und Konfigurationsregister. Die Pinanordnung des DS18B20 ist in der Abbildung dargestellt 2. DQ ist der digitale Signaleingangs-/-ausgangsanschluss; GND ist die Strommasse; VDD ist der Eingangsanschluss für die externe Stromversorgung (geerdet im parasitären Stromverdrahtungsmodus, siehe Abbildung 4).

Die 64-Bit-Seriennummer im ROM wird vor Verlassen des Werks fotogeätzt. Er kann als Adresssequenzcode des DS18B20 angesehen werden. Die 64-Bit-Seriennummer jedes DS18B20 ist unterschiedlich. Der Code für die zyklische Redundanzprüfung (CRC=X8+X5+X4+1) des 64-Bit-ROM angeordnet ist. Die Rolle des ROM besteht darin, jeden DS18B20 anders zu machen, sodass mehrere DS18B20 an einen Bus angeschlossen werden können.

Interne Struktur des DS18B20-Chips

Interne Struktur des DS18B20-Chips

Figur 1, interne Struktur von DS18B20

Der Temperatursensor im DS18B20 vervollständigt die Temperaturmessung, die in Form von vorzeichenerweiterten 16-Bit-Binärkomplementwerten bereitgestellt wird, ausgedrückt in Form von 0,0625℃/LSB, wobei S das Vorzeichenbit ist. Zum Beispiel, der digitale Ausgang von +125℃ ist 07D0H, der digitale Ausgang von +25,0625℃ ist 0191H, der digitale Ausgang von -25,0625℃ ist FF6FH, und der digitale Ausgang von -55℃ ist FC90H.

23
22
21
20
2-1
2-2
2-3
2-4

Temperaturwert Low-Byte
MSBLSB
S
S
S
S
S
22
25
24

Temperaturwert High-Byte
Der Hoch- und Tieftemperaturalarm löst TH und TL aus, und das Konfigurationsregister bestehen aus einem Byte EEPROM. Zum Schreiben in TH kann ein Speicherfunktionsbefehl verwendet werden, TL, oder das Konfigurationsregister. Das Format des Konfigurationsregisters ist wie folgt:

0
R1
R0
1
1
1
1
1
MSBLSB

R1 und R0 bestimmen die Anzahl der Genauigkeitsstellen für die Temperaturumrechnung: R1R0 = “00”, 9-Bit-Präzision, Die maximale Konvertierungszeit beträgt 93,75 ms; R1R0 = “01”, 10-Bit-Präzision, Die maximale Konvertierungszeit beträgt 187,5 ms. R1R0 = “10”, 11-Bit-Präzision, Die maximale Konvertierungszeit beträgt 375 ms. R1R0 = “11”, 12-Bit-Präzision, Die maximale Konvertierungszeit beträgt 750 ms. Der Standardwert ist 12-Bit-Präzision, wenn nicht programmiert.

Das Hochgeschwindigkeitsregister ist ein 9-Byte-Speicher. Die ersten beiden Bytes enthalten die digitale Information der gemessenen Temperatur; der 3, 4Th, und 5. Bytes sind temporäre Kopien von TH, TL, und Konfigurationsregister, jeweils, und werden bei jedem Power-On-Reset aktualisiert; der 6, 7Th, und das 8. Byte werden nicht verwendet und werden ausschließlich als logische 1 dargestellt; Das 9. Byte liest den CRC-Code aller vorherigen 8 Bytes, die zur Sicherstellung einer korrekten Kommunikation genutzt werden können.

3. DS18B20-Arbeitssequenz
Der First-Line-Arbeitsprotokollfluss von DS18B20 ist: Initialisierung → ROM-Operationsanweisung → Speicheroperationsanweisung → Datenübertragung. Seine Arbeitssequenz umfasst die Initialisierungssequenz, Schreibsequenz und Lesesequenz, wie in der Abbildung gezeigt 3 (A) (B) (C).

(A) Initialisierungssequenz
(C) Lesesequenz

Typisches Anschlussschaltbild von DS18B20 und Mikroprozessor

Typisches Anschlussschaltbild von DS18B20 und Mikroprozessor

Figur 3, DS18B20-Arbeitssequenzdiagramm

4. Typisches Schnittstellendesign von DS18B20 und Single-Chip-Mikrocomputer
Figur 4 Nehmen Sie den Single-Chip-Mikrocomputer der MCS-51-Serie als Beispiel, um die typische Verbindung zwischen DS18B20 und dem Mikroprozessor zu zeichnen. In Abbildung 4 (A), DS18B20 übernimmt den parasitären Stromversorgungsmodus, und seine VDD- und GND-Anschlüsse sind geerdet. In Abbildung 4 (B), DS18B20 übernimmt den externen Stromversorgungsmodus, und sein VDD-Terminal wird von einer 3V~5,5V-Stromversorgung gespeist.

A) Betriebsmodus der parasitären Stromversorgung
(B) Arbeitsmodus der externen Stromversorgung

DS18B20 Arbeitszeitdiagramm

DS18B20 Arbeitszeitdiagramm

Figur 4 Typisches Anschlussdiagramm von DS18B20 und Mikroprozessor

Es wird davon ausgegangen, dass die vom Einzelchip-Mikrocomputersystem verwendete Quarzfrequenz 12 MHz beträgt, Drei Unterprogramme werden entsprechend dem Initialisierungszeitpunkt geschrieben, Schreib-Timing und Lese-Timing von DS18B20: INIT ist das Initialisierungsunterprogramm; WRITE ist das Schreiben (Befehl oder Daten) Subroutine; READ ist das Unterprogramm zum Lesen von Daten. Das gesamte Lesen und Schreiben von Daten beginnt mit dem niedrigsten Bit.

DATUMQUP1.0
……
INIT:CLREA
INI10:SETBDAT
MOVR2,#200
INI11:CLRDAT
DJNZR2,INI11; Der Host sendet einen Reset-Impuls für 3μs×200=600μs
SETBDAT; Der Host gibt den Bus frei, und die Portzeile wird in Eingabe geändert
MOVR2,#30
IN12:DJNZR2,INI12; DS18B20 wartet 2μs×30=60μs
CLRC
ORLC,DAS; Ist die DS18B20-Datenleitung niedrig? (Puls vorhanden)?
JCINI10; DS18B20 ist nicht bereit, neu initialisieren
MOVR6, #80
INI13: ORLC, DAS
JCINI14; Die Datenleitung DS18B20 geht auf High, Die Initialisierung ist erfolgreich
DJNZR6, INI13; Der niedrige Pegel der Datenleitung kann 3 μs × dauern 80 = 240μs
SYMPINI10; Die Initialisierung ist fehlgeschlagen, neu starten
INI14: MOVR2, #240
IN15: DJNZR2, INI15; DS18B20 reagiert mindestens 2μs × 240 = 48 0μs
RET

;-------------------------
SCHREIBEN:CLREA
MOVR3,#8;Schleife 8 mal, schreibe ein Byte
WR11:SETBDAT
MOVR4,#8
RRCA;Das Schreibbit bewegt sich von A nach CY
CLRDAT
WR12:DJNZR4,WR12
;Warten Sie 16 μs
MOVDAT,C;Das Befehlswort wird Stück für Stück an DS18B20 gesendet
MOVR4,#20
WR13:DJNZR4,WR1 3
; Stellen Sie sicher, dass der Schreibvorgang 60 μs dauert
DJNZR3,WR11
; Fahren Sie fort, bevor Sie ein Byte senden
SETBDAT
RET

;------------------------
LESEN:CLREA
MOVR6,#8; Schleife 8 mal, ein Byte lesen
RD11:CLRDAT
MOVR4,#4
NEIN; Der niedrige Pegel dauert 2 μs
SETBDAT; Stellen Sie die Portzeile auf Eingabe ein
RD12:DJNZR4,RD12
; Warten Sie 8 μs
MOVC,VON T
;Der Host liest die Daten von DS18B20 Stück für Stück
RRCA;Die gelesenen Daten werden nach A verschoben
MOVR5,#30
RD13:DJNZR5,RD13
;Stellen Sie sicher, dass der Lesevorgang 60μs dauert
DJNZR6,RD11
;Nach dem Lesen eines Datenbytes, Speichern Sie es in A
SETBDAT
RET
;-------------------------
Der Host muss drei Schritte durchlaufen, um DS18B20 zu steuern und die Temperaturumwandlung abzuschließen: Initialisierung, ROM-Bedienungsanleitung, und Anweisungen zur Speicherbedienung. DS18B20 muss gestartet werden, um die Umwandlung zu starten, bevor der Temperaturumrechnungswert gelesen wird. Vorausgesetzt, dass nur ein Chip an eine Leitung angeschlossen ist, Es wird die standardmäßige 12-Bit-Konvertierungsgenauigkeit verwendet, und eine externe Stromversorgung verwendet wird, Es kann eine Unterroutine GETWD geschrieben werden, um eine Konvertierung abzuschließen und den Temperaturwert zu lesen.

TOR:LCALLINIT
BEWEGEN,#0CCH
LCALLWRITE; Senden Sie den Skip-ROM-Befehl
BEWEGEN,~44H
LCALLWRITE; Senden Sie den Befehl zum Starten der Konvertierung
LCALLINIT
BEWEGEN,#0CCH; Senden Sie den Skip-ROM-Befehl
LCALLWRITE
BEWEGEN,#0 BEH; Befehl zum Lesen des Speichers senden
LCALLWRITE
LCALLREAD
MOVWDLSB,A
; Low-Byte des Temperaturwerts an WDLSB senden
LCALLREAD
MOVWDMSB,A
; High-Byte des Temperaturwerts an WDMSB senden
RET
……

Das von der Subroutine GETWD gelesene High-Byte des Temperaturwerts wird an die WDMSB-Einheit gesendet, und das Low-Byte wird an die WDLSB-Einheit gesendet. Dann entsprechend dem Darstellungsformat des Temperaturwertbytes und seines Vorzeichenbits, Der tatsächliche Temperaturwert kann durch einfache Transformation ermittelt werden.

Wenn mehrere DS18B20 an einer Leitung angeschlossen sind, Der parasitäre Stromversorgungsverbindungsmodus wird übernommen, Konfiguration der Konvertierungsgenauigkeit, Hoch- und Tiefalarm, usw. sind erforderlich. Dann wird das Schreiben der Unterroutine GETWD komplizierter. Aus Platzgründen, Dieser Abschnitt wird nicht im Detail beschrieben. Bitte beachten Sie die entsprechenden Inhalte.

Wir haben DS18B20 erfolgreich angewendet “Heizbad für den Haushalt” Steuerungssystem, das wir entwickelt haben. Seine schnelle Konvertierungsgeschwindigkeit, hohe Konvertierungsgenauigkeit, und die einfache Schnittstelle zum Mikroprozessor haben die Hardware-Designarbeit erheblich vereinfacht, Kosten effektiv senken und Entwicklungszyklen verkürzen.