Dlaczego większość ADC, podobnie jak Arduino , ma rozdzielczość 10 bitów, a nie 8 lub 16 bitów?
Po prostu wydaje się dziwne, że nie pasują one do standardowych rozmiarów danych, szczególnie tych zintegrowanych.
Dlaczego większość ADC, podobnie jak Arduino , ma rozdzielczość 10 bitów, a nie 8 lub 16 bitów?
Po prostu wydaje się dziwne, że nie pasują one do standardowych rozmiarów danych, szczególnie tych zintegrowanych.
Odpowiedzi:
Nie ma większego problemu technicznego z rozszerzeniem ADC (kolejne przybliżenie) w celu konwersji 16 bitów, ale problem polega na tym, że zaczynasz widzieć poziom szumów analogowego interfejsu. To powoduje, że klienci wpadają w panikę, ponieważ widzą skaczące kody ADC i nie zawsze zdają sobie sprawę, że patrzą na dziesiątki mikrowoltów odchylenia.
Zakładając napięcie odniesienia 5,00 V i 10-bitowy przetwornik ADC, LSB reprezentuje napięcie 4,88 mV (5 V × 2–10 ). W przypadku 16-bitowego ADC z napięciem odniesienia 5,00 V napięcie LSB wynosiłoby 76 µV.
Ale zasilanie w systemie cyfrowym nie jest dokładnie 5,00 V, zwykle jest określone w zakresie od 4,75 V do 5,25 V. Za każdym razem, gdy wewnątrz mikrokontrolera występuje przejściowe zdarzenie przełączające, występuje niewielki puls prądu, który powoduje zasilanie napięcia drgają. Jeśli LSB wynosi około 5 mV, ledwo go widzisz, ale na poziomie 76 µV trudno jest nie zauważyć tego hałasu.
W rzeczywistości, gdy przekroczysz 12-bitowy ADC, naprawdę potrzebujesz analogowego napięcia odniesienia, a nie tylko cyfrowego zasilacza. To dodaje trochę więcej kosztów. Aby uzyskać najlepsze wyniki, to napięcie odniesienia powinno być w rzeczywistości oddzielnym układem z własnymi liniami energetycznymi, a idealnie powinno być z dala od gorącego / głośnego obwodu cyfrowego.
Jeśli chcesz, aby 16-bitowy przetwornik ADC zapewniał stabilne odczyty, potrzebujesz bardzo czystego napięcia odniesienia i kontroli termicznej, a najlepiej trzymać go z dala od jakichkolwiek szybko przełączających się sygnałów cyfrowych ... więc integrując 16-bitowy SAR z ten sam układ co mikrokontroler, faktycznie pokonałby cel posiadania tych dodatkowych bitów. Po prostu mierzyłbyś przypadkowy szum na tych dodatkowych bitach.
Istnieją aplikacje klienckie korzystające z ADC o wyższej rozdzielczości. Firma, w której pracuję, wytwarza ich całkiem sporo. Zautomatyzowane urządzenia testowe (ATE), ultradźwięki medyczne i niektórzy inni wyspecjalizowani klienci używają ADC o wysokiej rozdzielczości, w niektórych przypadkach 18-, a nawet 24-bitowych.
Testowanie produkcji ADC o wysokiej rozdzielczości jest czasochłonne (a zatem drogie). Klienci, którzy potrzebują tego rodzaju wydajności, płacą premię za zewnętrzny niezależny ADC, a nie za tanie typy SAR wbudowane w wiele nowoczesnych mikrokontrolerów.
Są też aplikacje o dużej prędkości, takie jak radar lub oscyloskop do próbkowania cyfrowego, które muszą próbkować z częstotliwością 100 MHz lub większą - przy tych prędkościach masz szczęście uzyskać 8 znaczących bitów.
Kompromis między rozdzielczością a kosztem.
8 bitów daje 28 = 256 kombinacji, z czego 0 to jedna, pozostawiając 0 do 255 jako możliwe wartości cyfrowe. To nie wystarcza dla wielu aplikacji. Każdy dodatkowy bit podwaja rozdzielczość, a 10 bitów daje 1024 kroki, co wystarcza do większości projektów. Systemy przemysłowe mogą używać 12-bitów dla jeszcze lepszej rozdzielczości.
ADC o wysokiej rozdzielczości wymagają dokładniejszych tolerancji i są droższe w produkcji.
Poczyniono już wiele dobrych i ważnych punktów. Przez lata intensywnie korzystałem z 8, 10, 12 i 16 bitowych przetworników ADC, a obecnie dość łatwo jest uzyskać 16 bitów z czasem konwersji 4 lub 5 mikrosekund (lepiej są dostępne, będę trzymać się tego, co może być wykonalne) dla większości osób), w osobnym układzie. Ale zawiera precyzyjną sieć drabinkową, często wykorzystującą rezystory cienkowarstwowe i różne wysoce wyspecjalizowane analogowe techniki projektowania. (Niemal zawsze istnieje również zapotrzebowanie na wysokowydajne tranzystory bipolarne gdzieś w obwodzie precyzyjnego ADC, ale wszystkie współczesne mikrokontrolery są CMOS, więc istnieje wiele dodatkowych etapów wytwarzania, aby zrobić wszystko z dobrą dokładnością analogową i logiką CMOS. ) Dobry ADC kosztuje również więcej niż większość mikrokontrolerów! Nie tak łatwo zrobić
Weźmy na przykład TI ADS8509, którego poprzednik ADS7509, nie tak szybko, użyłem go w wielu miejscach w dużym i ważnym projekcie.
http://www.ti.com/lit/ds/symlink/ads8509.pdf
Według dzisiejszych standardów jest dość przyziemny. Jednak jego wewnętrzne cechy konstrukcyjne nie są kompatybilne z tanim procesem produkcyjnym mikrokontrolerów. I kosztuje ponad 15,72 USD, więcej niż większość mikrokontrolerów. Użyłem ich w postaci gołej matrycy półprzewodnikowej, wbudowanej w hermetyczne hybrydy metalowej puszki, ze starannie zaprojektowanymi obwodami pomocniczymi, i naprawdę dostałem zaledwie 1 szum LSB pp, więc można to zrobić, jeśli wiesz, co robisz, i mieć zasoby, w tym budżet. Ale nigdy nie zobaczysz tak niskiego poziomu hałasu w mikrokontrolerze lub w jego pobliżu.
Głównym problemem, jak wyjaśniła co najmniej jedna osoba, jest to, że hałas na cyfrowej szynie zasilającej będzie miał bezpośredni wpływ na ADC. Teraz możesz to obejść, używając dobrego zewnętrznego napięcia odniesienia, w którym zapewniony jest do tego pin, ale musisz być w stanie zrobić to samo z ziemią. I te piny muszą być ograniczone do kilkuset mV zasilania cyfrowego i uziemienia, inaczej rzecz wybuchnie. Plus, oczywiście, wewnętrzne sprzężenie szumów w krzemie, od logiki, zmieniając stany w skomplikowany sposób na częstotliwości zegara, i gorzej, od pinów I / O, z których niektóre mogą sterować i przełączać 10s mA, jeśli załadowałem je do limitu. Hałas, hałas i więcej hałasu ...
Część, którą zacytowałem (i Google w poszukiwaniu tańszych, szybszych lub różnych, kompromis elastyczności w stosunku do kosztów) ma interfejs SPI, dzięki czemu można go łatwo ZEWNĘTRZNIE wykorzystać do mikrokontrolera z własną lokalną płaszczyzną uziemienia, filtrowaniem itp. Następnie , ostrożnie, naprawdę da ci 16 bitów.
Kiedyś ciężko było uzyskać więcej niż około 10 bitów bez szumów z 12-bitowego ADC, i nadal znajduje się w brudnym środowisku, takim jak logika cyfrowa, i to w dużej mierze dlatego wbudowane ADC w układach procesorów są mniej lub bardziej utknął w tej rozdzielczości i prawdopodobnie pozostanie na zawsze. Ale mam 32-bitowy układ zewnętrzny. Nie spojrzałem na arkusz danych ani na koszt ...
Jeśli możesz poświęcić absolutną dokładność (tj. Współczynnik skali może być mniejszy o 5% lub więcej, nie wspominając o przesunięciu DC i jego dryfowaniu w czasie i temperaturze, ale liniowość będzie znakomita) ADC klasy audio może być dla Ciebie. Mają co najmniej 16 bitów i są przeznaczone na rynek masowy, więc często mają dobrą wartość, ale nie spodziewaj się użycia jednego w precyzyjnym instrumencie, który musi mierzyć sygnały prądu stałego do +/- 0,1%.
Nie możesz mieć wszystkiego na raz. Wszystko zależy od tego, co najważniejsze. Precyzja, hałas, dryf długoterminowy, prędkość, koszt, moc, typ interfejsu (szeregowy lub równoległy) itp. Również możesz chcieć multipleksować kilka kanałów, więc potrzebujesz szybkiego czasu reakcji krokowej, co wyklucza wiele przetworników ADC sigma-delta, które w przeciwnym razie mają bardzo dobre właściwości.
Przy wyborze ADC. Google jak zwykle jest twoim przyjacielem. Istnieje wiele artykułów i notatek aplikacyjnych od TI, Linear, National i różnych innych producentów półprzewodników. Zawsze uważaj na to, czego nie informują arkusze danych i sprawdź, jakie parametry podkreślają ich konkurenci.
Ale jeśli chcesz mieć to wszystko na mikrokontrolerze, nie planuj używać więcej niż 10 bitów (prawdopodobnie 9 możliwych do użycia, głośnych LSB) w swoich projektach. I zaplanuj oddzielne odniesienie analogowe i uziemienie, jeśli twój układ na to pozwala. W ten sposób nie będziesz marnować czasu.
8-bitowe ADC są okropne w użyciu z powodu kroków 0,49% - widziałem już dość tego. Arduino, zaprojektowane dla elektroniki hobbystycznej, wykorzystuje 4-krotnie więcej kroków, czyli blisko 0,1%, co jest zbliżone do możliwego do uzyskania sygnału do szumu (plus szum) oczekiwanego od typowych obwodów wzmacniacza operacyjnego lub tranzystora. Lepsze byłoby to, gdyby zmarnowano na domową elektronikę klasy hobyist, a co gorsza, byłoby zbyt stepowe i okropne.
Chociaż 16-bitowe przetworniki ADC są dostępne w handlu, ich ustabilizowanie zajmuje więcej czasu, podczas którego szum lub szum poruszają się, więc nie można uzyskać lepszego pomiaru i jest wolniejszy.
Gdy przetwornik ADC dokonuje konwersji, zapewnia cyfrową (kwantowaną) wartość ciągłego sygnału analogowego. Ponieważ wartość cyfrowa nie będzie dokładnie wartością analogową w momencie konwersji, różnicę można uznać za szum dodatkowy. Im wyższa rozdzielczość ADC, tym bliższa wartość cyfrowa od wartości analogowej. Innymi słowy, poprawiamy stosunek sygnału do szumu kwanityzacyjnego (SQNR) poprzez zwiększenie bitów ADC. Dlatego 10-bitowy ADC jest lepszy niż 8-bitowy (o około 12dB).
Użycie 16-bitowego A / D będzie lepsze pod względem SQNR. Są jednak droższe. W wielu aplikacjach 10-bitowy ADC zapewnia wystarczającą liczbę wymaganych SQNR.
Zasadniczo chcesz, aby liczba bitów w twoim kowbocie była taka, aby twój krok kwantyzacji był nieco mniejszy niż (analogowy) poziom szumu w systemie.
Używanie większej liczby bitów, a tym samym krok kwantyzacji poniżej poziomu szumu, zapewnia bardzo niewielką poprawę ogólnej wydajności hałasu, ale użycie większej ilości krzemu albo wydłuża czas konwersji lub wymaga, aby elementy wewnętrzne konwertera działały szybciej (a zatem były głośniejsze)
Używanie mniejszej liczby bitów, a tym samym posiadanie kroku kwantyzacji powyżej poziomu szumu, jest ogólnie złe. Oznacza to, że marnujesz wydajność obwodów analogowych, aw niektórych przypadkach może powodować systematyczne błędy, których nie można usunąć przez uśrednienie (w rzeczywistości czasami projektanci celowo dodają szum do systemu, aby uniknąć błędów systemowych z powodu kwantyzacji).
Różnica między 8 bitami a 16 bitami jest OGROMNA. Ten pierwszy kończy się etapem kwantyzacji, który jest zbyt duży, nawet w systemach o dość słabej wydajności szumowej. Ten ostatni jest marnowany na każdym systemie, który nie ma bardzo ostrożnego projektu analogowego. Nic więc dziwnego, że mikrokontrolery kończą się gdzieś pośrodku.
Zauważ, że ludzie często mówią o „szumie kwantyzacji”, ale należy pamiętać, że pojęcie „szumu kwantyzacji” jest uproszczonym modelem rzeczywistości, który w niektórych okolicznościach psuje się.
Najczęstszym zastosowaniem ADC jest prawdopodobnie obszar przetwarzania dźwięku (VoIP, muzyka na CD itp.). Muzyka nie jest tu interesująca, ponieważ wymaga 16 bitów. Ale VoIP napędza rynek ADC o niższej jakości. VoIP zwykle wykorzystuje kompandowanie, które wytwarza 8-bitowy skompresowany kod PCM z 12-bitowego sygnału wejściowego. Wejście do kroku kompresji musi mieć więcej bitów - zwykle 12, a czasem 10 może wystarczyć (zawsze możesz sfałszować dwa najniższe bity).
W rezultacie popyt na 8-bitowe przetworniki ADC jest bardzo niski, ale w przypadku wyższych bitów przetworniki ADC są bardzo pożądane i dlatego są tanie. Arduino prawdopodobnie użyłoby komponentów, które są tanie i wszechobecne.