UHRCAN

Aus C3D2
Zur Navigation springen Zur Suche springen


Wer

Das ist ein Projekt von Benutzer:Carwe. Da jedes Kind einen Namen braucht, günstigenfalls schöner und griffiger als beispielsweise "Projekt_0x928e4ff2", hab ich es erstmal UHRCAN genannt.

Was

Ziel ist, einen Microcontroller und einige 7-Segment-Anzeigen nebst Energieversorgung zu verwenden, um eine Uhr zu bauen, die im Dunkeln leuchtet. Sie soll sich von einer (noch zu bastelnden) Gegenstelle die Uhrzeit holen können, z.B. wenn sie eingeschaltet wurde und damit natürlich nicht die aktuelle Zeit kennt. Dazu soll ein CAN-Bus quer durch die Wohnung zum Einsatz kommen.

Kurz vorm Einschlafen ist mir eingefallen, dass ich zur Stabilisierung der Frequenz, um den ATtiny für Zeitmessung einsetzen zu können, noch einen externen Quarzkristall benötige, was zwei Pins belegt - bzw. einen Pin, wenn ich eine externe Oszillatorschaltung baue. Jedoch müsste ich, um diesen einen notwendigen Pin zu bekommen, auf irgendetwas Anderes verzichten. Ich werde daher zuerst testen, wie stabil der interne RC-Oszillator ist, denn wenn die Abweichung geringer als eine Minute pro Tag ist, halte ich das für ausreichend - die Zeit kann später mehrfach pro Tag über den CAN-Bus aktualisiert werden.

Wie

Microcontroller

Als Microcontroller ist ein ATtiny45 gedacht - ist auch nur ein paar Cent teurer als seine kleineren Brüder. Dieser hat 4096 Byte Flash für den Code, 256 Byte SRAM, 256 Byte EEPROM. Er ist im DIP8-Gehäuse erhältlich. Es sind alle 6 Pins (8 -GND -VCC) für I/O verwendbar. Zwei Pins werden für CAN verwendet werden. Weitere drei Pins werden für die Ansteuerung der 7-Segment-Anzeigen verwendet werden. Den freien Pin könnte man für manuelles Einstellen der Uhr verwenden.

Anzeige

Es sollen vier 7-Segment-Anzeigen angesteuert werden und zwei dazwischen befindliche Punkte, die im Sekundentakt an/aus gehen. Es werden also (4*7+1) 29 verschieden zu steuernde Abschnitte sein. Da ich keinen Microcontroller mit 31 frei programmierbaren Pins verwenden möchte, sondern einen möglichst kleinen, muss eine Lösung für maximal 4 Pins her - also zeitmultiplex. Daher habe ich mir überlegt, einen resetbaren (a)synchronen Counter zu basteln. (Pin A: Count-Impuls, Pin B: Count-Reset) Die beiden höchsten Bits wählen die Ziffernstelle (1 aus 4 7-Segment-Anzeigen), und die drei niedrigen Bits wählen über einen einzelnen 1-aus-8-Demultiplexer das Segment der Ziffer (1 aus 7 Segmenten). Anstelle eines beliebigen achten Segmentes kann ich dann die Sekundenpunkte anschließen.

Vom Microcontroller durch den Demultiplexer zu den 7-Segment-Anzeigen und den 2 Sekunden-LEDs wird also das Signal "leuchten" gesendet, oder eben auch nicht (Pin C: Status der aktuellen LED). Da jedes Segment maximal 1/32 der Zeit an sein wird, ist noch zu prüfen, wie man für ausreichende Helligkeit sorgen kann.

CAN

Der CAN-Bus ist ein Bus, bestehend aus (meist) 2 Leitungen, auf denen (meist) ein differentielles Signal übertragen wird. Als Quelle der Zeit soll ein größerer Atmel eingesetzt werden, der über einen ENC28J60 mit der vorhandenen Ethernet-Installation verbunden wird, um sich darüber die Zeit (u.v.m.) zu holen.

Teileliste

1x ATtiny45 [1]
4x 7-Segment-Anzeige (SA08-11GWA [2])
1x 1-aus-8-Demultiplexer, z.B. 74138
1x Counter 5-bit, oder 2-bit + 3-bit, z.B. 74393, 2x 4-bit