So Funktioniert der Intelligente Sensor DS18B20
Funktionsprinzip und Timing des intelligenten Temperatursensors DS18B20:
DS18B20 ist der neueste verbesserte intelligente Temperatursensor, der von der DALLAS Semiconductor Company in den Vereinigten Staaten nach DS1820 auf den Markt gebracht wurde. 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. 9-Bit- und 12-Bit-Digitalgrößen können innerhalb von 93,75 ms bzw. 750 ms fertiggestellt werden, und die von DS18B20 gelesenen oder in DS18B20 geschriebenen Informationen erfordern nur eine Portleitung (Eindraht schnittstelle) zum Lesen und Schreiben. Die Temperatur umwandlung leistung kommt vom Datenbus, und der Bus selbst kann auch den angeschlossenen DS18B20 mit Strom versorgen, ohne dass eine zusätzliche Stromversorgung erforderlich ist. Daher kann die Verwendung von DS18B20 die Systemstruktur einfacher und zuverlässiger machen. Es weist gegenüber dem DS1820 große Verbesserungen in Bezug auf Temperatur messgenauigkeit, Wandlungszeit, Übertragungsentfernung, Auflösung usw. auf, was den Benutzern eine komfortablere Nutzung und zufriedenstellendere Ergebnisse ermöglicht.
1. Einführung in DS18B20
(1) Einzigartige Eindraht-Schnittstellen methode: Wenn DS18B20 an den Mikroprozessor angeschlossen ist, ist nur eine Portleitung erforderlich, um eine bidirektionale Kommunikation zwischen dem Mikroprozessor und DS18B20 zu erreichen.
(2) Während der Nutzung sind keine externen Komponenten erforderlich.
(3) Es kann über eine Datenleitung mit Strom versorgt werden, Spannungsbereich: +3,0 ~ +5,5 V.
(4) Temperaturmessbereich: -55 ~ +125 ℃. Die inhärente Auflösung der Temperaturmessung beträgt 0,5 ℃.
(5) Der digitale Lesemodus mit 9 bis 12 Ziffern kann durch Programmierung realisiert werden.
(6) Benutzer können Ober- und Untergrenzen für nichtflüchtige Alarme festlegen.
(7) Unterstützt die Mehrpunkt-Netzwerkfunktion. Mehrere DS18B20 können auf nur drei Leitungen parallel geschaltet werden, um eine Mehrpunkt-Temperaturmessung zu erreichen.
(8) Negative Spannung eigenschaften: Wenn die Polarität der Stromversorgung umgekehrt wird, brennt das Thermometer aufgrund der Hitze nicht, funktioniert aber nicht richtig.
Temperatur messprinzip des DS18B20
Das Temperatur messprinzip des DS18B20 ist in Abbildung 2 dargestellt. Die Schwingungsfrequenz des Kristalloszillators mit niedrigem Temperaturkoeffizienten in der Abbildung wird nur sehr wenig von der Temperatur beeinflusst [1]. Es wird verwendet, um ein Impulssignal mit fester Frequenz zu erzeugen und es an den Subtraktionszähler 1 zu senden. Die Schwingungsfrequenz von Quarzoszillatoren mit hohem Temperatur koeffizienten ändert sich erheblich mit Temperaturänderungen. Das erzeugte Signal wird als Impulseingang des Subtraktionszählers 2 verwendet. In der Abbildung sind auch Zählgatter enthalten. Wenn das Zähltor geöffnet wird, zählt der DS18B20 die vom Oszillator mit niedrigem Temperaturkoeffizienten erzeugten Taktimpulse, um die Temperaturmessung abzuschließen. Die Öffnungszeit des Zähltors wird durch einen Oszillator mit hohem Temperaturkoeffizienten bestimmt. Geben Sie vor jeder Messung zunächst die Basiszahl entsprechend -55 ℃ in den Subtraktionszähler 1 bzw. das Temperaturregister ein. Der Abwärtszähler 1 und das Temperaturregister sind auf einen Basiswert entsprechend -55°C voreingestellt. Der Subtraktionszähler 1 führt eine Subtraktion zählung auf dem vom Kristalloszillator mit niedrigem Temperaturkoeffizienten erzeugten Impulssignal durch. Wenn der voreingestellte Wert des Subtraktionszählers 1 auf 0 sinkt, wird der Wert des Temperaturregisters um 1 erhöht und der voreingestellte Wert des Subtraktionszählers 1 wird neu geladen. Subtraktionszähler 1 beginnt erneut mit der Zählung des vom Kristalloszillator mit niedrigem Temperaturkoeffizienten erzeugten Impulssignals. Dieser Zyklus wird fortgesetzt, bis Subtraktionszähler 2 auf 0 zählt und dann die Akkumulation des Temperaturregisterwerts stoppt. Zu diesem Zeitpunkt ist der Wert im Temperaturregister die gemessene Temperatur. Der Steigungsakkumulator in Abbildung 2 dient zur Kompensation und Korrektur der Nichtlinearität im Temperatur messprozess und sein Ausgang wird zur Korrektur des voreingestellten Werts des Subtraktionszählers verwendet. Solange das Zähltor nicht geschlossen ist, wiederholt sich der obige Vorgang, bis der Temperaturregisterwert den gemessenen Temperaturwert erreicht. Dies ist das Temperatur messprinzip des DS18B20.
Da die Single-Line-Kommunikation funktion des DS18B20 außerdem im Time-Sharing ausgeführt wird, verfügt sie über ein striktes Zeitschlitzkonzept, sodass das Lese- und Schreib-Timing sehr wichtig ist. Verschiedene Vorgänge des Systems auf DS18B20 müssen gemäß dem Protokoll durchgeführt werden. Das Betriebsprotokoll lautet: DS18B20 initialisieren (Reset-Impuls senden) → ROM-Funktions befehl senden → Speicherbetrieb befehl senden → Daten verarbeiten. Das Zeitdiagramm für verschiedene Vorgänge entspricht dem des DS1820.
DS18B20-Arbeitsprozess und Timing
Der Oszillator mit niedrigem Temperaturkoeffizienten im DS18B20 ist ein Oszillator, dessen Schwingungsfrequenz sich mit der Temperatur nur sehr wenig ändert und so einen Zählimpuls mit stabiler Frequenz für Zähler 1 liefert.
Der Oszillator mit hohem Temperaturkoeffizienten ist ein Oszillator, dessen Schwingungsfrequenz sehr temperatur empfindlich ist und Zähler 2 mit einem Zählimpuls versorgt, dessen Frequenz sich mit der Temperatur ändert.
Das Temperaturregister ist zunächst auf -55°C voreingestellt. Immer wenn Zähler 1 von der voreingestellten Zahl auf 0 herunterzählt, erhöht sich der im Temperaturregister registrierte Temperaturwert um 1 °C. Dieser Vorgang wird wiederholt, bis Zähler 2 den Wert 0 erreicht und dann stoppt.
Zunächst ist Zähler 1 mit einem voreingestellten Wert entsprechend -55 °C voreingestellt. Zukünftig wird die voreingestellte Anzahl jedes Zyklus von Zähler 1 vom Steilheit akkumulator bereitgestellt. Um die Nichtlinearität der Temperatur eigenschaften des Oszillators zu kompensieren, ändert sich auch die vom Steilheitsakkumulator bereitgestellte voreingestellte Zahl entsprechend mit der Temperatur. Die voreingestellte Anzahl von Zähler 1 ist die Anzahl der Zählungen, die erforderlich sind, um den Temperaturregisterwert bei einer bestimmten Temperatur um 1 °C zu erhöhen.
Der Komparator im DS18B20 bestimmt das niedrigstwertige Bit des Temperatur registers in gerundeter Quantisierung weise. Nachdem Zähler 2 aufgehört hat zu zählen, wandelt der Komparator den verbleibenden Zählwert in Zähler 1 in einen Temperaturwert um und vergleicht ihn mit 0,25 °C. Liegt sie unter 0,25℃, wird das niedrigste Bit des Temperatur registers auf 0 gesetzt. Wenn sie höher als 0,25℃ ist, wird das niedrigste Bit auf 1 gesetzt. Wenn sie höher als 0,75℃ ist, wird das niedrigste Bit des Temperatur registers übertragen und dann auf 0 gesetzt. Auf diese Weise ist der nach dem Vergleich erhaltene Wert des Temperatur registers der endgültig gelesene Temperaturwert, und das letzte Bit stellt 0,5 °C dar. Der maximale Rundung quantisierungsfehler beträgt ±1/2LSB, was 0,25 °C entspricht.
Der Temperaturwert im Temperaturregister wird in einem 9-Bit-Datenformat ausgedrückt, das höchste Bit ist das Vorzeichenbit und die restlichen 8 Bits stellen den Temperaturwert in Zweierkomplement form dar. Am Ende der Temperaturmessung werden diese 9-Bit-Daten in die ersten beiden Bytes des Zwischenspeichers übertragen und das Vorzeichenbit belegt das erste Byte. Die 8-Bit-Temperaturdaten belegen das zweite Byte.
DS18B20 nutzt bei der Temperaturmessung eine einzigartige Temperaturmess technologie. Der Oszillator mit niedrigem Temperaturkoeffizienten im Inneren des DS18B20 kann ein stabiles Frequenzsignal erzeugen. In ähnlicher Weise wandelt ein Oszillator mit hohem Temperaturkoeffizienten die gemessene Temperatur in ein Frequenzsignal um. Wenn das Zähltor geöffnet wird, zählt DS18B20 und die Öffnungszeit des Zähltors wird durch den Oszillator mit hohem Temperaturkoeffizienten bestimmt. Im Chip befindet sich außerdem ein Slope-Akkumulator, der die Nichtlinearität der Frequenz kompensiert. Die Messergebnisse werden im Temperaturregister gespeichert. Unter normalen Umständen sollte der Temperaturwert 9 Bit betragen, aber da das Vorzeichenbit auf die oberen 8 Bit erweitert wird, wird er schließlich in 16-Bit-Komplementform ausgelesen.
Der Arbeitsprozess von DS18B20 folgt im Allgemeinen dem folgenden Protokoll: Initialisierung – ROM-Betriebsbefehl – Speicherbetrieb befehl – Datenverarbeitung
① Initialisierung
Die gesamte Verarbeitung auf einem einzelnen Bus beginnt mit einer Initialisierungssequenz. Die Initialisierungssequenz umfasst einen Reset-Impuls vom Bus-Master, gefolgt von einem Anwesenheitsimpuls vom Slave-Gerät. Das Vorhandensein des Impulses zeigt dem Buscontroller an, dass sich der DS1820 am Bus befindet und betriebsbereit ist.
② ROM-Betriebsbefehl
Sobald der Busmaster das Vorhandensein eines Slave-Geräts erkennt, kann er einen der ROM-Betriebsbefehle des Geräts ausgeben. Alle ROM-Betriebsbefehle sind 8 Bit lang. Die Liste dieser Befehle lautet wie folgt:
ROM lesen (ROM lesen)[33h]
Mit diesem Befehl kann der Busmaster den 8-Bit-Produktfamiliencode, die eindeutige 48-Bit-Seriennummer und den 8-Bit-CRC des DS18B20 lesen. Dieser Befehl kann nur verwendet werden, wenn nur ein DS18B20 am Bus vorhanden ist. Wenn sich mehr als ein Slave-Gerät am Bus befindet, kommt es zu Datenkollisionen, wenn alle Slaves gleichzeitig versuchen zu übertragen (ein Open Drain führt zu einem verdrahteten UND-Ergebnis).
Match-ROM(Match-ROM)[55h]
Auf diesen Befehl folgt eine 64-Bit-ROM-Datensequenz, die es dem Busmaster ermöglicht, einen bestimmten DS18B20 auf dem Multidrop-Bus anzusprechen. Nur der DS18B20, der genau der 64-Bit-ROM-Sequenz entspricht, kann auf nachfolgende Speicheroperation befehle reagieren. Alle Slaves, die nicht der 64-Bit-ROM-Sequenz entsprechen, warten auf einen Reset-Impuls. Dieser Befehl kann mit einzelnen oder mehreren Geräten am Bus verwendet werden.
ROM überspringen(ROM überspringen)[CCh]
In Single-Point-Bussystemen spart dieser Befehl Zeit, indem er dem Busmaster den Zugriff auf Speicheroperationen ermöglicht, ohne eine 64-Bit-ROM-Kodierung bereitzustellen. Wenn sich mehr als ein Slave-Gerät am Bus befindet und nach dem Skip ROM-Befehl ein Lesebefehl ausgegeben wird, kommt es zu Datenkonflikten auf dem Bus, da mehrere Slave-Geräte gleichzeitig Daten senden.
ROM durchsuchen(ROM durchsuchen)[F0h]
Wenn das System zu arbeiten beginnt, kennt der Busmaster möglicherweise nicht die Anzahl der Geräte am Eindrahtbus oder seinen 64-Bit-ROM-Code. Mit dem Befehl „Search ROM“ kann der Buscontroller die 64-Bit-Codes aller Slaves am Bus durch Eliminierungsprozess identifizieren.
Alarmsuche (Alarmsuche) [ECh]
Der Ablauf dieses Befehls ist der gleiche wie der des Befehls „Such-ROM“. Allerdings reagiert der DS18B20 nur dann auf diesen Befehl, wenn bei der letzten Temperaturmessung ein Alarm aufgetreten ist. Der Alarmzustand ist definiert, wenn die Temperatur höher als TH oder niedriger als TL ist. Sobald der DS18B20 eingeschaltet wird, bleibt der Alarmzustand aktiviert, bis eine weitere Temperaturmessung einen Nicht-Alarmwert anzeigt oder die TH- oder TL-Einstellung geändert wird, sodass der Messwert wieder innerhalb des zulässigen Bereichs liegt. Für Alarme wird der im EEPROM gespeicherte Auslösewert verwendet.
③ Speicherbetrieb befehl
Scratchpad schreiben (Notizblock schreiben) [4Eh]
Dieser Befehl schreibt Daten in das temporäre Register von DS18B20, beginnend bei Adresse 2. Die nächsten zwei geschriebenen Bytes werden im Notizblock an den Adressplätzen 2 und 3 gespeichert. Um den Schreibvorgang abzubrechen, kann jederzeit ein Reset-Befehl gegeben werden.
Scratchpad lesen [BEh]
Dieser Befehl liest den Inhalt des Notizblocks. Der Lesevorgang beginnt bei Byte 0 und wird fortgesetzt, bis das 9. Byte (Byte 8, CRC) gelesen ist. Möchte er nicht alle Bytes lesen, kann der Controller jederzeit einen Reset-Befehl erteilen, um den Lesevorgang abzubrechen.
Scratchpad kopieren (Scratchpad kopieren) [48h]
Dieser Befehl kopiert den Inhalt des temporären Registers in den E2-Speicher des DS18B20, d. h. speichert das Temperaturalarm-Auslösebyte im nichtflüchtigen Speicher. Wenn der Buscontroller nach diesem Befehl eine Lesezeitlücke ausgibt und der DS18B20 damit beschäftigt ist, das Scratchpad in den E2-Speicher zu kopieren, gibt der DS18B20 eine „0“ aus. Wenn der Kopiervorgang abgeschlossen ist, gibt DS18B20 „1“ aus. Wenn parasitärer Strom verwendet wird, muss der Buscontroller unmittelbar nach Ausgabe dieses Befehls einen starken Pull-Up einleiten und diesen für mindestens 10 ms aufrechterhalten.
T umrechnen (Temperatur umrechnung) [44h]
Dieser Befehl löst eine Temperatur umrechnung aus, ohne dass zusätzliche Daten erforderlich sind. Der Temperatur umwandlung befehl wird ausgeführt und der DS18B20 bleibt dann im Wartezustand. Wenn der Buscontroller nach diesem Befehl eine Lesezeitlücke ausgibt und der DS18B20 mit der Zeitumrechnung beschäftigt ist, gibt der DS18B20 „0“ auf dem Bus aus und „1“, wenn die Temperatur umrechnung abgeschlossen ist. Wenn parasitäre Leistung verwendet wird, muss der Buscontroller unmittelbar nach der Ausgabe dieses Befehls einen starken Pull-up einleiten und diesen 500 ms lang aufrechterhalten.
E2 abrufen (E2 abrufen) [B8h]
Dieser Befehl setzt den in E2 gespeicherten Wert des Temperaturtriggers im temporären Speicher zurück. Dieser Abrufvorgang erfolgt auch automatisch, wenn das DS18B20 eingeschaltet wird, so dass, sobald das Gerät eingeschaltet wird, gültige Daten im temporären Speicher vorhanden sind. Nachdem dieser Befehl ausgegeben wurde, gibt das Gerät für die erste ausgegebene Lesedaten-Zeitscheibe ein Temperatur umwandlungs-Beschäftigt-Flag aus: „0“ = beschäftigt, „1“ = bereit.
Stromversorgung lesen [B4h]
Für die Zeitspanne der ersten Lesedaten, die ausgegeben werden, nachdem dieser Befehl an den DS18B20 gesendet wurde, gibt das Gerät ein Signal seines Energiemodus aus: „0“ = Stromversorgung durch eine parasitäre Stromversorgung, „1“ = Stromversorgung durch eine externe Stromversorgung liefern.
④ Prozessdaten
Der Hochgeschwindigkeits-Scratchpad-Speicher des DS18B20 besteht aus 9 Bytes und seine Belegung ist in Abbildung 3 dargestellt. Wenn der Befehl zur Temperaturumrechnung ausgegeben wird, wird der umgewandelte Temperaturwert im 0. und 1. Byte des Cache-Speichers in Zwei-Byte-Komplementform gespeichert. Der Mikrocontroller kann die Daten über die Single-Wire-Schnittstelle lesen, wobei das Low-Bit vorne und das High-Bit hinten liegt.
Abbildung 3 Diagramm der Cache-Speicherzuordnung
DS18B20 Temperatur datenblatt
Die obige Tabelle enthält die 12-Bit-Daten, die nach der Temperaturerfassung und -konvertierung durch DS18B20 erhalten wurden. Die ersten 5 Binärbits werden in zwei 8-Bit-RAMs des DS18B20 gespeichert und sind Vorzeichenbits. Wenn die gemessene Temperatur größer oder gleich 0 ist, sind diese 5 Bits 0. Multiplizieren Sie einfach den gemessenen Wert mit 0,0625, um die tatsächliche Temperatur zu erhalten. Wenn die Temperatur kleiner als 0 ist, sind diese 5 Bits 1, und der gemessene Wert muss invertiert werden, plus 1 und dann mit 0,0625 multipliziert werden, um die tatsächliche Temperatur zu erhalten.
Beispiel für eine Berechnungsmethode zur Temperatur umrechnung:
Wenn DS18B20 beispielsweise die tatsächliche Temperatur von +125 °C erfasst und die Ausgabe 07D0H ist, dann:
Tatsächliche Temperatur = 07D0H╳0,0625=2000╳0,0625=1250C.
Wenn DS18B20 beispielsweise die tatsächliche Temperatur von -55 °C erfasst und FC90H ausgibt, sollten die 11 Datenbits invertiert und um 1 addiert werden, um 370H zu erhalten (das Vorzeichenbit bleibt unverändert und wird nicht in die Berechnung einbezogen), dann:
Tatsächliche Temperatur=370H╳0,0625=880╳0,0625=550C.
DS18B20 ist der neueste verbesserte intelligente Temperatursensor, der von der DALLAS Semiconductor Company in den Vereinigten Staaten nach DS1820 auf den Markt gebracht wurde. 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. 9-Bit- und 12-Bit-Digitalgrößen können innerhalb von 93,75 ms bzw. 750 ms fertiggestellt werden, und die von DS18B20 gelesenen oder in DS18B20 geschriebenen Informationen erfordern nur eine Portleitung (Eindraht schnittstelle) zum Lesen und Schreiben. Die Temperatur umwandlung leistung kommt vom Datenbus, und der Bus selbst kann auch den angeschlossenen DS18B20 mit Strom versorgen, ohne dass eine zusätzliche Stromversorgung erforderlich ist. Daher kann die Verwendung von DS18B20 die Systemstruktur einfacher und zuverlässiger machen. Es weist gegenüber dem DS1820 große Verbesserungen in Bezug auf Temperatur messgenauigkeit, Wandlungszeit, Übertragungsentfernung, Auflösung usw. auf, was den Benutzern eine komfortablere Nutzung und zufriedenstellendere Ergebnisse ermöglicht.
DS18b20 digitaler Temperatur übertragung sensor | ds18b20 Temperaturkontroll fühler für Kühlschränke |
1. Einführung in DS18B20
(1) Einzigartige Eindraht-Schnittstellen methode: Wenn DS18B20 an den Mikroprozessor angeschlossen ist, ist nur eine Portleitung erforderlich, um eine bidirektionale Kommunikation zwischen dem Mikroprozessor und DS18B20 zu erreichen.
(2) Während der Nutzung sind keine externen Komponenten erforderlich.
(3) Es kann über eine Datenleitung mit Strom versorgt werden, Spannungsbereich: +3,0 ~ +5,5 V.
(4) Temperaturmessbereich: -55 ~ +125 ℃. Die inhärente Auflösung der Temperaturmessung beträgt 0,5 ℃.
(5) Der digitale Lesemodus mit 9 bis 12 Ziffern kann durch Programmierung realisiert werden.
(6) Benutzer können Ober- und Untergrenzen für nichtflüchtige Alarme festlegen.
(7) Unterstützt die Mehrpunkt-Netzwerkfunktion. Mehrere DS18B20 können auf nur drei Leitungen parallel geschaltet werden, um eine Mehrpunkt-Temperaturmessung zu erreichen.
(8) Negative Spannung eigenschaften: Wenn die Polarität der Stromversorgung umgekehrt wird, brennt das Thermometer aufgrund der Hitze nicht, funktioniert aber nicht richtig.
Temperatur messprinzip des DS18B20
Das Temperatur messprinzip des DS18B20 ist in Abbildung 2 dargestellt. Die Schwingungsfrequenz des Kristalloszillators mit niedrigem Temperaturkoeffizienten in der Abbildung wird nur sehr wenig von der Temperatur beeinflusst [1]. Es wird verwendet, um ein Impulssignal mit fester Frequenz zu erzeugen und es an den Subtraktionszähler 1 zu senden. Die Schwingungsfrequenz von Quarzoszillatoren mit hohem Temperatur koeffizienten ändert sich erheblich mit Temperaturänderungen. Das erzeugte Signal wird als Impulseingang des Subtraktionszählers 2 verwendet. In der Abbildung sind auch Zählgatter enthalten. Wenn das Zähltor geöffnet wird, zählt der DS18B20 die vom Oszillator mit niedrigem Temperaturkoeffizienten erzeugten Taktimpulse, um die Temperaturmessung abzuschließen. Die Öffnungszeit des Zähltors wird durch einen Oszillator mit hohem Temperaturkoeffizienten bestimmt. Geben Sie vor jeder Messung zunächst die Basiszahl entsprechend -55 ℃ in den Subtraktionszähler 1 bzw. das Temperaturregister ein. Der Abwärtszähler 1 und das Temperaturregister sind auf einen Basiswert entsprechend -55°C voreingestellt. Der Subtraktionszähler 1 führt eine Subtraktion zählung auf dem vom Kristalloszillator mit niedrigem Temperaturkoeffizienten erzeugten Impulssignal durch. Wenn der voreingestellte Wert des Subtraktionszählers 1 auf 0 sinkt, wird der Wert des Temperaturregisters um 1 erhöht und der voreingestellte Wert des Subtraktionszählers 1 wird neu geladen. Subtraktionszähler 1 beginnt erneut mit der Zählung des vom Kristalloszillator mit niedrigem Temperaturkoeffizienten erzeugten Impulssignals. Dieser Zyklus wird fortgesetzt, bis Subtraktionszähler 2 auf 0 zählt und dann die Akkumulation des Temperaturregisterwerts stoppt. Zu diesem Zeitpunkt ist der Wert im Temperaturregister die gemessene Temperatur. Der Steigungsakkumulator in Abbildung 2 dient zur Kompensation und Korrektur der Nichtlinearität im Temperatur messprozess und sein Ausgang wird zur Korrektur des voreingestellten Werts des Subtraktionszählers verwendet. Solange das Zähltor nicht geschlossen ist, wiederholt sich der obige Vorgang, bis der Temperaturregisterwert den gemessenen Temperaturwert erreicht. Dies ist das Temperatur messprinzip des DS18B20.
Da die Single-Line-Kommunikation funktion des DS18B20 außerdem im Time-Sharing ausgeführt wird, verfügt sie über ein striktes Zeitschlitzkonzept, sodass das Lese- und Schreib-Timing sehr wichtig ist. Verschiedene Vorgänge des Systems auf DS18B20 müssen gemäß dem Protokoll durchgeführt werden. Das Betriebsprotokoll lautet: DS18B20 initialisieren (Reset-Impuls senden) → ROM-Funktions befehl senden → Speicherbetrieb befehl senden → Daten verarbeiten. Das Zeitdiagramm für verschiedene Vorgänge entspricht dem des DS1820.
DS18B20-Arbeitsprozess und Timing
Der Oszillator mit niedrigem Temperaturkoeffizienten im DS18B20 ist ein Oszillator, dessen Schwingungsfrequenz sich mit der Temperatur nur sehr wenig ändert und so einen Zählimpuls mit stabiler Frequenz für Zähler 1 liefert.
Der Oszillator mit hohem Temperaturkoeffizienten ist ein Oszillator, dessen Schwingungsfrequenz sehr temperatur empfindlich ist und Zähler 2 mit einem Zählimpuls versorgt, dessen Frequenz sich mit der Temperatur ändert.
Das Temperaturregister ist zunächst auf -55°C voreingestellt. Immer wenn Zähler 1 von der voreingestellten Zahl auf 0 herunterzählt, erhöht sich der im Temperaturregister registrierte Temperaturwert um 1 °C. Dieser Vorgang wird wiederholt, bis Zähler 2 den Wert 0 erreicht und dann stoppt.
Zunächst ist Zähler 1 mit einem voreingestellten Wert entsprechend -55 °C voreingestellt. Zukünftig wird die voreingestellte Anzahl jedes Zyklus von Zähler 1 vom Steilheit akkumulator bereitgestellt. Um die Nichtlinearität der Temperatur eigenschaften des Oszillators zu kompensieren, ändert sich auch die vom Steilheitsakkumulator bereitgestellte voreingestellte Zahl entsprechend mit der Temperatur. Die voreingestellte Anzahl von Zähler 1 ist die Anzahl der Zählungen, die erforderlich sind, um den Temperaturregisterwert bei einer bestimmten Temperatur um 1 °C zu erhöhen.
Der Komparator im DS18B20 bestimmt das niedrigstwertige Bit des Temperatur registers in gerundeter Quantisierung weise. Nachdem Zähler 2 aufgehört hat zu zählen, wandelt der Komparator den verbleibenden Zählwert in Zähler 1 in einen Temperaturwert um und vergleicht ihn mit 0,25 °C. Liegt sie unter 0,25℃, wird das niedrigste Bit des Temperatur registers auf 0 gesetzt. Wenn sie höher als 0,25℃ ist, wird das niedrigste Bit auf 1 gesetzt. Wenn sie höher als 0,75℃ ist, wird das niedrigste Bit des Temperatur registers übertragen und dann auf 0 gesetzt. Auf diese Weise ist der nach dem Vergleich erhaltene Wert des Temperatur registers der endgültig gelesene Temperaturwert, und das letzte Bit stellt 0,5 °C dar. Der maximale Rundung quantisierungsfehler beträgt ±1/2LSB, was 0,25 °C entspricht.
Der Temperaturwert im Temperaturregister wird in einem 9-Bit-Datenformat ausgedrückt, das höchste Bit ist das Vorzeichenbit und die restlichen 8 Bits stellen den Temperaturwert in Zweierkomplement form dar. Am Ende der Temperaturmessung werden diese 9-Bit-Daten in die ersten beiden Bytes des Zwischenspeichers übertragen und das Vorzeichenbit belegt das erste Byte. Die 8-Bit-Temperaturdaten belegen das zweite Byte.
DS18B20 nutzt bei der Temperaturmessung eine einzigartige Temperaturmess technologie. Der Oszillator mit niedrigem Temperaturkoeffizienten im Inneren des DS18B20 kann ein stabiles Frequenzsignal erzeugen. In ähnlicher Weise wandelt ein Oszillator mit hohem Temperaturkoeffizienten die gemessene Temperatur in ein Frequenzsignal um. Wenn das Zähltor geöffnet wird, zählt DS18B20 und die Öffnungszeit des Zähltors wird durch den Oszillator mit hohem Temperaturkoeffizienten bestimmt. Im Chip befindet sich außerdem ein Slope-Akkumulator, der die Nichtlinearität der Frequenz kompensiert. Die Messergebnisse werden im Temperaturregister gespeichert. Unter normalen Umständen sollte der Temperaturwert 9 Bit betragen, aber da das Vorzeichenbit auf die oberen 8 Bit erweitert wird, wird er schließlich in 16-Bit-Komplementform ausgelesen.
Der Arbeitsprozess von DS18B20 folgt im Allgemeinen dem folgenden Protokoll: Initialisierung – ROM-Betriebsbefehl – Speicherbetrieb befehl – Datenverarbeitung
① Initialisierung
Die gesamte Verarbeitung auf einem einzelnen Bus beginnt mit einer Initialisierungssequenz. Die Initialisierungssequenz umfasst einen Reset-Impuls vom Bus-Master, gefolgt von einem Anwesenheitsimpuls vom Slave-Gerät. Das Vorhandensein des Impulses zeigt dem Buscontroller an, dass sich der DS1820 am Bus befindet und betriebsbereit ist.
② ROM-Betriebsbefehl
Sobald der Busmaster das Vorhandensein eines Slave-Geräts erkennt, kann er einen der ROM-Betriebsbefehle des Geräts ausgeben. Alle ROM-Betriebsbefehle sind 8 Bit lang. Die Liste dieser Befehle lautet wie folgt:
ROM lesen (ROM lesen)[33h]
Mit diesem Befehl kann der Busmaster den 8-Bit-Produktfamiliencode, die eindeutige 48-Bit-Seriennummer und den 8-Bit-CRC des DS18B20 lesen. Dieser Befehl kann nur verwendet werden, wenn nur ein DS18B20 am Bus vorhanden ist. Wenn sich mehr als ein Slave-Gerät am Bus befindet, kommt es zu Datenkollisionen, wenn alle Slaves gleichzeitig versuchen zu übertragen (ein Open Drain führt zu einem verdrahteten UND-Ergebnis).
Match-ROM(Match-ROM)[55h]
Auf diesen Befehl folgt eine 64-Bit-ROM-Datensequenz, die es dem Busmaster ermöglicht, einen bestimmten DS18B20 auf dem Multidrop-Bus anzusprechen. Nur der DS18B20, der genau der 64-Bit-ROM-Sequenz entspricht, kann auf nachfolgende Speicheroperation befehle reagieren. Alle Slaves, die nicht der 64-Bit-ROM-Sequenz entsprechen, warten auf einen Reset-Impuls. Dieser Befehl kann mit einzelnen oder mehreren Geräten am Bus verwendet werden.
ROM überspringen(ROM überspringen)[CCh]
In Single-Point-Bussystemen spart dieser Befehl Zeit, indem er dem Busmaster den Zugriff auf Speicheroperationen ermöglicht, ohne eine 64-Bit-ROM-Kodierung bereitzustellen. Wenn sich mehr als ein Slave-Gerät am Bus befindet und nach dem Skip ROM-Befehl ein Lesebefehl ausgegeben wird, kommt es zu Datenkonflikten auf dem Bus, da mehrere Slave-Geräte gleichzeitig Daten senden.
ROM durchsuchen(ROM durchsuchen)[F0h]
Wenn das System zu arbeiten beginnt, kennt der Busmaster möglicherweise nicht die Anzahl der Geräte am Eindrahtbus oder seinen 64-Bit-ROM-Code. Mit dem Befehl „Search ROM“ kann der Buscontroller die 64-Bit-Codes aller Slaves am Bus durch Eliminierungsprozess identifizieren.
Alarmsuche (Alarmsuche) [ECh]
Der Ablauf dieses Befehls ist der gleiche wie der des Befehls „Such-ROM“. Allerdings reagiert der DS18B20 nur dann auf diesen Befehl, wenn bei der letzten Temperaturmessung ein Alarm aufgetreten ist. Der Alarmzustand ist definiert, wenn die Temperatur höher als TH oder niedriger als TL ist. Sobald der DS18B20 eingeschaltet wird, bleibt der Alarmzustand aktiviert, bis eine weitere Temperaturmessung einen Nicht-Alarmwert anzeigt oder die TH- oder TL-Einstellung geändert wird, sodass der Messwert wieder innerhalb des zulässigen Bereichs liegt. Für Alarme wird der im EEPROM gespeicherte Auslösewert verwendet.
③ Speicherbetrieb befehl
Scratchpad schreiben (Notizblock schreiben) [4Eh]
Dieser Befehl schreibt Daten in das temporäre Register von DS18B20, beginnend bei Adresse 2. Die nächsten zwei geschriebenen Bytes werden im Notizblock an den Adressplätzen 2 und 3 gespeichert. Um den Schreibvorgang abzubrechen, kann jederzeit ein Reset-Befehl gegeben werden.
Scratchpad lesen [BEh]
Dieser Befehl liest den Inhalt des Notizblocks. Der Lesevorgang beginnt bei Byte 0 und wird fortgesetzt, bis das 9. Byte (Byte 8, CRC) gelesen ist. Möchte er nicht alle Bytes lesen, kann der Controller jederzeit einen Reset-Befehl erteilen, um den Lesevorgang abzubrechen.
Scratchpad kopieren (Scratchpad kopieren) [48h]
Dieser Befehl kopiert den Inhalt des temporären Registers in den E2-Speicher des DS18B20, d. h. speichert das Temperaturalarm-Auslösebyte im nichtflüchtigen Speicher. Wenn der Buscontroller nach diesem Befehl eine Lesezeitlücke ausgibt und der DS18B20 damit beschäftigt ist, das Scratchpad in den E2-Speicher zu kopieren, gibt der DS18B20 eine „0“ aus. Wenn der Kopiervorgang abgeschlossen ist, gibt DS18B20 „1“ aus. Wenn parasitärer Strom verwendet wird, muss der Buscontroller unmittelbar nach Ausgabe dieses Befehls einen starken Pull-Up einleiten und diesen für mindestens 10 ms aufrechterhalten.
T umrechnen (Temperatur umrechnung) [44h]
Dieser Befehl löst eine Temperatur umrechnung aus, ohne dass zusätzliche Daten erforderlich sind. Der Temperatur umwandlung befehl wird ausgeführt und der DS18B20 bleibt dann im Wartezustand. Wenn der Buscontroller nach diesem Befehl eine Lesezeitlücke ausgibt und der DS18B20 mit der Zeitumrechnung beschäftigt ist, gibt der DS18B20 „0“ auf dem Bus aus und „1“, wenn die Temperatur umrechnung abgeschlossen ist. Wenn parasitäre Leistung verwendet wird, muss der Buscontroller unmittelbar nach der Ausgabe dieses Befehls einen starken Pull-up einleiten und diesen 500 ms lang aufrechterhalten.
E2 abrufen (E2 abrufen) [B8h]
Dieser Befehl setzt den in E2 gespeicherten Wert des Temperaturtriggers im temporären Speicher zurück. Dieser Abrufvorgang erfolgt auch automatisch, wenn das DS18B20 eingeschaltet wird, so dass, sobald das Gerät eingeschaltet wird, gültige Daten im temporären Speicher vorhanden sind. Nachdem dieser Befehl ausgegeben wurde, gibt das Gerät für die erste ausgegebene Lesedaten-Zeitscheibe ein Temperatur umwandlungs-Beschäftigt-Flag aus: „0“ = beschäftigt, „1“ = bereit.
Stromversorgung lesen [B4h]
Für die Zeitspanne der ersten Lesedaten, die ausgegeben werden, nachdem dieser Befehl an den DS18B20 gesendet wurde, gibt das Gerät ein Signal seines Energiemodus aus: „0“ = Stromversorgung durch eine parasitäre Stromversorgung, „1“ = Stromversorgung durch eine externe Stromversorgung liefern.
④ Prozessdaten
Der Hochgeschwindigkeits-Scratchpad-Speicher des DS18B20 besteht aus 9 Bytes und seine Belegung ist in Abbildung 3 dargestellt. Wenn der Befehl zur Temperaturumrechnung ausgegeben wird, wird der umgewandelte Temperaturwert im 0. und 1. Byte des Cache-Speichers in Zwei-Byte-Komplementform gespeichert. Der Mikrocontroller kann die Daten über die Single-Wire-Schnittstelle lesen, wobei das Low-Bit vorne und das High-Bit hinten liegt.
Abbildung 3 Diagramm der Cache-Speicherzuordnung
DS18B20 Temperatur datenblatt
Die obige Tabelle enthält die 12-Bit-Daten, die nach der Temperaturerfassung und -konvertierung durch DS18B20 erhalten wurden. Die ersten 5 Binärbits werden in zwei 8-Bit-RAMs des DS18B20 gespeichert und sind Vorzeichenbits. Wenn die gemessene Temperatur größer oder gleich 0 ist, sind diese 5 Bits 0. Multiplizieren Sie einfach den gemessenen Wert mit 0,0625, um die tatsächliche Temperatur zu erhalten. Wenn die Temperatur kleiner als 0 ist, sind diese 5 Bits 1, und der gemessene Wert muss invertiert werden, plus 1 und dann mit 0,0625 multipliziert werden, um die tatsächliche Temperatur zu erhalten.
Beispiel für eine Berechnungsmethode zur Temperatur umrechnung:
Wenn DS18B20 beispielsweise die tatsächliche Temperatur von +125 °C erfasst und die Ausgabe 07D0H ist, dann:
Tatsächliche Temperatur = 07D0H╳0,0625=2000╳0,0625=1250C.
Wenn DS18B20 beispielsweise die tatsächliche Temperatur von -55 °C erfasst und FC90H ausgibt, sollten die 11 Datenbits invertiert und um 1 addiert werden, um 370H zu erhalten (das Vorzeichenbit bleibt unverändert und wird nicht in die Berechnung einbezogen), dann:
Tatsächliche Temperatur=370H╳0,0625=880╳0,0625=550C.