Forum: Mikrocontroller und Digitale Elektronik Rauschen von Beschleunigungssensor


von Fabian S. (jacky2k)


Angehängte Dateien:

Lesenswert?

Hallo Leute,
ich habe nun endlich alle Teile da für meine kleine Sensor Platine und 
habe diese gestern gleich bestückt.
Nun habe ich mich als erstes an den Beschleunigungssensor gemacht, ein 
MMA7455L von TI. Nach etwas hin und her bin ich in der Lage ihn 
anzusprechen und er macht anscheinen auch brav Messungen. Nachdem ich 
das Datenblatt studiert hatte war mir durchaus klar, dass das Teil wohl 
nen Haufen an Offset verursacht, dieser jedoch korrigierbar ist.
Interessanter (worüber ich im Datenblatt nichts gefunden habe) ist das 
Rauschen. Im Anhang ist ein Bild über 100 Messwerte (bei 125Hz 
Samplerate), wobei laut Datenblatt ein Wert von 64 einem g Entspricht.
Warum rauscht das so extrem? Ist das normal oder hab ich den Chip etwas 
zu sehr gequält (hat einmal versehentlich für ein paar Sekunden 5V 
abbekommen und im Pizzaofen fand er es sicher auch nicht lustig)?

Selbst wenn ich über 100 Werte mittle erhalte ich noch Schwankungen um 
bis zu 10 LSB! Die Platine liegt dabei natürlich vollkommen still ;)

von blubb (Gast)


Lesenswert?

Bist du dir im klaren darueber, dass der Chip saemtliche Vibrationen (in 
seinem Frequenzbereich) aufnimmt und anzeigt??

von blubb (Gast)


Lesenswert?

Lass doch mal ne Stecknadel fallen und schau, ob das nen Ausschlag 
gibt;)

von N. Müller (Gast)


Lesenswert?

...bzw. hauch ihn mal kräftig an.
Die Dinger sind oft sehr empfindlich was Temperaturwechsel (und bei 
schlechten reicht da schon ein bischen Wind) angeht.

von Fabian S. (jacky2k)


Lesenswert?

Ja aber ich glaube nicht, dass der Vibrationen von 1/2g ausgesetzt ist 
:-/
Oder täuscht das?

von Fabian S. (jacky2k)


Lesenswert?

Laut Datenblatt ist der temperatur-kompensirt. Aber in einer Sekunde 
wird der sich wohl kaum merklich in der Temperatur verändern.

von Michael (Gast)


Lesenswert?

Vermutlich soll der normalerweise feststellen, wo Unten ist, ob ein 
Gerät auf dem Tisch liegt oder einfach Bescheid sagen, wenn man gegen 
einen Baum fährt.

von Fabian S. (jacky2k)


Lesenswert?

Arg ich bekomm ne Kriese....
Vermutungen kann ich auch viele anstellen, hat hier jemand schon mal mit 
sochen Geräten gearbeitet und kann mir sagen in wie weit das normal ist, 
obs am Sensor liegt, ob es bessere gibt, ...

von gk (Gast)


Lesenswert?

Ein einfacher Test. Kippe eine bestimmte Achse um 90°, dann musst Du 
eine Differenz von 1 G als Signal bekommen.
gk

von Fabian S. (jacky2k)


Lesenswert?

Tueh ich nicht, das rauscht wie sau! Welchen Messwert soll ich denn dann 
nehmen? Irgend einen wohl kaum. Funktionieren tut das alles wunderbar, 
es rauscht nur sehr doll.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Fabian S. schrieb:
> es rauscht nur sehr doll.

Dann bilde einen Mittelwert, 32 Messungen nehmen, aufaddieren und 5x 
rechtsschieben.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Fabian S. schrieb:
> MMA7455L von TI.

Freescale.

von Fabian S. (jacky2k)


Lesenswert?

Knut Ballhause schrieb:
> Fabian S. schrieb:
>> es rauscht nur sehr doll.
>
> Dann bilde einen Mittelwert, 32 Messungen nehmen, aufaddieren und 5x
> rechtsschieben.

Joa hab ich wie gesagt schon gemacht und habe bei einer Mittelung über 
100 Werte immernoch Schwankungen um 10LSB! Und wenn ich über 100 Werte 
mittle habe ich fast eine Sekunde gemittelt, das geht nicht, viel zu 
träge.

von Fabian S. (jacky2k)


Angehängte Dateien:

Lesenswert?

So, hab gerade mal ne Spektralanalyse von dem Quark gemacht und das 
sieht eindeutig nach weißem Rauschen aus, bandbegrenzt natürlich.
Sagt mir wohl, dass das keine systematischen Störungen sondern wohl eher 
Ungenauigkeit des Sensors ist :-/
Wie schauts aus? Gibts jemanden der ähnliche Erfahrungen mit solchen 
Sensoren gemacht hat?

von tropf (Gast)


Lesenswert?

Ich benutze in meinem schon einige Jahre alten Selbstbaustabi für den 
Heli den LIS3LV02DQ. Auf dem zugehörigen Display kann ich den in g 
umgerechneten Wert mit einer Nachkommastelle anzeigen und der steht bei 
9,8 ohne dass der Wert wackelt. Eine Mittlung über mehrere Messungen ist 
nicht in der Software denn das wird später im Kalmannfilter bereinigt.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Fabian S. schrieb:
> Gibts jemanden der ähnliche Erfahrungen mit solchen
> Sensoren gemacht hat?

