Większość mikrokontrolerów (uC) ma konwerter analogowo-cyfrowy (ADC) jako część zestawu urządzeń peryferyjnych, co jest fenomenalne, ponieważ integruje dwa elementy w jednym pakiecie. Te ADC są zwykle również mapowane w rejestrze, co pozwala szybko i łatwo wyodrębnić dane.
Pomimo tej ścisłej integracji nadal można kupować zewnętrzne ADC. Widzę dla nich kilka przypadków:
- ADC należy odizolować od uC.
- Głębia bitowa próbek ADC musi być większa niż ADC uC.
- Napięcie do wyczuwania jest dalekie od mikrokontrolera, a długie linie analogowe są niedopuszczalne.
- Napięcie do wyczuwania znajduje się w trudnym środowisku nieprzystosowanym do UC.
- Zewnętrzny ADC pobiera próbki znacznie szybciej niż ADC uC.
- Napięcie odniesienia dla niektórych próbek jest inne niż dla innych, co wymaga wielu styków Vref (a zatem wielu zewnętrznych ADC).
- Obecny uC nie ma wystarczającej liczby kanałów ADC, a koszt wprowadzenia nowego uC jest wygórowany.
- Zewnętrzny ADC zużywa mniej energii niż ADC uC (potrzebowałbym przykładu, żeby w to uwierzyć).
- Kanały ADC muszą być próbkowane jednocześnie (rzadki scenariusz).
- Koszt programowania oprogramowania w czasie produkcji przewyższa koszt droższej części ADC (mało prawdopodobne).
- Płytka drukowana ma ograniczoną przestrzeń i żaden uC nie może się zmieścić (mało prawdopodobne).
Wszystko jest dobrze i dobrze, ale dziwne jest to, że zewnętrzne ADC są zwykle nieco droższe niż ich odpowiedniki z UC, ale zapewniają równoważną funkcjonalność. Na przykład można kupić część EFM32Z z 12-bitowym ADC 1Msps (z wewnętrznym odniesieniem) za około 1 USD lub można kupić równoważny ADC 12-bitowy 200 ksps za około 3,50 USD (te same prędkości (ish), względnie te same liczby mocy itp.) I wykonać to samo zadanie (wyodrębnianie danych ADC).
Powstaje zatem pytanie: czy istnieją ważne powody, dla których inżynier wolałby zewnętrzny ADC niż ADC uC, gdy ten ostatni może wykonywać tę samą funkcjonalność?
źródło
Odpowiedzi:
Jeśli wewnętrzny ADC twojego mikrokontrolera wykonuje zadanie, którego potrzebujesz, to nie, nie potrzebujesz zewnętrznych ADC. Ale nie do tego są przeznaczone.
Opisałeś większość przyczyn zewnętrznego ADC, ale jest kilka innych i, moim zdaniem, są to niektóre z najważniejszych powodów:
W przypadku punktu 3 weźmy na przykład Raspberry Pi. To wcale nie ma ADC, musisz dodać zewnętrzny, aby w ogóle wykonać jakąkolwiek pracę analogową.
źródło
Kolejne kilka powodów, by faworyzować zewnętrzny ADC:
Wiele zewnętrznych części ADC zawiera wejścia różnicowe, podczas gdy wbudowane konwertery mikrokontrolerów często tego nie robią. W przypadkach, gdy wejścia mają dużo szumu w trybie wspólnym, może to być bardzo ważne.
Wiele zewnętrznych części ADC zawiera stopień wzmacniacza przed samym konwerterem, dzięki czemu konwerter może mierzyć bezpośrednio sygnał o wysokiej impedancji. Na wielu mikrokontrolerach próbkowanie sygnału wejściowego może go zakłócać. W zależności od charakteru sygnału wejściowego może to znacznie wydłużyć czas akwizycji niezbędny do wykonania dokładnych pomiarów.
Nawet jeśli wewnętrzny ADC ma szerokość dwunastu bitów, to na ogół nie oznacza, że wymaga odczytów z dokładnością do jednej części w 4096. Typowy zewnętrzny ADC często ma lepsze specyfikacje niż wewnętrzny, nawet jeśli oba mają tę samą reklamowaną głębokość bitów.
Zintegrowanie ADC z mikrokontrolerem jest łatwe. Integracja dobrego ADC jest znacznie trudniejsza. Zgadnij, co jest częstsze.
źródło
Kolejny powód istnienia niektórych zewnętrznych przetworników ADC: były one znacznie dłuższe niż mikroskopy z wewnętrznymi przetwornikami ADC i zostały zaprojektowane w wielu produktach. Ewentualnie 20 lub 30 lat dłużej. (Prawdopodobnie nie dotyczy to połączonej części SOIC, choć może to być zmodernizowana, zmniejszona wersja klasycznej części)
Tam, gdzie ADC nie ma gwiezdnej rozdzielczości, dokładności ani szybkości, a mimo to ma wyższą cenę, może to być powód.
Nawet w przypadku nowych projektów może być bardziej pożądane ponowne użycie bloków, które działają dobrze, niż ponowne zaprojektowanie nowej części (nawet jeśli wynikowa integracja obniży koszt BOM). Ta reinżynieria może być droga; proces zatwierdzania testów i przepisów, tym bardziej.
Teraz, jeśli zaczynasz od zera, a wybrany mikrokontroler ma wystarczającą liczbę kanałów ADC, które spełniają Twoje wymagania, żadne z powyższych nie ma zastosowania.
źródło
Zdaję sobie sprawę, że jest to bardzo stare pytanie, ale jest to pytanie, które dość często debatujemy wewnętrznie.
Masz rację, wybranie zewnętrznego ADC byłoby niezwykłe, gdyby zewnętrzna wersja była dokładnie funkcjonalnie równoważna. Jednak z mojego doświadczenia wynika, że tanie mikroskopy zwykle mają dość kiepskie przetworniki ADC z przesunięciem temperatury, niską liczbą bitów (10-12 bitów) i szumem z VCC (+/- 20mV w niektórych przypadkach) ... chociaż odwrotność może być prawdziwa. .. możesz poprawić S / N, jeśli przesadzasz i masz szum. W naszych działaniach związanych z rozwojem produktu bardzo rzadko opieramy nasz wybór MCU na jakości obecnych w nim ADC. Zwykle chodzi bardziej o łańcuch narzędzi, koszt, istniejące oprogramowanie układowe itp. Wewnętrzne ADC są zwykle ograniczone do niekrytycznych zadań, takich jak odczyt napięcia akumulatora.
Z różnymi mikrami mogą również występować problemy ze wspólnymi licznikami czasu, które wymagają monopolizacji w celu uzyskania krótkich czasów próbkowania, ale zakłócają inne rzeczy w MCU (porty szeregowe oprogramowania, ISR itp.), Gdy są zmonopolizowane dla ADC.
Co to jest VREF? Jeśli używasz VCC jako odniesienia w oprogramowaniu układowym, nawet jeśli skalibrujesz do „prawdziwego” VCC, wartość ta może się bardzo wahać podczas operacji. Jeśli masz na pokładzie urządzenie wysokoprądowe (radio, Wi-Fi, MCU itp.) Z dużym zużyciem prądu przejściowego, VCC może spaść do 4,8 woltów podczas transmisji i jeśli twoja próbka wystąpi w tym oknie, a naiwnie przekształcisz 0-1023 ADC odczytał wartość napięcia z ADC_VAL / 1023 * 5.0 - straciłeś ogromną precyzję 200mV. Lub, jeśli masz różne tryby zasilania (USB, Wall wart, bateria) - VCC na MCU może się zmienić (szczególnie z USB). Zewnętrzne ADC (nawet przy tej samej liczbie bitów) mogą zapewnić solidny wewnętrzny vref w zmiennych warunkach VCC.
Rozdzielczość jest bardzo ważna. Wyobrażam sobie, że istnieje jakieś zastosowanie (w prawdziwym świecie) dla 10-12 bitów rozdzielczości, ale dla każdego rodzaju zastosowań w świecie rzeczywistym (wykrywanie gazu, pomiar akustyczny, pomiar akcelerometru, precyzyjny pomiar temperatury itp.) 16-bitowy jest zwykle minimalna rozdzielczość w celu uzyskania odpowiedniego sygnału do szumu i charakterystyki rozdzielczości. Nawet naprawdę ładne 32-bitowe MCU, takie jak SAMD firmy Atmel, są ograniczone do 12-bitowych wewnętrznych ADC.
Jitter zegara jest również problemem, a także istnieje pewna nieodłączna niedokładność, gdy inne 8-bitowe mikra są wymagane do zapewnienia odczytu 12-bitowego i potrzeba co najmniej 2 cykli zegara do manipulowania wartością 12-bitową, co może nie być prawdą z zewnętrznym ADC (ponieważ mogą mieć wewnętrzne oscylatory).
Są też chwile, kiedy ważna jest fizyczna bliskość przetwornika i izolacja od MCU. Niektóre bardzo czułe przetworniki wymagają własnej kondycjonowanej mocy, izolowanych płaszczyzn uziemienia i niezwykle czułych wzmacniaczy przerywających transimpedancji z 0,01% pasywnymi.
Czasami istnieją jednak ważne powody, aby używać wewnętrznych ADC. DMA jest jednym z powodów ... częstotliwość próbkowania jest innym. Łatwość nadpróbkowania to kolejna sprawa. Połączenie zewnętrznych ADC przy dużych szybkościach transmisji danych może pochłonąć wiele cennych zmultipleksowanych pinów I / O i stworzyć bardziej skomplikowaną konstrukcję. Ponadto wiele używanych przez nas ADC jest opartych na I2C, więc częstotliwość próbkowania jest bardzo ograniczona przez prędkość magistrali I2C. Nawet przy prędkości 1 Mb / s odczyt 16-bitowy zajmuje boleśnie dużo czasu.
źródło