Arduino und Digital DS18B20 Temperatursensor. Digitale Temperatursensoren von Dallas Semicoduktor Temperatursensor 18 20

Der Temperatursensor in Arduino ist einer der häufigsten Arten von Sensoren. Der Entwickler von Projekten mit Thermometern auf Arduino ist verfügbar verschiedene OptionenIm Prinzip der Aktion, der Genauigkeit, der konstruktiven Ausführung. Der digitale DS18B20-Digital-Sensor ist einer der beliebtesten Temperatursensoren, es wird häufig in einem wasserdichten Fall zur Messung von Wassertemperatur oder anderen Flüssigkeiten verwendet. In diesem Artikel finden Sie eine Beschreibung des DS18B20-Sensors in Russisch, wir berücksichtigen die Merkmale der Verbindung zu Arduino, dem Betriebsprinzip des Sensors, der Beschreibung der Bibliotheken und der Skizzen.

DS18B20 ist ein digitaler Temperatursensor mit einer Vielzahl nützlicher Funktionen. Im Wesentlichen ist der DS18B20 ein ganzer Mikrocontroller, der den Messwert speichern kann, Signal der Temperaturausgabe für die Set-Border (die Grenzen selbst können installiert und ändern), ändern die Genauigkeit der Messungen, das Interaktionsverfahren mit dem Controller und viel Mehr. All dies ist in einem sehr kleinen Gebäude, das außerdem in einer wasserdichten Leistung verfügbar ist.

Der Temperatursensor DS18B20 verfügt über eine Vielzahl von Gehäusearten. Sie können einen von drei - 8-Pin-SO (150 mil), 8-polig μSOP und 3-Pin bis-92 wählen. Letzteres ist am häufigsten und hergestellt in einem speziellen Feuchtigkeitsschutzfall, so dass er unter Wasser sicher sein kann. Jeder Sensor hat 3 Kontakte. Für den Fall bis 92 müssen Sie die Farbe der Drähte ansehen: Schwarz - Erde, Rot - Mahlzeit und Weiß / Gelb / Blau - Signal. In Online-Shops können Sie ein fertiges DS18B20-Modul kaufen.

Wo kaufen Sie einen Sensor

Natürlich ist DS18B20 billiger, um billiger bei Aliexpress zu kaufen, obwohl es in allen spezialisierten russischen Online-Shops mit Arduino verkauft wird. Hier sind einige Links zum Beispiel:

Der Sensorspeicher besteht aus zwei Typen: operativ und nichtflüchtig - SRAM und EEPROM. Die letzteren Konfigurationsregister und -register werden aufgezeichnet, TLS, die als Register verwendet werden können. allgemeiner ZweckWenn nicht verwendet, um den Bereich der zulässigen Temperaturwerte anzuzeigen.

Die Hauptaufgabe des DS18B20 besteht darin, die Temperatur und Umwandlung des in einer digitalen Ansicht erhaltenen Ergebnisses zu bestimmen. Wir können unabhängig voneinander die notwendige Erlaubnis einstellen, indem wir die Menge an Genauigkeitsbetrug bis 9, 10, 11 und 12 einstellen. In diesen Fällen ist die Auflösung gleich 0,5 ° C, 0,25 °, 0,125 ° und 0,0625 °.

Die resultierenden Temperaturmessungen werden im SRAM-Sensor gespeichert. In den Fig. 1 und 2 Bytes behalten den resultierenden Temperaturwert, 3 und 4 die Sicherungsgrenzen, 5 und 6 reserviert, 7 und 8 werden für eine hochpräzise Temperaturbestimmung verwendet, wobei der letzte 9 Byte den codeständigen CRC-Code speichert.

Verbindung DS18B20 nach Arduino

DS18B20 ist ein digitaler Sensor. Digitale Sensoren Übertragen Sie den Wert der gemessenen Temperatur in Form eines bestimmten binären Codes, der in die digitalen oder analogen Pins Arduino eintritt und dann decodiert wird. Codes können am unterschiedlichsten sein, ds18b20 funktioniert über ein 1-Draht-Datenprotokoll. Wir werden nicht in die Details dieses digitalen Protokolls eingehen, wir geben nur das notwendige Minimum an, um die Interaktionsprinzipien zu verstehen.

Der Informationsaustausch in 1-Draht ist auf folgende Vorgänge zurückzuführen:

  • Initialisierung - Die Definition einer Folge von Signalen, aus denen die Messung und andere Operationen beginnt. Der Master wendet einen Reset-Impuls an, danach muss der Sensor einen Impuls des Anwesens vorlegen, der die Bereitschaft zur Bereitschaft zur Durchführung der Operation meldet.
  • Datenaufzeichnung - Das Datenbyte wird an den Sensor übertragen.
  • Data Reading - Byte dauert vom Sensor.

Um mit dem Sensor zu arbeiten, benötigen wir Software:

  • Arduino-IDE;
  • OneWire-Bibliothek Wenn im Bus mehrere Sensoren verwendet werden, können Sie die Dallastemperatur-Bibliothek verwenden. Es wird auf OneWire arbeiten.

Von der Ausrüstung benötigen Sie:

  • Ein oder mehrere DS18B20-Sensoren;
  • Arduino-Mikrocontroller;
  • Anschlüsse;
  • Widerstand um 4,7 kΩ (Bei Anschluss eines Sensors wird ein Widerstand von 4 bis 10 kgrß);
  • Leiterplatte;
  • USB-Kabel zum Anschluss an einen Computer.

Für die Arduino-Board verbindet sich der Sensor einfach: GND vom Wärmesensor ist an dem Arduino GND befestigt, der VDD ist mit 5V, Daten an einen beliebigen digitalen Pin verbunden.

Das einfachste Diagramm des Verbindens des digitalen Digitalsensors DS18B20 ist in der Abbildung dargestellt.

Der Algorithmus zum Erhalten von Informationen über die Temperatur in der Skizze besteht aus den folgenden Schritten:

  • Definition der Sensoradresse überprüfen Sie die Verbindung.
  • Der Sensor dient als Voraussetzung, um die Temperatur zu lesen und den gemessenen Wert an das Register auszusetzen. Die Prozedur dauert länger als den Rest, dauert ungefähr 750 ms.
  • Ein Befehl wird zum Lesen von Informationen aus dem Register und sendet den Wert an den "Port Monitor",
  • Bei Bedarf wird es in Grad Celsius / Fahrenheit umgewandelt.

Beispiel für einfache Skizze für DS18B20

Die einfachste Skizze zum Arbeiten mit einem digitalen Sensor ist wie folgt. (In der Skizze verwenden wir die OneWire-Bibliothek, die für mehr als ein wenig später gesprochen wird).

