Forum: Mikrocontroller und Digitale Elektronik Uhr mit ATtiny45 + USB + Pufferbatterie


von Stefan S. (stsc)


Lesenswert?

Hallo,

ich würde gerne eine Uhr mit dem ATtiny45 (+ USB + Pufferbatterie) 
aufbauen.
Momentan gibt es zwei Varianten die ich mir vorstellen könnte.

1. Verwendung des internen Quarzoszillator. Mit PLL wird ein Systemtakt 
von 16.5Mhz erzeugt wegen USB (AVRUSB). Hier ist schon das erste 
Problem. Ist der Systemtakt genau genug, um die Abweichungen per 
Software ausgleichen zu können. Die Normalbetriebsspannung ist 5V. Wenn 
die Spannungsversorgung abgeschaltet wird, weil z.B. USB nicht mehr 
benötigt wird, soll die Uhr ganz normal mit einer 3V Batterie weiter 
laufen. Systemtakt wird soweit wie möglich gesenkt. Durch den PLL hat 
man den Vorteil, dass der ATtiny45 die meiste Zeit im Idle-Sleep-Mode 
verbringen kann, anstelle im Active-Mode. Auch hier ist wahrscheinlich 
das Problem der Frequenzungenauigkeit des internen Quarzoszillator.

2. Verwendungen eines externen 12Mhz Quarz. Verhalten genau wie oben. 
Jedoch sehe ich den Vorteil, dass die Uhr genauer ist, aber im 
Batteriemode muss der ATtiny45 trotzdem im Active-Mode weiterlaufen (bei 
verminderter Frequenz), da kein PLL für den Timer zur Verfügung steht. 
Also hier kein Sleep Mode

Hier stellt sich also die Frage, wie würdet ihr es machen und welche 
Variante ist sparsamer. Mit welchen Stromverbrauch rechnet ihr, ist 
unter 100uA realistisch. Beim PLL muss man auch bedenken, dass der bei 
64Mhz ist.

Danke!

von Timur Y. (smokingslim)


Lesenswert?

http://www.atmel.com/dyn/resources/prod_documents/6056S.pdf

Ist echt gut erklärt vieleicht hilft es dir.

von Andreas K. (a-k)


Lesenswert?

> 1. Verwendung des internen Quarzoszillator.

Den es nicht gibt.

Was es gibt ist ein internes Schatzeisen, das günstigenfalls etwa eine 
Viertelstunde pro Tag falsch geht.

Was soll die Uhr machen, abgesehen vom Zeit zählen und intern 
verstecken? Denn ein externer 32KHz Quarz mit maximalen Taktteiler 
reicht für Uhrzeit aus und lebt von leichtesten Luftzug.

von Stefan S. (stsc)


Lesenswert?

Das ist eigentlich nur ein Modul für meinem VDR, der den PC zur 
richtigen Zeit für eine Aufnahme aufweckt. Prinzipiell genügt also ein 
Counter, die Uhr ist in diesem Fall overhead.

Beim ATtiny habe ich aber das Problem dass ich kein externes 32KHz Quarz 
anschließen kann, da der keine TOSC Eingänge hat. Und wie schon gesagt, 
die 12 oder 16.5Mhz brauche ich für USB.

@smokingslim:

Danke für die Info, aber der ATtiny hat leider keinen internen RTC.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Für den USB ist der interne R/C nicht ganau genug, über PLL schon gar 
nicht. Da muß auf jeden Fall ein Quarz dran, bzw. ein externer 
Quarzoszillator, da der Tiny keine XTAL-Anschlüsse sondern nur einen 
externen Clockeingang hat. Über einen internen Teiler kann man die 
Quarzfrequenz dann auf eine Sekunde herunterteilen. Das wird dann auch 
recht genau.

von Peter D. (peda)


Lesenswert?

Stefan Schiekofer wrote:
> Das ist eigentlich nur ein Modul für meinem VDR, der den PC zur
> richtigen Zeit für eine Aufnahme aufweckt.

Nen noch umständlicheren Weg dürfte es kaum geben.

Jeder PC hat ne CMOS-Uhr mit Alarmfunktion:

http://www.hubertus-sandmann.homepage.t-online.de/vdr_wakeup.htm


Peter

von Stefan S. (stsc)


Lesenswert?

Anscheinend kann der interne Quarzoszillator verwendet werden für USB:

http://www.obdev.at/products/avrusb/easylogger.html

Aber ich denke für eine Uhr ist der zu ungenau.

Also komme ich wohl um einen externen Quarzoszillator nicht rum. Aber 
wie schauffe ich es dann den ATtiny45 mit einer Batterie zu betreiben, 
ohne dass sie gleich nach 14 Tagen leer ist.

von Stefan S. (stsc)


Lesenswert?

@peda

Ich kenne den RTC Alarm, aber das funktioniert bei den modernen 
Mainboards nicht mehr. Also muss was externes her.

von Andreas K. (a-k)


Lesenswert?

> Anscheinend kann der interne Quarzoszillator verwendet werden für USB:

Was es nicht gibt das kann auch nicht verwendet werden. ES GIBT KEINEN 
INTERNEN QUARZ.

von Stefan S. (stsc)


Lesenswert?

Sorry, hast recht, interner Oszillator !

von Sven (Gast)


Lesenswert?

Hi,

ich würde das wie folgt angehen:

1. Uhrenbaustein von Maxim oder Dallas
   z.B. DS1374 hat I2C und Alarm
   Man muss halt eine Uhr mit Alarm heraussuchen.
2. da der VDR mit Linux läuft ist eine Ansteuerung des
   I2C busses kein Problem, wenn das Board ohnehin
   schon einen besitzt (dann kann man die Uhr aus dem VDR selbst
   programmieren)
3. diese Uhrenbausteine laufen meist mit einer Lithium Zelle
   mehrere Jahre
4. Wenn Du dann noch unbedingt über USB die Uhrzeit von
   einem anderen Rechner aus programmieren willst, kannst Du immer
   noch einen Atmel an diesen Bus klemmen und die Uhr direkt
   ansteuern.

Ich würde also z.b. DS1374 nehmen, und dann wenn der VDR eingeschaltet
ist die Alarmuhrzeit programmieren.
Jetzt schaltet man den Rechner aus und die Uhr läuft über die BAtterie
weiter und weckt den Rechner zur passenden Zeit.
Falls das MAinboard keinen I2C-Bus besitzt, kann man ja über einen
Atmel über USB, seriell o.ä. die Uhr programmieren.

Gruß Sven

von Andreas K. (a-k)


Lesenswert?

Normalerweise macht man das beim VDR mit nvram wakeup oder ACPI wakeup. 
Hast du einen Rechner erwischt, bei das partout nicht möglich ist?

von Stefan S. (stsc)


Lesenswert?

Korrekt, mein Mainboard unterstützt keinen RTC Alarm, das programmiert 
werden kann. Deswegen hätte ich ja gerne eine externe Lösung. Verwende 
auch nicht mehr Linux, sondern inzwischen Win. Trotzdem danke für die 
guten Ideen!!

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
Noch kein Account? Hier anmelden.