Zeitschaltuhr - "Extra"
Home > Elektronik > Zeitschaltuhr "Extra"  
 

[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.

 

top Aufbau

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. Ob die Massefläche unter der Antenne eine gute Idee war wird sich zeigen. [Nachtrag] Der größte Teil der Platine unter der Antenne ist abgesägt. Zukünftig würde ich Kunststoffklammern zur Befestigung vorsehen.

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.
 

 

top PIC Programm

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

  1. Initialisierung, Werte aus dem EEPROM lesen, mTouch Kalibrieren, Helligkeitssensor einmalig auslesen
  2. Hauptprogramm:
    1. DCF77 Daten auswerten
    2. Wenn nötig, neue Werte aus dem EEPROM lesen (z.B. bei einem neuen Tag)
    3. Helligkeit messen und Schaltvorgänge prüfen/ausführen
    4. Eingang Auswerten und Schaltvorgänge prüfen/ausführen
    5. Programmierte Schaltzeiten prüfen/ausführen
    6. Kapazitive Tasten auswerten, Funktion aufrufen
    7. LCD aktualisieren
  3. Mit Interrupts wird gesteuert:
    1. Systemticker für die Uhr/Kalender
    2. Auswertung der kapazitiven Tasten mit Hilfe einer konstanten Referenzzeit
    3. Interrupt-on-Change für das DCF77 Eingangsignal
    4. Interrupt-on-Change für den Optokoppler Eingang

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.

 

top Schaltpläne/Layout

Teile von Pollin, Reichelt und gesammelte Bauteile ergeben dieses einmalige Ensemble...

Der Schaltplan als PDF Datei

 

Programmcode (MPLAB-X Projekt + hex)

Neue Version v1.5
DCF Interrupt-Funktion geändert
LCD "Char" Funktion neu/geändert
Platz für neue Funktion: Manuelles Schalten der Relais
Kleine Korrekturen