Projekt: Temperatur-Messsystem - Sensormodul 1


PfeilKapitel 1:Überblick über das System Menübild
PfeilKapitel 2:Sensormodul 1
PfeilKapitel 3:Sensormodul 2/3
PfeilKapitel 4:Anzeigemodul 1
PfeilKapitel 5:Anzeigemodul 2
PfeilKapitel 6:Anzeigemodul 2a
PfeilKapitel 7:Anzeigemodul 3
PfeilKapitel 8:Web-Modul
PfeilKapitel 9:Datenkommunikation
PfeilKapitel 10: Software „TAnz“
PfeilKapitel 11: Software „AnzKom“

Letzte Bearbeitung: 12.06.2005

Hinweis: Dieses Modul wird nicht weiterentwickelt. Ich empfehle den Aufbau des Sensormoduls 3 bzw. den Umbau zum Sensormodul 3.

SymbolDownloads

Schaltplan Sensormodul 1sm1-sch.zip
Stückliste mit Empfehlungen zur Bauteilbestellungsm1-stkl.htm
Software v1.07 für ATmega8 vom 12.06.2005 (Assembler)sm1-v107.zip
Platinen-Layout von Steen Andreassen als PDF-Dateism1-layout1.zip
Platinen-Layout von Lukáš Mařík im Eagle-Formatsm1-layout2.zip

SymbolInhaltsverzeichnis

BeschreibungAllgemeine Informationen über das Sensormodul 1
SchaltungBeschreibung der Schaltung des Sensormoduls 1 und des Sensornetzwerkes
HardwareBilder und Hinweise zum Aufbau des Sensormoduls 1
SoftwareBeschreibung der Software des Sensormoduls 1
InbetriebnahmeInbetriebnahme des Sensormoduls 1 und Installation der Software
BedienungBedienungsanleitung für das Sensormodul 1

SymbolBeschreibung

Das Sensormodul 1 besteht im Kern aus einem ATmega8, welcher insgesamt 8 1-Wire Busse zur Verfügung stellt, die mit maximal 16 Temperatursensoren beschaltet werden können. Die ermittelten Messdaten im Bereich von -55°C bis 125°C werden auf eine Auflösung von 0,1°C gebracht, ins ASCII-Format gewandelt und mithilfe eines MAX232 per RS-232 zu Anzeigemodulen oder PCs gesendet. Außerdem stehen noch 4 Alarm-Eingänge zur Verfügung, die z.B. mit Tür-Kontakten beschaltet werden können. Der Alarmzustand der 4 Eingänge wird ebenfalls per RS-232 ausgegeben und kann von den angeschlossenen Anzeigemodulen oder PCs ausgewertet werden. Dieses Sensormodul kann optional mit einem kleinen I²C Spezial-LCD ausgestattet werden, so dass man die Aktivitäten des Moduls beobachten kann. Es ist aber auch ein Betrieb ohne LCD möglich.

SymbolSchaltung

Schaltung Sensormodul

Die Schaltung des Sensormoduls ist trotz des etwas unübersichtlichen Schaltplans gar nicht so kompliziert: Als zentrales Bauteil kommt hier ein ATmega8L (IC2) zum Einsatz, der mit einer Taktfrequenz von 4 MHz arbeitet. Über die Portanschlüsse PC0-PC3, PD4-PD7 und die Pull-Up-Widerstände R1-R8 erfolgt die Kommunikation mit den Temperatursensoren. Die Ports PB0, PB1, PD2 und PD3 werden als Alarmeingänge verwendet, die Widerstände R9-R12 sollen die Portanschlüsse vor Spannungsspitzen schützen. Die Ports PB3-PB5 und Reset sind an den Steckverbinder K3 geführt, über diesen Anschluss kann der Controller programmiert werden (ISP).
PC4 und PC5 bilden eine I²C-Schnittstelle und sind an den Steckverbinder K2 geführt. Die I²C-typischen Pull-Up-Widerstände sind hier bereits im Controller enthalten und können deshalb weggelassen werden. An K2 kann ein spezielles LCD angeschlossen werden, welches die gemessenen Temperaturwerte und einige Statusdaten anzeigt. P1 dient zur Einstellung des LCD-Kontrastes.
Die seriellen Daten werden am Portschluss PD1 (TXD) ausgegeben und über IC3 (Standard-Bauteil MAX232) auf RS-232 Pegel gebracht. IC1 ist ebenfalls ein Standard-Bauteil und erzeugt aus der zugeführten Spannung, die im Bereich von 10-20V liegen kann, stabile 5V für das Sensormodul. Die Diode D1 schützt vor Falschpolung der Betriebsspannung. Über die beiden Jumper J1 und J2 können spezielle Betriebsarten des Sensormoduls eingestellt werden, die genaue Funktion wird weiter unten im Abschnitt Bedienung beschrieben.