Nö, eigentlich nicht. Unsere MAA7455L Sensoren wackeln bei 8Bit 
Auflösung um 2LSB. Wie sieht´s denn mit dem Sieben der Betriebsspannung 
aus?

von Fabian S. (jacky2k)


Lesenswert?

Knut Ballhause schrieb:
> Nö, eigentlich nicht. Unsere MAA7455L Sensoren wackeln bei 8Bit
> Auflösung um 2LSB. Wie sieht´s denn mit dem Sieben der Betriebsspannung
> aus?

Das ja jetzt blöd, oder gut, je nachdem :P
Habe gerade mals Scope an Vcc geklemmt, AC-Kopplung an und ich sehe da 
so +/-5mV Spitzenwerte. Effektivwermessen kann mein Scope nicht. Mein 
Multi sacht 1mV, wobei das die letzte darstellbare Stelle ist und da das 
laut Scope recht hochfrequenter Mist ist, ist das Multi sowieso 
überfordert.

Meinst das ist zu viel?

PS: Ich glaub ich bin auch im 8g/10Bit Mosud... macht das nen 
Unterschied?

von gk (Gast)


Lesenswert?

Also da scheint ja noch was ganz schief zu laufen. Du bist Dir auch 
sicher, dass da keine Bits vertauscht sind. High mit Low oder so ? Oder 
mit der Ansteuerung noch was falsch läuft.
gk

von Fabian S. (jacky2k)


Lesenswert?

Ich werde das morgen nochmal genauer unter die Lupe nehmen.
Habe mir deweil nen kleines Programm geschrieben wo das ganze in 
Echtzeit grafisch dargestellt wird und zudem die Achsen einzeln doppelt 
hoch integriert werden, um Geschwindigkeit und Strecke zu ermitteln. 
Sieht nicht so gut aus, das Teil läuft ein ein paar Sekunden um mehrere 
Meter weg und das ganze steigt dann logischer weise quadratisch weiter 
;) Wobei es bis jetzt auch nur eine Rechteck-Integration ist :P

von Guido Körber (Gast)


Lesenswert?

Wir verwenden die SMB380 und BMA180 von Bosch:
http://www.codemercs.com/index.php?id=58&L=0

Der BMA180 hat nicht mal in seinem gröbsten Messbereich so eine miese 
Auflösung und dann ist das Rauschen auch auf 1 LSB runter. Ich würde 
auch vorschlagen mal nach der Versorgungsspannung zu sehen, manche Leute 
räumen ja ihre Leiterplatten ordentlich auf: Kondensatoren in eine Ecke, 
Chips in die andere. Dann ist es kein Wunder wenn es rauscht.

von Martin1 (Gast)


Lesenswert?

Guido Körber schrieb:
> manche Leute
>
> räumen ja ihre Leiterplatten ordentlich auf: Kondensatoren in eine Ecke,
>
> Chips in die andere.

Echt ?

von Alex (Gast)


Lesenswert?

Hallo,

ich habe vor einiger Zeit ebenfalls mit dem MMA7455L von FREESCALE etwas 
gebastelt.
Ich bekomme dabei sehr stabile Werte, legendlich das LSB flackert.
Samplingrate hab ich die 64kHz, angesprochen wird er über SPI.

Wurde auch im Pizzaofen gelötet, aber 5V hat er nie abbekommen.

Ich hoffe etwas geholfen zu haben.

Alex

von Alex (Gast)


Lesenswert?

achja, 2g Modus, 8Bit

von Fabian S. (jacky2k)


Lesenswert?

Das klingt alles sehr seltsam...also ich werde mich gleich nochmal dran 
machen die Versorgung zu glätten und bis dahin fänd ichs super wenn mal 
jemand über meine Routinen zum auslesen des Sensors schaun würde, hier 
das wesentliche:

Initialisierung:
1
*cs_ddr |= (1<<cs_pin);
2
  
3
setReg(0x0D, 0x9D);  // 1001.1101b, disable I2C
4
// 0000.0001b, INT1 enable, 4wire SPI, no selftest, 8g, meas. mode
5
//setReg(0x16, 0x01); 
6
// 0000.0001b, INT1 enable, 4wire SPI, no selftest, 2g, meas. mode
7
setReg(0x16, 0x05);
8
9
if(getReg(0x0D)==0x9D)
10
  ok=true;
11
else
12
  ok=false;

Zugriff auf Register:
1
void MMA7455::setReg(uint8_t addr, uint8_t value)
2
{
3
  setChipSelect(true);
4
  spi->transmit((1<<7) | addr<<1);
5
  spi->transmit(value);
6
  setChipSelect(false);
7
}
8
9
uint8_t MMA7455::getReg(uint8_t addr)
10
{
11
  setChipSelect(true);
12
  spi->transmit(addr<<1);
13
  uint8_t value=spi->receive();
14
  setChipSelect(false);
15
  return value;
16
}

Auslesen des X-Wertes (die anderen sind quasi Copy&Paste):
1
int16_t MMA7455::getX()
2
{
3
  uint8_t low=getReg(0x00);
4
  uint8_t high=getReg(0x01);
5
  uint16_t x=low;
6
  x |= ((uint16_t)high)<<8;
7
  if(x&(1<<9))
8
    x |= 0xFC00;
9
  return (int16_t)x;
10
}

