China Sensor Hersteller

China Temperature Sensor & Thermistor manufacturer

Anwendung des Digitalen Temperatursensors 1 wire DS18B20

Merkmale des DS18B20:
Der digitale Eindraht-Temperatursensor DS18B20, ein „First-Kabel-Gerät“, bietet einzigartige Vorteile:
     (1) Bei der Verbindung mit dem Mikroprozessor über eine einzelne Busschnittstelle ist nur eine Portleitung erforderlich, um eine bidirektionale Kommunikation zwischen dem Mikroprozessor und DS18B20 zu erreichen. Der Einzelbus bietet die Vorteile einer guten Wirtschaftlichkeit, einer starken Entstörungsfähigkeit, einer Eignung für die Temperaturmessung vor Ort in rauen Umgebungen und einer einfachen Verwendung. Es ermöglicht Benutzern den einfachen Aufbau von Sensornetzwerken und führt neue Konzepte für den Aufbau von Messsystemen ein.
     (2) Großer Messtemperaturbereich: hohe Messgenauigkeit. Der Messbereich des DS18B20 beträgt -55 °C bis + 125 °C; im Bereich von -10 bis + 85 °C beträgt die Genauigkeit ± 0,5 °C.
     (3) Während der Nutzung sind keine externen Komponenten erforderlich.
     (4) Unterstützung der Mehrpunkt-Netzwerkfunktion: Mehrere DS18B20 können parallel an einer einzigen Leitung angeschlossen werden, um eine Mehrpunkt-Temperaturmessung zu erreichen.
     (5) Flexible Stromversorgungsmethode: DS18B20 kann über interne parasitäre Schaltkreise Strom aus der Datenleitung beziehen. Wenn daher das Timing auf der Datenleitung bestimmte Anforderungen erfüllt, kann keine externe Stromversorgung angeschlossen werden, wodurch die Systemstruktur einfacher und zuverlässiger wird.
     (6) Messparameter sind konfigurierbar: Die Messauflösung des DS18B20 kann über das Programm auf 9 bis 12 Bit eingestellt werden.
     (7) Negative Spannungseigenschaften: Wenn die Polarität der Stromversorgung umgekehrt wird, brennt das Thermometer aufgrund der Hitze nicht, funktioniert aber nicht richtig.
     (8) Ausschaltschutzfunktion: DS18B20 enthält im Inneren ein EEPROM, das die Auflösungs- und Alarmtemperatureinstellungen auch nach dem Ausschalten des Systems speichern kann.
     Der DS18B20 ist kleiner, hat einen breiteren Spannungsbereich, ist wirtschaftlicher, verfügt optional über ein kleineres Gehäuse und verfügt über einen größeren Spannungsbereich. Es eignet sich für den Aufbau eines eigenen kostengünstigen Temperaturmesssystems und wird daher von Designern bevorzugt.
Audio stecker wasserdichter DS18B20 Temperatursensor DS18B20 digitaler Temperatursensor im ABS-Gehäuse
Audio stecker wasserdichter DS18B20 Temperatursensor DS18B20 digitaler Temperatursensor im ABS-Gehäuse

Interne Struktur des DS18B20:
Besteht hauptsächlich aus 4 Teilen: 64-Bit-ROM, Temperatursensor, nichtflüchtiger Temperaturalarmauslöser TH und TL, Konfigurationsregister. Die 64-Bit-Seriennummer im ROM wird vor Verlassen des Werks fotograviert. Sie kann als Adressseriennummer des DS18B20 angesehen werden. Die 64-Bit-Seriennummer jedes DS18B20 ist unterschiedlich. Der zyklische Redundanzprüfcode (CRC=X^8+X^5+X^4+1) des 64-Bit-ROM. Die Funktion des ROM besteht darin, jeden DS18B20 unterschiedlich zu machen, sodass mehrere DS18B20 an einen Bus angeschlossen werden können.

DS18B20 Pin-Anordnung:
1. GND ist die Stromerde;
2. DQ ist der digitale Signaleingangs-/-ausgangsanschluss;
3. VDD ist der Eingangsanschluss der externen Stromversorgung (geerdet im parasitären Stromverkabelungsmodus).

Interne Zusammensetzung des DS18B20:
Der Scratchpad-Speicher besteht aus 9 Bytes. 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 diese Daten über die Single-Wire-Schnittstelle lesen. Beim Lesen liegt das Low-Bit vorne und das High-Bit hinten. Entsprechende Temperaturberechnung: Wenn das Vorzeichenbit S = 0 ist, werden die Binärbits direkt in Dezimalbits umgewandelt. Wenn S = 1 ist, ändern Sie zuerst den Komplementcode in den Originalcode und berechnen Sie dann den Dezimalwert.

Die unteren acht Bits der Temperaturdaten sind 0
Hohe 8-Bit-Daten von Temperatur 1
Hochtemperaturschwelle 2
Untertemperaturschwelle 3
Reserviert 4
Reserviert 5
Zählen Sie den verbleibenden Wert 6
Zählt pro Grad 7
CRC-Prüfung 8

