Hallo,
ich möchte eine Uhr bauen, die auch draußen möglichst genau
funktioniert.
Ist es für die Genauigkeit empfehlenswert eher eine RTC zu benutzen oder
einen Mikrocontroller mit externem Quarz?
Kann man ungefähr sagen wie groß die Abweichung sein wird, wenn die
Temperatur im Bereich von -10 bis +30°C schwankt?
Hallo,
das kann man so pauschal nicht sagen, da ist jeder Quarz ein bisschen
anders (auch in einer Baureihe kann es Schwankungen geben.)
Der Vorteil an einer RTC ist neben dem Stromverbrauch, dass du dich in
den meisten Fällen nicht großartig um den Quarz kümmern musst, der
Vorteil am AVR ist, dass du dich darum kümmern kannst (siehe
AVR - Die genaue Sekunde / RTC).
Je nach Anforderung an Genauigkeit wäre evtl. ein TCXO
(Temperaturkompensierter Quarz) angebracht.
Ganz nett zum Thema Taktgeber und deren Drift:
http://www.eevblog.com/2010/02/14/eevblog-61-crystal-oscillator-drift/
@ Alex K. (Gast)
>ich möchte eine Uhr bauen, die auch draußen möglichst genau>funktioniert.
Definiere "genau".
>Ist es für die Genauigkeit empfehlenswert eher eine RTC zu benutzen oder>einen Mikrocontroller mit externem Quarz?
Bei der RTC hat der Hersteller mehr oder weniger den Quarz
temperaturkompensiert. Beim µC musst/kannst du das selber. RTC ist
einfacher und stromsparender, siehe Sleep Mode. Eine Selbstbaulösung
ggf. genauer.
>Kann man ungefähr sagen wie groß die Abweichung sein wird, wenn die>Temperatur im Bereich von -10 bis +30°C schwankt?
Pi mal Daumen bis zu -30ppm, also ca. -2,6s/Tag
Siehe AVR - Die genaue Sekunde / RTC
MfG
Falk
Hallo und erstmal danke für die Antworten
@egberto
Wo bekomme ich den dallas ds32khz in Deutschland gekauft?
@Chris R. (hownottobeseen)
>Je nach Anforderung an Genauigkeit wäre evtl. ein TCXO>(Temperaturkompensierter Quarz) angebracht.
Wollte ich eigentlich vermeiden, da die ganz schön teuer sind.
Den Link zum Video werde ich mir mal anschauen.
@Falk Brunner (falk)
>Definiere "genau".
Also 2,6s/Tag wären in Ordnung, die Genauigkeit sollte pro Monat auf
jedenfall nicht 2min überschreiten.
Welchen RTC Baustein kann ich nehmen, den ich in Deutschland kaufen
kann, der diese Genauigkeit erreicht und den PIC möglichst über einen
Interrupt aufwachen lässt?
Alex K. schrieb:
> Also 2,6s/Tag wären in Ordnung, die Genauigkeit sollte pro Monat auf> jedenfall nicht 2min überschreiten.
Das schafft jeder normale Uhrenquarz...
> Welchen RTC Baustein kann ich nehmen, den ich in Deutschland kaufen> kann, der diese Genauigkeit erreicht und den PIC möglichst über einen> Interrupt aufwachen lässt?
...und somit auch ein mit Quarz betriebener PIC ganz ohne externer RTC.
Aber wenn's denn unbedingt extern sein muss: Bei Dallas/Maxim wirst du
fündig, unter DS1307 beispielsweise.
Das ganze wird nur mit 3 Micro-Batterien betrieben. Nach DCF77 Modulen
habe ich schon geschaut, aber wollte ich eigentlich nicht benutzen, weil
die das ganze nur teurer machen, komplizierter und von Störquellen
abhängig.
Ich hatte mal einen PIC mit einem Uhrenquarz von Reichelt betrieben,
aber schon nach einer Stunde ging die Schaltung 1s falsch :(
Na und? Miss einmal die tägliche Abweichung und bau diesen Wert dann als
tägliche Korrektur ein. Ist weitaus einfacher als den Quarz per Trimmer
auf exakt die richtige Frequenz zu ziehen (es sei denn man hat einen
exakten Vergleich, aber wer hat sowas schon).
Ja, die Frage ist dabei nur wie man diesen Korrekturwert wählt, damit
die Uhr bei einer gewöhnlichen Außentemperatur im Mittel eine möglichst
geringe Abweichung hat.
Nimm einem Quarz, in dessen Datasheet etwas über die Quarzparameter drin
steht. Damit sollte der ungefähre Temperaturgang ermittelbar sein. Wenn
das nicht sowieso schon ausreicht, dann peilst du nebenbei auch noch die
Temperatur über den Daumen und korrigierst zusätzlich damit.
Alex K. schrieb:
> Ich hatte mal einen PIC mit einem Uhrenquarz von Reichelt betrieben,> aber schon nach einer Stunde ging die Schaltung 1s falsch :(
Wird ein Softwarefehler sein.
Anfänger denken nämlich gerne, ein Interrupt hat 0 Zyklen Response und
laden den Timer im Interrupt mit einem festen Wert. Das geht dann
schief.
Entweder man addiert die abgelaufene Zeit oder nimmt den Clear-on-Compre
Modus des Timers.
Peter
Glaub ich eigentlich nicht, dass es ein Softwarefehler war, ich hab den
8-bit Timer einfach immer überlaufen lassen und bei jedem Überlauf die
Sekunde um eins hochgezählt.
Wahrscheinlich gab es eher ein Problem mit dem Kondensator. Ich hab
hierzu im Forum schon zwei verschiedene Formeln zur Berechnung der
Lastkapazität gefunden daher hab ich nach Gefühl einfach einen 12p
genommen.
Auf diese Anforderung: "möglichst genau" gibt es nur eine Antwort:
ATOMUHR von der PTB.
Ansonsten erst mal nachdenken,was die Anforderung wirklich ist.
Da kommt dann wahrscheinlich bei raus, dass eine Loesung ueber DCF77
perfekt ist.
Gast
mal eine ganz dumme Frage, wenn man bei einem ATmega o.ä. einen externen
Uhrenquarz anschaltet, sollte man das entsprechende Fuse-Bit nicht
vergessen einzuschalten, damit man die internen Kondensatoren
aktiviert... Ist das bei einem PIC auch so?
Der DS3231 von MAXIM ist temperaturkompensiert, hat eine RTC, die über
I2C abfragbar ist und zusätzlich einen 32.768 kHz Ausgang. Du kannst
also die Uhr über I2C abfragen oder in einem µC die 32.768 kHz
verarbeiten.
Ich habe so ein Ding z.Zt. laufen, in 7 Monaten nur 2 sec Abweichung. Im
Datenblatt sind 2 ppm Temperaturabhängigkeit spezifiziert (über 40° und
unter 0° 3.5 ppm). Alterung 1 ppm/Jahr, in 10 Jahren 5 ppm.
Gibt es nur als SOIC, also nichts für Leute mit Parkinson'scher
Krankheit, bei MAXIM als Sample, und bei den üblichen Verdächtigen, z.B.
Farnell, ist allerdings deutlich teurer als ein Quarz.
@quarz
Bei den PICs muss man die Kondensatoren extern vorsehen. Das hat den
Vorteil, dass man den Quarz noch "ziehen" kann. Interne Kondensatoren
sind nur 2. Wahl, weil die Werte der Kondensatoren primär vom Quarztyp
abhängen und erst sekundär vom Oszillator.
@ Alex K. (Gast)
>Ich hatte mal einen PIC mit einem Uhrenquarz von Reichelt betrieben,>aber schon nach einer Stunde ging die Schaltung 1s falsch :(
Das ist ein 1/3600tel, also 277ppm. Das ist ARG viel für einen Quarz und
typisch für falsche Lastkondensatoren.
MFG
Falk
2 Minuten/Monat dürfte kein Problem sein, kriegt man auch ohne
Kompensation hin.
Dafür braucht man auch keine RTC, die sind vor allem dazu gedacht eine
Uhr mit sehr wenig Energieverbrauch weiterlaufen zu lassen.
So kann man den Controller für (schätzungsweise) >99% der Zeit schlafen
schicken, der ist ja nur noch zur Ansteuerung der Anzeige da.
Ein ganz normaler Quarz ist ausreichend genau.
Rein rechnerisch ergibt die geforderte Präzision von 2min/Monat eine
maximale Abweichung von 46ppm.
Qaurze mit 10ppm sind durchaus erhältlich und bezahlbar.
10ppm erzeugt im "dümmsten Fall" eine Abweichung von ca. 25 sek/Monat
Ich möchte eine Uhr bauen, die nicht nur möglichst genau ist, sondern
auch möglichst klein, möglichst robust und möglichst modisch. Und
wasserdicht bis zu einer möglichst großen Tiefe. Dazu möglichst
preiswert. Und möglichst alles zusammen.
Welche Bauteile bestelle ich da am besten?
@ Zum nachdenken:
Alex hat doch inzwischen erwähnt, dass eine Abweichung von kleiner 2min
/ Monat für ihn in Ordung sind. Ebenso gab er einen Temperaturbereich
an. Also sind alle "Paramter", die notwendig sind, mögliche
Realisierungsvorschläge bezüglich Genauigkeit zu machen, gegeben.
Ich geh mal davon aus, dass diese Information überlesen hast und daher
selbst erkennst, dass dein Kommentar hier unangebracht war.
@Schrotty (Gast)
>Qaurze mit 10ppm sind durchaus erhältlich und bezahlbar.
[ ] Du kennst den Interschied zwischen Abgleichfehler und
Temperaturdrift.
MFG
Falk
Hallo,
und vielen Dank für die zahlreichen Antworten. Ich werde einfach nochmal
eine Testplatine mit PIC + Uhrenquarz aufbauen und mir dann die
Abweichung bei Außentemperaturschwankungen anschauen. Was empfehlt ihr
denn für einen Kondensator wenn die Belastungskapazität des Quarzes 10pf
beträgt?
@stephan_ (Gast)
Dieser DS3231 ist ja schon ein geiles Teil ;) Falls ich mit obigem
Ergebnis nicht zufrieden bin, werde ich vielleicht darauf zurückgreifen.
Der scheint meine Anforderungen bzgl. externe Interrupts, Genauigkeit,
und Temperaturstabilität zu erfüllen.
Schrotty schrieb:
> guckst du hier:>> http://www.petermann-technik.com/fileadmin/pdf/SMD03025-4.pdf>> Erhältlich mit -+5 ppm Abgleichfehler und +-5ppm Temperaturdrift bei> -20..70 Grad>
Macht also bei 20Grad Temperaturänderung schon mal 100ppm, und 20 Grad
Änderung sind sehr wenig für Außenanwendung.
Sommer-winter macht eher 40 Grad, also sicher mehr als 100ppm (wenn auch
nicht kumulativ)...
> ja Falk, ich kenne den Unterschied..
Mag sein das Du ihn kennst, aber Du hast es weder begriffen was es für
Konsquenzen hat noch hast Du eine Ahung: sonst würdest Du nicht so einen
Käse empfehlen.
Fazit: Einfacher Standardquarz für Außenanwendung ohne
Temparturkompensation (Schaltungstechnishc oder per Temp-Messung &
lookup table, etc.)
Macht DEUTLICH MEHR ALS 2 Minuten Zeitabweichung per Monat.
Andrew Taylor schrieb:
> Macht also bei 20Grad Temperaturänderung schon mal 100ppm, und 20 Grad> Änderung sind sehr wenig für Außenanwendung.
Ich denke nicht, dass die 5ppm pro °C gemeint sind, sondern das dies die
Abweichung über den gesamten Temperaturbereich ist. Sonst wären die
50ppm-Typen bei -40..+125°C nur mehr grobe Schätzeisen.
Also 5ppm für die Basistoleranz und oben drauf 5ppm für die maximale
temperaturbedingte Abweichung gibt in Summe 10ppm.
A. K. schrieb:
> Andrew Taylor schrieb:>>> Macht also bei 20Grad Temperaturänderung schon mal 100ppm, und 20 Grad>> Änderung sind sehr wenig für Außenanwendung.>> Ich denke nicht, dass die 5ppm pro °C gemeint sind, sondern das dies die> Abweichung über den gesamten Temperaturbereich ist.
Das wäre dann mit den oben genannten Daten (5ppm, -20...70Grad) 5 exp-6
über 90 K Temperaturdifferenz.
Also rund 5exp-8 je Grad Temperaturdifferenz.
Für Standardquarze kaum so niedrig realisiert.
> Sonst wären die> 50ppm-Typen bei -40..+125°C nur mehr grobe Schätzeisen.
Normale Typen sind das auch, leider.
>> Also 5ppm für die Basistoleranz und oben drauf 5ppm für die maximale> temperaturbedingte Abweichung gibt in Summe 10ppm.
s.o. : Wohl kaum.
>Ich denke nicht, dass die 5ppm pro °C gemeint sind, sondern das dies die>Abweichung über den gesamten Temperaturbereich ist.
So sehe ich das auch, wobei der 'Standard' eher 30-50ppm hat. Das ist
aber egal, da die Genauigkeit ausreichend ist.
Unklar ist mir, wie groß die Stromaufnhame sein darf. Wenn sie, wie bei
Batteriebetrieb notwendig, sehr klein sein soll, wird ein Uhrenquarz mit
32kHz erforderlich sein.
Sofern es nicht auf ein paar mA mehr oder weniger ankommt, ist für einen
großen Temperaturbereich ein 'normaler' AT-Quarz besser. Uhrenquarze
sind für 20-25°C optimiert, AT-Schnitte decken einen deutlich größeren
Bereich ab.
Ich bin grad mal kurz durch das bekannte Quarzkochbuch durch. Die 50ppm
insgesamt über -40-+125°C scheinen bei AT-Schnitt ebenso realistisch
machbar zu sein wie 5ppm über -20-+70°C.
@ Taylor
>Mag sein das Du ihn kennst, aber Du hast es weder begriffen was es für>Konsquenzen hat noch hast Du eine Ahung: sonst würdest Du nicht so einen>Käse empfehlen.
Wenn du imstande wärst, Einheiten zu lesen, dann würdest du hier nicht
so nen Mist verzapfen. Die Angabe ist einheitslos (in diesem Falle eben
ppm)
In deinem Falle müsste sie ppm/K heißen.
Asserdem ist die Angabe in +-ppm. Laut deiner Behauptung, dass es sich
um eine Angabe pro Kelin handlen würde, würde dies bedeuten, dass der
Quarz in jedem Temperaturbereich sowohl einen negativen, als auch einen
postiven Temperaturkoeffizient hätte. Gerade so, wie er grad Lustig ist.
Desweiteren ist ganz unten im DB von Auris sogar beim Bestellcode
angegeben, dass die Angabe in +-ppm (Temp-Range) ist.
Aber schön, dass du so viel Ahnung hast, dass du es dir leisten kannst,
hier gleich so unverschämt aufzutreten.
ein Quarz mit 50ppm hätte also deiner Ansicht nach 50ppm/K?
Macht also bei einer Temperaturschanwankung von 90K stolze 4500ppm
Respekt, da kannst dir gleich ne alte Kirchturmuhr einbauen!
Fazit: Wenn man schon keine Ahung hat, sollte man seine "Annahmen"
wenigstens ein wenig "vorsichtiger" formulieren und nicht gleich die
Anderen als Idioten hinstellen.
So ich habe nun nochmal eine neue Schaltung aufgebaut. Ein 32678hz Quarz
mit einer Frequenztoleranz von ±10 ppm. Benutzt habe ich einen PIC18F84A
und eine Segmentanzeige, die mir die Einer-Sekunden ausgibt. Da ich
keinen 15p Kondensator da habe, habe ich einen 12p Kondensator genommen.
Die Uhr geht in einer Stunde knapp 1sec nach. Der Quarz läuft also zu
schnell.
Am Programm liegt es sicher nicht:
int8 counter = 0;
#int_TIMER0
void TIMER0_isr(void) {
if (++counter > 9)
counter = 0;
output_b(numbers[counter]);
}
void main() {
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32);
SET_TRIS_B(0);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
while(TRUE);
}
Sollte ich die Kondensatoren gegen höhere z.B. 22p austauschen?
Der Kondensator beeinflusst die Frequenz. Entweder du probierst diverse
Werte durch, beispielsweise als Trimmkondensator, wobei Klagen über
"habe grad keine passenden Werte" nicht zielführend sind.
Oder du kompensierst den dir bekannten Fehler in Software.
...das Rad wurde schon erfunden...tue doch nicht so unbeholfen.
Mindestens zwei Chips wurden hier genannt, die besser sind
als das, was du suchst !
Wo kann man denn heute '' TemperaturUnstabile Uhren '' kaufen ?
Und...glaube nur dem Peter Dannegger...es war sicher ein Softwarefehler.