Und noch das SPI Interface:
1
void SPI::Init()
2
{
3
  *mosi_ddr |= (1<<mosi_pin);
4
  *sck_ddr |= (1<<sck_pin);
5
  *miso_ddr &= ~(1<<miso_pin);
6
7
  SPCR = (1<<SPE) | (1<<MSTR) | (1<<SPR1) | (1<<SPR0);
8
  SPSR = 0;
9
}
10
11
void SPI::transmit(uint8_t data)
12
{
13
  SPDR = data;
14
  while(!(SPSR & (1<<SPIF)));
15
}
16
17
uint8_t SPI::receive(void)
18
{
19
  SPDR = 0xff;  // Hier weiß ich nicht was ich senden soll!!!!
20
  while(!(SPSR & (1<<SPIF)));
21
  return SPDR;
22
}

Das ganze ist ein mega644 mit 16MHz, SPI rennt also mit 125kHz.

von Fabian S. (jacky2k)


Lesenswert?

OK, eine Erfolgsmeldung. Und zwar befinden sich auf der Platine noch 
drei Drehratensensoren, wovon nur einer bestückt ist. Diese Sensoren 
haben einen Step-Up-Wandler, um sich irgendwas bei 20V zu erzeugen. Ich 
habe dem gerade mal die Spule geklaut und siehe da, die Messergebnisse 
sind deutlich besser, aber bei weitem noch nicht so gut wie hier 
beschrieben. In Ruhelage (unkalibriert) schwankt der X-Wert von -3 bis 
-10. Mit der Spule drin zwischen -16 und +6.
Also kann man wohl sagen, dass das alles an ner bescheidenen 
Stromversorgung liegt?
Da ich das Board auf Grund eines anderen groben Designfehlers sowieso 
nochmal überarbeiten, neu bestellen und bestücken muss, werde ich mir da 
noch mal Gedanken drüber machen müssen.

von tropf (Gast)


Lesenswert?

Vielleicht ist es angebracht AVDD über eine 10µH Drossel zu versorgen 
und direkt am Chip mit einem 100nF C abzublocken?

von Fabian S. (jacky2k)


Lesenswert?

Joa, sowas in der Richtung war nun auch mein Plan.
Werde das Routing evtl. noch ein wenig übern Haufen werfen, die 
Versorgung der Step-Up-Wandler direkt von der Quelle holen und nicht 
alles über eine Leitung und sowas in der Art.
Bin nun erstmal dabei den Rotationssensor zu evaluieren und dann bau ich 
ne neue Platine.

von Hugo Habicht (Gast)


Lesenswert?

Zeig mal Dein Layout. Da wird der Fehler sein...

von Fabian S. (jacky2k)


Angehängte Dateien:

Lesenswert?

Ups, dachte ich hätte das schon mal hoch geladen ;)
Dazu ist zusagen, dass die Unterseite (blau) Auto-GND und die Oberseite 
Auto-Vcc hat.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Das Wort "noise" kommt im Datenblatt und der Application note AN3468 nur 
je einmal vor, und bezieht sich auf Rauschen der Betriebsspannung. 
Offenbar ist dieses Bauteil völlig rauschfrei.

http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MMA745xL

von Michael (Gast)


Lesenswert?

Das Versorgungsspannungskonzept "Auto und wird schon ankommen" kann 
manchmal arg weit von sternförmig und induktionsarm entfernt sein. Das 
würde ich noch mal überprüfen (ist so etwas schwierig zu sehen).

von Fabian S. (jacky2k)


Lesenswert?

Joa so scheint es mir jetzt auch inzwischen sein zu müssen. Der Knut 
meinte ja auch schon, dass er bei ihnen auch maximal um 2 LSB zappelt.

von Fabian S. (jacky2k)


Lesenswert?

Michael schrieb:
> Das Versorgungsspannungskonzept "Auto und wird schon ankommen" kann
> manchmal arg weit von sternförmig und induktionsarm entfernt sein. Das
> würde ich noch mal überprüfen (ist so etwas schwierig zu sehen).

Naja, der Autorouter hatte seine Finger da aber nicht im Spiel, das ist 
alles per Hand gemacht. Und Vcc ist schon so weit es möglich war 
sternförmig verlegt, nur kommt hinter dem Anschluss des 
Beschleunigungssensors halt noch ein Step-Up-Wandler ;)

von Michael (Gast)


Lesenswert?

Christoph Kessler (db1uq) schrieb:
> Offenbar ist dieses Bauteil völlig rauschfrei.

Das wäre eine Interpretation ;-)

Michael schrieb:
> Vermutlich soll der normalerweise feststellen, wo Unten ist, ...

Deshalb auch meine Vermutung zur etwas grobschlächtigen Funktion. Eine 
anständige Spezifikation sieht anders aus.

Bin gespannt was mit einem überarbeiteten Layout rauszuholen ist.

von Matthias Larisch (Gast)


Lesenswert?

