Bauplan Schaltplan TSIC306 Temperatur Sensor mit ZacWire Protokoll an Atmel Mega8

TSIC306 auf Steckbrett
Sehr häufig möchte man mit einer Mikrocontroller Schaltung eine Temperatur messen, sei es, um sie irgendwo anzuzeigen oder damit den Ist-Wert eines Reglers vorzugeben. Wie auch immer, hierfür bieten sich verschiedenste Möglichkeiten an.

Neben der direkten Messung zB eines temperaturabhängigen Widerstandes (NTC, PTC , PT100 , KTY81 oder ähnliches) setzen sich mehr und mehr integrierte Sensoren durch, welche fertig abgeglichende Sensoren mit Auswerteelektronik sowie einem Digitalinterface kombinieren. Hiermit können diese ohne grössere Probleme an vorhandene Controllerschaltungen angeschlossen werden.

Ein Vertreter dieser integrierten Temperatursensoren sind die TSIC206 bzw TSIC306 von Hygrosense Instruments. Sie bieten eine relative hohe Genauigkeit sowie Auflösung, kombiniert mit einer recht hohen Wandlungsrate von 10 Messungen pro Sekunde. Zum Betrieb dieser Sensoren sind nur zwei Leitungen für die Spannungsversorgung sowie eine Datenleitung vonnöten.

Die Daten werden dabei im sogenannten Zacwire-Protokoll übertragen, ein dem Manchester Code verwandtes Verfahren. Da Mikrocontroller dieses spezielle Protokoll üblicherweise nicht direkt unterstützen, muss man selbst ein geeignetes Programm dafür entwerfen.


Daten im Zacwire Protokoll

Das Zacwire-Protokoll beginnt mit einem Start-Bit, aus dessen Länge dynamisch die Dauer eines Bits ermittelt wird. Danach folgen 8 Daten sowie 1 Paritätsbit. Nach jeweils einer fallenden Flanke wartet man die gemessene Bitzeit und liest dann den Wert der Datenleitung ein.

Diese Prozedur wird zweimal wiederholt, man erhält somit zwei Datenbytes, die unteren 11 Bits sind der Temperaturwert, die oberen 5 Bits sind immer 0.

Um genau den Beginn eines Übertragungspakets zu bestimmen, muss noch sichergestellt werden, dass vor dem Erkennen des Startbits eine gewisse Zeitlang konstanter High-Pegel herrscht, erst dann kann ein Paket sicher dekodiert werden.

Das ganze habe ich hier als einfache Zustandsmaschine ausgeführt, ein flankengesteuerter Interrupt sowie ein 8Bit Timer werden zum erkennen der Bit-Flanken und Abtastzeitpunkte eingesetzt. Dabei läuft die Zusandsmaschine ohne zu blockieren durch, aufgetretene Interrupts werden durch zwei Flags erkannt und die Zustände entsprechend geändert. Die Datenausgabe (Hier als Dezimalzahl über die Serielle Schnittstelle) wird dabei genau ans Ende des Übertragungspakets gelegt, nur in dieser Phase kann die Zustandsmaschine gefahrlos für längere Zeit unterbrochen werden.


Sensor mit Kältespray besprüht...
Weitere Infos - Anzeigen:
Datenblatt TSIC 306

Der Quellcode findet sich hier, er wurde für einen Atmel Mega8 mit 7.372800Mhz erstellt.

Bauteile für dieses Projekt - Anzeigen:
Aktive Bauelemente

Passive Bauelemente


Weitere Informationen,Grundlagen,Bauanleitung,Schaltplan, Links zum Thema
Anzeigen:

Neueste Artikel
Anzeigen:
Aktuelle Newsbeiträge
Sie sind Besucher Nr. 1212703