|
[Feb. 2016] Eine Zeitschaltuhr mit extra Funktionen
Die Steuerzentrale für eine Außen- und Gartenbeleuchtung.
Funktionen
Das "Hirn" bildet ein PIC16F1827 Mikrocontroller, welcher neben allen möglichen "gewöhnlichen" Funktionen eine Unterstützung von (kapazitiv) berührungsempfindlichen Tasten mitbringt – von Microchip® mTouch™ genannt. So lassen sich Bedienelemente in einem geschlossenen Gehäuse unterbringen, gut für Installationen im Keller oder Garage.
Die Anzeige ist ein LC-Display mit zwei Zeilen (je 8 Zeichen). Über dies lassen sich alle Zustände und Einstellungen aufrufen. Die Hauptanzeige wird nach einiger Zeit ohne Tasteneingabe eingeblendet. Es lässt sich neben der aktuellen Uhrzeit auch Zustand der Relaisausgänge und des Dämmerungssensors ablesen. Bsp.:
Schaltzustand Relaisausgang: |
L'a |
L'b |
|
Helligkeitssensor: H = hell, D = dunkel |
|||
Aktuelle Uhrzeit |
DCF77 Empfang (?) |
Funkuhr
Die Uhrzeit wird automatisch über das DCF77 Funksignal gestellt. Wurde
das Funksignal zweimal in Folge erfolgreich empfangen, so erscheint ^
im Display. Nach dem ersten Einschalten oder wenn der Funkempfang für mehr
als 4 Stunden nicht möglich war, erscheint ? in der Hauptanzeige.
In diesem Fall wechseln alle Relaisausgänge auf Aus.
Zeitschaltuhr
Die Funktion der Zeitschaltuhr ermöglicht es, einen oder auch
beide Relaisausgänge, zu einem bestimmten Zeitpunkt, ein- oder auszuschalten.
Jeder der 39 Speicherplätze kann frei den Relaisausgängen zugeordnet
werden. Der minimale Abstand der Schaltzeiten sind vier Minuten.
Dämmerungs-/Helligkeitssensor
Der Helligkeitssensor schaltet den ihm zugeordnete Relaisausgang bei unterschreiten
des eingestellten Schwellwerts Ein, bei überschreiten wieder Aus. Die Messung
der Helligkeit erfolgt alle 10 Sekunden, der Abgleich mit dem abgespeicherten
Schwellwert erfolgt jedoch erst nach Ablauf der eingestellten Verzögerungszeit.
Eingang
Sobald am Eingangsanschluss eine 230V Wechselspannung anliegt, wird der dieser
Funktion zugeordnete Relaisausgang eingeschaltet. Fällt die Spannung am
Eingang wieder weg, so wird der Relaisausgang wieder ausgeschaltet. Der Schaltvorgang
an dem Relaisausgang erfolgt nur bei einer Zustandsänderung.
Der Mechanische Teil...
Die frisch Gefräste Platinenunterseite
(links) und komplett bestückt im rechten Bild. Der PIC sitzt in einem
6x6 mm "großen" QFN
Gehäuse, mit 28 Pins (Pitch: 0,65 mm). Die fehlenden abstehenden
Pins machen das Verlöten nicht einfacher, aber mir Geduld und einer
0,4 mm Lötspitze geht’s. |
||||
Das DCF77 Modul stammt von Pollin. Die Erfahrungsberichte in einschlägigen
Foren waren durchwachsen, der Empfang des Signals ist soweit in Ordnung
und mit ein paar Prüfungen in der Software auch verlässlich.
Die Bedienung erfolgt über drei „Touch“-flächen (mTouch™). Ursprünglich nur über Drahtspiralen, mit einer Metallfläche funktionierte es aber dann doch deutlich zuverlässiger. |
||||
Für die 230V Anschlüsse, Sicherungen und Relaisausgänge wurde eine separate Platine in das Gehäuse eingebaut. Alle elektrischen Anschlüsse sind über Schraubklemmen erreichbar, ohne das dafür das Gehäuse geöffnet werden müsste. (Außer bei einem Austausch der Sicherungen – welche noch eine Kunststoffabdeckung erhalten haben!) Die Steuerplatine sitzt direkt unter dem Gehäusedeckel und wird mit zwei Kunststoffstäben in Position gehalten. (Bild rechts) |
||||
Fertig mit Folie beklebt erkennt man die
Funktion der drei Tastflächen und die Bezeichnung der beiden Relaisausgänge
(L' a und b) – besonders dieser Text ist im ersten Folienplotversuch
mit dem HP7550A nicht so gut gelungen und erforderte Nacharbeit. |
Anfänglich schien der Programmspeicher von 4K "Words" mehr als ausreichend groß, doch mit den nötigen Funktionen und dem LCD Menü schmolz der freie Speicher dahin, so das an allen Ecken und Enden gespart werden musste. Hier aber zunächst die Aufgaben des PICs:
Programmablauf
Der PIC16F1827 läuft nur mit 8MHz, da in dieser Chip Revision ein paar Bugs steckten und bei größeren Taktraten der ADC nicht mehr richtig funktioniert. (Das Löschen des GO_nDONE Flags erfolgt nicht mehr zuverlässig.)
Auf ein paar Dinge im Quelltext wäre hinzuweisen: Der Code für die
DCF77 Signalauswertung (Messung der Bitlänge, BCD Umwandlung, etc.) stammt,
in etwas abgeänderter Form, aus dem Lauer-Sommerabend-Detektor von Fingers
elektrische Welt.
Wie erwähnt war der Platz für den Programmcode doch begrenzt und ein
paar nicht benötigte Funktionen mussten weichen, bzw. sind per Direktiven
abschaltbar:
#define LCD_REDUCED_CODE_SIZE
#define REDUCED_CODE_SIZE
Das LCD Menü kostet am meisten Speicher und hatte auch für das meiste
Kopfzerbrechen gesorgt.
Realisiert wurde es mit einem Struct, welches neben der Menüebene und dem
statischen LCD Text, Zeiger auf die nötigen Tastenfunktionen und einer
Menüfunktion (welche auch dynamischen Text anzeigt) enthält. Der Struct
ist als "const" Array definiert, somit im Programmspeicher abgelegt
und im RAM wird lediglich eine Variable für den aktuellen Index des Arrays
benötigt.
Ob dieses gesamte Konstrukt die beste Lösung ist, sei dahin gestellt, es
funktioniert und lässt sich auch relativ einfach ändern bzw. erweitern
ohne z.B. manuell Vorgänger/Nachfolger zu Pflegen.
Eine schöne Lösung ist Tinykon,
leider mit zunehmender Menütiefe und -größe zu viel für
384 Byte RAM.
Teile von Pollin, Reichelt und gesammelte Bauteile ergeben dieses einmalige Ensemble...
loetmeister ©2017