Die Induktivitäten dichter an die Schaltregler (geschaltete Strompfade 
kurz halten!),
Kondensatoren passender Größe (mal Schaltfrequenz anschauen) "um" die 
Induktivitäten am Schaltpfad, Kondensatoren dichter an ihre jeweiligen 
"Verbraucher" (Stromschleifen kleiner machen!). Außerdem aufpassen, wo 
deine Stromschleifen langführen! Das sieht ziemlich grauslig aus... Auch 
auf ner doppelseitigen Platine sollte das etwas besser machbar sein. 
Nimm dir erstmal nen Zentimeter mehr Platz in jede Richtung und fang neu 
bei der Platzierung an.

von Fabian S. (jacky2k)


Lesenswert?

Michael schrieb:
> Bin gespannt was mit einem überarbeiteten Layout rauszuholen ist.

Hmmm... wie sieht das denn aus mit einem anständigeren Chip, der ne 
vernünftige Beschreibung hat?

Was das Ziel angeht: Das Teil muss auf jeden Fall dafür taugen für einen 
Quadrokopter/ein Flugzeug eine Lagebestimmung zu machen, was mit dem 
jetzigen Sensor und etwas besserer Versorgung wohl schon möglich wäre. 
Richtig super wäre es auch, wenn ich mit dem Teil Positionsbestimmung 
machen könnte für eine Fernbedienung, einen Roboter oder ähnliches. Also 
müsste das Teil mehrere Minuten lang ohne große Drift laufen können.

@Matthias Larisch
Jops, werd ich machen, danke ;)

von Matthias Larisch (Gast)


Lesenswert?

Fabian S. schrieb:
> machen könnte für eine Fernbedienung, einen Roboter oder ähnliches. Also
> müsste das Teil mehrere Minuten lang ohne große Drift laufen können.

Das kannst du denke ich vergessen. Du wirst keinen Beschleunigungssensor 
finden, mit dem du über mehrere Zehn Sekunden zuverlässig integrieren 
kannst.

> @Matthias Larisch
> Jops, werd ich machen, danke ;)

Kein Problem :) war auch nur ein grober Blick von mir, habe nur ein paar 
Leiterbahnen verfolgt.

von Fabian S. (jacky2k)


Lesenswert?

Matthias Larisch schrieb:
> Das kannst du denke ich vergessen. Du wirst keinen Beschleunigungssensor
> finden, mit dem du über mehrere Zehn Sekunden zuverlässig integrieren
> kannst.
Hmmm Schade... Warum geht das denn dann mit Rotationssensoren, das 
bekommen die Quadrokopter ja wunderbar hin. Und nach den ersten 
Messungen die ich mit dem, den ich auf der Platine habe gemacht habe 
sieht das ganze sehr vielversprechend aus.
>> @Matthias Larisch
>> Jops, werd ich machen, danke ;)
>
> Kein Problem :) war auch nur ein grober Blick von mir, habe nur ein paar
> Leiterbahnen verfolgt.

Joa hast schon recht, das ist alles nicht perfekt verlegt, mir war beim 
Verbauen des ganzen nicht klar, dass das ein Step-Up ist, sonst hätte 
ich das gleich anders gemacht. Ich dachte das wäre einfach nur ne 
Filterung.

von Michael (Gast)


Lesenswert?

Fabian S. schrieb:
> Hmmm... wie sieht das denn aus mit einem anständigeren Chip, der ne
> vernünftige Beschreibung hat?

Beim SMB380 ist z.B. ein typisches Rauchen von 0.5 mg/sqrt(Hz) angegeben 
Auch die nichtlinearität ist mit +/-0.5 %FS spezifiziert.
http://www.olimex.com/dev/pdf/OTHER/SMB380_Preliminary_Datasheet_Rev13_20070918.pdf

von Chris (Gast)


Lesenswert?

Was sind das für Gyro Sensoren ?

von Fabian S. (jacky2k)


Lesenswert?

ADXRS450 von Analog

von Uwe (Gast)


Lesenswert?

Gyro und Beschleunigungssensor werden miteinander verrechnet 
(Kalman-Filter). Nur so kommt man auf Werte die man als 
Inertialnavigationsystem (INS) benutzen kann. Der Beschleunigungsmesser 
kann eine Beschleunigung um eine Achse (Drehbewegung) nicht Messen (bzw. 
Mißt blödsinn). Wo ist eigenlich Unten im Freihen Fall (bzw. ich bewege 
mig mit 1g nach vorn und bin im freihen Fall ist jetzt vorne unten oder 
habe ich mich gedreht ?).
Es addieren sich jedoch auch bei dieser Kombi schnell Fehler auf.
In Größeren Zeiträumen (alle 1-10Minuten) mit GPS abgleichen ist wohl 
die beste Lösung. Das GPS ist hinsichtlich schneller Positionsbestimmung 
(bzw. hohe Beschleunigung über kurze Strecken) ungeeignet jedoch alle 
paar hundert meter genauer. Das INS ist schneller und für kurze Strecken 
(bzw schnelle Beschleunigungen über kurze Strecken) um Größenordnungen 
besser.

von Fabian S. (jacky2k)


Lesenswert?

Klingt plausibel und so ähnlich hatte ich mir das auch vorgestellt.
Nur wird das mit GPS schwer in einer Halle und wenn sich der Roboter nur 
4m maximal bewegt ;)
Hauptsache das mit der Lagebestimmung funktioniert.

von Chris (Gast)


Lesenswert?

Mir fehlen hier mindestens 5 Kondensatoren. Auch der ADC dürfte bei dem
Layout abseits der Specs sein. AD hat einige AN bezüglich gemeinsamer
Nutzung eines HV Spannung für die Gyros, musst bei den nicht SPI Typen
nachsehe, um die AN zu finden. Ansonsten Junge Junge, bei den Resultaten
sieht es noch gut aus, hätte es mir schlechter vorgestellt, aber 
warscheinlich kommt das noch im Einsatz. Einfach die Kondensatoren 
welche im Datasheet Pflicht sind streichen. Weiters AVCC nach VCC 
anschließen und
den Kondensator ja weit weg von AVCC, weiter als 7mm, schon bei linearen
PSU muss man bei diesen Distanzen einen zusätzlichen Kondensator 
einfügen,
geschweige denn wenn der Digitalteil Priorität hat und dem Analogteil
Spannung entzieht, einfach weil das weniger weit entfernt ist als der
rettende Kondensator.

von Fabian S. (jacky2k)


Lesenswert?

Chris schrieb:
> AD hat einige AN bezüglich gemeinsamer
> Nutzung eines HV Spannung für die Gyros, musst bei den nicht SPI Typen
> nachsehe, um die AN zu finden.
Das hatte ich hier schon mal gefragt gehabt, ob das möglich ist die 
zusammen zu legen und habe damals ein recht klares nein erhalten :-/
Und wieso nicht-SPI Typen? Das werden über SPI angesprochen oder meinst 
du mit SPI noch was anderes?

Edit: Ups, hab den Satz falsch verstanden, alles klar!

> Auch der ADC dürfte bei dem Layout abseits der Specs sein.
Welcher ADC?

> Weiters AVCC nach VCC anschließen und ...
Das steht so im Datenblatt wenn ich bitten darf!

Also deiner Meinung nach Vcc und AVcc auch nochmal trennen?

von elmsfeuer (Gast)


Lesenswert?

Hallo Fabian,

Ich hatte genau das von Dir beschriebene Rauschproblem ebenfalls, aber 
mit einem ADXL345 Beschleunigungssensor, du bist also nicht allein. Bei 
mir waren die Schwankungen in Ruhelage auf allen Achsen auch um die 
+-0.5g bei einer Samplerate von 50 Hz. Noch übler wurden die Werte bei 
Sampleraten zwischen 50 und 3200 Hz.

Mein erster Aufbau war ein Meshbean-Board + Sensor-Breakout-Board. Der 
Meshbean ist übrigens ebenfalls wie bei Dir mit einem Step-Up-Wandler 
ausgestattet. Das Rauschen habe ich nie wegbekommen.
Meshbean-Schaltplan: 
http://www.meshnetics.com/netcat_files/Image/P-MB2P-461~02-%28WDB-A1281-A2%20Schematics%29.pdf

Mein zweiter Aufbau ist nun ein mBed-Board + Sensor-Breakout-Board. 
Damit funktioniert der Sensor astrein, Babypopo glatte Messkurven in 
Ruhelage. Das mBed-Board benutzt keinen Step-Up-Wandler.
mBed-Schaltplan: http://mbed.org/media/uploads/chris/mbed-005.1.pdf

Leider kann ich Dir nicht so richtig weiterhelfen mit Deinem Problem, da 
für mich an der Stelle des Boardwechsels mein Problem nicht mehr bestand 
und ich somit auch nicht nach einer Lösung suchen musste. Allerdings 
hoffe ich Dir mit meiner Schilderung zumindest einen Vergleich 
geschaffen zu haben.

MfG

von Fabian S. (jacky2k)


Lesenswert?

@elmsfeuer
Danke für die Info, werde mir die Schaltpläne bei Gelegenheit mal 
genauer ansehen.

@Chris
Es tut mir Leid, aber ich finde kein AN bezüglich der gemeinsam 
genutzten Hochspannung für mehrere Gyros, kannst du mir da evtl. nochmal 
auf die Sprünge helfen?

von Chris (Gast)


Lesenswert?

Bez. Datenblatt Beschleunigungssensor, dort steht klar, dass jeweils
AVCC sowie VCC 10uF sowie 0.1uF brauchen. Du hast im Prinzip 0 
Kondensatoren,
denn VCC hängt am 1uF Kondensator des Gyros. Weiters entzieht das Gyro
sicherlich dem Beschleunigungssensor Spannung und die DVCC sowie das VCC
vom Gyro versauen dir jede Messung. Daß die Kondensatoren bei dem Layout 
von
der Spule leergesaugt werden, sowei daß die Spule viel zu nahe 
angeschlossen
ist sollte dir auch klar sein. Wie gesagt, ich wundere mich, daß es
so problemlos funktioniert.
Auch dein AVR hat keine Kondensatoren, für die 3 Gyro würde ich einen
10uF Kondensator auch noch Veranschlagen. Weiters einen 100uF am Eingang
sowie auch 0.1 und 1uF welche vom uC mitbenutzt werden können, und auch
würde ich einen Widerstand vor den Kondensatoren verwenden um den Rest
etwas abzukoppeln. Da die Gyro aber mit der gleichen Frezuez wie der
Beschleunigungssensor sampled (Z), würde ich sagen, ohne 3V PSU (Zetex)
sowie shotty diode + Kondensator um VCC sowie Masse abzukoppeln läuft 
wenig.
Auch verstehe ich nicht, wie du es schaffen willst i2c und spi 
gleichzeitig
laufen zu haben.

