Mehrere MCUs synchronisieren - wie?

#2092772
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!
Gast #2092794
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.
#2093045
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
#2093872
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren