Forum: Mikrocontroller und Digitale Elektronik Mehrere MCUs synchronisieren - wie?


von H. G. (ledi)


Lesenswert?

Hallo!

Ich möchte mehrere RGB-Leds per Funk (mit einer Fernbedienung) 
ansteuern. Grundsätzlich funktioniert die Sache bereits. Ich habe aber 
das Problem, dass wenn ich einen Farbablauf starte, (alle LED-Empfänger 
erhalten zur gleichen Zeit das Signal) die einzelnen Farbverläufe nach 
ca. 30 sek. merkbar auseinander driften.

Auf Seite der Fernbedienung habe ich einen ATtiny44 und auf Seite der 
Empfänger jeweils einen AT90PWM316 im Einsatz.
Die Daten werden mit einem 2,4GHz-Funkmodul (RFM70) übertragen.

Ich müsste die Empfänger irgendwie synchronisieren, weis aber nicht, wie 
ich das am Besten mache.

Kann mir da bitte jemand weiterhelfen?

Danke!

von Falk B. (falk)


Lesenswert?

Nimm einen Quarz für die uCs, damit driften die Takte nur noch sehr 
wenig und sehr langsam auseinander.

MFG
Falk

von Arc N. (arc)


Lesenswert?


von Albert .. (albert-k)


Lesenswert?

Können die einzelnen Empfänger auch senden, oder sind reine Receiver 
Module verbaut?

von ... (Gast)


Lesenswert?

Ich vermute mal die empfänger laufen nach erhalt des signal autak weiter 
ohne weitere synchronisation.

1. die zeitgeber /schwingkreise in den empfänger abgleichen, so das der 
versatz nicht mehr erkennbar ist / der versatz erst nach stunden 
ersichtlich wird.

2. ggf ist punkt 1 auch ein software problem. die ausführung des codes 
benütigt x ms danach wird y ms in gewartet x+y geben die zeitbasis der 
animation vor. dumm nur wen x unterschiedlich ist (abhängig von 
programmablauf )und somit x+y nicht konstant ist. ggf hilft hier ein 
timer abhilfe der immer den nächsten animations schrit auslöst. (vor der 
beginn aufziehen, dann animationsschrit durchführen, danach warten bis 
timer abgelaufen und von vorn.)

3. einen der controller als master degradiren, der die anderen immer 
wieder trigert so das aus der bisher asynchronen animation eine central 
gesteuerte wird. ggf auch eine mischung aus beidem, fals mal ein signal 
nicht empfangen werden konnte.

von H. G. (ledi)


Lesenswert?

Das sollte so ca. 12 Stunden synchron laufen. Maximal 0,5sek. Differenz.

Schaffe ich das mit einem Quarz?

von H. G. (ledi)


Lesenswert?

Albert ... schrieb:
> Können die einzelnen Empfänger auch senden, oder sind reine Receiver
> Module verbaut?

Alle Funkmodule können senden und empfangen.

von Falk B. (falk)


Lesenswert?

@  Heimo G. (ledi)

>Das sollte so ca. 12 Stunden synchron laufen. Maximal 0,5sek. Differenz.

>Schaffe ich das mit einem Quarz?

Mal gerechnet? 0,5 zu 12h = 11ppm.

Wird knapp, da muss man den Quarz schon gut abgleichen.

>Alle Funkmodule können senden und empfangen.

Na dann ist es ja trivial. Ein Master sendet jede Sekunde oder Minute 
einen Ping, darauf synchronisieren sich alle anderen Slaves.

MFG
Falk

von H. G. (ledi)


Lesenswert?

Falk Brunner schrieb:
> @  Heimo G. (ledi)

> Na dann ist es ja trivial. Ein Master sendet jede Sekunde oder Minute
> einen Ping, darauf synchronisieren sich alle anderen Slaves.
>

Ok!
Dann werde ich das jetzt so versuchen.
Die 1. LED, die ich einschalte definiere ich als Master und lasse hier 
einen Timer laufen, der z.B. alle 10 sek. ein Sync-Komando aussendet 
nachdem sich alle anderen orientieren.

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.