von Fabian S. (jacky2k)


Lesenswert?

Chris schrieb:
> Da die Gyro aber mit der gleichen Frezuez wie der
> Beschleunigungssensor sampled (Z), würde ich sagen, ohne 3V PSU (Zetex)
> sowie shotty diode + Kondensator um VCC sowie Masse abzukoppeln läuft
> wenig.

Sorry ich verstehe nur Bahnhof. Woher weißt du wie viele Samples der 
Gyro macht? Das konnte ich bislang im Datenblatt nicht finden. Und woher 
weißt du mit welcher der beiden Sample-Raten ich den 
Beschleunigungssensor laufen lassen will???
Und was meinst du mit PSU? Power Supply Unit? Was bedeutet das für dich 
in dem Fall? Die Platine wird mit 3,3V gespeist, was soll ich da noch 
groß umwandeln? Und wo soll ich (und wozu) ne Shottky Diode einbauen? In 
den Vcc Zweig? Mit welchem Ziel?

> Auch verstehe ich nicht, wie du es schaffen willst i2c und spi
> gleichzeitig
> laufen zu haben.
Wie kommst du denn da drauf? Die laufen beide per SPI. Ich muss den 
Beschleunigungssensor nur zuerst ansprechen und ihm sagen, dass er I2C 
abschalten soll, da es sonst nach hinten los gehen kann.

von Ein Gast (Gast)


Lesenswert?


von Chris (Gast)


Lesenswert?

der Bewegungssensor geht runter bis zu 2.4V. Eine 2.8V PSU mit 2 1uF 
keramischen Kondensatore sowie 100mV Dropout kostet wenig und erspart 
Ärger,
aber auch die minimale Last achten. Zetex ist z.B. einer welche ich 
öfter
einsetze, gibt aber ne unmenge anderer, ev. auch mit 130mV Dropout sowie 
bandbass Kondensator. Die ADXR haben ihren eingebauten Vreg, deshalb 
müsste das klappen. Diode+Kondensator an Masse zur Entkopplung vom 
Beschleunigungssensor von den Schaltwandlern. Ein Spannungsteiler
aufgebaut mittels Widerstände löst dabei die Pegelkonversion, MSIO 
braucht
sowieso einen Pull-up von 47kOhm um die Geschwindigkeit zu erreichen 
(ADXR).
Schau dir mal den Schaltplan hier an, 
http://www.jameco.com/Jameco/Products/ProdDS/2109667-spec.pdf  sowas 
meinte ich, mit einfacheren Pegelwandlern
sowie den Kondensator+Diode zur Entkopplung von GND oder aber auch
AGND sowie AVCC separat zu speisen (entkoppelt) und DGND und DVCC die 
3.3V
zu nehmen mit einer Diode von AVCC zu DVCC. Ich würde mir eine 
Einseitige
Platine machen und da dann den Unterschied der beiden Varianten 
austesten.
IADDR0 sowie alle NC solltest du auf GND legen, vereinfacht das Layout.
Achso, für das Layout, Vias nach den Kondensatoren abgesehen von 
Signalleitungen sind Tabu für Gyro/Accel Bausteine. Die Spule, mach
ein kombiniertes Layout mit 1812 (4532 Metric) Gehäuse, das ist nähmlich
das Gehäuse das man normalerweise nehmen würde, bei kleinen Stückzahlen.
Miss auch die Spannung der Led, welche du einmal Kalibrierst, zumindest
bau das ins Layout ein, Kondensator für AVref brauchst du nicht, 
Messungen
werden gefiltert, es schaded aber nicht das im Layout vorzusehen und 
auch
ev. ein paar ADC pins als Testpunkte. Du solltest nur eine Möglichkeit 
haben, die Spannung zu
messen, um z.B. bei 2.9V zu wissen dass die Resultate deshalb ungenau 
sind
oder auch ob die Spannungsversorgung stark schwankt oder nicht.
Auch würde ich einen PPS Eingang (GPS/DCF77) vorsehen, damit die 
Messdaten
genau Zeitgestempelt werden können und auch das Quarz controlliert 
werden
kann, über ein Register welcher den Timerwert beim Eintreten des 
gefilterten PPS Interrupts sichert und den Timer auf 0 setzt.
Temperatursensor würde ich auch vorsehen. Nicht vergessen
das Ganze in ein Gehäuse einzubauen oder zumindest zu enkapsulieren 
mittels
entfernbarer Vergussmasse. Auch solltest du die Möglichkeit haben einen
Interrupt abzusetzen, um über i2c auf dich aufmerksam zu machen, daß du
bewegt wurdest. Daß das Layout so nicht geht, ist dir schon klar ?
Schreib es, wenn es genügen sollte das vorhandene Layout zu modifizieren
(Patchkabel sowei Leitungen Trennen). dafür solltest du aber das brd 
posten.

von Fabian S. (jacky2k)


Lesenswert?

Hey Chris, kannst du bitte nochmal grübeln wie die AN hieß, um da was an 
der Versorgung einzusparen? Wäre echt top wenn ich mir zwei der Spulen 
etc einsparen könnte :)