Der Temperatursensor im DS18B20 vervollständigt die Temperaturmessung und liefert sie im 16-Bit-Binärformat, wobei S das Vorzeichenbit ist.

Zum Beispiel:
+125℃ Digitalausgang 07D0H
(Positive Temperatur wandelt die Hexadezimalzahl direkt in eine Dezimalzahl um, um den Temperaturwert zu erhalten)

-55℃ Digitalausgang ist FC90H.
(Für eine negative Temperatur invertieren Sie die erhaltene Hexadezimalzahl, addieren Sie 1 und wandeln Sie sie dann in eine Dezimalzahl um.)

Arbeitsablauf von DS18B20:

Initialisierungszeitpunkt

Der Host sendet zunächst einen Low-Pegel-Impuls von 480–960 Mikrosekunden, gibt dann den Bus auf High-Pegel frei und erkennt den Bus innerhalb der folgenden 480 Mikrosekunden. Erscheint ein Low-Pegel, bedeutet dies, dass ein Gerät am Bus geantwortet hat. Liegt kein Low-Pegel vor, ist es immer High-Pegel, was anzeigt, dass keine Geräteantwort auf dem Bus erfolgt.
Als Slave-Gerät erkennt der DS18B20 bereits beim Einschalten, ob auf dem Bus ein niedriger Pegel von 480–960 Mikrosekunden vorliegt. Wenn dies der Fall ist, warten Sie 15 bis 60 Mikrosekunden, nachdem der Bus auf High wechselt, und ziehen Sie dann den Buspegel für 60 bis 240 Mikrosekunden auf Low, um mit einem Impuls zu reagieren und dem Host mitzuteilen, dass das Gerät bereit ist. Wenn es nicht erkannt wird, wird es weiterhin prüfen und warten.

Schreibvorgang

Der Schreibzyklus beträgt mindestens 60 Mikrosekunden und maximal 120 Mikrosekunden. Zu Beginn des Schreibzyklus zieht der Master den Bus zunächst für eine Mikrosekunde auf Low, um den Beginn des Schreibzyklus anzuzeigen. Wenn der Host anschließend 0 schreiben möchte, zieht er bis zum Ende des Schreibzyklus mindestens 60 Mikrosekunden lang weiterhin den niedrigen Pegel und gibt dann den Bus auf einen hohen Pegel frei. Wenn der Host 1 schreiben möchte, zieht er den Buspegel zunächst für 1 Mikrosekunde auf niedrig und gibt ihn dann bis zum Ende des Schreibzyklus auf hohen Pegel frei. Als Slave wartet DS18B20 15 Mikrosekunden, nachdem er erkannt hat, dass der Bus heruntergezogen wurde, und beginnt dann mit der Abtastung des Busses von 15us auf 45us. Er ist 1, wenn der Bus während der Abtastperiode einen hohen Pegel hat, und 0, wenn der Bus während der Abtastperiode einen niedrigen Pegel hat.

Lesevorgang

Das Timing des Lesedatenvorgangs ist ebenfalls in zwei Prozesse unterteilt: das Timing des Lesens 0 und das Timing des Lesens 1. Der Lesezeitschlitz erfolgt, nachdem der Host den Einzelbus auf Low-Pegel gezogen hat und ihn dann nach 1 Mikrosekunde auf High-Pegel freigibt, damit DS18B20 Daten an den Einzelbus übertragen kann. DS18B20 beginnt mit dem Senden von Daten, nachdem es erkannt hat, dass der Bus 1 Mikrosekunde lang auf Low gezogen ist. Wenn es 0 senden möchte, zieht es den Bus bis zum Ende des Lesezyklus auf Low. Wenn Sie 1 senden möchten, geben Sie den Bus auf High-Pegel frei. Der Host zieht den Bus zunächst für eine Mikrosekunde auf Low, gibt dann den Bus frei und schließt dann die Abtastung und Erkennung des Busses innerhalb von 15 Mikrosekunden ab, einschließlich der vorherigen Mikrosekunde, in der der Buspegel auf Low gezogen wurde. Während des Abtastzeitraums ist der Bus auf Low Es wird bestätigt, dass es 0 ist. Wenn der Bus während des Abtastzeitraums hoch ist, wird er als 1 bestätigt. Es dauert mindestens 60us, um einen Lese-Timing-Vorgang abzuschließen.

DS18B20 Single-Wire-Kommunikation:
Die Single-Line-Kommunikationsfunktion des DS18B20 wird im Time-Sharing vervollständigt und verfügt über ein striktes Zeitschlitzkonzept. Wenn eine Sequenzstörung auftritt, antwortet das 1-WIRE-Gerät nicht auf den Host, daher ist das Timing von Lese- und Schreibvorgängen wichtig. Verschiedene Vorgänge des Systems auf DS18B20 müssen gemäß dem Protokoll durchgeführt werden. Gemäß dem DS18B20-Protokoll steuert der Mikrocontroller den DS18B20, um die Temperaturumwandlung durch die folgenden drei Schritte abzuschließen:
(1) DS18B20 vor jedem Lese- und Schreibvorgang zurücksetzen und initialisieren. Beim Zurücksetzen muss die Haupt-CPU die Datenleitung für 500 us herunterziehen und dann freigeben. Nach dem Empfang des Signals wartet DS18B20 etwa 16us bis 60us und sendet dann einen niedrigen Impuls von 60us bis 240us aus. Nachdem die Haupt-CPU dieses Signal empfangen hat, zeigt es an, dass der Reset erfolgreich war.
(2) Senden Sie einen ROM-Befehl
(3) Speicherbefehl senden

