logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Algorytmy obsługi akcelerometru BMA180 - jak zacząć?

wind_energy 28 Cze 2012 09:52 3228 15
REKLAMA
  • #1 11050249
    wind_energy
    Poziom 14  
    Posty: 190
    Pomógł: 6
    Ocena: 19
    Witam i zapraszam do teoretycznej rozmowy na temat algorytmów obsługi akcelerometru XYZ.

    Może tytułem wprowadzenia. BMA180 firmy Bosch to całkiem rozsądne urządzenie do pomiarów np. poziomu, wysokości, przyspieszenia, prędkości itd.
    Nie trzeba martwić się tutaj o prawidłowy odczyt napięć z trzech czujników XYZ, gdyż kostka BMA180 ma już wbudowane przetworniki, całość odczytuje się cyfrowo za pomocą I2C lub SPI.
    Jak to się robi...po wcześniejszej konfiguracji kostki(choć aby wykonać pierwsze odczyty nie jest to konieczne), wysyła się jeden bajt adresu komórki pamięci eprom, kostka wówczas zwraca wartość odczytaną z danej X Y lub Z. Do odczytania X wysyłamy hexalnie adres 0x02, dla Y 0x03, dla Z 0x04.

    Tyle o samej praktyce komunikacji z kostką. Bym jeszcze zapomniał dodać jeden dość istotny niuans, który dla mnie jest dużym minusem, chodzi o wielkość kostki, szerokość i odstęp padów lutowniczych jak i specyfikacja lutowania. Jest to tak niewielki układ, że na jego długości sięgającej 4mm należy zmieścić 10 padów lutowniczych. Wykonując odpowiednie odstępy, na jeden pad przypada dużo poniżej 10milsow szerokości. Już nie chodzi o samo lutowanie, ale głownie o to, że takich płytek mało kto podejmuje się wykonać.

    Dość o kostce...do rzeczy.
    Jeśli odczytujemy przyspieszenie XYZ, to w jaki sposób obliczać poziom lub aktualną wysokość...hmmm...nie wiem.
    Zapraszam do dyskusji.
    Pozdrawiam,
    WE
  • REKLAMA
  • #2 11050295
    whyki
    Poziom 22  
    Posty: 395
    Pomógł: 38
    Ocena: 59
    No to czysto teoretycznie:
    a=dv/dt=d2s/dt², czyli:
    s=∫(∫a dt+C1)dt+C2
    C1 i C2 wynikają z początkowego położenia (C2) i początkowej prędkości (C1) czujnika. Jeśli interesuje Cię wysokość, należy dwukrotnie scałkować wynik Y po czasie. Oczywiście najlepiej uruchomić pomiar przy zerowej prędkości i na poziomie ziemi (wtedy C1 i C2 wynoszą 0). lub na ustalonej wysokości, wtedy C2=h. Najgorszy przypadek to taki kiedy w momencie rozpoczęcia pomiaru, czujnik wznosi się/ opada ze stałą prędkością. Wtedy C1=v. Jeśli znasz dokładnie prędkość to mały problem. Gorzej jak nie znasz prędkości - czujnik wskazuje 0, a obiekt się przemieszcza.
  • REKLAMA
  • #3 11050311
    wind_energy
    Poziom 14  
    Posty: 190
    Pomógł: 6
    Ocena: 19
    whyki napisał:
    a=dv/dt=d2s/dt², czyli:
    s=∫(∫a dt+C1)dt+C2
    aż takie to poważne,że trzeba całki ruszać?
    whyki napisał:
    Oczywiście najlepiej uruchomić pomiar przy zerowej prędkości i na poziomie ziemi (wtedy C1 i C2 wynoszą 0)
    tylko skąd będę wiedział, ze startuje od poziomu ziemi
    whyki napisał:
    Najgorszy przypadek to taki kiedy w momencie rozpoczęcia pomiaru, czujnik wznosi się/ opada ze stałą prędkością. Wtedy C1=v. Jeśli znasz dokładnie prędkość to mały problem. Gorzej jak nie znasz prędkości - czujnik wskazuje 0, a obiekt się przemieszcza.
    - tego nie bardzo rozumiem. Poza tym wydaje mi się, że jeżeli znamy przyspieszenie (pomiar akcelerometru) i czas (pomiar z uP), to prędkość można łatwo obliczyć.
    Uczulam aby nie pisac samych wzorków, tutaj bardzie mi chodzi o stworzenie jakiegoś ludzkiego algorytmu.
  • REKLAMA
  • #4 11050405
    Krauser
    Poziom 26  
    Posty: 508
    Pomógł: 124
    Ocena: 12
    Całkowanie po czasie to sumowanie dla bardzo małych odcinków czasu.
    Zbierasz próbki przyspieszenia co określony czas Δt. Następnie na podstawie tych próbek obliczasz zmianę prędkości Δv=a*Δt i masz zmianę prędkości w czasie. Na tej podstawie obliczasz drogę s=v*Δt. Czyli w gruncie rzeczy to operacje na tablicach
  • #5 11050425
    whyki
    Poziom 22  
    Posty: 395
    Pomógł: 38
    Ocena: 59
    Czujnik mierzy tylko przyspieszenie. Jak rozpoczynasz pomiar, to dla niego nie ma znaczenia czy stoi w miejscu, czy porusza się np.100km/h - przyspieszenie jest równe 0. Jeżeli teraz na podstawie tylko przyspieszenia chcesz wyliczyć drogę przebytą przez czujnik, to wyjdzie ci 0m, ponieważ czujnik nie wykrył żadnego przyspieszenia (pojazd przyspieszył zanim czujnik zaczął cokolwiek rejestrować.) Tak samo ma się to do położenia - jak zaczynasz przyspieszać, to czujnik nie wie czy znajdował się na ziemi, czy na szczycie góry. Tak więc jeżeli chcesz mierzyć przemieszczenie, musisz procesorowi podać oprócz przyspieszenia dodatkowe dane tzn. Prędkość początkową (C1) oraz położenie początkowe (C2) tak, aby można było to uwzględnić w obliczeniach.

    Dodano po 8 [minuty]:

    Ze szkoły chyba podstawowej, albo średniej, pamiętam taki wzór na drogę:

    s=s0+v0•t+½a•t²
    s0->odległość początkowa (czyli odległość od punktu rozpoczęcia pomiaru. Jeśli chodzi o pomiar wysokości to odległość od ziemi, poziomu morza itp)
    v0-> prędkość początkowa (od której rozpoczynamy pomiar przyspieszenia)
    Taki wzór powinien dać się łatwo wrzucić w program. Trzeba tylko pamiętać, że we wzorze mamy stałe przyspieszenie. W rzeczywistości przyspieszenie będzie się zmieniać, dlatego trzeba t zastąpić przez Δt, a s przez Δs i sumować to przy jak najmniejszych odcinkach czasu.
  • #6 11050457
    wind_energy
    Poziom 14  
    Posty: 190
    Pomógł: 6
    Ocena: 19
    Krauser napisał:
    Całkowanie po czasie to sumowanie dla bardzo małych odcinków czasu.
    Zbierasz próbki przyspieszenia co określony czas Δt. Następnie na podstawie tych próbek obliczasz zmianę prędkości Δv=a*Δt i masz zmianę prędkości w czasie. Na tej podstawie obliczasz drogę s=v*Δt. Czyli w gruncie rzeczy to operacje na tablicach
    - to mądre, czli generalnie stwarzam sobie tablicę z próbkami przyspieszenia i na podstawie tej tablicy trzebaby dokonywać obróbki. Ale jeżeli mamy jedną zmienną Z (przyspieszenie w pionie - wysokość), tak na prawde nie trzeba tablicy.
    whyki napisał:
    Jak rozpoczynasz pomiar, to dla niego nie ma znaczenia czy stoi w miejscu, czy porusza się np.100km/h - przyspieszenie jest równe 0.
    - faktycznie
    whyki napisał:
    Tak więc jeżeli chcesz mierzyć przemieszczenie, musisz procesorowi podać oprócz przyspieszenia dodatkowe dane tzn. Prędkość początkową (C1) oraz położenie początkowe (C2) tak, aby można było to uwzględnić w obliczeniach.
    - położenie początkowe jestem w stanie zapewnić stałe ale danej z prędkości nie.
    Dobrze, myślę, że wysokość ogarnę, ale teraz jakbyście koledzy rozwiązali sprawę z elektroniczną poziomicą. Przecież one pracują właśnie na akcelerometrach a nikt przecież nie naciska gucika (start - poziom) i od tego zaczyna pomiar.

    Dodano po 58 [sekundy]:

    wind_energy napisał:
    s=s0+v0•t+½a•t²
    s0->odległość początkowa (czyli odległość od punktu rozpoczęcia pomiaru. Jeśli chodzi o pomiar wysokości to odległość od ziemi, poziomu morza itp)
    v0-> prędkość początkowa (od której rozpoczynamy pomiar przyspieszenia)
    Taki wzór powinien dać się łatwo wrzucić w program. Trzeba tylko pamiętać, że we wzorze mamy stałe przyspieszenie. W rzeczywistości przyspieszenie będzie się zmieniać, dlatego trzeba t zastąpić przez Δt, a s przez Δs i sumować to przy jak najmniejszych odcinkach czasu.
    - nie będzie z tym problemu :)
  • REKLAMA
  • #7 11050801
    Klima
    Poziom 31  
    Posty: 1535
    Pomógł: 112
    Ocena: 180
    wind_energy napisał:

    Dobrze, myślę, że wysokość ogarnę, ale teraz jakbyście koledzy rozwiązali sprawę z elektroniczną poziomicą. Przecież one pracują właśnie na akcelerometrach a nikt przecież nie naciska gucika (start - poziom) i od tego zaczyna pomiar.


    Takie urządzenie jedynie sprawdza, "w którą stronę" ma wektor przyspieszenia ziemskiego. Jak będziesz nią trząsł, to zgłupieje - zupełnie tak, jak poziomnica z bąbelkiem.
  • #8 11051547
    przemekbary
    Poziom 16  
    Posty: 102
    Pomógł: 19
    Ocena: 7
    Witam
    Odnośnie poziomicy: warto wykorzystać żyroskopy do eliminacji szumu akcelerometrów. Przy założeniu że korelacja skrośna odczytów żyroskopu i akcelerometrów jest bliska 0, można uzyskać bardzo dobry wynik mimo występowania wstrząsów. Warunkiem jest, aby "wstrząsy" nie zawierały składowej rotacyjnej.

    Polecam stronę 6773 z artykułu: http://www.mdpi.com/1424-8220/12/6/6764/pdf

    Pozdrawiam
  • #9 11051760
    Konto nie istnieje
    Poziom 1  
  • #10 11051769
    przemekbary
    Poziom 16  
    Posty: 102
    Pomógł: 19
    Ocena: 7
    @atom1477 - w 100% się zgadzam. Mój poprzedni wpis dotyczył raczej budowy poziomicy. Zmieniłem poprzedni post aby nie wprowadzał w błąd.
  • #11 11051809
    Konto nie istnieje
    Poziom 1  
  • #12 11052974
    wind_energy
    Poziom 14  
    Posty: 190
    Pomógł: 6
    Ocena: 19
    Dziękuję Wam za te cenne opinie.
    Czyli do pomiaru wysokości - wysokościomierz.
    Ale nadal mnie dręczy temat poziomicy, jak to jest zrealizowane na akcelerometrze, czy możecie w prosty sposób to wyjaśnić?
  • #13 11053030
    przemekbary
    Poziom 16  
    Posty: 102
    Pomógł: 19
    Ocena: 7
    Wszystko opiera się na tym, że istnieje przyśpieszenie grawitacyjne. W zależności od ustawienia czujnika względem osi grawitacji, odpowiednia część przyśpieszenia grawitacyjnego jest mierzona w danej osi czujnika.

    Przypomnienie sobie zadań z fizyki z równią pochyłą powinno wszystko wyjaśnić.

    Pozdrawiam
  • #15 11053922
    Konto nie istnieje
    Poziom 1  
  • #16 11066348
    wind_energy
    Poziom 14  
    Posty: 190
    Pomógł: 6
    Ocena: 19
    Odpowiedzią na powyższe zagadnienie okazuje się jedno słowo: żyroskop.
    Temat zamykam, dziękuję.

Podsumowanie tematu

✨ Dyskusja dotyczy algorytmów obsługi akcelerometru BMA180 firmy Bosch, który umożliwia pomiar przyspieszenia, wysokości i poziomu. Uczestnicy omawiają teoretyczne aspekty obliczeń związanych z przyspieszeniem, w tym całkowanie w celu uzyskania prędkości i drogi. Podkreślają, że akcelerometr mierzy jedynie przyspieszenie, co wymaga znajomości prędkości początkowej i położenia, aby uzyskać dokładne wyniki. W kontekście poziomicy, wskazują na konieczność uwzględnienia przyspieszenia grawitacyjnego oraz sugerują użycie żyroskopów do eliminacji szumów. Wskazują również na ograniczenia pomiarów wysokości bez dodatkowych czujników, takich jak wysokościomierz.
Wygenerowane przez model językowy.
REKLAMA