Temperaturmessungen vor 30 Jahren wurden häufig noch mit Quecksilberthermometern durchgeführt. Heute wird das mit hochsensiblen Temperatursensoren gemacht. Wie das geschieht, auf was man achten muss und wie solche kleinen elektronischen Helfer arbeiten, das erfahrt ihr hier.
Wie der Titel bereits andeutet, besteht ein 3-Leiter Bus aus drei Datenleitungen:
Die serielle synchrone Datenübertragung über einen 3-Leiter Bus bedeutet, die Bits werden nacheinander durch eine Leitung geschoben ohne ein Protokoll. Dabei fungiert ein Master als Taktgeber und ein Empfänger als Slave.
Für unseren Versuchsaufbau wird die BASIC Stamp den Master geben, sie ist für den Takt zuständig und der DS1620 Baustein den Slave. Mit der ersten steigenden CLK-Flanke des Masters wird ein Bit auf die DATA-Leitung geschaltet und mit der zweiten liest der Slave dieses Bit in sein Schieberegister ein. Der Master synchronisiert den Slave.
Die Bits werden eines nach dem anderen übertragen, das niedrigwertigste oder höchstwertige Bit – je nach Voreinstellung – zuerst. Um ein Byte zu übertragen werden dann acht Bits nacheinander – eben seriell – übertragen; dazu sind 8 CLK Takte notwendig.
Ein Taktzyklus besteht aus einer fallenden und einer steigenden Flanke. Daten werden vom Sensor mit steigender Flanke übernommen, während die Ausgabe mit der fallenden bis hin zur steigenden Flanke erfolgt.
Ingenieure entnehmen das Zeitverhalten einer solchen seriellen synchronen Datenübertragung einem sogenannten Timing-Diagramm (Abb. 1). Auf das werden wir später noch etwas genauer eingehen.
Der Baustein DS1620
Das DS1620 IC ist in einem 8-Pin DIP Gehäuse untergebracht.
Anschlussbelegung
Aus dem Datenblatt des Bausteins ergeben sich die Anschlussdaten.
DQ 3-Draht Datenein-/ausgang
CLK 3-Draht Clockeingang
RST 3-Draht Reset Input
GND Ground
TCOM Triggerschwelle obere-untere Temperatur
TLOW Triggerschwelle untere Temperatur
THIGH Triggerschwelle obere Temperatur
VDD Spannungsversorgung +3V … +5V
Das DS1620 ist ein Digitalthermometer, das Temperaturen mit 9-Bit im 2-er Komplement aufzeichnet. Die Einstellungen und das Auslesen der Temperaturwerte erfolgt über eine einfache 3-Draht Datenleitung (was ein 2-er Komplement ist, erfährst du im Internet unter genau diesem Begriff).
Die gemessene Temperatur entspricht der Temperatur des Bausteins. Zusätzlich kann er als Thermostat eingesetzt werden. Dazu verfügt er über zwei Alarmflags im Konfigurations-/Statusregister.
Die Bedeutung der anderen Flags:
Die Thermostat-Vergleichstemperaturen werden in einem nicht flüchtigen Speicher abgelegt.
Wer es genauer wissen möchte, sollte unbedingt in das Datenblatt zum Baustein schauen. Dort sind alle notwendigen Informationen zum Betreiben des IC enthalten.
Für den DS1620 gibt es nach Abb. 3 vier unterschiedliche Betriebsarten:
Der DS1620 Baustein verfügt über die Register:
Registername | Größe | Speichertyp | Registerinhalt |
Temperature read only |
9 Bit | SRAM | gemessene Temperatur (als 2-er Komplement) |
TH read/write |
9 Bit | EEPROM |
oberer Interventionswert (als 2-er Komplement) Werkseinstellung: +15°C (0 0001 1110) |
TL read/write |
9 Bit | EEPROM |
unterer Interventionswert (als 2-er Komplement) Werkseinstellung: +10°C (0 0001 0100) |
und die Befehle
Ein 3-Draht Bus setzt sich aus drei Signalen zusammen.
Jede Kommunikation mit dem DS1620 muss mit einem Flankenanstieg von 0 auf 1 an RST eingeleitet werden und bleibt – solange die 1 anliegt - bestehen. Entsprechend wird die Kommunikation beendet, sobald RST von 1 auf 0 geht.
Ein Taktzyklus ist eine Sequenz von fallenden und steigenden Flanken. Bei Dateneingaben muss die Dateninformation während der steigenden Flanke eines Zyklus vorliegen.
Mit all diesem Wissen gehen wir jetzt daran, die im DS1620 gespeicherten Werte THF und TLF und das Konfigurations-/Statusregister auszulesen.
Material |
1x IC DS1620 1x Kondensator 0,1µF 1x Widerstand 1kOhm 4x Steckdraht |
Aufgaben |
|
Schaltungsaufbau und Schaltungsskizze
Programm ds1620_1.bs2
Was passiert in dem Programm?
Zeile 3
Die Variable x vom Typ Byte wird angelegt.
Zeile 9
P13 ist mit dem RST-Eingang von DS1620 verbunden und wird auf 1 gesetzt. Die Kommunikation zwischen DS1620 und der BS beginnt.
Zeile 10
Ganz allgemein überträgt die Funktion SHIFTOUT Daten an ein synchrones serielles Gerät; hier im Speziellen von der BASIC Stamp an das IC DS1620.
Mit Hilfe des Befehls
SHIFTOUT Dpin, Cpin, Mode, [OutputData1(\Bits) (,OutputData2(\Bits)) …]
mit den Parametern
Dpin
Variable, Konstante, Ausdruck(0-15), definiert den I/O Pin, der mit dem synchronen seriellen Dateneingang eines Gerätes verbunden ist.
Cpin
Variable, Konstante, Ausdruck(0-15), definiert den I/O Pin, der mit dem synchronen seriellen CLK-Eingang eines Gerätes verbunden ist.
Mode
Variable, Konstante, Ausdruck(0-1) oder einer von zwei vordefinierten Schlüsselwörtern (LSBFIRST, MSBFIRST), die festlegen, ob die Daten mit dem LSB (least significant bit) oder dem MSB (most significant bit) beginnend übertragen werden.
OutputData
Variable, Konstante, Ausdruck, enthält die Daten, die übertragen werden sollen.
Bits
Optionale Variable, Konstante, Ausdruck(1-16), die festlegt, wie viele Bits mit SHIFTOUT übertragen werden. Ohne Vorgabe werden immer 8 Bit übertragen.
überträgt die BASIC Stamp das Byte 172 (ACh) an den IC-Baustein DS1620.
Im Datenblatt des Herstellers ist das der Code für den Befehl
Read Config (Abb. 4)
Nach Aufruf dieses Befehls werden in 8 Taktzyklen die Werte des Registers ausgelesen.
Zeile 11
Der Befehl
SHIFTIN Dpin, Cpin, Mode, [Variable {\Bit}{, Variable {\Bit}...}]
mit den Parametern
Dpin
Variable, Konstante, Ausdruck (0 - 15), verbunden mit dem Ausgang des Gerätes. Der Pin wird auf Eingang gesetzt.
Cpin
Variable, Konstante, Ausdruck (0 -15), verbunden mit dem CLK-Eingang des Gerätes. Der Pin wird als Ausgang gesetzt.
Mode
Variable, Konstante, Ausdruck (0 - 3) oder einer von vier vorgegebenen Ausdrücken, der festlegt, in welcher Reihenfolge die Datenbits verschoben werden.
MSBPRE 0 Data im MSB-first Modus, sample-bit vor CLK-Puls LSBPRE 1 Data im LSB-first Modus, sample-bit vor CLK Puls MSBPOST 2 Data im MSB-first Modus, sample-bit nach CLK Puls LSBPOST 3 Date im LSB-first Modus, sample-bit nach CLK Puls
Variable
Variable, in der einlaufende Datenbits gespeichert werden.
Bit
Optionale Variable, Konstante, Ausdruck (1 - 16), die festleg, wie viele Bits SHIFTIN einlesen soll. Wird kein Wert angegeben, werden 8 Bit eingelesen.
sorgt dafür, dass die Daten an ein synchrones serielles Gerät, die BASIC Stamp, übertragen und dort im Speicher x abgelegt werden.
Zeile 12
Der CLK-Eingang des DS1620 wird auf 0 gesetzt und die Kommunikation mit der BS beendet.
Die Belegung des Konfigurations-/Statusregisters in Abb. 5 zeigt, dass das 8., 4. und 2. Bit auf 1 gesetzt sind. Das heißt, die Flags
sind auf 1 gesetzt. Da keine Umwandlung erfolgt, ist DONE auf 1, Bit 3 ist immer auf 1 gesetzt und CPU ist 0, da kein Datenaustausch mit der CPU (der BASIC Stamp) erfolgt. Dies ist die Werkseinstellung.
Wie man einen Wert setzt oder zurücksetzt sehen wir in der folgenden Übung.
In der folgenden Übung wird der DS1620 Sensor so eingestellt, dass er permanent Temperaturwerte misst und bereitstellt. Nach Abb. 3 gibt es vier unterschiedliche Einstellungsmöglichkeiten für die Messaufnahme.
Einstellung 2 schaltet den Sensor in einen Modus, in dem er permanent Temperaturwerte misst und bei entsprechendem Befehl übermittelt er diese an die CPU. Bit1 (CPU) im Konfigurations-/ Steuerregister muss dazu auf 1 gesetzt werden.
Wir gehen wieder so vor wie in Übung 1. Die Kommunikation mit dem Baustein erfolgt in drei Schritten:
Der Schaltungsaufbau aus Übung 1 wird übernommen.
Aufgaben |
|
Wie arbeitet das Programm DS1620_2.bs2?
Das Zeitdiagramm aus Abb. 1 - hier noch einmal dargestellt - zeigt alle wesentlichen Abläufe:
Das Argument LSBFIRST im Befehl SHIFTOUT besagt, dass das niedrigwertigste Bit zuerst übertragen wird. Die gesamte Transaktion von 16 Taktimpulsen dauert nur etwa eine Millisekunde oder 0,001s und sie läuft vollautomatisch unter dem Befehl SHIFTOUT ab.
Da die Datenübertragung synchronisiert ist mit dem BASIC Stamp Taktgeber, nennt man diesen Vorgang auch synchrone serielle Datenübertragung. Dabei agiert die BASIC Stamp als sogenannter Master, der den Takt und die Befehle vorgibt und das IC DS1620 als Slave.
Jetzt haben wir alles zusammen, um uns endlich an eine Temperaturmessung heranzuwagen.
Der Schaltungsaufbau aus Übung 1 wird übernommen.
Aufgaben |
|
Das Programm DS1620_3.bs2
Wie arbeitet das Programm DS1620_3.bs2?
Zeilen 9 und 11
Die Verbindung des Mikrocontrollers zu seiner Außenwelt besteht über die Pins, die entweder als Eingang oder als Ausgang geschaltet sein können. Ausgänge wiederum können HIGH oder LOW sein. Die Befehle OUT und DIR kennen wir bereits aus den ersten Übungen mit PBASIC.
Die OUTS und DIRS Befehle sprechen gleichzeitig alle 16 I/O Pins P0 … P15 einer BASIC Stamp an.
Es ist guter Programmierstil, zu Beginn eines Programms alle Pins in einen bestimmten definierten Zustand zu bringen. Nach einem Reset oder Anlegen der Betriebsspannung sind alle per Werkseinstellung auf Eingang geschaltet.
Der Anwender und Programmierer, also du selbst, bist verantwortlich, dass die einzelnen Pins entsprechend ihrer Aufgabenstellung geschaltet werden. Bleibt ein Pin unbelegt, dann sollte er nicht als Eingang geschaltet sein, da dies den Controller instabil reagieren lässt und es Energie zehrend ist.
Die Befehle in Zeile 9 und 11 setzen alle Pins prinzipiell erst einmal auf Ausgang mit Pegel 0, wenn es nicht anders verlangt wird.
Zeile 13 bis 15
Gestartet wird mit einem HIGH Pegel an P13, gefolgt von einem SHIFTOUT Befehl. Über ihn wird das Byte 238 an den DS1620 gesandt und anschließend P13 wieder auf LOW gesetzt.
238 ist ein Steuerbefehl (Abb. 4) an das IC, mit der Umwandlung des Temperaturwertes in einen digitalen Code zu beginnen.
Zeilen 17 bis 26
Dies ist der Hauptteil des Programms. Die Temperatur wird vom DS1620 ausgelesen; dies geschieht mit HIGH Pegel an P13 und dem nachfolgenden Befehl 170 (liest Temperturwert aus Register) und überträgt ihn an die BASIC Stamp. In diesem Moment steuert der DS1620 die Datenübertragung und die BASIC Stamp führt als nächstes den SHIFTIN Befehl aus.
SHIFTIN 15, 14, LSBPRE, [x]
Die Argumente dieses Befehls sind
P15, über den die Datenbytes eingelesen werden
P14, ist bei der BASIC Stamp der CLK Ausgang
LSBPRE, die Bytes werden mit dem niedrigwertigsten Bit (lsb) eingelesen.
[x], Name der Variablen, in der die Daten abgelegt werden.
P15 ist in diesem Befehl als Eingang geschaltet; beim SHIFTOUT Befehl war er noch Ausgang. Die BASIC Stamp ist damit bereit vom DS1620 Modul Daten zu empfangen. Dies lässt sich auch im folgenden Zeitdiagramm ablesen. Die BS2 bleibt der Master und das DS1620 der Slave.
Zeilen 23 bis 25
Bei einer Temperatur von 25°C überträgt das DS1620 Modul einen Wert von 50, oder binär 00110010. Das Temperaturmodul gibt immer einen Wert, der doppelt so groß wie die gemessene Temperatur ist, aus. Damit wird klar, dass jeder Temperaturschritt des DS1620 0,5°C entspricht. Das ist die höchste Auflösung, die dieses Temperaturmodul bieten kann. Mit
grdC = x / 2
wird der Rohwert in einen Temperaturwert umgewandelt und anschließend im Terminal ausgegeben. Die BASIC Stamp benutzt hier eine integer-Arithmetik, dass heißt, dass keinen Kommazahlen ausgegeben werden. Alle Stellen hinter dem Komma werden ohne Rundung gelöscht.
Aufgabe |
|