#Einschließen. / * * Beschreibung der Wechselwirkung mit digitalem Sensor DS18B20 * Anschließen von DS18B20 an Arduino durch Stift 8 * / ONEWIRE DS (8); // Erstellen Sie ein OneWire-Objekt für den 1-Draht-Bus, mit dem Sie mit dem VOID-Setup-Sensor (serial.begin (9600)) arbeiten (serial.begin (9600);) Void Loop () (// Bestimmen Sie die Temperatur vom DS18B20-Byte-Datensensor ; // Platz für ds.reset () Temperaturwert; // Wir starten die Interaktion mit dem Reset aller vorherigen Befehle und ds.write-Parameter (0xcc); // Wir geben den Befehl ds18b20, um die Adresse an die Adresse zu überspringen. In Unser Fall, nur eine Firmware ds.write (0x44); // Geben Sie dem DS18B20-Sensor, um die Temperatur zu messen. Der Temperaturwert selbst ist noch nicht - der Sensor wird es in den internen Speicher der Verzögerung (1000) in den internen Speicher (1000) eingesetzt; // Der Mikroschirmen misst die Temperatur und wir warten. Ds.Reset (); // Jetzt bereiten Sie sich darauf vor, den Wert der gemessenen DS.Write-Temperatur (0xcc) zu erhalten; ds.write (0xBE); // Bitte übertragen Sie das Wert der Register mit dem Temperaturwert // Erhalten und lesen Sie die Daten \u003d DS.Read () Response (); // Lesen Sie den jüngeren Byte-Daten-Temperatur-Wert \u003d ds.Read (); // Jetzt der Senior // Formular das Endwert I: // - Erster "Klebstoff" -Wertwert, // - dann multiplizieren Sie ihn auf den der Auflösung entsprechenden Koeffizienten (für 12 Bit standardmäßig - dies ist 0,0625) Floattemperatur \u003d ((Daten<< 8) | data) * 0.0625; // Выводим полученное значение температуры в монитор порта Serial.println(temperature); }

Skizze zum Arbeiten mit DS18B20-Sensor ohne Verzögerung

Sie können ein kleines Programm für den DS18B20 komplizieren, um das Bremsen der Leistung der Skizze loszuwerden.

#Einschließen. OneWire DS (8); // Objekt OneWire int Temperatur \u003d 0; // Globaler Speichervariablen Temperaturwert aus dem DS18B20 lang lastupdateTime \u003d 0 Sensor; // Variable zum Speichern der letzten Leserei von der const TEMP_UPDATE_TIME \u003d 1000 Sensor; // Bestimmen Sie die Häufigkeit der VOID-Setup () -Anrufprüfung (serial.begin (9600);) Void-Loop () (DetectTemperatur (); // Bestimmen Sie die Temperatur von dem ds18b20 serial.println-Sensor (Temperatur); // Anzeige der resultierenden Temperatur // t. in. Die Temperaturvariable hat einen int-Typ, der fraktionierte Teil wird einfach verworfen) int detektarterTemperatur () (Bytedaten; ds.reset (); ds.write (0xcc); ds.write (0x44); ds.write (0x44) ; if (Millis () - lastupdateTime\u003e temp_updatetime \u003d Millis (); ds.reset (); ds.write (0xcc); ds.write (0xBE); data \u003d ds.Read (); data \u003d ds.Read () ; // Bilden einer Werttemperatur \u003d (Daten<< 8) + data; temperature = temperature >> 4; } }

Dallastemperatur- und DS18B20-Bibliothek

In Ihren Skizzen können wir die Dallastemperatur-Bibliothek verwenden, die einige Aspekte der Arbeit mit dem DS18B20-Sensor auf 1-Draht vereinfacht. Skizze-Beispiel:

#Einschließen. // Anzahl der Arduino-Pina mit einem angeschlossenen #define pin_ds18b20 8 // Erstellen eines OneWire OneWire-Objekts (PIN_DS18B20); // Erstellen Sie ein Dallastemperatur-Objekt, um mit den Sensoren zu arbeiten, um ihn einen Link zum Objekt übertragen, um mit 1-Draht zu arbeiten. Dallastemperatur Dallasensors (& OneWire); // Spezialobjekt zum Speichern des Adressgeräts DeviCeaddress SensorAddress; Void-Loop (VOID) (// Anforderung zum Messen des Temperatursensors serial.print ("Messen Sie die Temperatur ..."); dallassensors.requesttemperaturen (); // Wir fragen den DS18B20, um Daten serial.println ("ausgeführt" ); // Anforderung, einen gespeicherten Drucktemperatur-Temperaturwert (Sensoraddress) zu empfangen; // Verzögerung, so dass Sie etwas auf dem Verzögerungsbildschirm (1000) einsetzen können (1000);) // Hilfsdruckfunktion Temperaturwerte für DeviCeaddress DeviCeaddress (Float TEMPC \u003d Dall sitensors.gettempc (deviceaddress); serial.print ("temp c:"); serial.println (tempc);) // Hilfsfunktion zum Anzeigen der DS18B20-Void PrintAddress-Sensoradresse (für (für (uint8_t i \u003d 0; i; i< 8; i++) { if (deviceAddress[i] < 16) Serial.print("0"); Serial.print(deviceAddress[i], HEX); } }

OneWire-Bibliothek für die Arbeit mit DS18B20

Der DS18B20 verwendet das 1-Wire-Protokoll, um Informationen mit Arduino auszutauschen, für die bereits eine exzellente Bibliothek geschrieben wurde. Sie können und Sie müssen es verwenden, um nicht alle Funktionen manuell umzusetzen. . Laden Sie zum Installieren der Bibliothek das Archiv herunter, entpacken Sie Ihr Arduino-Verzeichnis im Ordner Bibliothek. Bibliothek verbindet mit dem Befehl #include

Alle DS18B20-Sensoren sind parallel geschaltet, für sie allen ausreichend Widerstand. Mit der OneWire-Bibliothek können Sie gleichzeitig alle Daten von allen Sensoren lesen. Wenn die Anzahl der angeschlossenen Sensoren mehr als 10 beträgt, müssen Sie einen Widerstand mit einem Widerstand von nicht mehr als 1,6 com auswählen. Zur genaueren Temperaturmessung müssen Sie einen zusätzlichen Widerstand pro 100 ... 120 Ohm zwischen der Datenausgabe auf dem Arduino und der Datenplatte an jedem Sensor einfügen. Sie können herausfinden, von welchem \u200b\u200bSensor dieser oder dieser Wert mit einem eindeutigen seriellen 64-Bit-Code ermittelt wird, der als Ergebnis der Programmausführung erteilt wird.

Um die Temperatursensoren im Normalmodus anzuschließen, müssen Sie das in der Figur gezeigte Schema verwenden.

Schlussfolgerungen

Der Dallas DS18B20-Mikroschirmen ist ein sehr interessantes Gerät. Temperatursensoren und Thermometer, die auf ihrer Basis erstellt wurden, sind für die meisten Aufgaben mit den von funktionalen, relativ nicht der Straße entwickelten Merkmalen geeignet. Ein spezielles Popularitätssensor DS18B20 ist als feuchtigkeitssichere Vorrichtung zur Messung der Fluidtemperatur verringert.

Für zusätzliche Möglichkeiten ist es notwendig, die relative Schwierigkeit der Arbeit mit dem Sensor zu zahlen. Um den DS18B20 anzuschließen, benötigen wir unbedingt einen Widerstand mit einem Nennwert von etwa 5k. Um mit dem Sensor in den Skizzen Arduino zu arbeiten, müssen Sie eine zusätzliche Bibliothek installieren und bestimmte Fähigkeiten erstellen, um damit zusammenzuarbeiten - alles ist dort nicht ganz trivial. Sie können jedoch ein bereits einsatzbereites Modul kaufen, und für die Skizze in den meisten Fällen gibt es genügend einfache Beispiele in diesem Artikel.

