Nepřesnost akcelerometru MMA7760

mhi_

Nepřesnost akcelerometru MMA7760
« kdy: 26. 05. 2017, 10:58:55 »
Hrali jste si nekdy nekdo s 3-axis MEMS akcelerometrem Freescale/NXP MMA7760? http://www.freescale.com.cn/files/sensors/doc/data_sheet/MMA7660FC.pdf?fpsp=1

Koupil jsem si male "Arduino" moduly z CN, pres metrove kabely pripojil k MCU, ten k USB, naprogramoval, pripojil k notebooku, spustil cat /dev/ttyACM0 | ts a dal pod prosteradlo. Smyslem bylo (je) sledovat pohyb spiciho cloveka. Jenze ... funguje to nejak divne.

1) je tam pochybny zero offset, proste akcelerometr ma po celou dobu ruzne nenulove hodnoty zrychleni ve vsech osach (tak ruzne, nahodne, "nulove" hodnoty se v prubehu casu dost radikalne meni).

2) pohyb spiciho cloveka (nebo i jen drobny pohyb akcelerometru v ruce) je realtivne obtizne detekovatelny od "sumu". Coz je ten hlavni problem pro moji aplikaci, zero offset bych si udelal vypoctem rozdilu mezi jednotlivymi merenimi.

Inicializace je tak, ze zapnu mereni (registr 7 dostane hodnotu 01) a potom uz jen v cyklu ctu X/Y/Z/tilt registr.

