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

Debugowanie wbudowanego ADC w MCU z pomocą prostych narzędzi

ghost666 01 Lis 2017 19:20 1710 3
  • Najpewniej, gdy próbujecie uruchomić przetwornik analogowo-cyfrowy (ADC) wbudowany w mikrokontroler (MCU), oscyloskop nie jest pierwszym narzędziem, po które sięgacie. Jednakże może on bardzo wyraźnie pomóc sprawdzić jak działa przetwornik. W poniższym tekście - tłumaczeniu informacji z jednego z blogów Texas Instruments - dowiemy się jak wykorzystać oscyloskop do sprawdzenia działania wbudowanego w układ ADC. Jakkolwiek prezentowane jest to na przykładzie układu C2000 Piccolo F28027, to metodykę tą wykorzystać można z dowolnym innym układem.

    Precyzja czasowa ADC jest niezwykle istotna, szczególnie w systemach pracujących w zamkniętej pętli sprzężenia zwrotnego, takich jak cyfrowo sterowane zasilacze, czy systemy kontroli silników. W teorii zadanie jest bardzo proste - wystarczy skonfigurować przetwornik ADC we wnętrzu układu zgodnie z informacjami z karty katalogowej MCU... niestety nie zawsze jest to tak proste, często trudno jest zinterpretować dane z karty katalogowej jak i napisać odpowiedni program, który zrealizuje wszystkie funkcje.

    W typowym systemie wzmacniacz operacyjny (rysunek 1a), lub dzielnik oporowy (rysunek 1b) steruje wejściem przetwornika. Na rysunku 1 zaprezentowano uproszczony schemat wejścia ADC - rezystancja przełącznik (RON) i pojemności - próbkująca (CH) i pasożytnicza (CP). Podczas próbkowania przełącznik SW jest zwarty, a przez ADCIN płynie prąd, który ładuje CH do poziomu równego z napięciem wejściowym. Powoduje to spadek napięcia na pinie ADCIN z uwagi na ograniczającą prąd wejściowy w układzie impedancję wyjściową źródła sygnału podawanego na przetwornik.

    Dobrym zwyczajem w inżynierii jest dodanie filtra RC na wejściu układu. Zewnętrzny kondensator jest rezerwuarem ładunku dla pojemności próbkującej w układzie i pozwala na redukcję spadków napięcia na pinie wejściowym przetwornika w czasie próbkowania do poziomu uznawanego ogólnie za dopuszczalny - około 5% napięcia odniesienia. Częstotliwość graniczna tego filtra jest większa niż częstotliwość próbkowania - filtr ten nie ma pełnić rolę filtra anty-aliasingowego. O projektowania takich filtrów już sporo napisano i można poszukać odpowiedniej literatury.

    Debugowanie wbudowanego ADC w MCU z pomocą prostych narzędzi
    Rys.1. Przetwornik ADC w TMS320F280927, sterowany przez (a) wzmcniacz operacyjny i (b) dzielnik oporowy.


    Rysunek 2 pokazuje jakie są zalety korzystania z tej metody badania zachowania ADC. Można monitorować spadek napięcia na wejściu ADC, jaki obserwowany jest podczas różnych faz przetwarzania. Wybrany do tego celu układ to prosta przetwornica DC/DC sterowana przez mikorokontroler C2000. Taka aplikacja wymaga precyzyjnej kontroli i przetwarzania analogowo-cyfrowego.

    Układ w takim systemie może wykorzystywać wiele wejść analogowych do sekwencyjnego mierzenia różnych napięć w systemie. Czas próbkowania, priorytet i częstotliwość próbkowania tych wejść może być różna, co powoduje, że przebiegi na każdym z kanałów będą różne i tworzyć mogą kompleksowy układ, jak pokazani na rysunku 3

    Na rysunku 2 pokazano konfigurację trzech kanałów (ADCINA1, ADCINA3 i ADCINB7), które będą sekwencyjne próbkowane. Zegar przetwornika skonfigurowany jest na 25 MHz, czyli 40 ns na cykl. Czas próbkowania (tADC_SH) skonfigurowano na 12 cykli - 480 ns, a czas przetwarzania 13 cykli - 520 ns. Dzięki temu pojedyncza konwersja zajmuje jedną mikrosekundę, a przemiecenie wszystkich trzech kanałów trzy mikrosekundy.

    Debugowanie wbudowanego ADC w MCU z pomocą prostych narzędzi
    Rys.2.Zależności czasowe pomiędzy poszczególnymi próbkowaniami i konwersją w badanym systemie.


    W badanym systemie wejścia ADCINA1 oraz ADCINA3 sterowane są z wyjścia wzmacniacza operacyjnego (TLV2272-Q1), natomiast trzecie wejście z poprzez filtr RC. We wszystkich trzech kanałach usuwany jest kondensator filtrujący na wejściu przetwornika. Dzięki temu momenty próbkowania będą lepiej widoczne na ekranie osculoskopu.

    Na rysunku 3 pokazano przebiegi zmierzone na wszystkich wejściach analogowych w opisywanym systemie. Mierzone były oscyloskopem Tektronix TDS5054B z sondą pasywną P5050 (typowa sonda 10x, 10 MΩ, 11.1 pF). Oscyloskop skonfigurowany był do pracy z dużą rozdzielczością, kanały sprzężone są zmiennoprądowo (AC) z wejściem, a pasmo ograniczone do 200 MHz.

    Debugowanie wbudowanego ADC w MCU z pomocą prostych narzędzi
    Rys.3. Oscylogramy napięcia na poszczególnych wejściach analogowych w badanym układzie.


    Pojedyncze impulsy widoczne na przebiegu dokładnie odpowiadają czasom próbkowania i konwersji w poszczególnych kanałach. Widać także np. przełączanie multipleksera na kolejny kanał podczas próbkowania.

    Dodatni impuls na oscyloskopie sugeruje, że napięcie kolejnego kanału jest większe niż poprzedniego, a ujemny impuls, że jest mniejsze i CH musi się rozładować. Wielkość, wysokość i czas trwania impulsów nie jest istotny w naszej analizie, szczególnie że sondy oscyloskopowe, jak i cały ustrój pomiarowy, zmieniają ich kształt. Aby zmierzyć je w dokładny sposób trzeba by użyć aktywnych sond oscyloskopowych z bardzo małą pojemnością wejściową.

    Sukces!

    Pięć minut analizowania sygnałów pozwoliło rozwiązać problem, jaki zaobserwowano na rysunku 4. Jak przeczytać można w erracie do karty katalogowej układu F28027 pierwsza próbka z serii konwersji ADC może być niepoprawna. Jednym z możliwych rozwiązań tego problemu, jest odrzucanie pierwszego pomiaru. Inną metodą jest zmiana zależności czasowych w ADC poprzez wyłączenie trybu nakładania przełączania multipleksera i konwersji oraz zmiana zegara przetwornika do nie więcej niż 30 MHz. Pierwsza próba wykorzystywała pierwsze podejście, ale docelowo wykorzystano drugie, bez zmian w kodzie, dlatego też na oscylogramie widać może być podwójną konwersję podczas pierwszego przetwarzania w serii.



    Podsumowanie

    Zaprezentowana technika pozwala, wykorzystując jedynie podstawowe narzędzia, iść krok dalej w zakresie projektowania i testowania wydajnych i niezawodnych aplikacjach. Dodatkowe informacje, wykorzystany kod programu i inne informacje pobrać można ze strony źródłowe (link poniżej).

    Źródło: http://e2e.ti.com/blogs_/b/analogwire/archive/2017/08/17/debugging-an-integrated-adc-in-a-microcontroller-using-an-oscilloscope

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 napisał 9663 postów o ocenie 7772, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
  • IGE-XAOIGE-XAO
  • #2
    stxma
    Poziom 10  
    Przy sekwencyjnym pomiarze wielokanałowym nie należy stosować kondensatorów filtrujących C1, ponieważ pojemność układu S/H przenosi ładunek na kolejny kanał. Można w ten sposób stracić nawet 2LSB dokładności przetwornika. Łatwo to sprawdzić podając na drugi kanał 0V przed dzielnikiem napięcia, a na pierwszym zmieniać napięcie od 0 do AVCC. Pomiary na drugim kanale będą zależały od napięcia na pierwszym itd. Im większa rezystancja dzielnika, tym bardziej widoczny efekt. Jeżeli kondensator filtrujący C1 będzie miał dużą pojemność, to efekt będzie mniejszy, ale przecież nie chcemy mierzyć napięcia w układzie, które występowało kilka lub kilkadziesiąt milisekund wcześniej, tylko bieżące.

    Pozdrawiam
  • IGE-XAOIGE-XAO
  • #3
    krru
    Poziom 32  
    Nie bardzo rozumiem tej uwagi. Oczywiście, opisane zjawisko "przesłuchu" występuje, ale nie bardzo widzę sposób, w jaki kondensatory C1 miały by to zjawisko potęgować. Przecież układ filtrujący znajduje się na zewnątrz układu scalonego i każdy sygnał wejściowy ma go niezależnie. Chyba lepiej jest jak kondensator układu S/H przyłącza się do zewnętrznego kondensatora już naładowanego do odpowiedniego napięcia (zwykle C1 >> Cs/h), bo różnica napięć jest dość szybko zmniejszana prądem wyrównawczym (brak dodatkowej rezystancji) niż ma się wyrównać tylko z dzielnika napięcia wejściowego, który pewną rezystancję wyjściową posiada. Najlepszą metodą ograniczania "przesłuchu" (jak i innych zakłóceń) jest stosowania źródła sygnału o małej rezystancji wyjściowej (jakiś wzmacniacz). Dobrze jest też stosować częstotliwość taktowania ADC najmniejszą możliwą, przy której układ jeszcze się wyrabia, bo zwykle układ S/H otwiera się na 1 takt tego zegara, więc mniejsza częstotliwość zegara to dłuższy czas na naładowanie układu S/H.