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

ATMEGA(16/32/64) jako karta akwizycji danych - częstotliwość próbkowania?

BOB MARLEY 01 Mar 2013 11:51 4143 24
  • #1 12001954
    BOB MARLEY
    Poziom 10  
    Witam .

    Mam pytanie odnośnie wykorzystania mikrokontrolera typu ATMEGA(16/32/64) jako układu akwizycji danych pomiarowych , dokładnie chodzi o wykorzystanie przetwornika A/C do odczytu wartości prądu silnika trójfazowego ( wykorzystanie trzech kanałów ) , za pomocą np. czujników firmy Allegro serii ACx , następnie wysłanie wartości z uK do komputera ( bez zapamiętywania w pamięci zewnętrznej układu mikrokomputerowego ) . W związku z tym , chciałem się dowiedzieć jaką maksymalną rzeczywistą częstotliwość próbkowania mogę uzyskać ( w literaturze rozrzut wartości jest dość duży ) , i czy w ogóle ten typ mikrokontrolera nadaje się do takiego zastosowania , a może wykorzystać jakiś inny układ uK ? . Dziękuję .
  • Pomocny post
    #2 12002220
    tmf
    VIP Zasłużony dla elektroda
    Wąskim gardłem będzie raczej interfejs ATMega/PC. Jeśli to będzie USART to teoretycznie masz 960kbps do dyspozycji, tyle, że to zabije ATMegę. Samplowanie nie jest problemem bo 1Msps osiągniesz.
    Z drugiej strony - to znowu zależy jakich parametrów oczekujesz, bo być może ATMega jest wystarczająca - a chyba jest bo Atmel ma noty, gdzie coś takiego jest zrobione, więc masz gotowce,warto pomyśleć o innym AVR - XMEGA. Ponieważ ma on 2*ADC (każdy z 8-krotnym multiplekserem), a co więcej ma DMA i USB, więc realizacja zadania będzie łatwiejsza. Tu osiągnięcie nawet 2*2Msps nie będzie problemem, oczywiście USB, które obsługuje XMEGA (do 12 Mbitów) i tak nie nadąży z przesyłem sampli.
  • Pomocny post
    #3 12002242
    hotdog
    Poziom 26  
    IMO ATMega może realnie samplować 10-15k razy na sekundę (kanały są multipleksowane czyli przez 3 na 3 kanały).

    To wystarczająco do takich pomiarów. Inną kwestią są szumy, dokładność itp.

    Drogi są 2 albo uC - czujnik, lub uC - zewnętrzny przetwornik ADC - czunik.

    Tanie ARM'y się IMO lepiej nadają :)
  • #4 12002310
    BOB MARLEY
    Poziom 10  
    Dziękuję za odpowiedz , w zasadzie to przesadziłem z użyciem terminu "karta akwizycji/pomiarowa" , mi spokojnie wystarczy 10 tyś. próbek ( a nawet mniej ) na kanał przy teoretycznej rozdzielczości 10 bit , do przesyłu danych wykorzystam USB na przejściówce RS-232 , zależy mi tylko na tym aby osiągnąć "efekt taniej karty pomiarowej" , ponieważ nie chcę mierzyć więcej niż mogę obliczyć z modelu matematycznego maszyny .
  • Pomocny post
    #5 12002365
    tmf
    VIP Zasłużony dla elektroda
    Problem w tym, że 10-bitów ADC to granica dla ATMegi, dla taniego ARMa to nawet poza jego granicami możliwości. Dodatkowy konwerter RS/USB może być prostym rozwiązaniem, ale to też cena, miejsce na płytce itd. XMEGA ma wbudowane USB, które łączysz 1:1 z gniazdem, bez żadnych elementów dodatkowych, a ADC ma rozdzielczość 12 bitów przy samplowaniu 2 Msps, więc 10-bitową realną rozdzielczość łatwiej uzyskać, acz i tak nie jest to banalne.
    Poza tym 10 tys. sampli/s to koło 200 tyś. bps, jeśli myślisz o konwerterze FTDI to może być problem, bo USB może nie wydolić. Właściwie przy takich transmisjach potrzebny by był tryb izochroniczny USB, którego FTDI nie wspiera.
  • Pomocny post
    #6 12002450
    hotdog
    Poziom 26  
    Lepiej i bardziej ambitnie zrobić to na "własnym" USB, ale do tych pomiarów zwykła mega + ft232 wystarczą. FT232R może działać na max 3Mbps, a Atmega może wysyłać przy 16MHz z szybkością 2Mpbs.

    Dokładność ADC w ATmega'ch 16,32, 64 to 2 bity, więc można przyjąć samplowanie z obcięciem 2 ostatnich bitów, czyli 8bitów. To daje znośną liczbę 100kbps + jakaś synchornizacja.
  • #7 12002640
    BOB MARLEY
    Poziom 10  
    Jednak po powyższych propozycjach i opisie problemu , zdecyduje się chyba na wariant przetwornik uK<--MUX<--ADC (12 bit) <--3xCzujnik , szczególnie że być może będę chciał rozbudować układ o "zabezpieczenie" zwarciowe lub od nie symetrii napięć . Propozycja wykorzystania ATXmega jest ciekawa , tylko czy uda mi się przejść problem implementacji USB po stronie komputera , tzn. w Matlabie lub Scilabie .

    Następna sprawa , co sądzicie o oversamplingu , oczywiście od strony praktycznej , bo teoretycznie to nie wiele pracy od strony programowej wg. teorii , taki zabieg sprawił by że posiadał bym przetwornik 12 bit , oczywiście abstrahując od rozwiązania "MUX->CZUJNIK" .
  • Pomocny post
    #8 12002709
    tmf
    VIP Zasłużony dla elektroda
    Atmel daje stos USB, podobnie warto przejrzeć LUFA, masz tam urządzenia różne, także USB to praktycznie gotowiec. Co do oversamplingu - owszem, można, ale po co? 12 bitów masz w XMEGA z marszu, masz tam też sprzętowy oversampling jeśli potrzebujesz, ale oczywiście coś za coś - w tym przypadku ceną jest pasmo.
  • Pomocny post
    #9 12003102
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #10 12003234
    Freddy
    Poziom 43  
    Wiele firm robi specjalizowane układy akwizycji danych. Co konkretnie potrzebujesz mierzyć ?
  • #11 12003305
    BOB MARLEY
    Poziom 10  
    "Kartę" mam wykonać samodzielnie , nie może to być gotowe urządzenie , mam dokonać pomiaru prądów silnika 3-fazowego , w zasadzie uK ma służyć tylko zbierania i natychmiastowego przesłania pomiaru do komputera , gdzie właśnie po stronie komputera ma się odbyć proces obróbki danych np. obliczenie składowych symetrycznych , met. mocy chwilowej lub wektora wirującego itd. , wyniki chcę przedstawiać na żywo , dlatego nie zależy mi na dużej ilości sampli , zresztą inną sprawą jest fakt ( z mojego doświadczenia - nie wiem jak innych osób ) , wynika że nawet z zastosowaniem kart uznanych producentów ( korzystam z kart NI lub LabJack ) , przy nie co słabszym komputerze jest kompletny paraliż systemu np. przy 20kS.
  • Pomocny post
    #12 12003391
    Freddy
    Poziom 43  
    Gotowe układy, to miałem na mysli układy scalone :)
    Mam taki 71M6541D, ale to jednofazowy. Są również wersje 3 fazowe.
    Jeśli chcesz, to ten jednofazowy mogę Ci za 30zł odstąpić. Jest mi juz zbędny.
  • Pomocny post
    #13 12003486
    Electix
    Poziom 21  
    A ja bym na Twoim miejscu rozpatrzył ARM'y.

    W ofercie STMicroelectronics masz Cortexy M3 nawet z trzema 12 bit ADC, są też przykłady pomiarów i sterowania silnikami metodami "polowymi" przy pomocy tych mikrokontolerów. Myślę że cenowo zdecydowanie korzystniej wypadają w porównaniu do AVR i dają Ci zapas mocy obliczeniowej i szeroką paletę interfejsów komunikacyjnych o dużej przepływności. Może warto by było robić część obliczeń w MCU?

    Jakość przetwarzania ADC wbudowanego w MCU możesz poprawić. Przywiązując dużą wagę do projektu obwodu drukowanego, stosując mikrokontroler z możliwością podłączenia zewnętrznego źródła napięcia odniesienia i przeprowadzając kalibrację ADC i programowo korygując wynik przetwarzania, na dodatek możesz też dołożyć wspomniany wcześniej oversampling z 12b na wyżej. Jako że budujesz pojedynczy egzemplarz, to nie powinno być jakoś kłopotliwe. No i świetny projekt części analogowej. Dobrze obliczone i dobrane układy dopasowujące...

    Temat skomplikowany, ale bardzo ciekawy i można się wiele nauczyć.

    :)
  • #14 12003516
    BOB MARLEY
    Poziom 10  
    Przepraszam , że źle zrozumiałem kontekst wypowiedzi , ten układ jak widzę to w zasadzie autonomiczny przetwornik ze sterownikiem LCD , własną pamięcią itd. , lecz potrzebuję układu do zastosowań trójfazowych .

    Nie mam potrzeby sterowania silnikiem , jedyne ewt. sterowanie to włączenie zabezpieczeń , nastawy też oczywiście były by określane po stronie komputera .

    Na ATmegę uparłem się z dwóch powodów , jestem w stanie wykonać płytkę samodzielnie ze względu na małą liczbę wyprowadzeń i montaż przewlekany ( w razie konieczności ) , oraz fakt że przebiegi prądów są wolno zmienne . Ale mocno rozważę wykorzystanie XMegi , oczywiście po głębszej analizie materiałów Atmela .

    Cenna uwaga również dotyczy napięcia odniesienia i jak na razie jestem na etapie poszukiwania odpowiedniego rozwiązania , szczególnie że wybrałem wstępnie do pomiaru prądów czujniki firmy Allegro ACSx , które również wymagają "stabilnego" napięcia odniesienia .

    Dziękuję bardzo wszystkim za cenne uwagi i wskazówki .
  • #15 12011231
    BOB MARLEY
    Poziom 10  
    Po przemyśleniu wielu spraw , zdecydowałem się na wykorzystanie ATXMEGA32A4-AU , z USB , może uda mi się zaimplementować tryb porcjowy przy akwizycji , w związku z tym mam pytanie czy uda mi się ten uK zaprogramować AVRPROG'iem MKII? Dziękuję .
  • Pomocny post
    #17 12011652
    piotrva
    VIP Zasłużony dla elektroda
    A ja podpowiem, że procesory XMEGA z USB (z tego co pamiętam wszystkie z USB) mają wgrany fabrycznie bootloader DFU po USB - wystarczy więc tylko złącze USB i program FLIP od Atmela - nawet programatora nie trzeba mieć ;)
  • #18 12028989
    BOB MARLEY
    Poziom 10  
    Dobrałem wstępnie kontroler xmega32a4-au , ma USB i chyba obejdzie się bez programatora ( tak wynika wg. mnie z dokumentacji FLIP'a ) , wykonałem również testowe urządzenie na kontrolerze atmega16 i okazało się że największym problemem są zakłócenia , a szybkość na kanał ( dla 3 kanałów) uzyskałem na poziomie 3 tyś. próbek ( komputer protestował przy większej ilości danych ) przy nad próbkowaniu bez filtrów antyaliasingowych analogowych , zastosowałem filtr dolnoprzepustowy cyfrowy zaimplementowany po stronie komputera .
  • Pomocny post
    #19 12029413
    _Robak_
    Poziom 33  
    Cytat:

    przy nad próbkowaniu bez filtrów antyaliasingowych analogowych , zastosowałem filtr dolnoprzepustowy cyfrowy zaimplementowany po stronie komputera .

    To raczej póki co dane możesz wywalić do kosza.
    Skoro chcesz mierzyć cokolwiek w pobliżu silnika to póki co zająłbym się problemem szumów a nie 12 bitami na ADC. 12 bit to relatywnie dużo i aby to wykorzystać należy już trochę się postarać. Przy 3V napięcia odniesienia jeden bit to 3mV. To jest a tyle mało że ledwo na oscyloskopie zobaczysz. Jeśli chodzi o oversampling to póki co bym zapomniał. Musisz jakoś dodać ten szum do sygnału. Jak chcesz dodać +-3mV? Wszystko to rozjedzie się w piguły.
    Najpierw zobacz co silnik wyprawia z otoczeniem, zwalcz zakłócenia zabierz się za 10 bit i starczy.
  • Pomocny post
    #20 12034942
    dondu
    Moderator na urlopie...
    BOB MARLEY napisał:
    ... wykonałem również testowe urządzenie na kontrolerze atmega16 i okazało się że największym problemem są zakłócenia ...

    Pokaż schemat, bo może tutaj popełniasz jakiś błąd.
  • #21 12035451
    BOB MARLEY
    Poziom 10  
    Wykonałem wszytko na płytce stykowej ( nie wykonałem schematu , "łączyłem wejście do wejścia " na szybko ) , nie oddzieliłem obwodów analogowych i cyfrowych ( przewody obok przewodów ) , chciałem sprawdzić na szybko ile jestem w stanie realnie osiągnąć próbek ( jak na ATmegę ) na kanał ( udało się 1,5 k/s , wykorzystałem 3 kanały ) , zastosowałem wew. źródło odniesienia , co prawda zwarłem Vref do GND przez kondensator , ale zwykły elektrolityczny . Jak widać popełniłem masę błędów , schemat wstawię ale już na xmega32 , jak skończę tłumaczenie data-s ( chyba że jest jakaś polskojęzyczna literatura o, której nie wiem ) .
  • Pomocny post
    #23 12036063
    _Robak_
    Poziom 33  
    Generalnie temat jest ciekawszy niż się z pozoru wydaje ze względu zakłócenia z silnika których zwykły filtr może nie wytłumić a wysokie częstotliwości i tak wejdą w pasmo które mierzysz. Jeśli prototyp będzie Cię zadowalał to OK, jeśli nie to pisz wtedy coś poradzimy:)
  • #24 12043336
    BOB MARLEY
    Poziom 10  
    Dziękuję jeszcze raz za zainteresowanie tematem , przedstawię wyniki pomiarów testowych , jak skończę wszelkiego rodzaju obliczenia filtrów i obwodów kondycjonowania sygnałów wejściowych , wstępnie przetestowałem scalony aktywny filtr uniwersalny LMF100 , ale on nie do końca zdał egzamin (sterowanie bezpośrednio z uK , dość mocno obciążyły atmegę , choć nie testowałem tego rozwiązania na xmedze - tu jestem dobrej myśli szczególnie po tym co przeczytałem w notach katalogowych Atmel'a , oczywiście wg. mnie jest to sensowne rozwiązanie dla max 3 kanałów , ze względu na cenę ewt. zastosowanie drugiego multipleksera w całym projekcie miało by sens gdybym stosował zewnętrzny przetwornik ADC , więc raczej skupię się na filtrach analogowych na każdym kanale) .

    dondu - dziękuję za link do strony , materiały zamieszczone na blogu bardzo mi pomogły , w rewizji mojej wiedzy na temat zakłóceń .
  • Pomocny post
    #25 12044356
    bolek
    Poziom 35  
    A co do USB to zdaje się ftdi z równoległym interfejsem były szybsze
REKLAMA