Projekt: Temperatur-Messsystem - Anzeigemodul 3


Kapitel 1: Überblick über das System
Kapitel 2: Sensormodul 1
Kapitel 3: Sensormodul 2/3
Kapitel 4: Anzeigemodul 1
Kapitel 5: Anzeigemodul 2
Kapitel 6: Anzeigemodul 3
Kapitel 7: Datenkommunikation
Kapitel 8: Software "TAnz"
Kapitel 9: Software "AnzKom"


Schaltungsvariante 1

Das Anzeigemodul 3 wurde entwickelt, um zwei Temperaturwerte übersichtlich anzuzeigen. Es arbeitet im Gegensatz zu den anderen Anzeigemodulen mit LED-Anzeigen und ist relativ einfach aufgebaut. Auf Bedienelemente wurde (bis auf einen versteckten Taster zur Konfiguration) verzichtet und es ist auch keine Überwachung der Temperaturwerte und Alarme vorgesehen. Es lässt sich aber so konfigurieren, dass anstehende Alarme angezeigt werden. Das Anzeigemodul 3 kann in 2 Varianten aufgebaut werden: Die oben angezeigte Variante 1 ist die einfache Version für kleine LED-Anzeigeelemente. Diese ist für alle Siebensegment-Anzeigen geeignet, die intern aus einzelnen LEDs bestehen und eine gemeinsame Anode haben. Die weiter unten beschriebene Variante 2 ist mit zusätzlichen Treibern ausgestattet und ermöglicht die Ansteuerung von großen Anzeigen, die intern aus mehreren LEDs bestehen. Im Kern sind beide Varianten identisch und es gibt auch nur eine Software für beide Schaltungen. Beide Varianten lassen sich sogar noch vereinfachen: Falls nur ein Temperaturwert benötigt wird, dann kann die untere LED-Zeile mit den dazugehörigen Vorwiderständen und eventuellen Treibern einfach weggelassen werden.

Zur Schaltung: Als zentrales Bauteil wird ein Mikrocontroller ATmega16 (IC1) verwendet, der mit einer Taktfrequenz von 4 MHz arbeitet. Der größte Teil der Portanschlüsse wird hier für die LED-Anzeige benötigt. Die Ansteuerung der Anzeige-Elemente erfolgt im Multiplex-Modus, wobei hier eine spezielle Variante zum Einsatz kommt. Üblicherweise werden bei einer 8-stelligen Anzeige die Segmente aller Anzeigen parallel geschaltet und über die Anoden erfolgt die Auswahl einer einzelnen Anzeigestelle. In dieser Schaltung funktioniert es etwas anders, hier werden zwei Segmentgruppen gebildet (Leitungen A1-P1 und A2-P2) und die Anoden zweier Anzeigestellen gleichzeitig ausgewählt. Ich habe mich für diese Variante entschieden, damit die Anzeige ohne Änderung der Software sowohl einzeilig als auch zweizeilig betrieben werden kann. Die Controller-Ausgänge PB4 sowie PD1-PD7 steuern über die Vorwiderstände R5-R12 direkt die Segmente der oberen Anzeigezeile an, für die untere Zeile sind die Ausgänge PC0-PC7 und die Widerstände R13-R20 zuständig. Die Ausgänge PB0-PB3 steuern jeweils eine Treiberstufe an (R1/T1, R2/T2 usw.), deren Ausgänge wiederum schalten die Anoden von jeweils 2 Anzeigeelementen.

Der Schaltungsteil mit T5, R22, R23 und C6 hat indirekt auch mit der Anzeige zu tun. Hier wird eine von der Umgebungshelligkeit abhängige Spannung zwischen 0V und +5V erzeugt und dem Controller-Eingang PA7 zugeführt (0V bei Dunkelheit, +5V bei voller Helligkeit). Der Controller ermittelt den Spannungswert und steuert damit die Helligkeit der Multiplex-Anzeige. Das funktioniert so: Die Anzeige wird zyklisch mit einer Frequenz von 200Hz angesteuert, das ergibt eine Zykluszeit von 5ms. Diese Zeit verteilt sich auf 4 Stellen, somit ist jede Stelle für 1,25ms aktiv. Die Anzeigestellen werden aber grundsätzlich nicht in der gesamten Zeit aktiviert, sondern je nach ermittelter Umgebungshelligkeit in einem Bereich zwischen 32µs (bei Dunkelheit) und dem Maximum von 1,25ms (bei voller Helligkeit). Somit gleicht sich die LED-Helligkeit ungefähr an die Umgebung an. Mit R23 lässt sich die Empfindlichkeit in gewissen Grenzen einstellen.

Der untere Teil der Schaltung besteht aus einem einfachen Pegelwandler für die empfangenen RS-232 Signale (R24, D9, T6) und einem Schaltregler für eine stabile Versorgung der Schaltung mit +5V (IC2, D10, D11, L1, C7-C9). Der Schaltregler wurde in einer Standard-Applikation aufgebaut und hat sich bereits im Anzeigemodul 2 bewährt. Grundsätzlich kann auch ein klassischer Spannungsregler 7805 verwendet werden, allerdings benötigt dieser einen recht großen Kühlkörper. Der hier verwendete LM2575 kommt ohne Kühlung aus, auch bei der maximalen Eingangspannung von 20V. Die Stromaufnahme der Schaltung beträgt übrigens auf der 5V-Leitung 175mA, wenn alle Segmente mit voller Helligkeit leuchten. Bei einer Versorgung mit 12V beträgt die Stromaufnahme ca. 100mA.

Der Taster S1 wird für die Konfiguration benötigt. Im normalen Betrieb hat er keine Funktion, somit kann er irgendwo auf der Platine untergebracht werden und muss nicht von außen zugänglich sein. Die Funktion des Tasters wird später im Abschnitt Bedienung beschrieben. Mit dem Jumper J1 kann man die LED-Ausgänge invertieren. Bleibt J1 offen (so wie in der Schaltung dargestellt), dann sind die Segment- und Stellenausgänge Low-aktiv, sie haben also im Ruhezustand High-Pegel und werden bei Aktivierung einer LED auf Low geschaltet. Wenn J1 gesteckt wird, dann werden die Ausgänge High-aktiv, schalten also bei LED-Aktivierung auf High-Pegel.

Die Möglichkeit der Invertierung kann man nutzen, um z.B. Anzeigen mit gemeinsamer Kathode anzuschließen. In diesem Fall müssen die Stellentreiber wie im nebenstehenden Bild aufgebaut werden. Die restliche Schaltung bleibt unverändert - allerdings muss J1 jetzt gesteckt werden.

J1 wurde übrigens nur deshalb in die Schaltung eingezeichnet, um die Invertierungsmöglichkeit gut sichtbar zu machen. In der Praxis wird man sich vorher für die geeignete Schaltungsvariante entscheiden und abhängig davon den Controller-Eingang PA1 offen lassen (J1 offen) oder fest mit der Masse verbinden (J1 geschlossen).

Die erforderlichen Bauelemente für die Schaltungsvariante 1 sind in dieser Stückliste zu finden.

Noch ein grundsätzlicher Hinweis zur Dimensionierung der Vorwiderstände R5-R20: Diese müssen wegen des Multiplexbetriebes der Anzeige für den 4-fachen Strom bemessen werden. In der vorliegenden Schaltung benötigen die LEDs 3mA Dauerstrom, somit wurden die Widerstände für 12mA dimensioniert. Der Controller kann maximal 40mA treiben, so dass LEDs mit einem Dauerstrom von bis zu 10mA verwendet werden können. Der Controller arbeitet dann allerdings arg am Limit und man sollte in so einem Fall lieber die Schaltungsvariante 2 wählen.

Schaltungsvariante 2

