Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Pomiar amplitudy sygnału z akcelerometru mikrokontrolerem

szejqer 05 Wrz 2006 16:35 3069 17
  • #1 05 Wrz 2006 16:35
    szejqer
    Poziom 12  

    Witam chce zrobic pomiar sygnalu zbieranego z drgajacaego akcelerometru.Mniejsze z tym...bedzie to odksztalcona sinusioda. Chcialbym za pomoca jakiegos mikrokontrolera zmierzyc amplitude tej sinusoidy ,bedzie sie ona wachac w zakresie 300mVpp,podajcie mi najlepiej na jakim ukladzie to zrobic.Zaznacze,ze najlepiej jakby byl niezbyt skomplikowany,gdyz mialem do czynienia tylko z 51 i to dosc dawno temu.
    Prosilbym rowniez o jakis linki do rozwiazan,tudziez teorii jak taki uklad zaprogramowac. Moga byc kursy etc.

    Pozdrawiam

    Dodano po 10 [minuty]:

    PS. Gdyby ktos dysponowal jakims prostym przykladem woltomierza na 51 to byloby super:)

    0 17
  • #2 05 Wrz 2006 16:44
    cackoarek
    Poziom 25  

    Eeeee..... a jakie to będą spodziewane wartości amplitud (chodzi o zakres)?

    0
  • #4 05 Wrz 2006 18:20
    crazy_phisic
    VIP Zasłużony dla elektroda

    Wszystkie dane przecież szejqer podał w pierwszym poscie ;) zakres max 300mVpp a częstotliwość jest maksymalnie kilka kHz (rzadko można spotkać akcelerometr o większej częstotliwości pomiaru).... Co do układu... mierzone napięcie będziesz musiał albo zmierzyć przetwornikiem ADC mogącym współpracować z sygnałem +/- albo przesunąć poziom zera i zastosować przetwornik z uP. Oba rozwiązania pojawiały się na Elektrodzie więc poszukaj ;)

    0
  • #5 05 Wrz 2006 22:17
    szejqer
    Poziom 12  

    Juz wlasnie szukalem rozwizan,doszedlem do tych samych wnioskow co zaznaczyles. Zastanawiam sie tylko nad rodzielczoscia takiego pomiaru,chcialbym miec ja na poziomie 2 do 4mV,jeszcze tylko jedno szybkie pytanko:) Rozumiem,ze na 89C51 dam spokojnie rade to zrobic,oczywiscie z przetwornikiem ADC. Bedzie mi to sluzyc do wysterowania potencjometrem w zaleznosci od amplitudy z akcelerometru.

    Pozdrawiam i pewnie po weekendzie przedstawie swoj pomysl na polaczenia.

    0
  • #6 05 Wrz 2006 22:36
    crazy_phisic
    VIP Zasłużony dla elektroda

    Praktycznie każdy procesor ci wystarczy, co do rozdzielczości to zależy ona przetwornika (8,9... 16 bitów) oraz od poziomu napięcia odniesienia... umiejętne zgranie tych dwóch czynników pozwoli ci osiągnąc nawet mniejsze rozpoznawalne kwanty (pomijam problem szumów i zakłóceń

    0
  • #7 07 Wrz 2006 13:41
    szejqer
    Poziom 12  

    Troche poczytalem o przetwarzaniu A/C i mam kilka niescislosci. Mianowicie....jak podajemy napiecie stale na przetwornik A/C nie ma problemu,ustawiajac np napicie odniesienia na 5V i majac 12bit otrzymamy rozdzielczosc 1.22mV ,i teraz jak podamy na wejscie 2V to otrzymamy 12bit ,ktore bedzie okreslalo to napiecie,po pomnozeniu przez wlasnie Vref mamy wynik.

    Ale co z sygnalami zmiennymi??Poprawcie mnie jesli mowie glupoty,ale przetwornik powinien jakby badac sinusoide z czestotliwoscia wieksza niz sam sygnal (o wiele wieksza). Jak uchwycic wartosc maksymalna napiecia zmiennego? Jak jest to rozwiazywane? Jak ustawia sie czestotliwosc przetwornika?

    Bede wlasnie robil cos w stylu detektora szczytu...intersuje mnie jedynie amplituda,nie bede nigdzie jej wartosci na stale zapisywal,jesli bedzie ona poprostu za niska to bede robil cos,jesli za wysoka to tez cos zrobie.

    Pozdrawiam

    PS. Czy 250KSPS wielkosc okresla czestotliwosc zbierania probek z sygnalu?

    0
  • #8 07 Wrz 2006 14:37
    markosik20
    Poziom 33  

    Witam.

    Jeżeli będziesz mierzył napięcie zmienne (przechodzące przez zero) to przetwornik AD musi mieć wejscia różnicowe (np: nie między AD0-ACOM a AD0-AD1) oraz możliwość mierzenia napięć bipolarnych. Jeżeli nie ma to na wzmacniaczu operacyjnym trzeba zbudować układ który podniesie cały sygnał ponad "0".
    Druga sprawa to częstotliwość kilku kHz wymaga aby AD miał ponad 100KSPS (100000próbek/s).
    Trzecia sprawa to prędkość uP. AT89C51 ma około 2MPIS. To powinno wystarczyć do samej analizy sygnału (bez wyrzucania wyników np: na LCD). Zostaje jeszcze przesłanie próbek do uP. I2C odpada zostaje jedynie SPI lub transmisja równoległa.
    Łapanie extremów przepiegu (sinusoidy) w tym przypadku można zrobić porównując każdą próbkę z ustawionymi wartościami. Jest to dosyć trudne gdyż musimy ustawić pewien zakres błędu żeby nie wychodziły głupoty.
    Co do błędów pomiaru będą dosyć duże ze względu na to że Vpp=max300mV.

    Proponuję zaprzęgnąć do pracy np:ADuC842 (trzeba by tylko podnieść sygnał ponad "0").
    Co do wyznaczenia max i min ja robię tak:
    Badam pochodne cząstkowe (no: co 2 próbka) jak zmieni znak to jest to extremum sinusa oraz średnia z badanych próbek to jego wartość.

    0
  • Pomocny post
    #9 07 Wrz 2006 14:58
    shg
    Specjalista techniki cyfrowej

    Akcelerometry mają to do siebie, że strasznie szumią. Jeżeli wykona się tylko prosty detektor szczytowy to wynikiem pomiaru będzie amplituda drgań + szum.
    Najlepiej było by dane z pomiarów przesyłać do komputera, tylko że przez rs-232 to raczej za wolno, więc po LPT (chyba że mikrokontroler ze sprzętowym USB, bo programowe nie wchodzi w grę).
    Można też obrabiać sygnał na miejscu, ale niestety kosztem rezygnacji z odświeżania w czasie rzeczywistym.
    Szum można bardzo ładnie odfiltrować za pomocą FFT, najpierw wykonuje się pomiar progu szumów (bez drgań), akcelerometr musi leżeć w takiej samej pozycji w jakiej będzie znajdował się podczas właściwego pomiaru.
    Z wyników pomiaru liczymy FFT.
    Potem dokonujemy właściwego pomiaru i róznież z tego wyliczamy FFT.
    Widmo szumów odejmujemy od widma pomiaru.
    Podczas (a właściwie to przed) liczenia FFT trzeba stosować okienko flat-top, które służy do pomiarów amplitudy.

    Można też innymi metodami, chociażby filtr dolnoprzepustowy (sprzętowy i programowy).

    Oczywiście problemem pozostaje wciąż duża wymagana szybkość akwizycji próbek. Myślę, że w Analog Devices znajdzie się jakiś '51 z dostatecznie szybkim przetwornikiem A/C. Jak nie to zewnętrzny przetwornik. Z dostępnych w kraju mikrokontrolerów o w miarę przyzwoitej cenie to chyba tylko seria AT91SAM7 Atmela ma szybkie przetworniki (kilkaset ksps), no ale to ARM7, a nie '51. Chociaż i mocy obliczeniowej ma już na tyle, żeby liczyć FFT w locie ;].

    Ale czy stosować FFT, czy nie, to już od Ciebie zależy. Przede wszystkim trzeba określić poziom szumów, bo może się okazać że sprawę załatwi filtr RC.

    0
  • #10 07 Wrz 2006 15:36
    szejqer
    Poziom 12  

    markosik20 napisał:

    Trzecia sprawa to prędkość uP. AT89C51 ma około 2MPIS. To powinno wystarczyć do samej analizy sygnału (bez wyrzucania wyników np: na LCD).

    Wystarczy do analizy,a dlaczego nie wystarczy do LCD?
    markosik20 napisał:

    Zostaje jeszcze przesłanie próbek do uP. I2C odpada zostaje jedynie SPI lub transmisja równoległa.

    Czy moglbys mi wytlumaczyc dlaczego wybrales akurat ta transmisje.

    markosik20 napisał:

    Proponuję zaprzęgnąć do pracy np:ADuC842 (trzeba by tylko podnieść sygnał ponad "0").
    Co do wyznaczenia max i min ja robię tak:
    Badam pochodne cząstkowe (no: co 2 próbka) jak zmieni znak to jest to extremum sinusa oraz średnia z badanych próbek to jego wartość.


    Gdybys to pokazal na wzorku jakims to bylbym wdzieczny.

    PS.Co do szumu to juz pracuje nad ukladem filtrow.

    Pozdrawiam

    0
  • #11 07 Wrz 2006 17:18
    crazy_phisic
    VIP Zasłużony dla elektroda

    Jeśli chcesz bawić się w szybkie przetworniki ADC i nie za szybkie procesory to pozostaje transmisja równoległa, ma ona bardzo dużo zalet (poza oczywistą pino-żernością). Co do liczenia ekstremum to tez nie najlepszy pomysł przy szumach jakie wnosi akcelerometr oraz przy pracy ADC ze znacznymi prędkościami. Jeśli uda ci się odszumić dość dokładnie sygnał to możesz spróbować liczyć pochodne, ale to dość złożony (dla 8-bitowca) algorytm. Można również spróbkowany przebieg podać aproksymacji i dopiero z tak wyznaczonej zależności policzyć pochodną... ale i tu ograniczenia w mocy uP dają o sobie znać...
    Podaj dokładniejsze dane akcelerometru...

    0
  • #13 07 Wrz 2006 20:31
    crazy_phisic
    VIP Zasłużony dla elektroda

    A dlaczego nie wykorzystujesz PWM??? niwelujesz szumy powstałe na doprowadzeniach, możesz zastosować bardzo szybki algorytm (opisany przez AD) do zbierania danych z obu kanałów praktycznie od razu. No i najważniejsze odpada ADC i wszystkie problemy z nim związane.

    Chyba że nie masz wpływu na zagadnienie pomiaru i po prostu masz wykonać pomiar analogowy.

    0
  • #14 07 Wrz 2006 20:39
    szejqer
    Poziom 12  

    Mam calkowity wplyw na rodzaj pomiaru. Z akcelerometru zbieram sygnal i w
    zaleznosci od jego amplitudy bede musial zmieniac wartosc rezystancji (czyli najprosciej potencjometr elektroniczny). O PWM slyszalem tylko przy temacie przetwornic,modulacja szerokosci kanalu to jest prawda? Moglbys mnie nakierowac na to podejscie Analoga?

    0
  • #15 07 Wrz 2006 20:48
    crazy_phisic
    VIP Zasłużony dla elektroda

    pod adresem jaki podałeś jest rysunek a na nim wszystkie zależności rozpisane. Idea jest bardzo prosta, ustalasz czas T2 w zależnośći od zewnętrznego rezystora (wszystkie szczegóły w pdf) i w zalezności od wartości g zmienia się wypełnienie impulsu: dla 0g przebieg ma charakter fali prostokątnej o wypełnieniu 50%, dla np 1g (pisze z pamięci więc szczegóły sprawdź w pdf) masz wypełnienie 75% a dla -1g 25%, mam nadzieję że w miare prosto to opisałem ;)

    0
  • #16 07 Wrz 2006 20:59
    szejqer
    Poziom 12  

    Ok czyli za pomoca wypelnienia moge znalezc g na akcelerometrze. Idac dalej mam nadzieje,ze istenieje jakis sposob zeby to wypelnienie zmierzyc:D
    Pierwsza mysl to zmierzyc czas dwoch przejsc ze stanu niskiego na wysoki.Obliczyc wtedy w mikrokontrolerze wypelnienie i wysterowac potencjometr. Czy dobrze glowkuje,moze jest prostszy sposob na pomiar wypelnienia.

    PS. Jeszcze jedno bede zbieral tylko z jednego kanalu (powiedzmy X). Ale caly czas myslalem,ze jak jest czujnik na czyms drgajacym ,to bedzie na wyjsciu sinusoida ,a nie prostokat:]

    PS2. W poniedzialek zreszta zdejme z oscyloskopu sygnal to sam sie przekonam ;)

    0
  • #17 07 Wrz 2006 22:23
    crazy_phisic
    VIP Zasłużony dla elektroda

    Poczytaj dokładnie notę katalogową, polecam strony 9, 10 i 11 a później zakładkę Application Notes na podanej przez ciebie stronie zwłaszcza AN-604 gdzie przedstawiony jest algorytm o którym wspomniałem.

    0
  • #18 08 Wrz 2006 07:59
    piti___
    Poziom 23  

    Tez sie bawie ADXLami, do czujnika jest dolaczony wzmacniacz operacyjny i jakis filtr (czestotliwosc drgan ma byc max pare kHz). Procek PIC18 z 10bitowym ADC. Zaimplementowalem bufor okrezny na eepromie 24C64 z tego tez powodu czestotliwosc probkowania ograniczona jest narazie do 25ms , docelowo 2ms gdy zmienie eeprom na FRAM z ramtrona. W czasie wolnym od probkowania PIC mieli stos ZigBee ;)

    W moim projekcie chodzi o detekcje wstrzasu i jego zarejestrowanie (5-8 sekund), wynik ponizej ;) (ADXL przechylany w palcach z pozycji poziomej w obie strony).

    0
  Szukaj w 5mln produktów