von Fabian S. (jacky2k)


Lesenswert?

Alter ich habe höchstens die Hälfte verstanden.... und das ganze scheint 
mir ehrlich gesagt etwas viel Aufwand :-/
Vor allem das mit der Diode habe ich immer noch nicht verstanden, da ich 
das Verfahren nicht kenne. Habe ich das richtig verstanden, dass ich das 
IC nicht mit seinen GND Pins an GND anschließen soll sondenr über eine 
Diode an GND??? Kann ich mir jetzt nicht direkt vorstellen, dass das 
reibungslos funktioniert, was das bringen soll und sowieso ganz seltsam 
:P

Und was das Spulengehäuse angeht: Wie zur Hölle soll ich da dran kommen 
ohne Arm zu werden?

Und zu dem Linear-Regler: Habe ich das richtig verstanden, dass ich 
einfach die 3,3V mit einem Low-Drop nochmal "filtern" soll und dann 
damit den Beschleunigungssensor betreiben?

Und wie stellst du dir das mit den ganzen verschiedenen Spannungen und 
zwei verschiedenen GNDs vor? Wäre ich auffer Arbeit würde ich da erstmal 
mindestens ne 4 Lagen Platine beanschlagen, um das alles vernünftig von 
einander zu trennen, jedoch habe ich nicht das nötige Kleingeld, um mir 
davon drei Prototypen fertigen zu lassen.

Und das mit dem Timer habe ich jetzt noch absolut gar nicht verstanden. 
Wozu sollte ich Messwerte datieren? Die sollen verarbeitet werden und 
dann über SPI/I2C/UART ausgelesen/weitergeleitet werden. Wozu brauche 
ich da Zeitangaben?

Ich finde es echt super, dass du mir helfen willst und finde es auch 
fantastisch was du da anscheinden aufm Kasten hast, aber wenn ich davon 
so gut wie nichts verstehe hilft es mir nicht weiter. Und selbst wenn du 
mir hier nun alles sagst wie ich es machen soll werde ich es nicht 
verstehen und habe nichts daraus gelernt, was unterm Strich irgendwie 
das Ziel ist.
Ich würde mich daher freuen wenn wir das Thema ausgiebieger behandeln 
könnten, gerne auch per Skype/ICQ/MSN, what ever.

PS: Hatte deine Nachricht bei dem Post drüber noch nicht gesehen gehabt, 
vergessen F5 zu drücken ;)

von Guido Körber (Gast)


Lesenswert?

Na die bessere Lösung wäre es bessere Sensoren zu verwenden. Die Bosch 
BMA180 laufen Kreise um den Freescale Kram den Du verbaust und Gyros 
gibt es dreiachsig in einem Gehäuse, ohne den Aufwand mit der 
Stromversorgung, da wären ST und Invensense momentan die richtigen 
Quellen.

von Fabian S. (jacky2k)


Lesenswert?

Also ich muss sagen zumindest die Drehratensensoren von ST finde ich 
sehr intressant, doch kann ich mir ehrlich gesagt nicht vorstellen, dass 
die besser sein sollen als der von Analog, der momentan auf dem Board 
ist.

Den BMA180 finde ich sehr beeindruckend, jedoch konnte ich bislang keine 
Bezugsquelle ausfindig machen, an die ich ran komme und nicht arm werde, 
nicht mal Farnell hat das Teil. Hab ihn bislang nur bei digi gefunden 
und da sind die Versandkosten immer mörderisch.

von Fabian S. (jacky2k)


Lesenswert?

Und ich habe mir überlegt, wenn ich sowieso dabei bin die Platine um zu 
bauen und neue Bauteile einsetze könnte ich eigentlich auch gleich noch 
zwei weitere Sensoren für Luftdruck und Magnetfeld (Kompas) einbauen. 
Hat da jemand Vorschläge? Der Drucksensor von Bosch (BMP180) sieht ganz 
nett aus, fürs Magnetfeld habe ich jetzt noch nichts gutes gefunden.

von Ein Gast (Gast)


Lesenswert?


von Fabian S. (jacky2k)


Lesenswert?

Ähhh ja, dann kann ich auch einfach mein Handy nehmen was ich so oder so 
schon habe. Da habe ich dann auch gleich noch GPS und UMTS mit drin. Nur 
der Beschleunigungssensor in meinem Gerät ist eine Katastrophe! Da bin 
ich mit der jetzigen Platine noch echt gut bedient. Also die Frage 
bleibt: Wie gut sind diese Sensoren???

von Ein Gast (Gast)


Lesenswert?

Welche meinst du jetzt?

von Fabian S. (jacky2k)


Lesenswert?

Ich mein die Gyros. Der ADXRS450 von Analog und z.B. der L3G4200D von 
ST.
Ich meine alleine die Preisunterschiede sind ja gigantisch.

von Guido Körber (Gast)


Lesenswert?

Bosch Sensoren gibt es z.B. bei Acal.

von Fabian S. (jacky2k)


Lesenswert?

Hmm... BMA180 haben sie nicht auf Lager und kein Preis dafür.
Und für den BMP180 gibts nur nen Eval-Board wenn ich das richtig sehe. 
Ich schreib den mal ne Mail...

von Hermann (Gast)


Lesenswert?