Alle Verbindungen zur „Außenwelt“ werden über den Steckverbinder K1 hergestellt. An den Anschlüssen 1-8 liegen die Sensorbusse 1-8, denen jeweils eine Masseleitung (14-21) zugeordnet ist. Die Alarmeingänge befinden sich an den Anschlüssen 9-12, wobei sich diese Eingänge 2 Masseleitungen (22 und 23) teilen müssen. Über die Anschlüsse 24 und 25 wird die Betriebsspannung zugeführt (Plus an 25). Die gesendeten Temperaturdaten können am Anschluss 13 abgegriffen werden, die dazugehörige Masseleitung kann man an 22, 23 oder 24 anschließen. Das folgende Bild zeigt eine von vielen Möglichkeiten, wie der Steckverbinder beschaltet werden kann:

Schaltung Sensoren

In der oben gezeigten Beispielbeschaltung sind 3 Sensoren an Bus1, weitere 3 Sensoren an Bus2 und 2 Sensoren an Bus6 angeschlossen. Weiterhin sind die Alarmeingänge 1 und 2 mit Arbeitskontakten beschaltet. Eine 2-drähtige Leitung überträgt die Daten zum Anzeigemodul oder zu einem anderen Datenempfänger. Die Stromaufnahme der gesamten Schaltung liegt unter 20mA, so dass die benötigte Spannung von 10-20V aus einem kleinen Steckernetzgerät bezogen werden kann.

Alle für das Sensormodul benötigten Bauelemente können dieser Stückliste entnommen werden. Zu einigen Bauteilen möchte ich noch etwas sagen:

LCD DSM-0822A: Dieses LCD war zum Zeitpunkt der Texterstellung für 1,95€ bei Pollin-Elektronik erhältlich. Es basiert auf dem I²C-Chip PCF8576 und kann 8 alphanumerische Zeichen sowie einige Sonderzeichen darstellen. Dieses LCD ist zum Betrieb des Sensormoduls nicht notwendig und kann problemlos weggelassen werden. Mir hat es aber während der Testphase gute Dienste geleistet und es ist auch im laufenden Betrieb recht praktisch: Neben der zyklischen Anzeige der Temperaturwerte aller Sensoren werden einige der Sonderzeichen genutzt, um den Status der 4 Alarme und die eingestellte Betriebsart anzuzeigen.
Übrigens: Dieses LCD ist laut beiliegendem Datenblatt für eine Betriebsspannung von 3,6V ausgelegt. Verschiedene Leute aus der Newsgroup de.sci.electronics haben das LCD bei 5V getestet und es gab keine Probleme oder Ausfälle. Deshalb habe ich das LCD ebenfalls direkt an 5V angeschlossen, was die Schaltung sehr vereinfacht. Mein Sensormodul läuft nun schon seit Anfang 2003 im Dauerbetrieb und dem LCD scheint es nicht zu schaden.

Steckverbinder K2: Falls man das DSM-0822A am Sensormodul betreiben möchte, dann benötigt man einen Spezialsteckverbinder für Folienkontakte im Rastermaß 1,25mm. Dieser ist allerdings nur sehr schwer zu bekommen. Eine mögliche Bezugsquelle ist eine taiwanesische Firma, genauere Informationen sind in der Stückliste zu finden. Zur Not kann man vorsichtig dünne Litzeleitungen an den LCD-Anschluss löten. Das sieht nicht sehr schön aus, funktioniert aber zuverlässig. Ich hatte Glück und fand einen solchen Steckverbinder auf einer Schrottplatine, allerdings mit 22 anstatt 5 Anschlüssen. Wer allen Problemen aus dem Weg gehen will, der sollte einfach das LCD sowie K2, P1 und C13 weglassen.