Diese Schaltungsvariante unterscheidet sich von der Variante 1 durch zusätzliche Treiber-ICs und eine veränderte Stromversorgung. Hier können Anzeigen verwendet werden, die intern aus mehreren in Reihe geschalteten LEDs bestehen, was auf viele Großanzeigen wie z.B. SA23 oder SA40 zutrifft. Diese benötigen eine höhere Spannung und meist auch mehr Strom, somit können die Anzeigen nicht direkt an den Mikrocontroller angeschlossen werden und erfordern zusätzliche Treiberstufen. Diese Funktion übernimmt hier IC3 für die Segmente der oberen Zeile und IC4 für die untere Zeile. Beide ICs haben jeweils 8 Treiberstufen und schalten bei einem High-Signal am Eingang den jeweiligen Ausgang nach Masse durch. Für die Anoden ist IC5 zuständig, dieses enthält ebenfalls 8 Treiberstufen und wird auch bei einem High-Signal am Eingang aktiv, schaltet aber den Ausgang zur Betriebsspannung durch. Damit die Treiber mit den richtigen Signalen angesteuert werden, ist J1 zu schließen bzw. der Controller-Anschluss PA1 an Masse zu legen.

Grundsätzlich sollte es auch möglich sein, Anzeigen mit gemeinsamer Kathode anzusteuern. Hier sind dann UDN2981A für IC3 und IC4 sowie ein ULN2803 für IC5 erforderlich, wobei die unterschiedliche Anschlussbelegung für VCC und GND beachtet werden muss. Auch hier muss J1 geschlossen sein bzw. PA1 an Masse liegen. Diese Option habe ich allerdings nicht getestet.

Die +5V werden in dieser Schaltungsvariante nur noch für den Controller benötigt, deshalb reicht hier ein 7805 aus, der auch nicht gekühlt werden muss. Dafür muss aber am Eingang eine stabilisierte Spannung von +12V zugeführt werden. Hier eignet sich am besten ein Stecker-Schaltnetzteil mit 12V/1A.

Alle für das Anzeigemodul benötigten Bauelemente sind in dieser Stückliste zu finden.

Auch hier muss bei der Dimensionierung der Vorwiderstände R5-R20 beachtet werden, dass für den Multiplexbetrieb der 4-fache Strom benötigt wird. In der abgebildeten Schaltungsvariante 2 wurde von 8mA Dauerstrom ausgegangen und die Widerstände somit für ungefähr 32mA dimensioniert. Bei den hier verwendeten SA40 muss noch beachtet werden, dass der Dezimalpunkt im Gegensatz zu den Segmenten nur aus zwei LEDs besteht. Somit ergibt sich ein abweichender Wert für R12 und R20.

Hardware

Vom freundlichen Bastler-Kollegen Bernd Wallner wurde ein Platinenlayout für ein Kombi-Modul entwickelt, welches aus einem Sensormodul 1 und einem Anzeigemodul 3 besteht. Das Paket enthält den Schaltplan, das Layout, den Bestückungsplan und eine Stückliste in Form einer PDF-Datei.

Ich habe das Anzeigemodul 3 nur in der Schaltungsvariante 1 komplett realisiert. So zeigen die folgenden Bilder auch nur die kleine Variante, welche auf einer Lochrasterplatine aufgebaut wurde.

Den größten Teil der Platinenfläche nehmen hier die Anzeigen ein. Rechts davon wurden Controller, Treiber-Transistoren und einige der Widerstände und Kondensatoren platziert. Oberhalb des Controllers ist der Programmieranschluss (ISP) K2 zu sehen, unterhalb der Jumper J1, welcher weggelassen werden kann und hier nur zu Testzwecken dient. Mittig zwischen Anzeige und Controller befindet sich der Fototransistor T5. Dieser wurde etwas erhöht eingelötet, damit er später über ein Loch in der Gehäusefront das Umgebungslicht messen kann.

Auf der linken Seite sind einige Bauteile des Spannungsreglers zu sehen. Ganz unten hat der Taster S1 noch einen Platz gefunden. Dieser Taster wird, wie bereits erwähnt, nur für die Konfiguration benötigt und muss deshalb nicht von außen zugänglich sein.

Dieses Bild zeigt die Platine von unten. Auf Grund der begrenzten Platinenfläche mussten einige Bauteile auf die Leiterseite verlegt werden. Das betrifft hier den Kondensator C9 auf der linken Seite, die LED-Vorwiderstände R5-R20 im mittleren Bereich sowie den Steckverbinder K1 und das Poti R23 am oberen Rand. Diese Anordnung erschwert natürlich die Verdrahtung und auch den Abgleich der Helligkeitssteuerung, das Gehäuse ließ hier aber keine andere Möglichkeit zu.

