Forum: Mikrocontroller und Digitale Elektronik 2 AVR zeitsynchron ohne Bus


von Jens (Gast)


Lesenswert?

Ich möchte 2 AVR per gemeinsamen Netzschalter starten und möchte, dass 
diese an einem Tag höchstens eine Sekunde auseinanderlaufen.

Das heißt als Beispiel. Jede volle Stunde soll jeder AVR etwas machen. 
Also beide zur gleichen Zeit an verschiedenen Orten.

Erste Testschaltungen mit Timer und blinkender Led zeigen trotz Quarz, 
dass bereits nach 1 Stunde beide AVRs ziemlich auseinandergehen ...

Verstehe ich nicht !! Gehen denn die Timer nicht durch auch bei 
Interrups, die sind doch mit dem Prozessortakt verbunden?

Danke für Hilfe ....

von Wolfgang Horn (Gast)


Lesenswert?

Hi, Jens,

Du: "...Testschaltungen ...zeigen trotz Quarz..,
dass ... nach 1 Stunde beide AVRs ziemlich auseinandergehen ..."

wenn "ziemlich" deutlich mehr ist als 10e-4 beduetet, dann ist das 
pathologisch, dann ist das Symptom eines Fehlers.

Denn die Timer laufen durch - wenn Du sie richtig programmiert hast, 
also z.B. im CTC-Mode.


Ciao
Wolfgang Horn

von Uhu U. (uhu)


Lesenswert?

Die Annahme, zwei Quarzoszillatoren würden synchron laufen, nur weil auf 
dem Gehäuse des Quarzes dieselbe Frequenz steht, ist etwas gewagt.

von Gast (Gast)


Lesenswert?

dann solltest du einen AVR als Master deklarieren, dieser verteilt dann 
ein Signal an alle anderen, diese nehmen das per ext Interrupt dann 
an....

von Jens (Gast)


Lesenswert?

ja mit Master geht alles ...

Eigentlich müsste man doch eine quarzgenaue Uhr mit dem AVR realisieren 
können, oder bin ich da auf einen Zeit-IC wie DS 1302o.a. angewiesen.

ich habe jetzt den Timer1 bei beiden AVRs laufen ohne Interrupt. Nun 
vergleiche ich die Werte und es läuft eben auseinander, ziemlich viel in 
einer Stunde ....

von Andreas K. (a-k)


Lesenswert?

Grundgenauigkeit eines handelsüblichen Quarzes: +/-50ppm. 2 Stück können 
also im Extremfall um 100ppm auseinander liegen, was ungefähr 1 Sekunde 
in 3 Stunden entspricht, also an der LED bereits im Bruchteil einer 
Stunde sichtbar wird. Temperaturunterschiede, unterschiedlicher Aufbau 
des Oszillators etc. addieren sich noch dazu.

von Andreas K. (a-k)


Lesenswert?

Ach ja, apropos Quarzuhren und RTCs: Uhrenquarze mögen mit 30ppm etwas 
genauer sein, aber ohne Kalibrierung wird daraus auch keine gute Uhr. 
Will man es genau haben, muss man sie mit einem Trimmkondensator 
kalibrieren. Quarzkochbuch: http://www.axtal.de/info/buch.html.

Mit µCs kann man das ggf. auch einfacher haben, indem man einen 16bit 
Timer so betreibt, dass der Teiler möglichst hoch ist (dicht unter den 
maximalen 65536), und dann an ebendiesem Wert etwas dreht.

von Jens (Gast)


Lesenswert?

Sollte man einen Uhrenquarz 32,768 kHz verwenden?

Dann wird aber mein Takt so langsam oder gibt es da eine Lösung mit 8Mhz 
und trotzdem Uhrenquarz?

Wie funktionieren denn da die Quarzuhren? Die gehen doch auch sehr 
genau....

Danke für Tipps ....

von Uwe .. (uwegw)


Lesenswert?

> Dann wird aber mein Takt so langsam oder gibt es da eine Lösung mit 8Mhz
> und trotzdem Uhrenquarz?

Bei vielen AVRs kann man einen Timer vom Uhrenquarz separat takten 
lassen, während der AVR mit internem Takt oder einem zweiten Quarz 
läuft. Ich würde aber erst mal versuchen, per Software zu trimmen. Also 
beide einige Stunden laufen lassen, Abweichung ablesen und 
Teilungsfaktor entsprechend korrigieren.

von Horst Gschwandtner (Gast)


Lesenswert?

Im Prinzip ist die Ungenauigkeit des Qurazes nicht das einzige Problem. 
Wenn Du den Netzschalter einschaltest dann werden nicht beide AVRs 
gleichzeitig mit der Codeausführung beginnen.

von Peter D. (peda)


Lesenswert?

Jens wrote:
> Sollte man einen Uhrenquarz 32,768 kHz verwenden?


Wozu ?

Das ändert überhaupt nichts.

Im Gegenteil, Uhrenquarze sind temperaturempfindlicher als MHz-Quarze.

Du mußt beide Quarze trimmen, anders wirds nie was.

Bei MHz-Quarzen kann man das am besten in Software machen:

Beitrag "Die genaue Sekunde / RTC"


Peter

von Jens (Gast)


Lesenswert?

ja mit dem Netzschalter das stimmt. Aber mir reicht eine Genauigkeit von 
einer Sekunde pro Tag. Am nächsten Tag starte ich die Schaltung erneut.

Jetzt ist es so -- Netzschalter ein und beide laufen ziemlich genau 
zugleich los --- und dann eben nach einer Stunde fast 1s Unterschied ...

ich probiere das jetzt mit dem Trimmen .... Danke

von Uhu U. (uhu)


Lesenswert?

> Aber mir reicht eine Genauigkeit von einer Sekunde pro Tag.

Das entspricht 11,5 ppm

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bei aktuellen AVRs kannst du die CKOPT-Fuse setzen und bekommst dann
den internen Takt an einem Portpin raus.  Damit kannst du den zweiten
AVR takten, und schon laufen sie dir nicht mehr auseinander. ;-)

Bei älteren AVRs kann man den Takt an XTAL2 abgreifen, sollte dafür
aber die CKOPT-Fuse gesetzt haben und eigentlich auch besser eine
Pufferstufe zwischen beiden einfügen.

von Unbekannter (Gast)


Lesenswert?

Wenn mit "Netzschalter" wirklich das 230V-Netz gemeint ist, Netzspannung 
zur syncronsiation verwenden. Natürlich auf der Sekundärseite der 
Netztafos.

von Rolf Magnus (Gast)


Lesenswert?

> Aus dem "gemeinsamer Netzschalter" schließe ich, daß sich beide nahe
> beieinander befinden, richtig?

Ich hätte jetzt aus "beide zur gleichen Zeit an verschiedenen Orten" 
geschlossen, daß genau das nicht der Fall ist. Vielleicht liegt ja ein 
langes Stromkabel dazwischen.

von Gast (Gast)


Lesenswert?

> Jede volle Stunde soll jeder AVR etwas machen.
> Also beide zur gleichen Zeit an verschiedenen Orten.

Da, wo ich früher (vor 15 Jahren) gearbeitet habe, hat man das mittels 
DCF-Empfang synchronisiert. So ein DCF-Empfängermodul kostet ja nicht 
die Welt, zumal bei einem Projekt, wo es so sehr auf Synchronität 
ankommt.

Ob das heute noch üblich ist, weiß ich allerdings nicht. schulterzuck

von Jens (Gast)


Lesenswert?

Ja es ist so.

Es gibt mehrere Travos an einem Ort. Dann gehe ich mit ca. 15V ~ 
Einzelleitungen (10 Stück) ca. 50m jeweils weit weg (durchs Wasser auch 
noch). Und an den Enden sind die Controller. Ich möchte halt nur mit je 
einer 3adrigen Leitung arbeiten und nicht unbedingt einen Bus aufbauen.

Im Test habe ich gerade die Nutzung der Netzspannungsfrequenz. Das geht 
erst mal sehr gut.

Eine Diode, eine Z-Diode, ein Optokoppler, und evtl. noch ein Teiler 
(4040) und dann an den INT des AVRs. Auch mit 50Hz ohne Teiler geht es, 
logisch.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ein hochohmiger Widerstand an einen AVR-Eingang hätte es auch getan...
Den Rest machen die Eingangsschutzdioden.  Sowas gibt's sogar für
230 V als Appnote von Atmel.

von AVRFan (Gast)


Lesenswert?

>Ich möchte 2 AVR per gemeinsamen Netzschalter starten und möchte, dass
>diese an einem Tag höchstens eine Sekunde auseinanderlaufen.

Das entspricht, wie hier schon gesagt wurde, ungefähr 1/86400 = 11 ppm. 
Das ist schon ziemlich anspruchsvoll.  Mach Dich mal über die 
Temperaturabhängigkeit der Frequenz von Schwingquarzen schlau; die 
beträgt nämlich günstigstenfalls (AT-Schnitt) schon ca. ±10 ppm bei 20 
°C Temperaturänderung.

Eine mögliche Lösung für Dein Problem wären - wenn kein Kabel zwischen 
den Bausteinen liegt - DCF77-gesteuerte Uhren.

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.