Temperatursensoren: Zur Temperaturerfassung werden hier digitale Sensoren von Dallas/Maxim verwendet. Diese können Temperaturen im Bereich von -55°C bis +125°C messen und haben je nach Typ eine Genauigkeit von 0,5 - 2,0°C. Der Datenaustausch zwischen dem Controller und den Sensoren erfolgt über ein 1-Wire-Bussystem. Dieses hat den großen Vorteil, dass man neben der Masseleitung nur einen Draht für die Kommunikation benötigt. Und nicht nur das: es können mehrere Sensoren an diesem Bus betrieben werden und auch die Betriebsspannung wird über diesen Draht geführt, eine zusätzliche Stromversorgungsleitung ist also nicht nötig. Die folgende Tabelle zeigt eine Übersicht über alle Sensortypen, die an das Sensormodul angeschlossen werden können und einige wichtige Parameter:

SensortypTemperaturbereichGenauigkeitAuflösungBemerkung
DS1820-55 bis +125°C0,5°C9 Bitwird nicht mehr produziert
DS18S20-55 bis +125°C0,5°C9 Bit
DS18B20-55 bis +125°C0,5°C9-12 Bitwird im 12-Bit-Modus betrieben
DS1822-55 bis +125°C2°C9-12 Bitwird im 12-Bit-Modus betrieben
DS1920-55 bis +100°C0,5°C9 BitiButton Bauform

Die geringere Auflösung von 9 Bit einiger Typen ist hier kein Nachteil. Das Sensormodul verwendet einen Algorithmus aus dem Datenblatt und berechnet daraus einen Wert mit einer Auflösung von 0,1°C. Somit werden unabhängig vom Sensortyp alle Temperaturdaten mit einer Auflösung von 0,1°C ausgegeben und das in einem Bereich von -55,0 bis +125,0°C.

Obwohl theoretisch beliebig viele Sensoren an einen 1-Wire-Bus angeschlossen werden können, hat die Praxis gezeigt, dass es leider nicht möglich ist, alle Sensoren eines Hauses vom Keller bis zum Dachgeschoss an einem Bus zu betreiben. Aus diesem Grund habe ich das Sensormodul mit 8 unabhängigen Bussen ausgestattet. Das ermöglicht eine sehr flexible Verteilung der Sensoren: So können mehrere in einem Raum angeordnete Sensoren (z.B. an einer Heizungsanlage) einen gemeinsamen Bus benutzen, während ein weit entfernter Sensor einzeln angeschlossen werden kann.

Alarmeingänge: Diese sind als Schalteingänge realisiert: ein einfacher Schaltkontakt gegen Masse löst den Alarm aus. Es können sowohl Arbeitskontakte als auch Ruhekontakte verwendet werden, die entsprechende Bewertung findet dann später in den Anzeigemodulen statt. Die Reaktion auf das Öffnen und Schließen eines Alarmkontaktes erfolgt etwas verzögert (ungefähr 700ms). Damit sollen Fehlalarme verhindert werden. Anstatt eines mechanischen Kontaktes kann man auch einen Open-Collector-Ausgang von einer beliebigen anderen Schaltung anschließen. Dazu muss allerdings zwischen beiden Schaltungen eine Masseverbindung hergestellt werden.

Stromversorgung: Weiter oben wurde es schon erwähnt: Die Schaltung wird mit einer Gleichspannung von 10-20V betrieben, die Stromaufnahme liegt bei ungefähr 20mA. Ich habe ein kleines 12V Schaltnetzgerät im Anschlussraum installiert und dieses versorgt neben dem BigBen-Türgong auch das Sensormodul und alle angeschlossenen Anzeigemodule.

SymbolHardware

Der freundliche Bastler-Kollege Steen Andreassen hat ein Platinenlayout für das Sensormodul entwickelt. Das Paket enthält je ein Layout für die Ober- und Unterseite sowie einen Bestückungsplan als PDF-Datei. Bitte die Hinweise in der beiliegenden Textdatei beachten.

Ein weiterer Bastler-Kollege Lukáš Mařík hat ein Platinenlayout im Eagle-Format erstellt. In diesem Paket befindet sich der Schaltplan, ein Layout ohne Bauteile sowie ein Layout mit Bauteilen. Auch hier bitte die Hinweise in der beiliegenden Textdatei beachten.

Platine vorn Mein Prototyp entstand auf einer Lochrasterplatine. An zentraler Position befindet sich der Mikrocontroller IC2, gleich darunter der Quarz. Oben links ist der Spannungsregler IC1 angeordnet und rechts daneben befindet sich der Steckverbinder K2, der hier in einer 22-poligen Version verwendet wurde (weil zufällig vorhanden).

Rechts neben K2 ist IC3 mit den dazugehörigen Kondensatoren zu sehen. Das große Teil ganz links ist die 25-polige D-Sub-Buchsenleiste mit allen Anschlüssen. Der Programmieranschluss für den Controller (K3) befindet sich unten rechts am Platinenrand.

Hier fehlen übrigens noch die beiden Jumper, da diese erst später ergänzt worden sind.

Platine hinten Die Unterseite besteht (wie zu erwarten) aus vielen Drähten. Für Masse und Stromversorgung habe ich Drahtmaterial mit einer Stärke von 0,5 mm verwendet. Für die Signalleitungen verwendete ich 0,3mm Kupferlackdraht. Die gesamte Verdrahtung ist relativ unkritisch, allerdings sollten sich die 100nF-Stützkondensatoren möglichst nah an den ICs befinden.

Der D-Sub-Steckverbinder K1 passt leider nicht in das Platinenraster von 2,54mm. Deshalb müssen die Anschlüsse passend gebogen werden. Das sieht zwar nicht sehr schön aus, aber es geht auf Lochrasterplatinen nicht anders.

Gehäuse LCD Das LCD besitzt leider keine Möglichkeit zum Verschrauben und kann deshalb nur ins Gehäuse geklemmt oder geklebt werden. Ich habe es mit einem schnell härtenden 2-Komponenten-Klebstoff befestigt. Auf keinen Fall sollten lösungsmittelhaltige Kleber wie z.B. Sekundenkleber verwendet werden, da sonst die empfindliche LCD-Oberfläche beschädigt werden kann.

Sensormodul 1 fertig Hier ist das fertige Sensormodul 1 zu sehen. Als Gehäuse habe ich ein einfaches und preiswertes Kunststoff-Gehäuse mit den Maßen 123 x 30 x 70 mm³ verwendet. Dieses besteht aus 2 Halbschalen und lässt sich recht gut bearbeiten.

SymbolSoftware

Die aktuelle Software v1.07 vom 12.06.2005 für den ATmega8 kann man komplett als Zip-Datei downloaden. Dieses Paket enthält den kommentierten Quelltext und das fertige HEX-File. Bei der Programmierung sind unbedingt die Fuse-Bits zu beachten! Lässt man diese unverändert, also im Auslieferungszustand, dann läuft der Controller mit einem internen 1-MHz-Oszillator. Das LCD arbeitet auch bei dieser Taktfrequenz, die 1-Wire-Busse und die RS-232-Ausgabe jedoch nicht, da das gesamte Timing vom verwendeten 4-MHz-Quarz abhängt. Die Fuse-Bits sollten wie in den folgenden Bildern gesetzt werden:

Fuse-Bits 1 So sieht die Einstellung im AVR-Studio für den ATmega8 aus.

Fuse-Bits 2 So sieht die Einstellung in PonyProg für den ATmega8 aus.

Hinweis für das Update von einer Version vor v1.06: Ab Version 1.06 werden zwei (vorher nicht genutzte) Portanschlüsse des Controllers als Jumper-Eingänge verwendet. Um die damit verbundenen neuen Funktionen nutzen zu können, ist eine kleine Hardware-Änderung erforderlich (Nachrüsten der Jumper). Benötigt man diese Funktionen nicht, dann kann man das Update selbstverständlich auch ohne Änderung der Hardware durchführen.

Ist das Sensormodul fertig aufgebaut und der Controller programmiert, dann empfiehlt sich zunächst ein Funktionstest. Dazu schließt man einige Sensoren an die 1-Wire-Busse an und schaltet die Stromversorgung ein. Beim Start des Sensormoduls wird zuerst der Zustand der beiden Jumper gelesen. Wenn keiner der Jumper gesteckt ist (Normalbetrieb), dann wird zunächst für 3 Sekunden die Software-Version auf dem LCD ausgegeben. Danach werden mit einem speziellen Algorithmus nacheinander alle 1-Wire-Busse nach Temperatursensoren abgesucht. Alle ermittelten Sensoren werden in einer Tabelle mit 16 Plätzen erfasst, und zwar zuerst alle Sensoren von Bus1, danach alle von Bus2 usw. bis Bus8. Die Reihenfolge der Sensoren legt das Sensormodul fest und diese ist durch die Busnummer grob vorgegeben, innerhalb eines Busses bestimmt jedoch die vom Hersteller „eingebrannte“ ROM-ID jedes Sensors die Reihenfolge und diese lässt sich auch nicht ändern. Die Zuordnung der Sensornummer zum entsprechenden Messpunkt wird später im Anzeigemodul oder in der PC-Software vorgenommen.