Kurze Verbindungen sowie alle Masse- und Stromversorgungsleitungen wurden hier mit 0,5mm Draht hergestellt. Für alle anderen Verbindungen kam 0,3mm Kupferlackdraht zum Einsatz.

Ich habe hier wieder ein Halbschalen-Gehäuse mit den Maßen 123mm x 70mm x 30mm verwendet, welches sich bereits beim Anzeigemodul 1 und den Sensormodulen bewährt hat. Damit die Platine später in der richtigen Höhe sitzt, habe ich in die Unterschale 3 Distanzhülsen mit einer Länge von 15mm eingeklebt. Diese sollten so positioniert werden, dass die Platine flach aufliegt und keine Lötstellen oder Drähte im Weg sind.

Weiterhin sind hier schon jede Menge Bohrungen für die Wandbefestigung und auch Kabeldurchführungen vorhanden - das Gehäuse stammt von einem ausgemusterten Gerät und wurde hier wieder verwendet.

Die Oberschale enthält 2 große Ausschnitte für die beiden Displayzeilen und ein Loch für den Fototransistor.

Hier ist das fertig montierte Modul zu sehen. Die Platine klemmt jetzt praktisch zwischen den Distanzhülsen der Unterschale und der Oberschale und benötigt keine weitere Befestigung. Vor der Anzeige befindet sich eine rote Folie, die den Kontrast verbessert, aber leider auch etwas spiegelt. Besser geeignet wäre hier ein Stück rotes Plexiglas.

Software

Die Software v1.00 vom 22.01.2008 für den ATmega16 ist für alle Schaltungsvarianten gedacht und enthält den kommentierten Assembler-Quelltext und das fertig compilierte HEX-File. Bei der Programmierung sind unbedingt die Fuse-Bits zu beachten, diese sollten wie in den folgenden Bildern gesetzt sein:

So sieht die Einstellung im AVR-Studio für den ATmega16 des Anzeigemoduls 3 aus.

So sieht die Einstellung in PonyProg für den ATmega16 des Anzeigemoduls 3 aus.

Nach der Programmierung der Software ist das Anzeigemodul 3 bereits voll funktionstüchtig. Es liest beim Start die gespeicherte Sensor- und Alarmkonfiguration aus dem EEPROM-Bereich und zeigt auf der ersten Zeile für 3 Sekunden die Software-Version an. Auf der zweiten Zeile erscheint eine Reihe aus Minuszeichen und auch die erste Zeile zeigt nach Ablauf der 3 Sekunden Minuszeichen an. In diesem Zustand wartet das Modul auf Daten vom Sensormodul und sobald ein passender Messwert empfangen wird, erscheint dieser auf der Anzeige. Im Moment sind allerdings die beiden Anzeigezeilen auf den Sensor 16 eingestellt, was am bisher noch leeren EEPROM liegt (Speicherinhalt 0xFF). Auch können ungewollte Alarmmeldungen erscheinen, deshalb kommt jetzt die Konfiguration an die Reihe.

Bedienung

Bevor es mit der Konfiguration losgeht, möchte ich auf eine Testfunktion hinweisen, die bei der Inbetriebnahme des Moduls hilfreich sein kann. Hält man beim Einschalten der Betriebsspannung den Taster gedrückt, dann wird ein LED-Test durchgeführt. Dabei werden bei voller Helligkeit auf jeder Anzeigestelle die Ziffern von 1 bis 8 hochgezählt und danach zusätzlich noch der Dezimalpunkt eingeschaltet. Begonnen wird bei der Anzeigestelle D1 und die anderen Stellen kommen nacheinander hinzu, bis schließlich alle Segmente leuchten. Dieser Zustand hält für 5 Sekunden an, danach wird das Modul neu gestartet und beginnt mit seiner normalen Arbeit. Mit diesem Test kann man feststellen, ob alle Segmente und Stellen richtig funktionieren und man sieht dabei auch, ob die Stromversorgung ausreichend dimensioniert ist.