Im Prozess des Studiums von Mikrocontrollern ist früher oder später ein solcher meteorologischer Parameter erforderlich. umfeldwie seine Temperatur. Der moderne globale elektronische Bauteilmarkt bietet eine Vielzahl von Temperatursensoren. Die Hauptunterschiede zwischen ihnen bestehen im Bereich der gemessenen Temperatur, Versorgungsspannung, dem Anwendungsbereich, Gesamtgrößen, Temperaturumwandlungsmethoden, Schnittstellen, um mit dem Benutzersteuerungssystem zu interagieren. Historisch passierte es so, dass in dem Moment ein der beliebtesten Temperatursensoren der Sensor ist Ds18.B20.dallas Semiconductor Corporation. Über ihn die folgende Erzählung.

Ds18.B20.- Digitaler Temperatursensor mit programmierbarer Umwandlungsauflösung.

Unterscheidungsmerkmale:

1) Verwenden des 1-Draht-Datenbus-Schnittstellenbusses, um mit dem Steuerungssystem zu interagieren;
2) das Vorhandensein eines einzigartigen 64-Bit-Sequential-Identifikationscodes, der sich im internen ROM-Speicher befindet und für Multipoint-Systeme vorgesehen ist, in denen der spezifische Sensor adressiert werden muss;
3) Die Versorgungsspannung beträgt 3-5,5 V, wodurch es nicht nur in 5-Volt-Systemen, sondern auch 3,3 (die meisten Mikrocontroller) ermöglicht;
4) Der Bereich der gemessenen Temperatur beträgt -55 ... + 125 ° C;
5) Genauigkeit von ± 0,5 ° C, obwohl es nur für den Bereich -10 ... + 85 ° C trifft;
6) Die Umrechnungsauflösung wird vom Benutzer bestimmt und 9 ... 12 Bits;
7) Hat interne Auslöser der oberen und unteren Auslöseschwellenwerte mit Alarm zum Alarm für Systeme mit thermostatischer Arbeitslogik;
8) Diese Sensoren sind programmgesteuert mit kompatibel Ds1822. Und häufig in industriellen Thermostatregulatoren, Industriesystemen, in der Unterhaltungselektronik und anderen thermischempfindlichen Systemen eingesetzt.

Beschreibung und Prinzip der Gerätebetrieb:

In meinem Artikel werde ich ein Beispiel für das Arbeiten mit dem im Gehäuse bis 92 hergestellten Sensor beschreiben.

Es sieht aus wie das:

Innerhalb ist dieses Ding sehr einfach angeordnet, werfen Sie einen Blick darauf:

Berücksichtigen Sie in diesem Blockdiagramm näher.

Die Fütterung auf diese Weise macht jedoch einige Einschränkungen der Zeitparameter des Sensors. Wenn Sie die Datenleitung für einige Zeit halten, wird der Kondensator diskutiert, der zur De-energut der internen VDD-Linie und den Sensor als Ganzes führt. Daher sollte ein hoher logischer Niveau in der ungenutzten Zeit auf der DQ-Linie aufrechterhalten werden. Es sollte eine wichtige Bemerkung beachtet werden. Bei der Umwandlung der Temperatur- und Kopierdaten von Rubbelpad in EEPROM (in einem der Registern) kann der durch den aktuellen VDD-Strom verbrauchte Stromstrom 1.5, dh eine Gebrechlichkeit des internen Kondensators, und es gibt einen großen Spannungsabfall auf dem Aufhängungswiderstand, der den Betrieb des Geräts insgesamt inakzeptabel beeinträchtigen wird. Dazu ist es notwendig, eine Linie-DQ-Regelung eines leistungsstarken Streiters zu organisieren, der von diesem Schema implementiert ist:

Nach der Ausgabe eines Teams Konvertieren.T. oder KopierenScratchpad. Sie müssen eine leistungsstarke MOSFET-Transistor-Lift-Leitung dQ spätestens 10 mx (max.), Gemäß den Sensorentwicklern, danach die Umwandlungszeit (TCONV) oder die Datenübertragungszeit (TWR \u003d 10 MC) und zu dieser Zeit aktivieren Es gibt keine Aktion mit einem leistungsstarken Suspender auf der DQ-Linie sollte nicht sein!

Über Standard-Lebensmittel, das Sie wenig sagen müssen, weil alles einfach ist, und selbst der MOSFET ist überhaupt nicht erforderlich:

Das Subsystem "64-Bit-ROM- und 1-Draht-Port" enthält einen einzigartigen 64-Bit-seriellen Identifikationscode, der sich im nichtflüchtigen ROM-Speicher befindet, auch in diesem Knoten ist eine Schnittstelle der Wechselwirkung mit dem 1-Draht-Steuerungssystem. Das Speichersteuerungslogik-Subsystem überträgt Daten zwischen dem 1-Draht-Schnittstellen-Subsystem und dem ScratchPad-Speicher, der wiederum Zugriff auf Register hat. temperatursensorUnd Registrieren der oberen und unteren Schwellenwerte des Alarms, des Konfigurationsregisters und eines 8-Bit-Prüfsummengeneratorregisters, um das System aus falschen Daten zu schützen.

Wenn der Strom standardmäßig aktiviert ist, hat der Sensor eine Auflösung der Umwandlung von 12 Bits und tritt sofort in den reduzierten Leistungsmodus ein. Um die Konvertierung zu initiieren, muss der Master den Befehl übergeben Konvertieren.T. . Nach der Umwandlung der Temperatur in den digitalen Code befindet sich dieser Code im Scratchpad-Speicher in Form eines Doppelbyte-Wortes, und der Sensor geht in den Energiesparmodus zurück.

Temperaturumwandlung.

Nun werden wir es herausfinden, wie die Temperatur im Sensor umgewandelt wird. Tatsächlich befindet sich der ADC innerhalb des Temperatursensors, und der im Temperaturregister angeordnete Ausgabe wird in den VORGOPAD-Speicher übertragen. Temperaturdaten haben das folgende Format:

Das S-Symbol-Flag wird verwendet, um die Anzahl der Zahlen anzugeben (S \u003d 0 - die in Bits 10-0 enthaltene Zahl positiv und s \u003d 1, wenn die in denselben Bits enthaltene Zahl negativ ist, dh in diesem Fall die Temperatur scheint in einem zusätzlichen Code (Ergänzungscode bis zu zwei)).

Bei der Konfiguration der Umwandlungsauflösung von 12 Bits sind alle 12 Bits (Bit 11-Bit 0) beteiligt und enthalten zuverlässige Daten. Beim Einrichten der Auflösung 11 Bits sollte der Inhalt des Bits 0 nicht berücksichtigt werden, wenn die Einrichtung von 10 Bit nicht berücksichtigt werden soll 0 und 1 usw.

Der Alarm ist die Thermostatfunktion.

Dies bietet 2 8-Bit-Register, TH und TL. Der Wert der oberen Temperaturschwelle bzw. in TL ist der untere. Wenn die Temperatur über dem Wert von ten oder unter TL auf das Alarmflag eingestellt ist. Dieses Alarm-Flag wird von der führenden Vorrichtung durch Ausgabe eines Befehls erkannt. Alarmsuche. auf der DQ-Linie. Das Alarm-Flag wird bei jedem Temperaturumwandlungsvorgang aktualisiert. Übrigens werden im Vergleich zum TH- oder TL-Register nur Bits von 11 in das 4. Temperaturregister verwendet, er folgt, dass die Thermostatfunktion nur für ganzzahlige Temperaturwerte arbeitet. Register sind physisch EEPROM mit Speicher, sodass sie ihre Werte beibehalten, wenn die Stromversorgung ausgeschaltet ist. Die Register selbst sind dem Temperaturregister ähnlich, nur sie sind 8-Bit, das Flag S ist absolut derselbe Wert wie im vorherigen Fall:

Dieser Code, wie bereits erwähnt, ist erforderlich, um jedes Gerät in der Zeile in den Multipoint-Temperaturmesssystemen zu identifizieren.

Das Format dieses Speichers ist:

Die jüngeren 8 Bits werden entladen, um die Familie zu bezeichnen, und enthalten den Wert von 0x28. Die nächsten 48 Bits enthalten eine eindeutige Seriennummer des Geräts. Das älteste Byte enthält den Wert der CRC-Prüfsumme, berechnet für die jüngeren 56 Bits des ROM-Speichers.

Speicherorganisation.

Der Speicher des Sensors besteht aus einem Notepad-Speicherplatz (ScratchPad) und einem EEPROM-Speicher zum Speichern von Konfigurationsdaten und -werten der Registern der oberen und unteren Alarmschwellen.

Wenn der Strom ausgeschaltet ist, sparen die Byte-Daten 2, 3 und 4 ihren Wert auf EEPROM. Nun, wenn Sie eingeschaltet sind, bleiben der Wert in ihnen unverändert. Byte 0 und 1 enthalten den Wert der umgebauten Temperatur, Bytes 5, 6, 7 sind für den internen Gebrauch reserviert und können dem Benutzer nicht für seine Bedürfnisse zugänglich sein.

Das 8. Byte enthält den von der integrierten Logik der CRC-Code-Formation für Bytes von 0 bis 7, was die Möglichkeit der fehlerhaften Temperaturbestimmung am Ende minimiert.

Es sei darauf hingewiesen, dass, wenn die Thermostatfunktion nicht verwendet wird, die Register TH und TL als Allzweckspeicher verwendet werden können. Sie können alle Informationen in ihnen speichern.

Die Daten werden in Bytes 2, 3 und 4 erfasst, beginnend mit dem jüngeren Bitbit 2 mit dem Befehl Schreibe Scratchpad.. Um die Integrität der aufgezeichneten Daten zu überprüfen, können Sie sie lesen, für die der Befehl an den Sensor bestehen muss Scratchpad lesen.Danach muss der Master Daten aus dem jüngeren Bit von Byte 0 empfangen.

Um die Daten der Senior-Thermostat-Register sowie das Konfigurationsregister im EEPROM-Speicher zu speichern, muss der Master den Befehl an den Befehl übergeben Scratchpad kopieren..

Wie bereits erwähnt, wird die bereits in EEPROM aufgezeichneten Daten gespeichert, wenn die Stromversorgung ausgeschaltet ist, gespeichert. Wenn jedoch die Leistung von den entsprechenden EEPROM-Zellen eingeschaltet ist, werden die Werte automatisch in die entsprechenden ScratchPad-Speicherregister heruntergeladen. Praktisch, nicht wahr? :)

Darüber hinaus können die in EEPROM aufgezeichneten Daten jederzeit in einem ScratchPad-Speicher überschrieben werden. Dies ist zum Beispiel erforderlich, wenn Sie die Konfiguration in dem Prozess geändert haben, und Sie müssen dann den "Standardmodus des Betriebs" aufstehen, d. H. Gibt diese Konfiguration der Arbeit zurück, die vor dem Änderung des Inhalts der ScratchPAD-Speicherregister war. Hier ist eigentlich hierfür das führende Gerät den Befehl an den Sensor weitergeben. Erinnerung E.2 .

Im Konfigurationsregister können nur 2 Bits ermittelt werden: R0 und R1. Diese Bits bestimmen die Auflösung der Temperaturumwandlung, und standardmäßig auf 1 eingestellt ist, was die Anfangseinstellung auf eine 12-Bit-Umwandlungsauflösung bestimmt.

Alle möglichen Konfigurationen dieser Bits und der entsprechenden Berechtigungen werden in der nachstehenden Tabelle dargestellt. Es sei darauf hingewiesen, dass je höher die Auflösung der Umwandlung, desto mehr Umwandlungszeit, beispielsweise für eine Auflösung von 12 Bit, die Umwandlungszeit 750 ms beträgt (max.).

Interaktion mit dem Steuerungssystem.

DS18B20, wie bereits erwähnt, um mit dem angetriebenen Gerät zu kommunizieren, verwenden Sie den 1-Draht-Schnittstellendatenbus. Um es anzuschließen, muss das Steuerungssystem daher einen Auslassauslass oder mit HI-Z-Zeilenstatus bereitstellen.

Die Konfiguration der internen Sensorschnittstelle ist unten dargestellt:

In einem inaktiven Zustand (im Ruhezustand) wird die DQ-Linie in den Widerstand zu "+" -Macht gezogen. Somit sollte diese Linie immer in diesem Zustand zwischen Transaktionen (Datendatenübertragungen) aufbewahrt werden. Wenn die Transaktion aus irgendeinem Grund suspendiert werden muss, sollte die DQ-Leitung auf hoher logischer Ebene aufbewahrt werden, wenn diese Übertragung weiter fortgesetzt wird. Beim Stoppen der Transaktion können wir die DQ-Linie lange Zeit auf hoher Logikebene aufbewahren, beginnend mit 1 SCS. Wenn der Datenbus jedoch in der niedrigen Logikniveau länger als 480 μs gehalten wird, tritt ein vollständiger RESET aller auf diesem Bus vorhandenen Sensor auf.

Ablauf von Vorgängen für den Austausch.

Jedes Mal, wenn das Steuerungssystem auf den Sensor zugegriffen wird, sollte die folgende Folge von Aktionen folgen:

1) Initialisierung;
2) den ROM-Befehl (gefolgt von der erforderlichen Datenfreigabe);
3) der Funktionsbefehl des Sensors (gefolgt von der erforderlichen Datenfreigabe).

Wenn kein Schritt beim Zugriff auf den Sensor fehlt, antwortet der Sensor nicht. Die Ausnahme ist das Team Suche.Rom [ F.0 h.] und Alarm.Suche. [ Echer] , nach ihrer Ausführung muss der Master in den ersten Schritt der Steuerungssequenz zurückkehren.

So. Alle Transaktionen beginnen mit der Initialisierung. Dieser Vorgang wird von der Entwicklung einer Reset-Impulsvorrichtung begleitet, mit der angetriebene Geräte (in diesem Fall der Sensor (S)) das Vorhandensein des Anwesenheitsimpulses übertragen, dass die Sensoren angeschlossen sind und bereiten können.

