mikrocontroller.net

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


Autor: H. G. (ledi)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Falk Brunner (falk)
Datum:

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

MFG
Falk

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Albert ... (albert-k)
Datum:

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

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: H. G. (ledi)
Datum:

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

Schaffe ich das mit einem Quarz?

Autor: H. G. (ledi)
Datum:

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

Alle Funkmodule können senden und empfangen.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: H. G. (ledi)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.