Fabian S. schrieb:
> Hmm... BMA180 haben sie nicht auf Lager und kein Preis dafür.
> Und für den BMP180 gibts nur nen Eval-Board wenn ich das richtig sehe.

ich hatte damit hier kein problem  - > 
http://www.sander-electronic.de/be00006.html

ist zwar nicht gelistet, aber war verfügbar.

wer nimmt noch BMP180  ;-)

der neue heisst .. MS5611-01BA01  ;-)
 - > http://www.sander-electronic.de/be00067.html

von Iuliia Medvednikova (Gast)


Lesenswert?

Uwe schrieb:
> Gyro und Beschleunigungssensor werden miteinander verrechnet
> (Kalman-Filter). Nur so kommt man auf Werte die man als
> Inertialnavigationsystem (INS) benutzen kann. Der Beschleunigungsmesser
> kann eine Beschleunigung um eine Achse (Drehbewegung) nicht Messen (bzw.
> Mißt blödsinn). Wo ist eigenlich Unten im Freihen Fall (bzw. ich bewege
> mig mit 1g nach vorn und bin im freihen Fall ist jetzt vorne unten oder
> habe ich mich gedreht ?).
> Es addieren sich jedoch auch bei dieser Kombi schnell Fehler auf.
> In Größeren Zeiträumen (alle 1-10Minuten) mit GPS abgleichen ist wohl
> die beste Lösung. Das GPS ist hinsichtlich schneller Positionsbestimmung
> (bzw. hohe Beschleunigung über kurze Strecken) ungeeignet jedoch alle
> paar hundert meter genauer. Das INS ist schneller und für kurze Strecken
> (bzw schnelle Beschleunigungen über kurze Strecken) um Größenordnungen
> besser.

Hallo Uwe,

ich habe eine Beschleunigungssensor und Gyro. Am Ende möchte ich die 
gefahrene Strecke berechnen. Wie soll ich denn den Kalman Filter 
einsetzen? Einzeln für x, y und z [g] und daraus zwei mal integrieren? 3 
mal 3D-Kalman Filter für jeweils {ax, vx, Sx}, {ay, vy, Sy} und {az, vz, 
Sz} oder 9D für alle Richtungen auf einmal? Es gibt so viele 
Möglichkeiten... Aber welche von den richtig?

LG Julia

von Stefan F. (Gast)


Lesenswert?

Iuliia Medvednikova schrieb:
> ich habe eine Beschleunigungssensor und Gyro. Am Ende möchte ich die
> gefahrene Strecke berechnen.

Das hatte ich auch mal versucht. Es geht nicht.

Dieser Sensor müsste 100 mal empfindlicher sein, damit man aus der 
Beschleunigung ungefähr eine Strecke berechnen kann. Ich hatte deswegen 
ein Gespräch mit einem anderen Chip Hersteller (Bosch) die haben mir 
klar gemacht, dass derart empfindliche Sensoren nur in sehr kleiner 
Stückzahl auf Anfrage produziert werden und dass ich sie mir mit meinem 
Hobby Budget garantiert niemals leisten kann.

von Fabian S. (jacky2k)


Lesenswert?

Stefanus F. schrieb:
> Iuliia Medvednikova schrieb:
>> ich habe eine Beschleunigungssensor und Gyro. Am Ende möchte ich die
>> gefahrene Strecke berechnen.
>
> Das hatte ich auch mal versucht. Es geht nicht.
>
> Dieser Sensor müsste 100 mal empfindlicher sein, damit man aus der
> Beschleunigung ungefähr eine Strecke berechnen kann. Ich hatte deswegen
> ein Gespräch mit einem anderen Chip Hersteller (Bosch) die haben mir
> klar gemacht, dass derart empfindliche Sensoren nur in sehr kleiner
> Stückzahl auf Anfrage produziert werden und dass ich sie mir mit meinem
> Hobby Budget garantiert niemals leisten kann.
Ich würde sagen, das kommt immer stark darauf an wie lange man 
integrieren will und wie viel Fehler man tolerieren kann. Wenn man sich 
mal Sensoren anschaut, sind die inzwischen echt gut geworden:
http://www.analog.com/media/en/technical-documentation/data-sheets/ADIS16495.pdf
Der kostet zwar auch seine 2k€, aber damit kann man schon viel anfangen.

von Stefan F. (Gast)


Lesenswert?

Fabian S. schrieb:
> Der kostet zwar auch seine 2k€, aber damit kann man schon viel anfangen.

Passt zu:
>> die haben mir klar gemacht, dass ich sie mir mit meinem
>> Hobby Budget garantiert niemals leisten kann.

von Fabian S. (jacky2k)


Lesenswert?

A) Kommt drauf an wie viel man in sein Hobby stecken möchte.
B) Wer hat hier überhaupt was von Hobby gesagt?

von Fabian S. (jacky2k)


Lesenswert?

Gut geht auch für günstiger:
https://www.mouser.de/datasheet/2/940/6020-3881-01_IMU381ZA_Datasheet-Final-1396596.pdf
Ca. 200€, bei 0,05 m/s/sqrt(hr) Random walk müssten das ca. 6mm in einer 
Minute sein. Ist nur ne Überschlagsrechnung. Das ist überraschend gut 
finde ich.
Wie dem auch sei, ich habe keine Ahnung von Kalman-Filtern und wie man 
die aufbaut ;)

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.