Damit man sehen kann, ob alle angeschlossenen Sensoren arbeiten, wird nach Abschluss der Suche die Busbelegung auf dem LCD ausgegeben. Diese besteht aus 8 Ziffern, wobei jede Ziffer einen Bus repräsentiert und die Anzahl der angeschlossenen Sensoren angibt. Werden mehr als 9 Sensoren an einem Bus gefunden, dann kommen Buchstaben ins Spiel: A bedeutet 10 usw. bis G=16. Ich nehme am besten gleich die weiter oben im Bild gezeigte Beispiel-Beschaltung und hier sollte die Busbelegung folgendermaßen aussehen: 33000200. Das bedeutet, dass an Bus1 und Bus2 jeweils 3 Sensoren gefunden wurden und an Bus6 2 Sensoren. Die Busse 3, 4, 5, 7 und 8 sind hier nicht belegt. Schließt man beispielsweise 8 Sensoren an Bus1 an, dann sieht das Ergebnis so aus: 80000000, schließt man an jeden Bus einen Sensor an, dann ergibt sich folgende Anzeige: 11111111.

Diese Busbelegung wird für 8 Sekunden angezeigt, danach werden diese Daten zusätzlich über RS-232 ausgegeben, damit man auch ohne LCD die Erkennung der Sensoren überprüfen kann (ein angeschlossener PC oder ein Anzeigemodul informiert dann über die Sensorbelegung). Nach einer kurzen Wartezeit von 4 Sekunden ist die Startprozedur abgeschlossen.

Das nun folgende Hauptprogramm fragt zyklisch alle Temperatursensoren ab, zeigt die Daten auf dem LCD an und sendet sie gleichzeitig über RS-232 zum Anzeigemodul. Die folgende Tabelle zeigt den genauen zeitlichen Verlauf eines solchen Messzyklusses:

ZeitpunktAktionAnzeige (LCD)
Sekunde 0 (Start)An allen Sensoren wird eine Temperaturmessung gestartet, der aktuelle Status der Alarmeingänge wird über RS-232 gesendet. MESSUNG
Sekunde 2Auslesen von Sensor 1 und Senden des Temperaturwertes über RS-2321: 22.5°
Sekunde 3Auslesen von Sensor 2 und Senden des Temperaturwertes über RS-2322: 21.9°
Sekunde 4Auslesen von Sensor 3 und Senden des Temperaturwertes über RS-2323: -4.2°
Sekunden 5-16Auslesen von Sensor 4-15 und Senden der Temperaturwerte über RS-232n: 23.0°
Sekunde 17Auslesen von Sensor 16 und Senden des Temperaturwertes über RS-232H: 18.3°
Sekunde 18Siehe Sekunde 0, Beginn einer neuen ProgrammschleifeMESSUNG

Die Sensoren 1-8 werden direkt mit der entsprechenden Nummer angezeigt, bei den Sensoren 9-16 erscheint ein Buchstabe: A bei Sensor 9, B bei Sensor 10, bis H bei Sensor 16. Sind weniger als 16 Sensoren angeschlossen, dann verkürzt sich der Zyklus: Nicht vorhandene Sensoren werden einfach weggelassen und der nächste Messzyklus beginnt entsprechend früher. Falls überhaupt kein Sensor gefunden wurde, dann wird auf dem LCD ständig K.SENSOR (kein Sensor) angezeigt. Fällt während des Betriebes ein Sensor aus, dann erscheint auf dem LCD anstatt des Temperaturwertes die folgende Anzeige: 5:FEHLER (hier ist Sensor 5 ausgefallen). In diesem Fall wird von dem betroffenen Sensor kein Datenpaket zum Anzeigemodul gesendet.

Im Gegensatz zu den Temperatursensoren werden die Alarmeingänge ständig abgefragt. Ändert sich der Zustand an einem Alarmeingang, dann wird nach einer Entprellzeit von 700ms diese Änderung über RS-232 ausgegeben. Auf dem LCD kann man jederzeit über die kleinen Ziffern 1, 2, 3 und 4 den aktuellen Alarmstatus der 4 Eingänge beobachten: ein aktiviertes Symbol bedeutet hier: "Kontakt geschlossen". Der aktuelle Status aller 4 Alarme wird außerdem immer zur Sekunde 0 (siehe oben stehende Tabelle) gesendet. Dies dient zur Erhöhung der Sicherheit und das Anzeigemodul erkennt am regelmäßigen Empfang dieser Daten, dass die RS-232 Verbindung zwischen den Modulen in Ordnung ist.

