Wissenseinführung zum Temperatursensor DS18B20
DS18B20 ist ein häufig verwendeter digitaler Temperatursensor. Es gibt digitale Signale aus, hat die Eigenschaften der geringen Größe, Niedrige Hardware -Overhead, starke Anti-Interferenz-Fähigkeit, hohe Präzision, und wird weit verbreitet.
Einführung in den Temperatursensor DS18B20
Technische Merkmale:
①. Einzigartiger Single-Wire-Schnittstellenmodus. Wenn DS18B20 an einen Mikroprozessor angeschlossen ist, nur 1 Für die bidirektionale Kommunikation zwischen dem Mikroprozessor und dem DS18B20 wird ein Kabel benötigt.
②. Temperaturmessbereich -55℃~+125℃, Eigener Temperaturmessfehler 1℃.
③. Unterstützt die Mehrpunkt-Netzwerkfunktion. An den nur drei Drähten können mehrere DS18B20 parallel angeschlossen werden, und maximal 8 kann parallel angeschlossen werden, um die Messung der Mehrpunkt-Temperaturmessung zu realisieren. Wenn die Zahl zu groß ist, Die Stromversorgungsspannung ist zu niedrig, was zu einer instabilen Signalübertragung führt.
④. Arbeitenleistung: 3.0~ 5,5 V/dc (Die parasitäre Stromversorgung von Datenlinien kann verwendet werden).
⑤. Während des Gebrauchs sind keine peripheren Komponenten erforderlich.
⑥. Die Messergebnisse werden seriell in 9~12-Bit-Digitalform übertragen.
⑦. Der Durchmesser des Edelstahl -Schutzrohrs beträgt φ6.
⑧. Es eignet sich für die Temperaturmessung verschiedener mittelgroßer Industrierohrleitungen von DN15 bis 25, DN40~DN250 und Ausrüstung in engen Räumen.
⑨. Standard-Installationsgewinde M10X1, M12X1.5, G1/2 Zoll sind optional.
⑩. Das PVC-Kabel wird direkt angeschlossen oder es wird eine deutsche Kugelanschlussdose angeschlossen, Dies ist praktisch für den Anschluss an andere elektrische Geräte.
DS18B20 Lese- und Schreib-Timing- und Temperaturmessprinzip:
Das Temperaturmessprinzip des DS18B20 ist in der Abbildung dargestellt 1. Die Schwingungsfrequenz des Kristalloszillators mit niedrigem Temperaturkoeffizienten in der Abbildung wird kaum von der Temperatur beeinflusst, und wird verwendet, um ein Impulssignal mit fester Frequenz zu erzeugen, das an den Zähler gesendet wird 1. Die Schwingungsfrequenz des Quarzoszillators mit hohem Temperaturkoeffizienten ändert sich erheblich mit der Temperatur, und das erzeugte Signal wird als Impulseingang des Zählers verwendet 2. Schalter 1 und das Temperaturregister sind auf einen Basiswert entsprechend -55℃ voreingestellt. Schalter 1 subtrahiert das vom Quarzoszillator mit niedrigem Temperaturkoeffizienten erzeugte Impulssignal. Wenn der voreingestellte Wert des Zählers erreicht ist 1 reduziert wird auf 0, Der Wert des Temperaturregisters wird um erhöht 1, und die Voreinstellung des Zählers 1 wird neu geladen. Schalter 1 startet neu, um das vom Quarzoszillator mit niedrigem Temperaturkoeffizienten erzeugte Impulssignal zu zählen, und der Zyklus wird bis zum Zähler fortgesetzt 2 zählt zu 0, Stoppen der Akkumulation des Temperaturregisterwerts. Zu diesem Zeitpunkt, Der Wert im Temperaturregister ist die gemessene Temperatur. Der Steilheitsakkumulator dient zur Kompensation und Korrektur der Nichtlinearität im Temperaturmessprozess, und sein Ausgang wird verwendet, um den voreingestellten Wert des Zählers zu korrigieren 1.
Figur 1 ist wie folgt:
2. DS18B20- und MCU-Verbindungsdiagramm
3. DS18B20-Pin-Definition:
DQ: Dateneingabe/-ausgabe. Open-Drain-1-Draht-Schnittstelle. Es kann das Gerät auch mit Strom versorgen, wenn es im parasitären Stromversorgungsmodus VDD verwendet wird: positive Stromversorgung GND: Strommasse 4. Einführung in die interne Analyse von DS18B20:
Die obige Abbildung zeigt das Blockdiagramm von DS18B20, und das 64-Bit-ROM speichert den eindeutigen Seriencode des Geräts. Der Pufferspeicher enthält 2 Bytes von Temperaturregistern, die den digitalen Ausgang des Temperatursensors speichern. Zusätzlich, Der Pufferspeicher bietet Zugriff auf 1 Byte große obere und untere Alarmauslöseregister (TH und TL) und 1-Byte-Konfigurationsregister. Mit dem Konfigurationsregister kann der Benutzer die Auflösung der Temperatur-Digital-Umwandlung festlegen 9, 10, 11, oder 12 Bits. TH, TL, und Konfigurationsregister sind nichtflüchtig (EEPROM), Daher bleiben die Daten erhalten, wenn das Gerät ausgeschaltet ist. DS18B20 nutzt das einzigartige 1-Draht-Busprotokoll von Maxim, welches ein Steuersignal nutzt. Die Steuerleitung erfordert einen schwachen Pull-Up-Widerstand, da alle Geräte über einen 3-State- oder Open-Drain-Port mit dem Bus verbunden sind (DQ-Pin im Fall des DS18B20). In diesem Bussystem ist der Mikroprozessor (Master) verwendet für jedes Gerät einen eindeutigen 64-Bit-Code. Weil jedes Gerät einen einzigartigen Code hat, Die Anzahl der Geräte, die an einem Bus angesprochen werden können, ist nahezu unbegrenzt.
Temperaturregisterformat
Temperatur-/Datenbeziehung
Betriebsalarmsignal
Danach führt der DS18B20 eine Temperaturumrechnung durch, Es vergleicht den Temperaturwert mit dem benutzerdefinierten Zweierkomplement-Alarmauslösewert, der in den 1-Byte-TH- und TL-Registern gespeichert ist. Das Vorzeichenbit gibt an, ob der Wert positiv oder negativ ist: positiv S=0, negativ S=1. Die TH- und TL-Register sind nichtflüchtig (EEPROM) und sind daher nicht flüchtig, wenn das Gerät ausgeschaltet ist. Auf TH und TL kann über Bytes zugegriffen werden 2 Und 3 der Erinnerung.
TH- und TL-Registerformat:
Schematische Darstellung der Stromversorgung des DS18B20 über ein externes Netzteil
64-Bit-Laser-Nur-Lese-Speichercode:
Jeder DS18B20 enthält einen einzigartigen 64-Bit-Code, der im ROM gespeichert ist. Das am wenigsten bedeutsame 8 Bits des ROM-Codes enthalten den Single-Wire-Familiencode des DS18B20: 28H. Der nächste 48 Bits enthalten eine eindeutige Seriennummer. Das Bedeutendste 8 Bits enthalten eine zyklische Redundanzprüfung (CRC) Byte, die aus dem ersten berechnet wird 56 Bits des ROM-Codes.
DS18B20-Speicherkarte
Konfigurationsregister:
Figur 2
Byte 4 Der Speicher enthält das Konfigurationsregister, die wie in Abbildung gezeigt organisiert ist 2. Der Benutzer kann hier die Konvertierungsauflösung des DS18B20 mithilfe der Bits R0 und R1 einstellen, wie in der Tabelle gezeigt 2. Die Einschalt-Standardwerte für diese Bits sind R0 = 1 und R1 = 1 (12-Bitauflösung). Beachten Sie, dass ein direkter Zusammenhang zwischen Auflösung und Konvertierungszeit besteht. Bisschen 7 und Bits 0 Zu 4 im Konfigurationsregister sind für die interne Verwendung des Geräts reserviert und können nicht überschrieben werden.
Tisch 2 Konfiguration der Thermometerauflösung
CRC-Generierung
Das CRC-Byte ist Teil des DS18B20 64-Bit-ROM-Codes und wird im 9. Byte des Scratchpads bereitgestellt. Der ROM-Code CRC wird von Anfang an berechnet 56 Bits des ROM-Codes und ist im höchstwertigen Byte des ROM enthalten. Der Scratchpad-CRC wird auf Grundlage der im Scratchpad gespeicherten Daten berechnet, Es ändert sich also, wenn sich die Daten im Notizblock ändern. Der CRC bietet dem Bus-Host eine Methode zur Datenüberprüfung beim Lesen von Daten vom DS18B20. Nachdem Sie überprüft haben, ob die Daten korrekt gelesen wurden, Der Busmaster muss den CRC aus den empfangenen Daten neu berechnen und diesen Wert dann mit dem ROM-Code-CRC vergleichen (für ROM-Lesevorgänge) oder das Scratchpad CRC (für Notizblock-Lesevorgänge). Wenn der berechnete CRC mit dem gelesenen CRC übereinstimmt, Die Daten wurden korrekt empfangen. Die Entscheidung, die CRC-Werte zu vergleichen und fortzufahren, liegt vollständig im Ermessen des Busmasters. Im DS18B20 gibt es keine Schaltung, die die Ausführung einer Befehlssequenz verhindert, wenn:
Der DS18B20 CRC (ROM oder Notizblock) stimmt nicht mit dem vom Busmaster generierten Wert überein.
Die äquivalente Polynomfunktion für den CRC ist:
CRC = X8 + X5 + X4 + 1
Der Busmaster kann den CRC neu berechnen und mit dem CRC-Wert des DS18B20 vergleichen:
Der Polynomgenerator ist in Abbildung dargestellt 3. Die Schaltung umfasst ein Schieberegister und Yihuo-Gatter, und die Bits des Schieberegisters werden initialisiert 0. Das niedrigstwertige Bit des ROM-Codes oder das niedrigstwertige Bit eines Bytes 0 im Notizblock sollten nacheinander in das Schieberegister verschoben werden. Nach dem Einschalten des Bits 56 aus dem ROM oder dem höchstwertigen Bit eines Bytes 7 vom Notizblock, Der Polynomgenerator enthält den neu berechneten CRC. Nächste, Der 8-Bit-ROM-Code oder das CRC-Signal im Scratchpad DS18B20 müssen in die Schaltung verschoben werden. An dieser Stelle, ob der neu berechnete CRC korrekt ist, Das Schieberegister wird nur aus Nullen bestehen.
Figur 3: CRC-Generator
V. Zugriff auf den DS18B20:
Die Reihenfolge für den Zugriff auf den DS18B20 ist wie folgt:
Schritt 1. Initialisierung;
Schritt 2. ROM-Befehl (Anschließend erfolgt der ggf. erforderliche Datenaustausch);
Schritt 3. DS18B20-Funktionsbefehl (Anschließend erfolgt der ggf. erforderliche Datenaustausch);
Notiz: Diese Reihenfolge wird bei jedem Zugriff auf den DS18B20 eingehalten, weil der DS18B20 nicht reagiert, wenn ein Schritt in der Sequenz fehlt oder nicht in der richtigen Reihenfolge ist. Die Ausnahme von dieser Regel ist das Such-ROM [F0h] und Alarmsuche [Ech] Befehle. Nach Ausgabe dieser beiden ROM-Befehle, Der Host muss zum Schritt zurückkehren 1 der Reihe nach.
(Die obige Einführung ist eine Übersetzung aus dem offiziellen Handbuch)
ROM-Befehl
1, ROM lesen [33H]
2, Match-ROM [55H]
3, ROM überspringen [CCh]
4, Alarmsuche [Ech]
DS18B20-Funktionsbefehl
1, Temperatur umrechnen [44H]
2, Schreiben Sie Scratchpad (Erinnerung) [4Äh]
3, Lesen Sie Scratchpad (Erinnerung) [BEh]
4, Scratchpad kopieren (Erinnerung [48H]
5, Wecken Sie E2 erneut auf [B8h]
6, Lesen Sie Macht [B4h]
(Für eine detaillierte Beschreibung der oben genannten Befehle, siehe offizielles Handbuch)
VI. Greifen Sie auf DS18B20 Timing zu
Während des Initialisierungsprozesses, Der Busmaster sendet einen Reset-Impuls (TX) Low-Pegel für mindestens 480µs durch Ziehen des 1-Wire-Busses. Dann, Der Busmaster gibt den Bus frei und wechselt in den Empfangsmodus (RX). Nach Freigabe des Busses, Der 5-kΩ-Pull-up-Widerstand zieht den 1-Wire-Bus auf High. Wenn der DS18B20 diese steigende Flanke erkennt, Es wartet 15 µs bis 60 µs und sendet dann einen Anwesenheitsimpuls, indem es den 1-Wire-Bus für 60 µs bis 240 µs auf Low zieht.
Initialisierungszeitpunkt:
Es gibt zwei Arten von Schreibzeitfenstern: “Schreiben Sie 1” Zeitfenster und “Schreiben Sie 0” Zeitfenster. Der Bus verwendet ein Write 1 Zeitfenster zum Schreiben einer Logik 1 zum DS18B20 und einem Write 0 Zeitfenster zum Schreiben einer Logik 0 zum DS18B20. Alle Schreibzeitschlitze müssen mindestens 60 µs lang sein, mit einer Erholungszeit von mindestens 1 µs zwischen den einzelnen Schreibzeitschlitzen. Beide Arten von Schreibzeitschlitzen werden dadurch initiiert, dass der Master den 1-Wire-Bus auf Low zieht (siehe Abbildung 14). Um einen Write zu generieren 1 Zeitfenster, nachdem der 1-Wire-Bus auf Low gezogen wurde, Der Busmaster muss den 1-Wire-Bus innerhalb von 15µs freigeben. Nach Freigabe des Busses, Der 5-kΩ-Pull-up-Widerstand zieht den Bus hoch. Generieren Sie eine
Schreiben 0 Zeitfenster, nachdem die 1-Wire-Leitung auf Low gezogen wurde, the bus master must continue to hold the bus low for the duration of the time slot (at least 60µs). The DS18B20 samples the 1-Wire bus within a window of 15µs to 60µs after the master initiates the write time slot. If the bus is high during the sampling window, A 1 is written to the DS18B20. If the line is low, A 0 is written to the DS18B20.
Notiz: Timeslot is a portion of the serial self-multiplexing of the time slot information dedicated to a single channel.
Figur 14 ist wie folgt:
Read time slot:
The DS18B20 can only send data to the host when the host issues a read time slot. daher, the host must generate a read time slot immediately after issuing a Read Memory Command [BEh] or a Read Power Supply [B4h] Befehl, damit der DS18B20 die erforderlichen Daten bereitstellen kann. Alternativ, Der Host kann einen Lesezeitschlitz generieren, nachdem er ein Convert T ausgegeben hat [44H] oder Erinnern Sie sich an E2 [B8h] Befehl, um den Status herauszufinden. Alle Lesezeitschlitze müssen mindestens 60 µs lang sein, mit einer Mindestwiederherstellungszeit von 1 µs zwischen den Zeitschlitzen. Ein Lesezeitschlitz wird initiiert, indem der Master den 1-Wire-Bus auf Low zieht, um ihn mindestens 1 µs lang auf Low zu halten, und dann den Bus freigibt (siehe Abbildung 14). Nachdem der Master einen Lesezeitschlitz initiiert hat, Der DS18B20 beginnt, entweder Einsen oder Nullen auf dem Bus zu senden. Der DS18B20 sendet ein 1 indem man den Bus hoch hält und ein sendet 0 indem man den Bus nach unten zieht. Wenn ein 0 gesendet wird, Der DS18B20 gibt den Bus frei, indem er den Bus hoch hält. Der Zeitschlitz endet und der Bus wird durch den Pull-Up-Widerstand wieder in den hohen Ruhezustand zurückgezogen.
English
Afrikaans
العربية
বাংলা
bosanski jezik
Български
Català
粤语
中文(简体)
中文(漢字)
Hrvatski
Čeština
Nederlands
Eesti keel
Suomi
Français
Deutsch
Ελληνικά
हिन्दी; हिंदी
Magyar
Bahasa Indonesia
Italiano
日本語
한국어
Latviešu valoda
Lietuvių kalba
македонски јазик
Bahasa Melayu
Norsk
پارسی
Polski
Português
Română
Русский
Cрпски језик
Slovenčina
Slovenščina
Español
Svenska
ภาษาไทย
Türkçe
Українська
اردو
Tiếng Việt
















