Hallo Leute, ich plane eine Nebenuhr über einen ATMega8 anzusteuern. Die Uhr erwartet jeweils einen Impuls je Minute mit wechselnder Polarität. Ich plane einen ATMega und einen L293 einzusetzten um die Polwendung zu erreichen. Dazu einen 32khz bzw. einen DS32khz Quarz Oscillator um die Genauigkeit zu erreichen. Ich hab aktuell einen Probeaufbau mit einem 1Mhz Quarz und lass in Bascom einen Timer jede Sekunde zählen sodass ich bei 60 dann die Pole ändern kann. Mein Problem ist noch das ich ja nicht dauerhaft Strom auf die Spule geben kann. Wenn ich allerdings den ATMega ein paar Sekunden anhalte ist meine Zeitzählung pfutsch.
Du willst z.B. bei Stromausfall oder bei Feierabend die Uhren ausmachen, in der Früh bei "Arbeitsantritt" wieder korrekte Zeit haben? Häng doch eine externe Echtzeituhr wie z.B. eine DS1307 dran. In dem 1307-Uhrenchip ist zusätzlich ein Batteriegepuffertes Non-Volatile RAM. Der Atmega speichert nach jedem Stellbefehl/Impuls die angezeigte Uhrzeit im NV-RAM. Wenn nun der Strom ausfällt, geht im DS1307 die Uhr trotzdem weiter und der Speicher bleibt erhalten. Der Atmega liest bei wiedereinschalten die zuletzt gestellte Zeit aus dem NV-RAM aus und gibt solange Stellimpulse, bis die Uhrzeit der Nebenuhren wieder korrekt ist. Lösung mit internem EEPROM des Atmega würde zwar funktionieren, aber den EEPROM zu stark "ausleiern". mfg mf
Okay Nein also das mit der RTC hab ich mir dann auch schon überlegt aber erst als 2ten Schritt. Hab auch schon fleißig Datenblatt gelesen DS1307 und DS32khz. Mein aktuelles Problem/Frage ist das der Schaltkreis erst nach jeder Minute den Impuls sendet was aber kein Impuls ist sondern ein Dauer-"An". Portx.0 = 0 'Spule' Portx.1 = 1 'Spule' Portx.2 = 1 'An' Bei der nächsten Minute: Portx.0 = 0 Portx.1 = 1 Portx.2 = 1 Das funktioniert auch wunderbar allerdings brennt mir irgendwann die Spule in der Uhr durch wenn ich 60 Sekunden lang Strom drauf gebe. Ich wollte halt was einbauen wie waitms 1000 und dann Portx.2 = 0 Strom aus -> Impuls. Wenn ich nun den µC 1000ms warten lass dann ist die Timer geschichte hinfällig. MfG
Patrick schrieb: > Wenn ich allerdings den ATMega ein paar Sekunden anhalte ist > meine Zeitzählung pfutsch. Warum willst Du ihn denn anhalten? Die RTC macht man mit nem Timerinterrupt. Ob nun 32kHz oder 10MHz Quarz, ist egal. 32kHz lohnt sich nur bei Batteriebetrieb (weniger Stromverbrauch). Peter
Schalte in Reihe zur Uhr einen Bipolaren Elko. Falls die Uhr Haltekraft benötigt, kommt noch ein Widerstand parallel zum Elko. mfg && Gute N8 mf
Patrick schrieb: > Wenn ich nun den µC 1000ms warten lass dann ist die Timer geschichte > hinfällig. Hä? Der Timer läuft weiter, deshalb nimmt man ja Timer. Peter
PS: Mit Elko natürlich nur halbe Betriebsspannung für den Leistungsteil, da der Elko ja jedesmal seine Spannung dazu addiert.
Patrick schrieb: > Wenn ich nun den µC 1000ms warten lass dann ist die Timer geschichte > > hinfällig. Wieso das denn? Lasse den Atmega mit internem Takt laufen und schliesse an den Oszillator-eingang einen Uhrenquarz an. Dann stellst für Timer2 den asynchronen Takt ein und fertig ist deine Uhr. Der Timer2 läuft sogar im Sleepmode. mfg.
Der Sekundenticker läuft doch eh rund. Warum merkst du dir nicht die Zeit, wenn der Impuls zur Spule raus geht und setzt die Spule eine Sekunde später wieder zurück? Spule_an = Zeit_X Spule_aus = Zeit_X + 1
Der Timer läuft wirklich weiter? Das muss ich morgen probieren wenn ich wieder richtig wach bin :) Danke erstmal für eure Gedankenanregungen.
Du hast noch einen kleinen Fehler im Programm. Es gibt nur 59 Einheiten in der Zeit. Also nur 59 Sekunden. Musst also deine Bedingung ändern in if sekunden > 59 then sekunden = 0. Sonst zählst du pro Minute jeweils eine Sekunde zuviel.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.