Im Allgemeinen bestimmt der im Sensor implementierte 1-Draht-Schnittstellenbus mehrere Arten von Signalen auf der Datenleitung: Reset-Impuls, Anwesenheitsimpuls, Aufnahme 0, Aufzeichnung 1, Lesen 0, Lesen 1. Alle diese Vorgänge implementieren das Master-Gerät mit Ausnahme des Anwesenheitsimpulses. Es bildet nur den Sensor (en).

Für Starter wechselt das Master-Gerät also in den Sendermodus und setzt die DQ-Linie für eine Weile bei 0 mindestens 480 μs (markiert schwarz schwarz). Es setzt den Sensor zurück. Dann muss die Zeile freigegeben und das Master-Gerät in den Empfängermodus übersetzen, während der Pull-up-Widerstand die Datenleitung in einem hohen logischen Pegel einstellt (in dünner schwarzer Farbe hervorgehoben). Nachdem der Sensor die wachsende Vorderseite ehrt, fällt der Sensor auf 15-60μs auf und setzt die Datenleitung auf 0 zurück, und es wird 60-240 μs aufbewahrt. Nach dieser Zeit gibt der Sensor die Leitung frei und wird nach dem Erfassen des Abtastimpulssensors mindestens 480μs in der logischen Ebene 1 installiert.

Lassen Sie uns nun darüber sprechen, wie der Datenübertragungsprozess ausgeführt wird. Im Allgemeinen Bits. Der Fall ist als nächstes. Ein Zeitsegment wird genommen, und während dieser Zeit sieht der Meister an, dass wir dort auf der Linie haben, sagen wir 1 - es bedeutet, dass sie 1 aufgenommen haben, wenn 0 bedeutet, dass es null aufgenommen wurde. Dies ist jedoch nur eine abstrakte Erklärung. Tatsächlich gibt es einige Nuancen, die mit dem temporären Rahmen von all diesem Fall verbunden sind.

Bilder ansehen:

Alles beginnt mit der Tatsache, dass der Moderator die Linie auslassen sollte, die auf einen niedrigen logischen Niveau gegeben wird, und von diesem Punkt an dem Aufzeichnungs- / Leseschlitz 1/0, der 60 bis 120 mx ist. Zwischen den Aufzeichnungs- / Lese-Slots muss die Datenleitung nach 1 zu einem Zeitpunkt installiert werden, nicht weniger Wiederherstellungszeit (1 uS). Um einen Record-Slot 0 zu organisieren, muss die Datenzeile den gesamten Zeitfenster in 0 aufbewahrt werden. Wenn Sie jedoch an den Sensor 1 schreiben müssen, setzen wir zunächst die Datenleitung auf 0 zurück, dann warten wir zumindest auf 1 mx und löse die Leitung in 1, während der Aufnahmeschlitz 1 (60-120 μs) 1 an den Sensor aufgenommen (siehe oben rechts).

Wenn in der Tat 15-60 μs nach dem Start 1 in der Datenleitung erkannt wird, wird dann 1 aufgezeichnet, und wenn er für 60-240 μs freigesetzt wird.

Das Lesen der Daten wird von einem führenden Gerät begleitet, wenn er die Zeile zurücksetzt, auf mindestens 1 mx wartet, und es betrachtet 15 mx, dass es los ist: Wenn es 0 bleibt, überträgt der Sensor 0, wenn er auf 1 umgeschaltet ist, Dann 1.

Teams

Rom-Team.

Diese Befehle müssen der Initialisierungssequenz folgen und die Suchanweisungen für den entsprechenden Sensor usw. enthalten usw. Die Entladung jedes Befehls beträgt 8bit. Nachdem Sie den entsprechenden Befehl ausgeführt haben, können Sie den Funktionsbefehl an den Sensor übertragen.

Suche ROM.

Wenn das System anfänglich verbunden ist, muss er alle mit dem Bus verbundenen Geräten erkennen. Dafür dieses Team. Da wir jedoch nur einen Sensor haben, verwenden wir diesen Befehl nicht.

Rom lesen

Dieser Befehl wird nur verwendet, wenn nur ein Sensor im Bus vorhanden ist. Dadurch kann das führende Gerät den Inhalt der 64-ROM-Speicherbits ohne Verwendung des Suchbefehls lesen. Wenn Sie versuchen, diesen Befehl zu verwenden, wenn die Anzahl der Sensoren miteinander verbunden ist, mehr als 1, fahren alle an, die Inhalte dieses Gedächtnisses weitergeben, was zu unerwünschten Folgen führt.

Spiel Rom.

Dies ist ein ROM-Konformitätsbefehl. Der Assistent gibt einen 64 Bit des entsprechenden ROM-Speichers frei, der mit dem Sensorbus verbunden ist, und es ist bereits bestimmt, was mit ihm zu tun ist (Messen Sie die Temperatur usw.). Andere Sensoren auf dem Reifen warten zu dieser Zeit auf ihre Wende.

Rom überspringen.

Dies ist ein ROM-Befehl. Berücksichtigt nicht die Adresse eines bestimmten Sensors im Bus und appelliert unmittelbar an alle. Nach diesem Befehl können Sie beispielsweise den Temperaturumwandlungsbefehl angeben, und alle Sensoren beginnen mit der Umwandlung. Um jedoch den Memory Read-Befehl anzuzeigen, nachdem Sie diesen Befehl anrufen, führt jedoch zu unvorhersehbaren Ergebnissen (da jedoch alle Sensoren Daten übertragen werden). Es ist also nur mit einem verbundenen Sensor eine solche Situation möglich.

Alarmsuche.

Dieser Befehl ist mit der ersten in dieser Tabelle identisch, mit der Ausnahme, dass die Sensoren nach dem Reifen mit dem Alarm-Flag-Set suchen.

Funktionsteams.

Diese Befehle führen funktionale Vorgänge von Prozessen aus, z. B. der Einführung des Temperaturumwandlungsvorgangs, des Speicherkopierens usw. Gesamtbefehle 6, die Entladung jedes 8-Bits.

T. konvertieren T.

Lauftemperaturumwandlung. Nach dem Ausführen dieses Befehls werden 2-Byte-Daten in das Temperaturregister eingegeben.

Schreibe Scratchpad.

Zeichnet Daten an Register 2-4 an, die mit einem zweiten, jüngeren Bits vorwärts beginnen. Während der Übertragung müssen Daten in drei Registern überwacht werden, sodass der Assistent die Sensoren nicht abblendet, da der Datenverlust möglich ist.

Scratchpad lesen.

Es initiiert den Prozess der Übertragung von Daten in alle ScratchPad-Speicherregister, beginnend mit dem jüngeren Bit von Byte 0 und endet mit dem älteren Bit von Byte 8 (CRC).

Scratchpad kopieren.

Dieser Befehl kopiert den Inhalt der Byte-Registern 2, 3 und 4 in die entsprechenden EEPROM-Zellen.

Erinnerung E.2

Dieser Befehl kopiert Daten von EEPROM an die entsprechenden Orte in den ScratchPad-Noten. Wie bereits erwähnt, erfolgt dieser Vorgang automatisch, wenn Sie die Stromversorgung einschalten.

Netzteil lesen.

Hier in der Tat alle Weisheit der Arbeit mit dem Temperatursensor DS18B20. Für detailliertere Informationen, die wir an den Datenbett () ansprechen. Nun ist es notwendig, all dieses Geschäftes in der Hardware umzusetzen.

