Temperatursensor DS18B20: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(13 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:


→ zurück zur Übersicht: [[ST_WS2018|WS 18/19: Sensortechnik (MTR)]]
→ zurück zur Übersicht: [[ST_WS2018|WS 18/19: Sensortechnik (MTR)]]
[[Datei:DS18B20.png|300px|thumb|DS18B20]]


'''Autor:''' [[Benutzer:David_Reger|David Reger]] <br/>
'''Autor:''' [[Benutzer:David_Reger|David Reger]] <br/>
Zeile 11: Zeile 12:
Der Aufbau der Schaltung wird in einer Skizze dargestellt. Die durchgeführte Messung zum erhalten der Sensordaten wird in einem YouTube Video dokumentiert. Während der Temperaturaufnahme wurde im Versuch ein Referenzgerät zum vergleichen der Temperaturwerte verwendet. <br/>  
Der Aufbau der Schaltung wird in einer Skizze dargestellt. Die durchgeführte Messung zum erhalten der Sensordaten wird in einem YouTube Video dokumentiert. Während der Temperaturaufnahme wurde im Versuch ein Referenzgerät zum vergleichen der Temperaturwerte verwendet. <br/>  
Zum Schluss werden die erhaltenen Temperaturdaten bewertet. <br/>
Zum Schluss werden die erhaltenen Temperaturdaten bewertet. <br/>
== Einleitung ==


==Technische Übersicht==
==Technische Übersicht==
Zeile 42: Zeile 39:
| TO-92 (Transistor Outline)
| TO-92 (Transistor Outline)
|}
|}
== Prinziperklärung ==




== Verwendete Software ==
== Verwendete Software ==
Für dieses Projekt wurde folgende Software verwendet:
Für dieses Projekt wurde folgende Software verwendet: <br/>
Programmierung und Auswertung der Sensordaten
Programmierung und Auswertung der Sensordaten
* Arduino IDE 1.8.7 <br/>
* Arduino IDE 1.8.7 <br/>
Zeile 58: Zeile 52:
*Vegas Pro 13<br/>
*Vegas Pro 13<br/>


==Hardwareaufbau==
==Auswerteschaltung==
Verwendete Hardware:
===Verwendete Hardware===
*Arduino UNO R3
*Arduino UNO R3
*DS18B20 Sensor
*DS18B20 Sensor
Zeile 66: Zeile 60:
*4,7k Ohm Widerstand
*4,7k Ohm Widerstand


== Lernerfolg ==
===Datenblätter===
 
