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!
Nimm einen Quarz für die uCs, damit driften die Takte nur noch sehr wenig und sehr langsam auseinander. MFG Falk
NTP http://en.wikipedia.org/wiki/Network_Time_Protocol#Clock_synchronization_algorithm http://en.wikipedia.org/wiki/Marzullo's_algorithm
Können die einzelnen Empfänger auch senden, oder sind reine Receiver Module verbaut?
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.
Das sollte so ca. 12 Stunden synchron laufen. Maximal 0,5sek. Differenz. Schaffe ich das mit einem Quarz?
Albert ... schrieb: > Können die einzelnen Empfänger auch senden, oder sind reine Receiver > Module verbaut? Alle Funkmodule können senden und empfangen.
@ 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.