128er
11.12.2013, 20:33
Guten Abend!
Ich habe schon vor längerem eine alte Tochteruhr von Telefonbau Normalzeit vor dem Schrott gerettet. Anschließend habe ich mir eine kleine Ansteuerung mit einer H-brücke gebaut. Attiny dazu und fertig (dachte ich mir so :) )
Allerdings stoße ich nun an meine Grenzen was die Genauigkeit angeht. Nach 15 Stunden Betrieb, habe ich eine Abweichung von ca. 3 Minuten. Mit welchen Mitteln könnte man das noch weiter ausreizen? Ein DCF77 Empfänger wäre natürlich eine Möglichkeit. Würde ein 32 kHz Uhrenquarz auch einen vebesserten Effekt herbeiführen? Oder Verbesserungen am Code? Oder enger tollerierter Quarz? :confused:
Hier ist mein Programm in Bascom Basic:
$regfile = "attiny45.dat"
'### 2 MHz Quarz, Fusebit für 1/8 Systemtakt gesetzt ###
$crystal = 250000
$hwstack = 36
$swstack = 4
$framesize = 4
'### Bit zum minütlichen Wechsel des Ausgangsports ###
Dim B As Bit
'### Zählvariable wird beim Timerüberlauf inkrementiert ###
Dim C As Word
'### Ausgänge für beide Brückenzweige ###
Config Portb.0 = Output
Config Portb.1 = Output
'### Timer0 konfigurieren. 0,25 MHz (Systemtakt) / 64 (Prescaler) = 3906,25 / 256 (8-Bit Timer) * 60 (Sekunden) = 915,527 ###
Config Timer0 = Timer , Prescale = 64
'### Timerüberlauf ###
On Ovf0 On_ovf0
Enable Ovf0
Enable Interrupts
Start Timer0
C = 0
Do
If C = 915 Then Hier evtl. die tatsächlichen 915,527 benutzen? Inklusive passendem Datentyp für Kommazahlen?
C = 0
Toggle B
If B = 0 Then
Portb.1 = 1
Waitms 400
Portb.1 = 0
Else
Portb.0 = 1
Waitms 400
Portb.0 = 0
End If
End If
Loop
End
'### Routine bei Timerüberlauf ###
On_ovf0:
Incr C
Return
Hier ist der Schaltplan. Das Tiny13 bitte ignorieren. Es ist ein Tiny45. Auch von den Pinbezeichnungen her. Habs nur nicht hinbekommen auch den Namen zu ändern :rolleyes:
Der Quarz ist ein 2 MHz Wald und Wiesen Typ von Conrad. Die Schaltung läuft wegen der Uhr auf 6 Volt. Die Stromaufnahme liegt bei ca. 520 µA zwischen den Minutenimpulsen. Und um die 23 mA beim Minutenimpuls (ca. 400 ms lang).
26900
Danke fürs anschauen und helfen! :)
Gruß 128er
P.S.:
Da es ein Mischmasch aus Code und Hardware ist, habe ich es einfach mal in Elektronik eingestellt. Sollte ein Mod das anders sehen, bitte verschieben. :rolleyes:
Ich habe schon vor längerem eine alte Tochteruhr von Telefonbau Normalzeit vor dem Schrott gerettet. Anschließend habe ich mir eine kleine Ansteuerung mit einer H-brücke gebaut. Attiny dazu und fertig (dachte ich mir so :) )
Allerdings stoße ich nun an meine Grenzen was die Genauigkeit angeht. Nach 15 Stunden Betrieb, habe ich eine Abweichung von ca. 3 Minuten. Mit welchen Mitteln könnte man das noch weiter ausreizen? Ein DCF77 Empfänger wäre natürlich eine Möglichkeit. Würde ein 32 kHz Uhrenquarz auch einen vebesserten Effekt herbeiführen? Oder Verbesserungen am Code? Oder enger tollerierter Quarz? :confused:
Hier ist mein Programm in Bascom Basic:
$regfile = "attiny45.dat"
'### 2 MHz Quarz, Fusebit für 1/8 Systemtakt gesetzt ###
$crystal = 250000
$hwstack = 36
$swstack = 4
$framesize = 4
'### Bit zum minütlichen Wechsel des Ausgangsports ###
Dim B As Bit
'### Zählvariable wird beim Timerüberlauf inkrementiert ###
Dim C As Word
'### Ausgänge für beide Brückenzweige ###
Config Portb.0 = Output
Config Portb.1 = Output
'### Timer0 konfigurieren. 0,25 MHz (Systemtakt) / 64 (Prescaler) = 3906,25 / 256 (8-Bit Timer) * 60 (Sekunden) = 915,527 ###
Config Timer0 = Timer , Prescale = 64
'### Timerüberlauf ###
On Ovf0 On_ovf0
Enable Ovf0
Enable Interrupts
Start Timer0
C = 0
Do
If C = 915 Then Hier evtl. die tatsächlichen 915,527 benutzen? Inklusive passendem Datentyp für Kommazahlen?
C = 0
Toggle B
If B = 0 Then
Portb.1 = 1
Waitms 400
Portb.1 = 0
Else
Portb.0 = 1
Waitms 400
Portb.0 = 0
End If
End If
Loop
End
'### Routine bei Timerüberlauf ###
On_ovf0:
Incr C
Return
Hier ist der Schaltplan. Das Tiny13 bitte ignorieren. Es ist ein Tiny45. Auch von den Pinbezeichnungen her. Habs nur nicht hinbekommen auch den Namen zu ändern :rolleyes:
Der Quarz ist ein 2 MHz Wald und Wiesen Typ von Conrad. Die Schaltung läuft wegen der Uhr auf 6 Volt. Die Stromaufnahme liegt bei ca. 520 µA zwischen den Minutenimpulsen. Und um die 23 mA beim Minutenimpuls (ca. 400 ms lang).
26900
Danke fürs anschauen und helfen! :)
Gruß 128er
P.S.:
Da es ein Mischmasch aus Code und Hardware ist, habe ich es einfach mal in Elektronik eingestellt. Sollte ein Mod das anders sehen, bitte verschieben. :rolleyes: