Der DS18B20 ist ein Temperatursensor mit 1Wire-Schnittstelle. Er benötigt zum Auslesen der Messwerte eine zusätzliche Ader im Sensorkabel. Der Temperatursensor hat laut Hersteller eine Absolutgenauigkeit von +/-0.5° und eine Auflösung von 0.625K/bit.
Anschlussbelegung: (von vorn auf die flache Seite mit der Beschriftung
gesehen)
1-
GND (Masse)
2-
DQ (Datenleitung)
3-
VDD (+5V)
Einbau:
Der DS18B20 wird mit seiner Datenleitung DQ (Pin2) direkt an den PIC-Mikrocontroller angeschlossen. Dazu wird der Eingang RA4 (Pin6) des 16F877 genutzt. Zusätzlich muss die Datenleitung über einen Widerstand 4.7kOhm auf VCC (+5V) des PIC-Mikrocontrollers gelegt werden. Der VDD-Anschluss des DS18B20 (Pin3) wird mit der Betriebsspannung des Magnetfeldsensors verbunden. Der Pin1 des DS18B20 wird mit der Masse des Magnetfeldsensors verbunden.
Der Temperatursensor müsste mit dieser Beschaltung bereits funktionieren. Es hat sich jedoch gezeigt, dass die Datenübertragung vom ständig anliegenden Sensorsignal beeinflusst wird. Aus diesem Grund macht sich folgende Zusatzbeschaltung erforderlich:
1. Kondensator 2.2nF zwischen Datenleitung DQ (Pin1) und GND (Pin2) des DS18B20. Dieser Kondensator soll Störspitzen auf der Datenleitung unterdrücken. Ohne diesen Kondensator kommt es zu ca. 40% Lesefehlern.
2. Tantal-Elko 10µF/35V über die Betriebsspannung des Magnetfeldsensors und damit gleichzeitig über GND (pin2) und VDD (Pin3) des DS18B20. Wird dieser Kondensator weggelassen, dann erfolgt keine Temperaturmessung durch den DS18B20. Die Ursache liegt beim Magnetfeldsensor.
Einbau:
1. Der Ausgang RA4 (PIN6) des PIC-Mikrocontrollers wird gesucht. Dieser befindet sich auf der Seite der 34poligen Wannenstiftleiste in der Nähe von R31. Vom PIN6 gehen sowohl auf der Löt- als auch auf der Bestückungsseite keine Leiterzüge ab.
2. Jetzt wird an RA4 ein dünner Draht angelötet, dessen andere Seite auf einem freien Lötpunkt des Lötrasterfelds angelötet wird.
3. Der 4.7kOhm-Widerstand wird daneben platziert und mit diesem Drahtende verbunden.
4. Vom gleichen Lötpunkt aus wird eine Draht zur 6poligen Sensorbuchse gezogen und dort an PIN1 (Feld2) angelötet (siehe Baumappe S.7: Buchse X3). Es kann alternativ der PIN2 (Feld1) der Sensorbuchse verwendet werden. Dieser ist ebenfalls nicht belegt.
5. Das freie Ende des 4.7kOhm Widerstandes muss jetzt noch mit VDD verbunden werden. Am einfachsten ist das Anlöten eines Drahtes direkt am 5V-Regler (78S05 – IC3). Der 5V-Ausgang ist im Bestückungsplan in der Baumappe mit „O“ gekennzeichnet (siehe auch Baumappe S. 7: Messpunkt +5V).
Nach Abschluss dieser Arbeiten wurde folgende Schaltung realisiert:
VDD
4.7k
6 (RA4)
Feld2
6. Am Magnetfeldsensor wird der Tantal-Elko (10µF/35V) über den Betriebsspannungsanschlüssen verlötet. Dabei ist die Polarität des Tantal-Elkos zu beachten. Der Pluspol ist gekennzeichnet.
7. Der DS18B20 wird mit den Anschlüssen GND (Pin1) und VDD (PIN3) mit den Anschlüssen GND und +5V des Magnetfeldsensors verbunden.
8. Der 2.2nF Kondensator wird mit den Anschlüssen GND (Pin1) und DQ (Pin2) des DS18B20 verlötet.
9. Die Datenleitung des DS18B20 muss noch im Stecker des Sensorkabels angelötet werden.
Bei allen Lötarbeiten ist darauf zu achten, dass sich keine Lötbrücken bilden. Dies gilt besonders für das Anlöten des Drahtes an RA4 des Controllers sowie die Verdrahtung des DS18B20.
Test:
Zum Test des Temperatursensors gibt es ein spezielles Programm DS18B20.HEX. Dieses ist wie gewohnt mit dem PIC-Loader aufzuspielen. Das Testprogramm arbeitet in 3 Schritten:
1. Überprüfung, ob der Sensor angesprochen werden kann,
2. Auslesen der Hardwareadresse des Sensors (jeder Sensor hat eine weltweit einmalige 48bit-Adresse),
3. Auslesen der Temperatur.
Die Ergebnisse dieser Schritte werden in den ersten drei Displayzeilen dargestellt. In der 4. Zeile wird die Anzahl aufgetretener Lesefehler ausgegeben.
Fehlersuche:
„DS18B20 nicht OK“ in 1. Zeile:
Der Temperatursensor wurde nicht erkannt -> Verdrahtung überprüfen
„Lesefehler“ in 2. Zeile:
Der DS18B20 wurde erkannt.
Seine Adresse wurde nicht korrekt ausgelesen -> Überprüfung, ob
2.2nF-Kondensator zwischen Datenleitung DQ (PIN2) und GND (PIN1) liegt. Wenn
ja, dann kann versucht werden, einen anderen Kondensator mit etwas geringerer
oder größerer Kapazität einzulöten. Möglicherweise bei großen Leitungslängen
ein zusätzlicher Kondensator am PIC-Controller (RA4 gegen GND) eingelötet
werden.
Eventuell kann man auch
versuchen, von RA4 (Pin6) des Mikrocontrollers einen 68kOhm-Widerstand nach GND
zu löten.
Die Adresse des DS18B20
wurde korrekt gelesen, das Auslesen der gemessenen Temperatur ist jedoch
fehlgeschlagen -> Überprüfung, on der Tantal-Elko mit der richtigen
Polarität über der Betriebsspannung des Magnetfeldsensors liegt und VDD
(Pin2) des DS18B20 mit der Betriebsspannung des Magnetfeldsensors verbunden
ist.
Der DS18B20 konnte
erfolgreich abgefragt werden, es kommt jedoch hin und wieder zu Lesefehlern.
SAM-Betriebssoftware V2.02
Wenn
die Inbetriebnahme des DS18B20 abgeschlossen ist, kann die neue
SAM-Betriebssoftware aufgespielt werden. Außer der Temperaturmessung wurde die
Darstellung des K-Wertes in der 4. Zeile wie folgt überarbeitet:
K:
<aktuell> (letzte Periode) D: <aktuelle Schwankungsbreite>
z.B.:
Diese
Ausgabe bedeutet:
Die
Darstellung der Schwankungsbreite ist hilfreich um einzuschätzen, ob ein
bestimmter K-Wert gerade so erreicht wurde oder ob die Schwelle für den
nächsthöheren K-Wert fast erreicht ist.
Nach
der Initialisierung des Magnetfeldsensors (ca. 10 Sekunden) wird der DS18B20
angesprochen und das Ergebnis kurz im Display dargestellt. Danach wird der
normale Messbetrieb aufgenommen und zusätzlich zum magnetischen Fluss die
Temperatur im 1s-Zyklus gemessen. Die gemessene Temperatur wird in der 3.
Displayzeile ausgegeben. Zusätzlich erfolgt die Ausgabe der Temperatur am Ende
jeder Datenzeile auf der RS-232 Schnittstelle.
Die
Temperaturmessung kann über den Taster <F4> ein- und ausgeschaltet
werden. Dabei darf es zu keinen Veränderungen der Magnetfeldmesswerte kommen,
was im Kalibriermodus überprüft werden kann. Falls es doch größere
Veränderungen (> 2-3nT) gibt, habe ich noch einen Fehler bei der
Programmierung gemacht.
Eine
Temperaturkompensation der Magnetfeldmesswerte erfolgt momentan noch nicht.
Diese kann erst erfolgen, wenn uns die genaue Temperaturkennlinie des
Magnetfeldsensors bekannt ist.