Mate s chovanim pod body 1) a 2) podobne zkusenosti? Nebo ty moje kusy jsou polofunkcni plagiat? Puvodne jsem ty akcelerometry koupil na mereni pohyboveho stavu motorky, ale jak vidim co to dela pri takto trivialni uloze ... nepocitam, ze bych z toho chtel spocitat nejake presnejsi udaje o rychlosti/zrychleni, to uz jen ten zero-g offset dela paseku. Ach jo :(. Vyzkousim to jeste vzit na motorku co to bude delat.

Nejaka data (format je timestamp XXYYZZTT, kde hodnota XX je X-axis, (stejne Y,Z), jsou to signed 6 bit cisla, TT je tiltbyte, ten nejak nechodi dobre).

Bez pohybu:

Kód: [Vybrat]
00-48-41.708928 363F11FF
00-48-41.849620 393F12FF
00-48-41.990401 383E13FF
00-48-42.131377 373F11FF
00-48-42.272030 373E12FF
00-48-42.413158 373E12FF
00-48-42.553473 393F13FF
00-48-42.694910 383E12FF
00-48-42.835179 393F12FF
00-48-42.976114 383E12FF
00-48-43.116831 393F12FF
00-48-43.257840 380013FF
00-48-43.398719 373F11FF
00-48-43.539459 383E12FF
00-48-43.680610 373E12FF
00-48-43.821081 373E12FF
00-48-43.962196 383E12FF
00-48-44.102811 373D13FF
00-48-44.243665 373E13FF
00-48-44.384464 383F12FF
00-48-44.525264 383F12FF
00-48-44.666155 383E12FF
00-48-44.806863 373F13FF
00-48-44.947997 383F13FF
00-48-45.088521 393F13FF
00-48-45.229490 373F13FF
00-48-45.370249 373D13FF
00-48-45.511073 383F12FF

(tay je videt, ze to skace relativne o malo, rekneme o 2 jednotky), ale podobne to skace i pri mirnem prevaleni v posteli :-((.

Zvoneni budiku v 7:45 a prudsi pohyby:

Kód: [Vybrat]
07-45-00.268036 3C3813FF  (vsimnete si uplne jinych zero-g hodnot)
07-45-00.464638 3C3712FF
07-45-00.660855 3D3812FF
07-45-00.857308 3C3713FF
07-45-01.054048 3A3712FF
07-45-01.250217 3B3714FF
07-45-01.446742 3D3913FF
07-45-01.643291 3C3713FF
07-45-01.839580 3D3814FF
07-45-02.036020 3C3613FF
07-45-02.232481 3C3812FF
07-45-02.429063 3C3A14FF
07-45-02.625341 3C3912FF
07-45-02.821793 3C3712FF
07-45-03.018525 3B3713FF
07-45-03.214510 3B3814FF
07-45-03.411129 3D3813FF
07-45-03.607826 3C3913FF
07-45-03.804131 3A3A14FF
07-45-04.000568 3B3B12FF
07-45-04.197013 363F13FF
07-45-04.393543 360211FF
07-45-04.589883 360311FF
07-45-04.786339 360114FF
07-45-04.982893 380014FF
07-45-05.179270 373B12FF
07-45-05.375659 383A11FF
07-45-05.572211 393A11FF
07-45-05.768505 393B13FF
07-45-05.964916 3A3B13FF
07-45-06.161573 393A13FF
07-45-06.358076 3A3B14FF
07-45-06.554288 3A3B14FF
07-45-06.750729 3A3A14FF
07-45-06.947440 393A13FF
07-45-07.143687 383A14FF
07-45-07.340141 393B13FF
07-45-07.536734 3A3B13FF
07-45-07.733037 3A3B14FF
07-45-07.929438 3A3A13FF
07-45-08.125879 3B3A13FF
07-45-08.322477 393A13FF
07-45-08.518765 393A14FF
07-45-08.715197 3A3912FF
07-45-08.911882 393A13FF
07-45-09.108201 3A3B12FF
07-45-09.304575 393C13FF
07-45-09.501173 3B3B13FF
07-45-09.697496 3A3A14FF
07-45-09.894203 3A3A12FF
07-45-10.090341 3A3913FF
07-45-10.287000 393B14FF
07-45-10.483325 3A3A13FF
07-45-10.679763 393B14FF
07-45-10.876383 3A3913FF
07-45-11.072590 393913FF
07-45-11.269102 393912FF
07-45-11.465648 393913FF
07-45-11.661916 3A3A13FF
07-45-11.858378 3A3913FF
07-45-12.054910 3A3A13FF
07-45-12.251507 393A12FF
07-45-12.447738 3A3A13FF
07-45-12.644273 393A13FF
07-45-12.840913 383A14FF
07-45-13.037170 393A11FF
07-45-13.233579 393A13FF
07-45-13.430220 383C13FF
07-45-13.626629 363D12FF
07-45-13.823003 353E13FF
07-45-14.019377 373E13FF
07-45-14.216077 393C14FF
07-45-14.412314 3B0212FF
07-45-14.608709 3A0115FF
07-45-14.805634 3A0214FF
07-45-15.001633 390113FF
07-45-15.198298 3B0214FF
07-45-15.394558 3A0215FF
07-45-15.591874 3A0414FF
07-45-15.787828 3D0107FF
07-45-15.984374 023917FF
07-45-16.180799 023B14FF
07-45-16.376961 043B12FF
07-45-16.573491 053B18FF
07-45-16.770134 023914FF
07-45-16.966481 043E12FF
07-45-17.162603 023E15FF
07-45-17.359118 023C15FF
07-45-17.555708 3F3D14FF
07-45-17.751980 023C13FF
07-45-17.948515 013E15FF
07-45-18.145039 013C13FF
07-45-18.341414 023E14FF
07-45-18.538503 023D15FF
07-45-18.734289 013C15FF
07-45-18.930973 013D14FF
07-45-19.127351 003C13FF
07-45-19.323762 023E15FF
07-45-19.520370 3F3D14FF
07-45-19.716618 3F3F13FF
07-45-19.913163 3E3F16FF
07-45-20.109797 3F3E14FF
07-45-20.306500 3F3F15FF
07-45-20.502640 003E14FF
07-45-20.699229 3F3E14FF
« Poslední změna: 29. 05. 2017, 09:12:21 od Petr Krčmář »


hapedo

Re:Nepresnost akcelerometru MMA7760
« Odpověď #1 kdy: 26. 05. 2017, 15:20:11 »
Obavam se, ze tenhle akcelerometr neni pro tuto ulohu vhodny. Jeho vyuziti bych videl tak mozna hrube mereni naklonu nebo prudsich pohybu. 6 bitu jako hodnota je opravdu malo na vyhodnocovani pomalych pohybu.
Tohle je uz typicka uloha zpracovani signalu - pouzit lepsi akcelerometr, digitalni pasmova propust atd. Zalezi co konkretne se ma merit/detekovat. Ale s Arduinem tak max. zaznamnik nebo prahova detekce zrychleni.

?

Re:Nepresnost akcelerometru MMA7760
« Odpověď #2 kdy: 26. 05. 2017, 16:51:49 »
Však tím bude hlídat jeho starou, když on není doma. Zajímá se právě o ty prudší pohyby v posteli.

MilHaus

Re:Nepresnost akcelerometru MMA7760
« Odpověď #3 kdy: 26. 05. 2017, 17:26:45 »
přírazy manželky

Teď jsi zabil celé vlákno ;D
Dávám ti 10 bludišťáků, pochvalu před nastoupenou jednotkou a čestný titul Medvěda Malloye!
https://www.youtube.com/watch?v=dJzSQi2bLr4

Re:Nepresnost akcelerometru MMA7760
« Odpověď #4 kdy: 26. 05. 2017, 20:02:27 »
Pár týdnů zpátky jsem si hrál s analogovým tříosým akcelerometrem MMA7341LC na destičce Pololu-1247. Šlo mi o záznam vibrací zvukovou kartou někde v pásmu jednotek až nízkých desítek Hz, cca na maximálním rozsahu zrychlení co ten čip umí, čili žádný šepot větru. Zběžně jsem na to koukal i digitálním multimetrem - že když to otočím v ruce vzhůru nohama, tak se výstupní stejnosměrná hodnota ochotně a citelně změní, a drží.

Ve Vašem případě by to znamenalo, přidat k MCU ještě ADC. Nějaký ten teplotní drift apod. to určitě bude vykazovat, vrtění spáče by to ale myslím zaznamenat mělo. Jinak nad načtenými hodnotami mě napadá využít dostupný výkon MCU na digitální filtraci a nějaký ten bit reálného rozlišení třeba ještě získáte. Kolega Hapedo správně říká pásmovou propust = zbavit se střídavých složek rychlejších než co Vás zajímá (= šum) a asi i stejnosměrného offsetu, který je Vám asi taky k ničemu. Mimochodem... pokud máte ADC s nízkým rozlišením, můžete zkusit vstup naschvál trochu zašumět a pak šum digitálně odfiltrovat :-)

Osobně jsem zkoušel zaznamenaný signál ještě dvakrát zintegrovat (převést na okamžitou absolutní výchylku té vibrující součástky) a byla s tím p*del :-) Stačilo mi páchat to offline na WAVu, co vznikl uložený na disku. Integraci jsem si napsal sám v Cčku, ale všelijaké pomocné filtry jsem páchal v Audacity (parametrické pásmové propusti, odstranění ss složky apod).


mhi_

Re:Nepresnost akcelerometru MMA7760
« Odpověď #5 kdy: 26. 05. 2017, 21:31:55 »
Obavam se, ze tenhle akcelerometr neni pro tuto ulohu vhodny. Jeho vyuziti bych videl tak mozna hrube mereni naklonu nebo prudsich pohybu. 6 bitu jako hodnota je opravdu malo na vyhodnocovani pomalych pohybu.
Tohle je uz typicka uloha zpracovani signalu - pouzit lepsi akcelerometr, digitalni pasmova propust atd. Zalezi co konkretne se ma merit/detekovat. Ale s Arduinem tak max. zaznamnik nebo prahova detekce zrychleni.

Ja to mel puvodne na to mereni na motorce, ale na tu se to taky moc nehodi, protoze tam to zrejme rusi zapalovani. Takze jsem na ebayi koupil prvni co bylo po ruce a vypadalo, ze by to mohlo fungovat.

Dela se jeste dalsi cip, ktery ma 16bit ADC, ale realne se vyuzije snad 10 bitu, zbytek je nejaky sum. Akcelerometr s analog vystupem se mi moc nehodi ani na jednu z aplikaci, to I2C/SPI je praktictejsi, byt' omezujici. V te posteli me napadlo jete pouzit (udelat) kapacitni mereni, nebo piezo.

t

Re:Nepresnost akcelerometru MMA7760
« Odpověď #6 kdy: 27. 05. 2017, 08:04:47 »
To co jsi si koupil je statický akcelerometr. Ten se používá na měření náklonu. Jo a jsou hodně levné.
Pokud chceš snímat vibrace potřebuješ dynamický akcelerometr. Ty začínají tak cca na 4000 Kč.
Kromě toho akcelerometru budeš potřebovat i něco přes co ten akcelerometr spojíš s počítače. To je Data acquisition modul(DAQ) s vhodným sample ratem, prodávají se i s integrovaným A/D převodníkem. Jestli koupíš levnější, musíš si dokoupit externí A/D převodník a ty jsou buď interní, nebo externí a dají se napojit buď na PCI, nebo přes seriovou linku(RS232, RS485, ale ty se často masku za USB), nebo ethernet, nebo Wi-Fi.
Budeš zpracovávat signál. akcelerometr má svůj přirozený šum a ten musíš odfiltrovat, dále je potřeba počítat s chybou měření. Vibrace dělají signál periodického charakteru, takže budeš potřebovat Fourierovou transformaci, aby si z toho dostal více informací. K provedení správné Fourierky nezapomeň použít správné "window" jinak ty výsledky budou skreslené tak, že ti stejně k ničemu nebudou. Pro odfiltrování frekvencí, které ti k ničemu nejsou se používají filtry.
Matematické funkce si můžeš buď naprogramovat, nebo koupit od výrobce elektroniky, ovladače dostaneš zdarma. Ale neobejdeš se bez toho.
Tyhle výpočetní věci jsou poměrně drahá záležitost.
Jestli budeš chtít, můžu ti se hodit pár tipů.

mhi_

Re:Nepresnost akcelerometru MMA7760
« Odpověď #7 kdy: 27. 05. 2017, 18:13:39 »
Pripojeni do pocitace opravdu neni problem :), stejne tak zpracovani signalu (u tech s digitalnim vystupem se skoro nic uz nezpracovava). Pokud jde o ten akcelerometr, tak kdyz jsem to kupoval, tak jsem se tak ramcove podival co je v low-cost segmentu k dispozici a vyslo mi, ze by to melo stacit.

Na postelove veci vyzkousim jeste piezo a kapacitni senzor, na motorku zvolim jiny akcelerometr, ten MMA7660 ma navic jeste velke problemy s rusenim.