Geräteschema:

Montagezeichnung der Leiterplatte (Ich entschuldige mich für die Qualität, ich würde nur arbeiten, zum Debuggen):

Vergessen Sie nicht, die Gebühr zu ändern

Da das ein Schein ist, zog ich es aus dem alten Projekt, also auf dem Vorstand, der oben ist - ein wenig nicht, was ich habe (auf meinem ich jetzt alles zu viel entfernte, und es ist genau wie in den Zeichnungen oben geworden) .

Das ist mit mir passiert:

Es stellte sich eine Art Sandwich heraus

Der Quellcode des Programms wurde in der Entwicklungsumgebung geschrieben. Ich habe nicht versucht, das Maximum der bereitgestellten AVR-GCC-Compiler-Bibliotheken zu verwenden, schrieb jedoch alles, wie sie sagen: "von Hand." Mein Ziel ist es nicht, den Virtuosen-Besitz von SI zu demonstrieren, sondern nur ein Beispiel in einer Stunde, die in der Lage ist, Neuankömmlinge der allgemeinen Präsentation zur Arbeit mit dem Sensor bereitzustellen.
Das Gerät ist für den Einsatz im Raum vorgesehen, sodass er nicht zur Messung negativer Temperaturen sorgt.

Download Quellcode I. pCB Lag du unten

Alle zusätzlichen Fragen, Wünsche, die an der Adresse warten: [E-Mail geschützt]

In den beiden vorherigen Artikel haben wir uns angesehen. In diesem Artikel berücksichtigen wir das Schema zum Anschließen eines oder mehrerer Sensoren an den Mikrocontroller und die Programmierung des Betriebs des MK mit dem Sensor (Sensoren) über den 1-Draht-Reifen mit externer Stromversorgung

Typisches DS18B20-Sensoranschlussschema zum Mikrocontroller:


Wie aus dem Schema ersichtlich ist, ist der DS18B20-Sensor (oder Sensoren) mit dem Mikrocontroller verbunden, wenn sie eine gemeinsame Leistung haben, drei Leiter:
- Schlussfolgerung Nummer 1 - Gemeinsamer Draht (Masse, Erde)
- Ausgabennummer 2 - Es ist dQ , für welche Kommunikation zwischen MK und DS18B20 kommt es mit einer Schlussfolgerung eines jeden Hafens von MK her. Die DQ-Ausgabe muss über den Widerstand zum Power Plus "hochgezogen" werden
- Ausgabennummer 3 - Die Leistung des Sensors - +5 Volt
Wenn in der Vorrichtung mehrere Temperatursensoren verwendet werden, können sie mit unterschiedlichen Schlussfolgerungen des MK-Anschlusses angeschlossen werden, aber das Programm wird zunehmen. Sensoren sind besser, wie in dem Diagramm dargestellt - parallel zu einem Ausgang des MK-Ports angeschlossen.
Lassen Sie mich an die Größe des Spannwiderstands erinnern:
Der Widerstand des Widerstands sollte aus dem Kompromiss zwischen dem Widerstand des verwendeten Kabels und der externen Interferenz ausgewählt werden. Der Widerstand des Widerstands kann 5,1 bis 1 com betragen. Bei hohen Widerstandskabeln ist es notwendig, einen höheren Widerstand zu verwenden. Und wo industrielle Interferenzen vorhanden ist - wählen Sie einen geringeren Widerstand und verwenden Sie Kabel mit einem größeren Querschnitt. Bei einem Telefonnudel (4 Adern) für 100 Meter ist ein Widerstand erforderlich 3.3 com. Wenn Sie ein "Twisted Pair" anwenden, können auch 2 Kategorien Länge mit ja 300 Metern erhöht werden.

Programmieren des Betriebs des Mikrocontrollers mit dem DS18B20-Sensor

Wie ist die DS18B20-Sensorkommunikation mit einem Mikrocontroller mit einem Sensor-DaAnure- und Algorithmus-Builder-Programm.

Reihenfolge der Kommunikationsvorgänge
Es ist sehr wichtig, der etablierten Sequenz (der aus drei Punkten) jedes Mal beim Zugriff auf DS18B20 folgt:
1. Initialisierung
2. ROM-Befehl
3. Funktioneller DS18B20
In zwei Schritten werden nur zwei Teams durchgeführt: Suche ROM. und Suche nach einem Unfall.

Initialisierung DS18B20.

Die Reihenfolge der Initialisierung besteht aus zwei Teilen:
- Pulsausfluss - was einen Mikrocontroller bildet
- Pulspräsenz. - welche bildet ds18b20
Der Anfangszustand des DQ-Buss, nach dem der MK und die Sensorkommunikation auftreten - logisch 1, da der DQ-Bus durch den Widerstand an der Stromversorgung "festgezogen" ist.
Im DQ-Bus können Sie festlegen, ob der Sensor an den Mikrocontroller angeschlossen ist:
- Wenn der logische 1-Bus ein Sensor ist, der angeschlossen ist
- wenn nicht logisch 1 bedeutet, dass der Sensor nicht angeschlossen ist (oder vergessen, mit der Verbindung der DQ-Zeile vergessen)
Daher kann der Initialisierungssequenz ein anderes Element hinzugefügt werden - Überprüfen der Sensorverbindung. Beachten Sie jedoch, dass diese Prüfung nur mit einem Sensor durchgeführt werden kann.

Überprüfen Sie den DS18B20-Sensoranschluss:

Wo:
- INI_DS18B20. - Programminitialisierung
- dq_pin. - Der Name, den ich die Kategorie des Ports zugewiesen, an die der Sensor angeschlossen ist (wenn Sie nach dem Schema ansehen, dann ist dies der PB0-Anschluss in)
- dq_pin \u003d 1 - Überprüfen der Sensorverbindung - Wenn auf der logischen Ausgabe dQ_pin logischer Einheit DQ_PIN, dann durch den Pfeil, wenn nicht, dann:
- 1-\u003e term_errorwobei Term_Error eine Variable ist, in der der Fehlercode in diesem Fall aufgenommen wird "1"
- Show_term_Error. - Gehen Sie zur Anzeige eines Fehlerausgangsunterprogramms
Wenn Sie beispielsweise eine drei-Bit-Seven-Segment-Anzeige verwenden, können Sie eine solche Zeile ausgeben:
- Er1.Was bedeutet, dass ein Fehler aufgetreten ist, Fehlercode-1 (Sensor ist nicht angeschlossen)

Schauen Sie nun die Sensoren des Sensors an und sehen Sie den Zeitplan des Initialisierungsverfahrens:


Übertragen Sie den Zeitplan auf Wörter:
1. Der Anfangspegel des DQ-Busses ist eine logische Einheit (aufgrund des Anzugswiderstands)
2. Der Mikrocontroller erzeugt einen Reset-Impuls:
- MK übersetzt den DQ-Bus in einem Zustand logischer Null für eine Weile mindestens 480 Mikrosekunden
- MK gibt einen Reifen frei (wir übersetzen die Ausgabe in den Empfangsmodus), während der DQ-Bus erneut in einen Zustand der logischen Einheit geht
3. DS18B20 Nach einem Pegelabfall des Busses (von einer logischen Nullstelle zu einer logischen Einheit) sendet nach 15-60 Mikrosekunden den Anwesenheitsimpuls - übersetzt den DQ-Bus in einen Zustand logischer Nullpunkte zur Dauer von 60-240 Mikrosekunden
4. Nach Beendigung des Anwesenheitsimpulses gibt der DS18B20 den DQ-Bus auf den Niveau einer logischen Einheit zurück (Beurteilung des Diagramms - nach 480 Mikrosekunden, vom Ende des Rücksetzimpulses muss der Reifen zurückgegeben werden, um zum logischen zurückzukehren Geräteebene)

