Forum: Mikrocontroller und Digitale Elektronik Synchronisation MPU6000 und Atmega 328


von Kai (Gast)


Lesenswert?

Hallo,

ich habe einen Bewegungssensor mit ATMEGA328 und MPU6000 gebaut, 
funktioniert gut, möchte aber mehrere dieser Sensoren betreiben, die 
sollen per Funk das Ganze an eine 'Zentrale' melden. Alle diese Daten 
müssen perfekt synchronisert sein. Dabei ist ein Problem, dass ich die 
ATMEGAs mit der Zentrale synchronisiere. Das ist schon gelöst, die 
ticken also alle ziemlich im selben Takt. Ich weiss aber nicht, wie ich 
die einzelnen MPU6000 mit dem jeweiligen ATMEGA synchronisieren kann. 
MPU600 gibt immer dann Daten ab, wenn sie fertig sind, aber das ist mir 
nicht genau genug. MPU6000 kann extern getriggert werden : Optional 
external clock inputs of 32.768kHz or 19.2MHz. Ist es möglich/sinnvoll, 
dies vom ATMEGA aus zu machen über so eine Art von PWM-Signal? Hat das 
mal jemand probiert?

Danke, Hamster

von PittyJ (Gast)


Lesenswert?

Ich verstehe 'perfekt synchronisert' nicht.
Diese Bausteine werden über I2C oder SPI ausgelesen. Alleine dadurch ist 
doch schon eine Verzögerung gegeben.
Dann senden alle die Daten über Funk. Geht das denn gleichzeitig? Stört 
da nicht einer den anderen?
Überhaupt fehlen Angaben zum Timing: Sekundengenau? Oder doch 
Microsekunden?
Und wenn mehrere CPU parallel laufen, dann läuft da auch der Takt 
auseinander. Es sei denn, alles sitzt auf einer Platine. Aber dann 
braucht man ja auch nur einen Beschleunigungssensor.

von googlemeister (Gast)


Lesenswert?

FSYNC der MPU nutzen?

von Hamster (Gast)


Lesenswert?

Danke PittyJ für die Antwort!

Die Synchronisation der Sensoren und der Zentrale (ATXMEGA 128) geht so, 
dass die Zentrale jedesmal wenn ein Datenpaket kommt, danach ihren 
aktuellen Timer-Stand an die Peripherie (Sender des Datenpaketes) 
sendet. Das geht ganz gut mit dem Protokoll des RFM70 Funkmodul. Der 
periphere Prozessor gleicht das dann mit seinem eigenen Timer ab und 
verändert ggf.die Zykluszeit im Programm/software dieses Prozessors 
(ATMEGA328, Sender), indem die Anzahl Tics, die die Zyclusschleife 
läuft, verändert wird.

Somit sind die Einlesezyclen aller Sensoren synchronisiert (Genauigkeit 
im Bereich von ca 1 ms). Dann hat jeder Sensor in diesem gemeinsamen 
Zyclus ein Zeitfenster, in dem er senden darf. Daten sollen mit ca 100 - 
250 Hz von MPU6000 aufgenommen werden (14 Bytes, 100-250 x pro s) . 
Daher wäre es wichtig, MPU6000 und ATMEGA zu synchronisieren, damit 
MPU6000 in jedem Zyclus die selbe Anzahl von Daten liefert. Und da war 
die Frage, wie man das am besten macht.

Gruss, Hamster

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.