Noch etwas zur Datenübertragung: Diese läuft über eine einzelne Datenleitung (TXD) mit 9600 Baud, 8 Datenbits, ohne Parität und einem Stoppbit. Alle Datenpakete bestehen aus ASCII-Zeichen und werden mit <cr> (Carriage Return, ASCII 13) abgeschlossen. So bleiben die Daten überschaubar und man kann sie z.B. auf einem angeschlossenen Terminalprogramm mitlesen. Weitere Einzelheiten zur Datenübertragung und der Aufbau der verschiedenen Datenpakete sind im Kapitel Datenkommunikation zu finden.

SymbolInbetriebnahme

Wenn der Funktionstest erfolgreich war, dann kann das Sensormodul fest installiert werden. Als geeigneter Platz bietet sich die Hausverteilung an, weil hier die Wege zu den Temperatursensoren und Alarmkontakten am kürzesten sind. Damit die Beschaltung flexibel erfolgen kann, habe ich 4 Cat5-Kabel an einen 25-poligen D-Sub-Stecker angelötet (hier kommt das Sensormodul dran) und das andere Ende der Kabel auf Schlitzklemm-Verteiler aufgelegt. Hier kann man dann später die gewünschten Verbindungen zwischen der Hausverkabelung und den Eingängen des Sensormoduls herstellen.

Nun sollte man sich gut überlegen, wie man die Sensoren optimal auf die Busse aufteilt. Entsprechend der Topologie eines Busses sollte immer eine Kette gebildet werden, d.h. ein Kabel führt vom Sensormodul zu einem Sensor und von dort gegebenenfalls zu einem weiteren Sensor. Eine sternförmige Anschaltung ist meist problematisch und sollte, zumindest bei weit entfernten Sensoren, vermieden werden. Falls man insgesamt nicht mehr als 8 Sensoren verwenden möchte, dann empfiehlt es sich, diese einzeln anzuschließen. Das hat außerdem den Vorteil, dass man später die Sensoren eindeutig zuordnen kann, d.h. der an Bus1 angeschlossene Sensor bekommt die Nummer 1 zugewiesen usw.

Bei Verwendung von mehr als 8 Sensoren sollte man versuchen sinnvolle Gruppen zu bilden. So kann man z.B. alle Sensoren auf einer Etage an einem Bus zusammenschalten. Hier muss man vielleicht etwas experimentieren, um die beste Konfiguration zu ermitteln. Es gibt hier keine festgelegten Grenzen für das 1-Wire-Bussystem, ein 50m langer Bus kann funktionieren, muss aber nicht. Ein Testbetrieb mit 40m Cat5-Kabel lief ohne Probleme, während die sternförmige Zusammenschaltung zweier Sensoren (einer mit 25m und einer mit 15m Kabel) nicht funktionierte. An getrennten Bussen angeschlossen funktionierten beide Sensoren jedoch einwandfrei. Auch hat es sich bei mir bewährt, alle Kabelschirme zu erden und mit der Schaltungsmasse zu verbinden.

Bei allen Tests ist es hilfreich, wenn das Sensormodul mit dem vorgesehenen LCD ausgerüstet wurde, da hier die ermittelte Sensorbelegung direkt angezeigt wird. Bei einem Sensormodul ohne LCD nutzt man die RS-232-Schnittstelle und schließt dort entweder ein Anzeigemodul oder einen PC (bzw. Laptop oder Notebook) an. Einzelheiten für den PC-Anschluss sind im Kapitel Datenkommunikation zu finden. Und nicht vergessen: Bei jeder Änderung der Sensor-Konfiguration muss das Sensormodul neu gestartet werden, um eine erneute Sensorsuche auszulösen.

Falls trotz aller Bemühungen nicht alle Sensoren arbeiten, dann liegt das Problem mit hoher Wahrscheinlichkeit an der Kabelverbindung. Mögliche Fehlerquellen sind:

  1. Vertauschte Kabeladern - In diesem Fall liegt die Betriebsspannung verkehrt herum am Sensor. Am besten schaltet man den Sensor zunächst noch nicht an die Leitung und überprüft erst die richtige Polung. Es müssen +5V an der Datenleitung gegen Masse gemessen werden.
  2. Unterbrochene Kabeladern - Diese kann man daran erkennen, dass keine 5V am Sensor messbar sind.
  3. Kurzschluss - Kann man mittels Ohmmeter oder Durchgangsprüfer erkennen. Dazu sollte aber vorher sowohl das Sensormodul als auch der Sensor vom Kabel abgetrennt werden.
  4. Sensoren falsch angeschlossen - Richtig ist folgende Anschaltung bei DS1820, DS18S20, DS18B20 und DS1822: Anschlüsse 1 und 3 an Masse, Anschluss 2 an die Datenleitung; beim DS1920 kommen Rand und Oberseite an Masse und die Unterseite an die Datenleitung.
  5. Sensor defekt - Vermutet man einen defekten Sensor, dann sollte man diesen zum Test direkt ans Sensormodul anschließen (am besten einzeln an einen Bus). Da muss er auf jeden Fall funktionieren.

Bei hartnäckigen Problemfällen sollte man die Spannung am Sensor kontrollieren, diese muss +5V am DQ-Anschluss betragen. Im ungünstigsten Fall ist das Kabel zu lang oder nicht geeignet. Hier kann man als letzten Ausweg versuchen, mehrere Kabeladern parallel zu schalten.

Ist die optimale Sensor-Konfiguration erreicht, d.h. alle angeschlossenen Sensoren haben sich gemeldet und die Sensorbelegung entspricht der Realität, dann müssen alle Sensoren richtig zugeordnet werden. Wie weiter oben schon geschrieben wurde, sucht das Sensormodul jeden Bus mit einem bestimmten Algorithmus ab, wobei die Reihenfolge der an einem Bus gefundenen Sensoren durch ihre ROM-ID festgelegt wird. Bei der beispielhaften Sensorbelegung 33000200 bekommen die Sensoren am Bus1 die Nummer 1, 2 und 3 zugewiesen, aber welcher ist nun Nummer 1? Man kann das zwar mit der Kenntnis der ROM-ID und des Suchalgorithmus feststellen, aber es geht auch ohne weitere Hilfsmittel: Man erwärmt einfach einen beliebigen Sensor mit den Fingern und schaut, welcher Wert sich auf dem Display ändert (hier ist vielleicht eine zweite Person hilfreich). Es kann etwas dauern, bis man die Änderung sieht, denn bei 16 angeschlossenen Sensoren dauert ein kompletter Messzyklus 18s.

Diese Methode hat leider auch Grenzen: Wenn man mehr als 8 Sensoren nutzt und für den Zuordnungstest das Anzeigemodul 1 verwendet, dann kann man zunächst nur die Sensoren 1-8 auf diese Weise ermitteln. Um auch die restlichen Sensoren eindeutig zuordnen zu können, muss man das Anzeigemodul 1 umprogrammieren, so dass es die Daten der Sensoren 9-16 anzeigt. Für diesen Zweck habe ich die Datei anzeigem-test-9-16.eep erstellt (im Software-Paket des Anzeigemoduls 1 enthalten) und wenn man diese als EEPROM-Datei in den Controller des Anzeigemoduls 1 programmiert, dann wird dieses fortan die Messwerte der Sensoren 9-16 anzeigen.

Wichtig: Man sollte sich eine Liste mit allen Temperatursensoren anfertigen und genau notieren, an welchem Bus sie angeschlossen sind, welche Nummer sie vom Sensormodul zugewiesen bekommen haben und wo sie installiert sind. Diese Liste wird später für die Konfiguration des Anzeigemoduls gebraucht und sie dürfte bei Problemen sehr hilfreich sein. Gleiches gilt übrigens auch für die Alarm-Eingänge.

SymbolBedienung

Ich habe das Messsystem so entworfen, dass alle Einstellungen am Anzeigemodul (bzw. einer PC-Software) erfolgen und praktisch gar nichts am Sensormodul eingestellt werden muss, da dieses unter Umständen an einem schlecht zugänglichen Ort installiert sein kann. Als einzige Ausnahme gibt es 2 Jumper, über die spezielle Betriebsarten des Sensormoduls aktiviert werden können:

Jumper J1 - Speichermodus: Es kann passieren, dass sich im laufenden Betrieb ein Sensor nicht mehr meldet, weil vielleicht irgendwo ein Draht abgerissen ist. Das kann man am Sensormodul durch die Fehler-Anzeige erkennen und auch das Anzeigemodul registriert den Sensorausfall. Fällt in dieser Situation die Stromversorgung aus, dann wird, wenn das System wieder anläuft, eine neue Sensorsuche gestartet. Hier wird natürlich der ausgefallene Sensor nicht gefunden und das Sensormodul arbeitet so, als hätte es den Sensor nie gegeben. Das bedeutet: Alle Sensoren, die in der Tabelle einen Platz hinter dem ausgefallenen Sensor hatten, rücken auf und bekommen eine neue Nummer zugeordnet. Ein Beispiel: Sind 6 Sensoren im System und fällt Nummer 4 aus, dann arbeitet das System nach einem Neustart nur noch mit 5 Sensoren, wobei der Sensor 5 als 4 und der Sensor 6 als 5 erscheint. Die Folge ist: das Anzeigemodul empfängt völlig falsche Daten. Um das zu verhindern, habe ich den Speichermodus implementiert:

Dieser wird durch Setzen des Jumpers J1 aktiviert. Beim Einschalten des Sensormoduls laufen im Prinzip die gleichen Vorgänge wie im Normalbetrieb ab. Zusätzlich wird jetzt die Tabelle mit den ermittelten Sensor-Daten ins EEPROM kopiert und ein Kennzeichenbyte gesetzt. Danach läuft das normale Mess-Programm ab. Soll nun diese Konfiguration dauerhaft verwendet werden, dann schaltet man das Sensormodul wieder ab und entfernt den Jumper 1 wieder. Ab jetzt wird bei jedem Neustart das Kennzeichen im EEPROM geprüft und falls vorhanden, die Sensorsuche übersprungen und stattdessen die Sensor-Tabelle aus dem EEPROM geladen. Somit ist sichergestellt, dass sich die Anzahl und Reihenfolge der Sensoren nicht mehr verändert. Um auf den aktivierten Speichermodus hinzuweisen, erscheint bei gestecktem Jumper 1 oder nach dem Laden der Sensor-Tabelle aus dem EEPROM das Stereo-Symbol auf dem LCD.

Besteht irgendwann der Wunsch, die Konfiguration zu ändern, dann braucht man nur den Jumper J1 erneut zu stecken und beim nächsten Neustart wird wieder eine Sensorsuche durchgeführt und die neue Konfiguration dauerhaft im EEPROM gespeichert. Eines ist jedoch nicht möglich: die Rückkehr zum Normalmodus. Diesen kann man nur mittels Programmiergerät durch Löschen des Kennzeichenbytes auf Adresse 1 wieder herstellen - oder man lässt einfach J1 gesteckt.

Jumper J2 - Spezialmodus: Dieser Modus unterscheidet sich vom Normalmodus durch einen stark verkürzten Messzyklus und der sieht folgendermaßen aus:

ZeitpunktAktionAnzeige (LCD)
Sekunde 0 (Start)An allen Sensoren wird eine Temperaturmessung gestartet, der aktuelle Status der Alarmeingänge wird über RS-232 gesendet. MESSUNG
Sekunde 1.2Auslesen aller Sensoren und Senden aller Temperaturwerte ohne weitere Pause über RS-232SENDEN
Sekunde 2Siehe Sekunde 0, Beginn einer neuen ProgrammschleifeMESSUNG

Gleich vorweg: Dieser Modus sollte wirklich nur dann verwendet werden, wenn man unbedingt eine schnelle Temperaturerfassung z.B. für eine Heizungssteuerung benötigt. Für eine „normale“ Temperaturanzeige mittels Anzeigemodul ist der Spezialmodus nicht geeignet, da nicht alle Anzeigemodule in der Lage sind, die relativ großen Datenmengen zu verarbeiten. Ansonsten wird der aktivierte Spezialmodus durch 3 Feldstärke-Balken auf dem LCD angezeigt. Es ist auch möglich, den Speicher- und Spezialmodus zu kombinieren, da diese Funktionen unabhängig voneinander arbeiten.


Startseite - Seitenanfang

Allgemeines - Projekt-Überblick - Links, Software - Neuigkeiten - „Klassiker“ - Galerie - Impressum

AVR-Programmierung - Multifunktionsuhr - Matrixuhr - Tischuhr - Wohnraumuhr - Wohnraumuhr 2 - Wecker - LCD-Wecker - Zahnputzuhr - BigBen-Türgong - Fahrtregler - EPROM-Programmiergerät - Temperaturmesssystem - USB-RS232 Interface - Weihnachtsstern - Kleine Projekte