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 ;)
Bist du dir im klaren darueber, dass der Chip saemtliche Vibrationen (in seinem Frequenzbereich) aufnimmt und anzeigt??
Lass doch mal ne Stecknadel fallen und schau, ob das nen Ausschlag gibt;)
...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.
Ja aber ich glaube nicht, dass der Vibrationen von 1/2g ausgesetzt ist :-/ Oder täuscht das?
Laut Datenblatt ist der temperatur-kompensirt. Aber in einer Sekunde wird der sich wohl kaum merklich in der Temperatur verändern.
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.
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, ...
Ein einfacher Test. Kippe eine bestimmte Achse um 90°, dann musst Du eine Differenz von 1 G als Signal bekommen. gk
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.
Fabian S. schrieb: > es rauscht nur sehr doll. Dann bilde einen Mittelwert, 32 Messungen nehmen, aufaddieren und 5x rechtsschieben.
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.
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?
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.
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?
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?
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
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
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.
Guido Körber schrieb: > manche Leute > > räumen ja ihre Leiterplatten ordentlich auf: Kondensatoren in eine Ecke, > > Chips in die andere. Echt ?
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
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.
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.
Vielleicht ist es angebracht AVDD über eine 10µH Drossel zu versorgen und direkt am Chip mit einem 100nF C abzublocken?
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.
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.
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
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).
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.
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 ;)
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.
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.
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 ;)
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.
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.
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
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.
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.
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.
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?
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
@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?
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.
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.
Ist zwar jetzt Werbung für die Konkurenz, aber wie wäre es denn mit diesen Teilen http://www.st.com/internet/analog/class/1575.jsp 3k gyro: http://de.farnell.com/jsp/displayProduct.jsp?sku=1872924&action=view&CMP=GRHS-1000962 3k accel: http://de.farnell.com/jsp/displayProduct.jsp?sku=1872923&action=view&CMP=GRHS-1000962
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.
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 :)
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 ;)
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.
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.
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.
http://www.sensortips.com/pressure/stmicroelectronics’-three-mems-sensors-provide-10-dof/ Dann sollte alles dabei sein.
Ä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???
Ich mein die Gyros. Der ADXRS450 von Analog und z.B. der L3G4200D von ST. Ich meine alleine die Preisunterschiede sind ja gigantisch.
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...
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
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
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.
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.
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.
A) Kommt drauf an wie viel man in sein Hobby stecken möchte. B) Wer hat hier überhaupt was von Hobby gesagt?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.