Jetzt werden wir alles in die Programmsprache übersetzen. Es ist jedoch zu beachten, dass während des Initialisierungsprozesses zwei weitere Fehler auftreten können:
- DS18B20 hat keinen Anwesenheitsimpuls erteilt
- Nach dem Anwesenheitsimpuls vom DS18B20 kehrte der DQ-Bus nicht in einem Zustand einer logischen Einheit zurück.


Die Grafik zeigt die Mindestzeiteigenschaften, sodass sie in dem Programm etwas überschätzt oder maximal genommen werden (von den Mindest-) Werten:
- Impuls zurücksetzen von MK - nicht 480 pro 500 Mikrosekunden
- Pause vom Ende des Impulses der Entladung bis zum Impuls der Anwesenheit - 60 Mikrosekunden
- Rückkehr des Reifens in einen Zustand einer logischen Einheit nach einem Anwesenheitsimpuls nach 420 Mikrosekunden
Ich hoffe mit der ersten Frage - Initialisierung, wir haben uns herausgefunden
Gehen Sie zum nächsten Schritt der obligatorischen Sequenz - "ROM-Befehl"

Rom-Team

Der nächste Schritt unserer Kommunikation mit Ds18b20. Wir müssen es das Notwendige einreichen rOM-Befehl
Ich erinnere Sie daran, dass die ROM-Befehle nur fünf sind:
1. Suchen Sie ROM. - Es kann verwendet werden (und kann nicht angewendet werden, beispielsweise in den meisten Fällen, in denen ich es nicht benutze, wenn mehrere Sensoren oder andere Geräte verwendet werden, die mit MK auf dem 1-Draht-Bus kommunizieren
2. Lesen von ROM. - Wird mit einem angeschlossenen Sensor verwendet, um seinen 64-Bit-Code zu lesen
3. Passende ROM. - In den Fallsensoren verwendet, um mehr als eins an einen bestimmten Sensor anzusprechen
4. Überspringen Sie ROM. - Der Befehl wird verwendet, um sofort an alle mit MK verbundenen Sensoren (Geräte) einzulegen. Es wird fast verwendet, um einen funktionellen Befehl zur Umwandlung von Temperaturen (Temperaturdefinition) über alle angeschlossenen Sensoren gleichzeitig einzureichen
5. Wecker suchen - Wenn wir die obere und niedrigere Temperaturgrenze DS18B20 setzen, die wir kontrollieren müssen. In diesem Fall beantworten wir nur die gemessenen Temperatursensoren, die den angegebenen Grenzwerten entsprechen.

Jeder ROM-Befehl verfügt über einen sechzehnstelligen Code (sowie funktionale Befehle), sodass Sie den Komfort im Programm auch Konstanten, die klare Teamnamen haben, sehr identifizieren können:


Diese Tabelle setzt die Konstanten der gewünschten, um mit den Befehlssensoren zu arbeiten.
Nach der ersten Schritt-Initialisierung und Übertragung des DS18B20-Sensors des ROM-Befehls ist der Sensor bereit, einen funktionellen Befehl auszuführen.
Im vorherigen Artikel habe ich ausführlich über die ROM-Befehle gesagt, und die Funktionsteams, ich werde nicht wiederholen (ich spreche über funktionale Befehle).

Zwei Beispiele des Arbeitsalgorithmus mit DS18B20:
1. Bei Verwendung eines Sensors:
- Initialisierung durchführen

- Wenden Sie die Sensorfunktionsteam an - "Umwandlungstemperatur" (um die Temperatur zu messen)
Im Umwandlungsprozess steuern Sie den Betrieb des Sensors - Wenn auf dem Nullbus auf dem Nullbus, ist die Umwandlung nicht übertroffen, wenn die logische Einheit auf dem Reifen abgeschlossen ist.
Jetzt können Sie die Temperatur vom Sensor betrachten:
- Initialisierung durchführen
- Lassen Sie uns den Sensor-Befehl rom angeben - "überspringen rom"
- Wenden Sie den Befehl des Sensorfunktion an - "Lesespeicher"
Gemäß dem Befehl "Lesespeicher" beginnt der Sensor, Daten aus seinem Speicher zu übertragen - alle neun Bytes. Wir brauchen jedoch nur die ersten beiden Bytes - die durch den Sensor gemessene aktuelle Temperatur wird in ihnen aufgezeichnet. Deshalb lesen wir nur die ersten beiden Bytes und kommen aus der Unterroutine heraus.

Dieser Sensor verwendet ein außergewöhnlich 1-Draht-Protokoll - der Anschluss wird gebildet, der mit nur einem Steuersignal auf dem Bus kommuniziert. Der Reifen muss über einen Pull-Up-Widerstand an eine Stromquelle angeschlossen werden.

Spezifikationen DS18B20.
ParameterWert
IC-Ausgangstyp.Digital.
Genauigkeitsbereich des Genauigkeitsbereichs.± 0,5 ° C
Temperaturerfassungsbereich.-55 ° C bis + 125 ° C
Stromstrom1mA.
Versorgungsspannungsbereich.3V bis 5,5 V.
Auflösung (Bits)9...12
Sensor-Fall-Stil.Bis-92.
Nein. Von Pins.3
Basisnummer18
Betriebstemperatur max.85 ° C
Betriebstemperatur min.-10 ° C.
Betriebstemperaturbereich.-10 ° C bis + 85 ° C
Ausgangsstrom4mA.
AusgabetypDigital.
Paket / Fall.Bis-92.
Auflösung9...12
Sensor / WandlertypTemperatur.
Versorgungsspannung max.5,5v.
Versorgungsspannung min.3v.
KündigungsartDurch das Loch.
Betriebstemperatur, ° C0...+55
Relative Luftfeuchtigkeit,%...55
ProduktionDallas / maxime.
Gewährleistungsfrist12 Monate ab dem Datum des Kaufs
Gewicht, G.10

DS1820, DS18S20, DS18B20 - Beliebte digitale Thermosensoren von Dallas-Maxim mit einer eindrahtischen 1-Wire-Schnittstelle. Aufgrund der Mehrdeutigkeit der Kennzeichnung und der Fülle von Schaltungen auf Daten der digitalen Thermosensoren, die in der Amateurliteratur erschienen sind, halten wir es für notwendig, einige Erklärungen zu erteilen.
Chip DS1820 aus der Produktion entfernt Und für seinen Ersatz wird ein Mikroschirmen empfohlen Ds18s20.. Es sollte jedoch an die Tatsache gezahlt werden, dass Chips DS18S20 im Fall bis 92 sind mit der Inschrift "DS1820" gekennzeichnet (ohne den Buchstaben S). Neue Mikroschaltung Die Software DS18S20 ist mit dem alten DS1820 kompatibel Und gemäß dem Hersteller kann es in den meisten Fällen direkt durch den alten DS1820 ersetzt werden. Vielleicht wollte die Kennzeichnung ohne den Hersteller des Buchstabens diese Kompatibilität angeben. Die Programmkompatibilität des neuen DS18S20 mit dem alten DS1820 ist garantiert, wenn das Programm vom Datenblatt-Algorithmus angewendet wird.
Wie aus der Tabelle ersichtlich ist, wird der neue DS18S20-Mikroschaltung im Standard-TO-92-Gehäuse hergestellt, und der alte DS1820 hatte ein langgestrecktes Gehäuse. Auf dieser Basis können Sie auch sicherstellen, dass die Verkäufer keinen veralteten Chip "quetschen".
Der Mikroschirmen desselben DS18B20 hat immer das entsprechende Etikett "DS18B20" und kann nicht durch ds1820 / ds18s20 und zurück ersetzt werden, ohne den Programmcode zu ändern.

Spezifikationen der digitalen Maxim-Temperatursensoren
SensorartDS1820. Ds18s20.Ds18b20.
MarkierungDS1820. DS1820.Ds18b20.
GehäusePR-35.
(Udlen. Bis-92)
Bis-92.Bis-92.
Größe9-Bit 9-Bit9 ... 12bit.
Umwandlungszeit200 ms (Typ.)
500ns (max)
750ns (max)750ns (max)
Messgenauigkeit ± 0,5%
im Temperaturbereich
0 ... + 70 ° С -10 .... + 85 ° с-10 .... + 85 ° с
Versorgungsspannung
für Messgenauigkeit ± 0,5%
4.3-5.5V. 3.0-5.5V.3.0-5.5V.
Beschreibung

Ds18b20. - DALC Dallas Digital Temperatursensor. Sendet Temperaturdaten mit nur einem digitalen Ausgang und einem speziellen Protokoll, das als 1-Draht bezeichnet wird. Sie können mehrere Sensoren an einen Kontakt anschließen. Der Sensor misst die Temperatur in Grad Celsius.

Spezifikationen DS18B20.

  • Der Sensor kann mit Spannung von 3 bis 5,5 V verwendet werden
  • Der Sensor kann die Temperatur von -55 bis 125 ° C messen
  • Der Sensor hat eine digitale Auflösung von 9 bis 12 Bits
  • Messgenauigkeit +/- 0,5 ° C im Bereich von -10 bis 85 ° C
  • Messgenauigkeit: + / - 2 ° C für den Bereich von -55 bis 125 ° C
  • Messdrift +/- 0,2 ° C

DS18B20 Anschlussschema.

Was ist die Erlaubnis?

IM spezifikationen Es wird berichtet, dass der DS18B20-Sensor die Temperatur mit unterschiedlicher Auflösung messen kann. Die Auflösung ist wie ein Lineal: Millimeter zwischen Zentimetern. Mit der Auflösung des DS18B20 ist auch ein Schritt zwischen den konsistenten Schritten von Grad Celsius.

Die Auflösung wird mit der Anzahl der Bits ausgewählt. Das Wahlbereich von 9 bis 12 Bits. Die Wahl der Erlaubnis erfordert bestimmte Konsequenzen. Je höher die Auflösung, desto länger müssen Sie auf das Messergebnis warten.

Für 9-Bit-Erlaubnis gibt es 2 Schritte zwischen den sequentiellen Ebenen:

  • 0.0 ° C
  • 0,5 ° C.

Für 10 Bit-Berechtigungen gibt es 4 Schritte zwischen den sequentiellen Ebenen:

  • 0.0 ° C
  • 0,25 ° C.
  • 0,5 ° C.
  • 0,75 ° C.

In diesem Fall lesen wir die Temperatur mit einer Auflösung von 0,25 ° C. Messzeit für 10 Bitauflösung beträgt 187,5 ms, mit der Sie 5.3 Messungen pro Sekunde ausführen können.

Für 11-Bit-Erlaubnis gibt es 8 Schritte zwischen konsistenten Ebenen:

  • 0.0 ° C
  • 0,125 ° C.
  • 0,25 ° C.
  • 0,375 ° C.
  • 0,5 ° C.
  • 0,625 ° C.
  • 0,75 ° C.
  • 0.875 ° C.

Das heißt, die Auflösung beträgt 0,125 ° C. Die Messzeit für 11 Bit-Berechtigungen beträgt 375 ms. Dadurch können Sie 2,6 Messungen pro Sekunde durchführen.

Für 12-Bit-Erlaubnis gibt es 16 Schritte zwischen konsistenten Ebenen:

  • 0.0 ° C
  • 0.0625 ° C.
  • 0,125 ° C.
  • 0,1875 ° C.
  • 0,25 ° C.
  • 0,3125 ° C.
  • 0,375 ° C.
  • 0,4375 ° C.
  • 0,5 ° C.
  • 0.5625 ° C.
  • 0,625 ° C.
  • 0,6875 ° C.
  • 0,75 ° C.
  • 0.8125 ° C.
  • 0.875 ° C.
  • 0.9375 ° C.

Folglich ist die Auflösung 0,0625 ° C. Messzeit für 12 Bit Erlaubnis in der Fläche von 750 ms. Das heißt, Sie können 1,3 Messungen pro Sekunde vornehmen.

Was ist die Genauigkeit der Messung?

Nichts auf der Welt und vor allem in der Elektronik ist nicht perfekt. Sie können sich nur per Vollendung nähern, mehr und mehr Geld und Kraft ausgeben. Auch mit diesem sensor. Er hat einige Ungenauigkeiten, die Sie wissen müssen.

Die technischen Eigenschaften sagen, dass der DS18B20-Sensor in dem Messbereich von -10 bis 85 ° C Genauigkeit bei +/- 0,5 ° C aufweist. Dies bedeutet, dass der Sensor, wenn wir eine Temperatur von 22,5 ° C im Raum aufweisen, das Messergebnis von 22 auf 23 ° C an uns zurückgeben kann. Das heißt, es kann mehr oder weniger 0,5 ° C zeigen. All dies hängt von den einzelnen Eigenschaften des Sensors ab.

Im Bereich von -55 bis 125 ° C kann der Messfehler auf +/- 2 ° C erhöhen. Das heißt, wenn Sie etwas mit einer Temperatur von 100 ° C messen, kann der Sensor die Temperatur von 98 bis 102 ° C anzeigen.

Alle diese Abweichungen können für jede Temperatur etwas anders sein, aber wenn Sie die gleiche Temperatur messen, ist die Abweichung immer gleich.

Was ist eine Messdrift?

Die Messdrift ist die schlechteste Form von Ungenauigkeiten. Die Essenz der Messdrift besteht darin, dass der Sensor bei der Messung einer konstanten Temperatur - mit einer Messung eine Temperatur und bei anschließenden anderen (durch den Wert der Drift) zeigen kann.

DRAF DS18B20 +/- 0,2 ° C. Wenn beispielsweise eine konstante Temperatur 24 ° C im Raum ist, kann der Sensor das Ergebnis im Bereich von 23,8 ° C bis 24.2 ° C erzeugen.

(379,0 KB, heruntergeladen: 913)