Spezifische Betriebsbeispiele:
Was wir nun tun müssen, ist, DS18B20 eine Temperaturumwandlung durchführen zu lassen. Der spezifische Vorgang ist:
1. Der Host führt zuerst einen Reset-Vorgang durch.
2. Der Host schreibt dann den Befehl „ROM Skip Operation“ (CCH).
3. Anschließend schreibt der Host einen Betriebsbefehl zum Umwandeln der Temperatur und gibt dann den Bus für mindestens eine Sekunde frei, damit der DS18B20 den Umrechnungsvorgang abschließen kann. Dabei ist zu beachten, dass beim Schreiben jedes Befehlsbytes das Low-Byte zuerst geschrieben wird. Die Binärzahl von CCH ist beispielsweise 11001100. Beim Schreiben auf den Bus sollte ab dem unteren Bit geschrieben werden. Die Schreibreihenfolge lautet „Null, Null, Eins, Eins, Null, Null, Eins, Eins“. Der Busstatus des gesamten Vorgangs ist wie unten dargestellt.

Lesen Sie die Temperaturdaten im RAM. Ebenso erfordert dieser Vorgang drei Schritte.
1. Der Host gibt einen Reset-Vorgang aus und empfängt den Antwortimpuls (Existenzimpuls) von DS18B20.
2. Der Host gibt einen Befehl (CCH) aus, um den ROM-Vorgang zu überspringen.
3. Der Host gibt einen Lese-RAM-Befehl (BEH) aus und liest dann nacheinander neun Bytes von Daten von 0 bis 8, die von DS18B20 gesendet werden. Wenn Sie nur die Temperaturdaten lesen möchten, ignorieren Sie einfach die nachfolgenden Daten, die DS18B20 nach dem Lesen der 0. und 1. Daten sendet. Ebenso erfolgt das Lesen von Daten zuerst von niedriger Ordnung. Der Busstatus des gesamten Vorgangs ist wie folgt:

C-Sprachcode:
sbit DQ=P3^3;
uchar t; //Globale Variablen festlegen, die speziell für Verzögerungsprogramme verwendet werden

Bit Init_DS18B20(void)
{
Bit-Flag;
DQ=1;
_nop_(); //??????????????? for(t=0;t<2;t++);
DQ=0;
for(t=0;t<200;t++);
DQ=1;
for(t=0;t<15;t++);//???????????????? for(t=0;t<10;t++);
flag=DQ;
for(t=0;t<200;t++);
Rückkehrflag;
}

uchar ReadOneChar(void)
{
uchar i=0;
uchar dat;
for(i=0;i<8;i++)
{
DQ=1;
_nop_();
DQ=0;
_nop_();
DQ=1; //Künstlich hochgezogen, um den Mikrocontroller darauf vorzubereiten, den Ausgangspegel von DS18B20 zu erkennen
for(t=0;t<3;t++);//Verzögerungsmonat 9us??????????????????????????? for(t=0 ; t<2;t++);
dat>>=1;
if(DQ==1)
{
dat|=0x80;
}
anders
dat|=0x00;
for(t=0;t<1;t++);//Verzögerung 3us, mindestens 1us Erholungszeit ist zwischen zwei Lesesequenzen erforderlich?????????for(t=0;t<8 ;t++ );
}
Rückgabedatum;
}

void WriteOneChar(uchar dat)
{
uchar i=0;
for(i=0;i<8;i++)
{
DQ=1;
_nop_();
DQ=0;
_nop_();// ??????????????????????????????????????????? ???
DQ=dat&0x01;
for(t=0;t<15;t++);//Die Verzögerung beträgt etwa 45us, DS18B20 tastet Daten in 15~60us ab????????????for(t=0;t <10; t++);
DQ=1; //Datenleitung freigeben
for(t=0;t<1;t++); //Verzögerung 3us, zwischen zwei Schreibsequenzen ist mindestens 1us Erholungszeit erforderlich
dat>>=1;
}
for(t=0;t<4;t++);
}

void ReadyReadTemp(void)
{
Init_DS18B20();
WriteOneChar(0xcc);
WriteOneChar(0x44);
Delaynms(1000);//???????????????????????????? Delaynms(200);
Init_DS18B20();
WriteOneChar(0xcc);
WriteOneChar(0xbe);
}
PREV:Mikrocontroller·DS18B20 Temperatursensor
NEXT:Arduino Sammelt Mehrere DS18B20-Temperaturwerte

RELATED POSTS




Skype

WhatsApp

WangWang

QQ
Email me

Mail to us