Datenblatt Mikrocontroller: [https://datasheet.octopart.com/A000066-Arduino-datasheet-38879526.pdf| Arduino UNO] <br/>
Datenblatt Sensor: [https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf| DS18B20] <br/>


===Steckplatine===
[[Datei:Sensortechnik_DS18B20_Steckplatine.png|700 px]]


== Gesamtfazit ==
===Schaltung===
[[Datei:Sensortechnik_DS18B20_Schaltplan.png|700 px]]


==Messkette==
===Auswahl eines Primärsensors ===
Der DS18B20 ist ein Halbleiter Temperatursensor, der abhängig von der Temperatur eine digital umgesetzte Spannung liefert. Die Konvertierung erfolgt innerhalb des Sensors im Scratchpad. [[Datei:Scratchpad.PNG|700px|thumb|Scratchpad des DS18B20]]


===Bussystem===
Der Sensor und Mikrocontroller interagieren über ein 1-Wire Bus miteinander. Das 1-Wire Bus ist eine serielle Schnittstelle, welche von Dallas Semiconductor [https://de.wikipedia.org/wiki/Dallas_Semiconductor] entwickelt wurde. Zudem arbeitet es nach dem Master/Slave Prinzip. Jedes Slave-Glied enthält eine 64-Bit-Seriennummer (ROM)(s.Scratchpad). Die Seriennummer besteht aus einer 8-Bit Nummer zur Identifikation der Sensorfamilie, eine 48-Bit Seriennummer und eine 8-Bit CRC, um die Zuverlässigkeit der Daten zu überprüfen. Das 1-Wire Bus kommt mit einer Datenleitung aus und benötigt keine separate Taktleitung, da die Datenübertragung asynchron abläuft. Die Datenübertragung erfolgt zudem bidirektional und ist somit für Senden und Empfangen ausgelegt. Hierbei läuft aber beides nicht zeitgleich ab, d.h. über den 1-Wire Bus kann Senden und Empfangen nur separat ablaufen.


== YouTube Video ==
===Digitale Signalverarbeitung===
Der Sensor kann mit verschiedenen Auflösungen verwendet werden, welche von 9-12 Bit konfiguriert werden kann. Standardmäßig ist die Auflösung auf 12 Bit gesetzt und wurde in dem Projekt beibehalten. Um aus dem digitalen Signal einen Wert zu erhalten muss dieses umgerechnet werden. Da die 12 Bits in 2 Bytes gespeichert werden muss hierzu in ein LSB (Least Significant Byte) und MSB (Most Significant Byte) unterschieden werden. Die Wertigkeiten sind in der nachfolgenden Tabelle dargestellt [[Datei:Bitwertigkeiten DS18B20.PNG|700px|thumb|Bitwertigkeiten Tabelle]]. Um die Temperatur zu berechnen wird das MSB um 8 Bits nach links geshiftet, damit es die passende Wertigkeit zugewiesen bekommt. Anschließend werden LSB und MSB miteinander addiert und mit der Auflösung des Sensors multipliziert. Daraus ergibt sich folgende Rechnung. <br>


'''Temperatur = ((MSB << 8) +LSB) * 0.0625''' (Auflösung bei 12 Bit) <br>


Die Konvertierung der Temperatur bei einer Auflösung von 12 Bit benötigt 750 ms, wodurch in der Auswertung ein Delay eingebaut werden muss. Anschließend wird der Wert auf einem Display ausgegeben


== Schwierigkeitsgrad ==
===Bewertung der Sensordaten===
In jedem Schritt innerhalb einer Messkette können Messfehler austreten. Bei der Konvertierung der Temperatur in ein digitales Signal, bei der Kommunikation zwischen Sensor und Mikrocontroller, bei der Umrechnung des digitalen Signals in einen Temperaturwert und bei der Ausgabe auf dem Display. Es können überall Messunsicherheiten auftreten. Der Hersteller des Sensors gibt im Bereich von -10 °C bis +85°C, eine Messgenauigkeit von ± 0,5 °C an. Bei der Messung, welche im Youtube Video zu sehen ist, wird ein Referenzgerät zur Ermittlung der Temperatur verwendet. Hier lässt sich eine Messgenauigkeit von ca. ± 1 °C feststellen. Ursache hierfür können die oben genannten Messfehler in der Messkette sein. Außerdem benötigt die Konvertierung des 12 Bit Wertes 750 ms, wodurch der Sensor langsamer Werte misst als das Referenzgerät. Dadurch kann der Sensor schnelle Temperaturänderungen abhängig von der Zeit weniger gut erfassen. Bei einer konstanten Temperatur ist die Genauigkeit besser.


== Lernerfolg ==
Durch Anbindung und Auswertung eines Sensors wurde ein guter Einblick in den Bereich Sensortechnik erlangt. Besonders bei der Auswahl des Sensors wurden die verschiedenen Anwendungsmöglichkeiten verdeutlicht. Außerdem wurden Verknüpfungen zu anderen Fächern erstellt. Zum einen diente die Zusatzaufgabe als Ergänzung des Fachs Sensortechnik und erhöhte den Lerneffekt durch die praktische Anwendung. Da der DS18B20 ein digitaler Sensor ist und über den 1-Wire Bus angeschlossen wird, wurden Kenntnisse aus dem dritten Semester im Fach Digitaltechnik aufgegriffen. Außerdem wurde durch die Recherche über den Bus eine Vorbereitung zum Fach Bussysteme im 6. Semester getroffen. Durch die Anbindung an einen Mikrocontroller konnte das Wissen, welches parallel im 5. Semester erlangt wurde, aus Systemarchitektur und Embedded Systems eingebracht werden. Vor allem bei der Programmierung war das Vorwissen erleichternd. Insgesamt deckt die Zusatzaufgabe viele Bereiche aus dem Studiengang Mechatronik ab und verknüpft Wissen aus verschiedenen Bereichen. <br>
Zudem ist die Zusatzaufgabe ein guter Einblick in die Praxis. Durch das Anbinden des Sensors konnten kleine Erfolge festgestellt werden. Vor allem werden Erkenntnisse gewonnen wie komplex die Fahrzeuge und Maschinen heutzutage aufgebaut sind, da diese Hunderte von Sensoren integriert haben.


== YouTube Video ==
[https://youtu.be/jGqUqg_i7UI  YouTube-Video DS18B20]


== Literatur ==
== Schwierigkeitsgrad ==
 
(***)
 
== Quellenverzeichnis ==


<!-- Fügen Sie diesen Footer hinzu.  -->
<!-- Fügen Sie diesen Footer hinzu.  -->
---
---
→ zurück zur Übersicht: [[ST_WS2018|WS 18/19: Sensortechnik (MTR)]]
→ zurück zur Übersicht: [[ST_WS2018|WS 18/19: Sensortechnik (MTR)]]

Aktuelle Version vom 17. Januar 2019, 21:35 Uhr


→ zurück zur Übersicht: WS 18/19: Sensortechnik (MTR)

DS18B20

Autor: David Reger
Betreuer: Prof. Schneider

Aufgabe

Innerhalb des Moduls Systems Design Engineering (SDE), sollte im Fach Sensortechnik ein Primärsensor ausgewählt und mit einem beliebigen Mikrocontroller ausgewertet werden. Dazu gehört das ermitteln der Sensordaten und Funkionsweise des Sensors.
Anhand der Daten wird eine Schaltung entworfen, in welcher Art der Sensor bei dem Mikrocontroller angebunden wird. Nachdem der Sensor mit dem Mikrocontroller verknüpft ist, soll ein Quelltext zum Auswerten der Sensordaten erstellt werden.
Der Aufbau der Schaltung wird in einer Skizze dargestellt. Die durchgeführte Messung zum erhalten der Sensordaten wird in einem YouTube Video dokumentiert. Während der Temperaturaufnahme wurde im Versuch ein Referenzgerät zum vergleichen der Temperaturwerte verwendet.
Zum Schluss werden die erhaltenen Temperaturdaten bewertet.

Technische Übersicht

Eigenschaft Daten
Betriebsspannung min. 3,0 V - max. 5V
Schnittellen: 3 (VDD, DQ, GND)
Sensortyp: Digital (1-Wire-Bus)
Auflösung: 9/12 Bit
Temperaturbereich: -55°C - +125°C
Abweichung: +-0,5°C
Produktgehäuse TO-92 (Transistor Outline)


Verwendete Software

Für dieses Projekt wurde folgende Software verwendet:
Programmierung und Auswertung der Sensordaten

  • Arduino IDE 1.8.7

Schaltungsentwurf

  • Fritzing

Videobearbeitung

  • Vegas Pro 13

Auswerteschaltung

Verwendete Hardware

  • Arduino UNO R3
  • DS18B20 Sensor
  • Jumper Wires
  • Display
  • 4,7k Ohm Widerstand

Datenblätter

Datenblatt Mikrocontroller: Arduino UNO
Datenblatt Sensor: DS18B20

Steckplatine

Schaltung

Messkette

Auswahl eines Primärsensors

Der DS18B20 ist ein Halbleiter Temperatursensor, der abhängig von der Temperatur eine digital umgesetzte Spannung liefert. Die Konvertierung erfolgt innerhalb des Sensors im Scratchpad.

Scratchpad des DS18B20

Bussystem

Der Sensor und Mikrocontroller interagieren über ein 1-Wire Bus miteinander. Das 1-Wire Bus ist eine serielle Schnittstelle, welche von Dallas Semiconductor [1] entwickelt wurde. Zudem arbeitet es nach dem Master/Slave Prinzip. Jedes Slave-Glied enthält eine 64-Bit-Seriennummer (ROM)(s.Scratchpad). Die Seriennummer besteht aus einer 8-Bit Nummer zur Identifikation der Sensorfamilie, eine 48-Bit Seriennummer und eine 8-Bit CRC, um die Zuverlässigkeit der Daten zu überprüfen. Das 1-Wire Bus kommt mit einer Datenleitung aus und benötigt keine separate Taktleitung, da die Datenübertragung asynchron abläuft. Die Datenübertragung erfolgt zudem bidirektional und ist somit für Senden und Empfangen ausgelegt. Hierbei läuft aber beides nicht zeitgleich ab, d.h. über den 1-Wire Bus kann Senden und Empfangen nur separat ablaufen.

Digitale Signalverarbeitung

Der Sensor kann mit verschiedenen Auflösungen verwendet werden, welche von 9-12 Bit konfiguriert werden kann. Standardmäßig ist die Auflösung auf 12 Bit gesetzt und wurde in dem Projekt beibehalten. Um aus dem digitalen Signal einen Wert zu erhalten muss dieses umgerechnet werden. Da die 12 Bits in 2 Bytes gespeichert werden muss hierzu in ein LSB (Least Significant Byte) und MSB (Most Significant Byte) unterschieden werden. Die Wertigkeiten sind in der nachfolgenden Tabelle dargestellt

Bitwertigkeiten Tabelle

. Um die Temperatur zu berechnen wird das MSB um 8 Bits nach links geshiftet, damit es die passende Wertigkeit zugewiesen bekommt. Anschließend werden LSB und MSB miteinander addiert und mit der Auflösung des Sensors multipliziert. Daraus ergibt sich folgende Rechnung.

Temperatur = ((MSB << 8) +LSB) * 0.0625 (Auflösung bei 12 Bit)

Die Konvertierung der Temperatur bei einer Auflösung von 12 Bit benötigt 750 ms, wodurch in der Auswertung ein Delay eingebaut werden muss. Anschließend wird der Wert auf einem Display ausgegeben

Bewertung der Sensordaten

In jedem Schritt innerhalb einer Messkette können Messfehler austreten. Bei der Konvertierung der Temperatur in ein digitales Signal, bei der Kommunikation zwischen Sensor und Mikrocontroller, bei der Umrechnung des digitalen Signals in einen Temperaturwert und bei der Ausgabe auf dem Display. Es können überall Messunsicherheiten auftreten. Der Hersteller des Sensors gibt im Bereich von -10 °C bis +85°C, eine Messgenauigkeit von ± 0,5 °C an. Bei der Messung, welche im Youtube Video zu sehen ist, wird ein Referenzgerät zur Ermittlung der Temperatur verwendet. Hier lässt sich eine Messgenauigkeit von ca. ± 1 °C feststellen. Ursache hierfür können die oben genannten Messfehler in der Messkette sein. Außerdem benötigt die Konvertierung des 12 Bit Wertes 750 ms, wodurch der Sensor langsamer Werte misst als das Referenzgerät. Dadurch kann der Sensor schnelle Temperaturänderungen abhängig von der Zeit weniger gut erfassen. Bei einer konstanten Temperatur ist die Genauigkeit besser.

Lernerfolg

Durch Anbindung und Auswertung eines Sensors wurde ein guter Einblick in den Bereich Sensortechnik erlangt. Besonders bei der Auswahl des Sensors wurden die verschiedenen Anwendungsmöglichkeiten verdeutlicht. Außerdem wurden Verknüpfungen zu anderen Fächern erstellt. Zum einen diente die Zusatzaufgabe als Ergänzung des Fachs Sensortechnik und erhöhte den Lerneffekt durch die praktische Anwendung. Da der DS18B20 ein digitaler Sensor ist und über den 1-Wire Bus angeschlossen wird, wurden Kenntnisse aus dem dritten Semester im Fach Digitaltechnik aufgegriffen. Außerdem wurde durch die Recherche über den Bus eine Vorbereitung zum Fach Bussysteme im 6. Semester getroffen. Durch die Anbindung an einen Mikrocontroller konnte das Wissen, welches parallel im 5. Semester erlangt wurde, aus Systemarchitektur und Embedded Systems eingebracht werden. Vor allem bei der Programmierung war das Vorwissen erleichternd. Insgesamt deckt die Zusatzaufgabe viele Bereiche aus dem Studiengang Mechatronik ab und verknüpft Wissen aus verschiedenen Bereichen.
Zudem ist die Zusatzaufgabe ein guter Einblick in die Praxis. Durch das Anbinden des Sensors konnten kleine Erfolge festgestellt werden. Vor allem werden Erkenntnisse gewonnen wie komplex die Fahrzeuge und Maschinen heutzutage aufgebaut sind, da diese Hunderte von Sensoren integriert haben.

YouTube Video

YouTube-Video DS18B20

Schwierigkeitsgrad

(***)

--- → zurück zur Übersicht: WS 18/19: Sensortechnik (MTR)