Zur Bedienung: Beim Anzeigmodul 3 beschränkt sich diese auf eine einmalige Konfiguration (die aber jederzeit wiederholt werden kann). Diese erfolgt über den Taster und die obere Anzeigezeile D1-D4. Somit ist gewährleistet, dass auch ein einzeiliges Anzeigemodul problemlos konfiguriert werden kann. Im laufenden Betrieb und auch während der Konfiguration zeigt die untere Zeile ständig den Temperaturwert des zugeordneten Sensors an. In der folgenden Beschreibung wird deshalb nur die obere Zeile dargestellt.

Ein beliebig langer Tastendruck führt in die Konfigurationsmenüs. Innerhalb dieser Menüs werden zwei verschiedene Taster-Betätigungen unterschieden:

Langer Tastendruck (> 1 Sekunde)Ändern der aktuellen Einstellung.
Kurzer Tastendruck (< 1 Sekunde)Weiter zum nächsten Konfigurationsmenü bzw. Ende der Konfiguration.

Insgesamt gibt es 3 Konfigurationsmenüs, die nacheinander aufgerufen werden:

AnzeigeEinstellung
S1.16 (die rechten beiden Stellen blinken)Einstellung der Sensornummer (1-16) für die obere Zeile.
S2.16 (die rechten beiden Stellen blinken)Einstellung der Sensornummer (1-16) für die untere Zeile.
AL. 1 (die rechte Stelle blinkt)Alarmanzeige aus- oder einschalten (0/1).

Die oben stehende Tabelle zeigt die Einstellungen an, die bei der ersten Inbetriebnahme wirksam sind. Diese ergeben sich aus den Werten, die aus dem zurzeit noch leeren EEPROM gelesen werden. Wird später erneut die Konfiguration aufgerufen, dann erscheinen selbstverständlich die eingegebenen Daten in der Anzeige, so dass man jederzeit die richtige Einstellung kontrollieren kann.

Die Konfiguration der gewünschten Einstellung erfolgt so: Aus der normalen Temperaturanzeige gelangt man mit einem beliebig langen Tastendruck in das erste Konfigurationsmenü und die Anzeige S1.16 erscheint. Mit S1 ist hier die Sensornummer für die obere Zeile gemeint und der gerade aktuelle Wert (in diesem Fall 16) blinkt. Mit einem langen Tastendruck wird auf die nächste mögliche Sensornummer weitergeschaltet (in diesem Fall wird wieder auf 1 gesprungen) und dieser Vorgang ist so lange zu wiederholen bis die gewünschte Sensornummer blinkt. Danach wird mit einem kurzen Tastendruck in das nächste Konfigurationsmenü gewechselt und es erscheint die Anzeige S2.16. Hier kann auf die gleiche Weise die Sensornummer für die untere Zeile eingestellt werden. Falls das Anzeigemodul nur mit einer Zeile aufgebaut wurde, dann kann man dieses Menü ignorieren und mit einem kurzen Tastendruck zum Alarmmenü wechseln.

Die Anzeige AL. 1 steht für die Alarmkonfiguration und die blinkende 1 bedeutet, dass die Alarmanzeige eingeschaltet ist. Mit einem langen Tastendruck lässt sich die Alarmanzeige aus und auch wieder einschalten. Im ausgeschalteten Zustand erscheint die Anzeige AL. 0 (die 0 blinkt). Grundsätzlich gibt es beim Einschalten der Alarme eine Besonderheit: Es wird der aktuelle Zustand der 4 Alarme gespeichert und davon ausgegangen, dass alle Alarme inaktiv sind. Das funktioniert natürlich nur dann, wenn das Anzeigemodul 3 Daten empfängt und gerade kein Alarm aktiv ist. Wird später eine Alarmmeldung erkannt, die vom gespeicherten Zustand abweicht, dann wird der Alarm entsprechend signalisiert. Sollten später Änderungen an der Alarmkonfiguration erforderlich sein, dann genügt es, die Alarmanzeige aus- und wieder einzuschalten. Es wird dann der neue Zustand übernommen. Ist die Alarmkonfiguration abgeschlossen, dann führt ein kurzer Tastendruck wieder zurück in die normale Temperaturanzeige.

Für alle Konfigurations-Menüs gilt: Erfolgt eine Minute lang keine Taster-Betätigung, dann wird der Konfigurations-Modus beendet und wieder zur normalen Temperaturanzeige zurückgekehrt.

Die obere Zeile der Anzeige kann in bestimmten Situationen noch andere Daten oder Zustände anzeigen:

AnzeigeBeschreibung
FEHL Fehler - kein Datenempfang. Diese Anzeige erscheint eine Minute nach dem Einschalten des Moduls, wenn keine Daten empfangen wurden. Im laufenden Betrieb wird diese Meldung 20 Sekunden nach Empfang des letzten Datenpaketes angezeigt.
- - - - Es wurde noch kein Temperaturwert empfangen. Im laufenden Betrieb erscheint diese Anzeige, wenn der gewählte Sensor länger als eine Minute keine Daten mehr sendet (Sensorausfall). Diese Anzeige kann auch auf der unteren Zeile erscheinen.
3300. Es wurde eine Sensorbelegung empfangen. Die 8-stellige Sensorbelegung wird hier in 2 Teilen ausgegeben, damit sie auch auf einzeiligen Anzeigemodulen abgelesen werden kann. Der Dezimalpunkt signalisiert, dass es sich hier um den ersten (linken) Teil der Sensorbelegung handelt. Die Anzeige erscheint für 4 Sekunden, danach wird der Rest der Sensorbelegung angezeigt.
0200 Es wurde eine Sensorbelegung empfangen und hier erscheint der zweite Teil. In diesem Beispiel ergibt sich zusammen mit den 4 Stellen weiter oben die Sensorbelegung 33000200. Auch diese Anzeige erscheint für 4 Sekunden, danach wird wieder zur normalen Temperaturanzeige zurückgekehrt.
AL-1 Alarm 1 ist aktiv. Diese Anzeige wechselt alle 2 Sekunden zwischen dieser Alarmanzeige und der Temperaturanzeige. Falls mehrere Alarme aktiv sind, dann erscheint nacheinander jeder Alarm für 2 Sekunden und anschließend ebenfalls für 2 Sekunden die Temperaturanzeige. Diese Meldung wird nur dann ausgegeben, wenn die Alarmanzeige im Konfigurationsmenü eingeschaltet wurde.
AL-2 Alarm 2 ist aktiv. Hier gilt das gleiche wie bei Alarm 1.
AL-3 Alarm 3 ist aktiv. Hier gilt das gleiche wie bei Alarm 1.
AL-4 Alarm 4 ist aktiv. Hier gilt das gleiche wie bei Alarm 1.

Eine Möglichkeit zum Quittieren von Alarmen oder Fehlermeldungen ist nicht vorgesehen. Ausfälle und Alarme werden solange signalisiert, bis die Fehlerquelle beseitigt ist bzw. der Alarm wieder verschwindet. In Extremfällen kann es passieren, dass nicht alle Informationen angezeigt werden können, hier werden dann bestimmte Daten bevorzugt. So unterdrückt z.B. eine empfangene Sensorbelegung die Alarmanzeige für 8 Sekunden. Auch der Ausfall des Datenempfangs unterdrückt die Alarmanzeige. Die Konfigurations-Menüs wiederum haben Vorrang vor allen anderen Anzeigen, damit man ungestört alle Eingaben erledigen kann.


Kapitel 1: Überblick über das System
Kapitel 2: Sensormodul 1
Kapitel 3: Sensormodul 2/3
Kapitel 4: Anzeigemodul 1
Kapitel 5: Anzeigemodul 2
Kapitel 6: Anzeigemodul 3
Kapitel 7: Datenkommunikation
Kapitel 8: Software "TAnz"
Kapitel 9: Software "AnzKom"


Allgemeines - Projekt-Überblick - Links, Software - Neuigkeiten - "Klassiker" - Galerie - Impressum
AVR-Programmierung - AVR-Bootloader - Multifunktionsuhr - Tischuhr - Wohnraumuhr - Wecker - Zahnputzuhr - BigBen-Türgong - Fahrtregler - EPROM-Programmiergerät - Temperaturmesssystem - USB-RS232 Interface - Kleine Projekte