Załóżmy, że mam parę 12-bitowych przetworników ADC. Mogę sobie wyobrazić, że można je kaskadowo uzyskać w celu uzyskania <= 24-bitowego wyjścia.
Mogę pomyśleć o użyciu jednego z nich dla zakresu dodatniego, a drugiego dla zakresu ujemnego, chociaż prawdopodobnie będzie pewne zniekształcenie w obszarze podziału. (załóżmy, że możemy zignorować kilka bitów błędu lub być może umieścić trzeci ADC, aby zmierzyć wartość około 0 woltów).
Inną opcją, o której myślałem, jest użycie pojedynczego przetwornika ADC o wysokiej prędkości i przełączanie napięć odniesienia, aby uzyskać wyższą rozdzielczość przy niższej prędkości. Powinien również istnieć sposób na uzyskanie wyniku o wartości rzeczywistej za pomocą jednego przetwornika ADC o stałej wartości zadanej, a następnie przełączania arefów wtórnego konwertera, aby uzyskać dokładniejszą wartość pomiędzy nimi.
Wszelkie uwagi i sugestie są mile widziane.
Zakładam, że cztero-bitowy (lub podwójny 12-bitowy) układ jest tańszy niż pojedynczy 24-bitowy układ.
źródło
Odpowiedzi:
Wiele rzeczy w twoim pytaniu. Więc weźmy je jeden po drugim.
Niezupełnie - miałbyś 13-bitową rozdzielczość. Można opisać działanie 12-bitowego konwertera jako decydujące, w którym z 4096 przedziałów (2 ^ 12) napięcie wejściowe jest. Dwa 12-bitowe przetworniki ADC dają 8192 przedziały lub 13-bitową rozdzielczość.
W rzeczywistości tak działa Konwerter sukcesywnego aproksymacji . Zasadniczo konwerter jednobitowy (inaczej komparator) jest używany z przetwornikiem cyfrowo-analogowym, który wytwarza zmienne napięcie odniesienia zgodnie z algorytmem aproksymacji w celu uzyskania cyfrowej próbki napięcia. Należy pamiętać, że konwertery SAR są bardzo popularne i większość ADC w uC jest typu SAR.
W rzeczywistości jest to strasznie podobne do działania ADC potoków . Jednak zamiast zmiany odniesienia do wtórnego ADC błąd pozostałości pozostawiony po pierwszym etapie jest wzmacniany i przetwarzany przez następny etap ADC.
W rzeczywistości istnieje powód, dla którego konwerter 24-bitowy nie jest tak prosty, jak ustawienie w jakiejś konfiguracji czterech 8-bitowych konwerterów. Jest o wiele więcej. Myślę, że kluczowym nieporozumieniem jest myślenie, że można po prostu „dodać” liczbę bitów. Aby zobaczyć, dlaczego jest to źle, lepiej myśleć o ADC jako o obwodzie, który decyduje, do którego napięcia wejściowego należy „bin”. Liczba pojemników jest równa 2 ^ (liczba bitów). 8-bitowy konwerter będzie miał 256 pojemników (2 ^ 8). 24-bitowy konwerter będzie miał ponad 16 milionów pojemników (2 ^ 24). Aby więc mieć taką samą liczbę pojemników, jak w konwerterze 24-bitowym, potrzeba ponad 65 tysięcy 8-bitowych konwerterów (właściwie 2 ^ 16).
Aby kontynuować z analogią bin - załóżmy, że twój ADC ma pełną skalę 1V. Wówczas „bin” 8-bitowego konwertera wynosi 1V / 256 = ~ 3,9mV. W przypadku konwertera 24-bitowego będzie to 1V / (2 ^ 24) = ~ 59,6nV. Intuicyjnie jasne jest, że trudniej jest „zdecydować”, czy napięcie należy do mniejszego pojemnika. Rzeczywiście dzieje się tak z powodu szumu i różnych nierównomierności obwodu. Tak więc nie tylko jeden potrzebowałby ponad 65 tysięcy 8-bitowych konwerterów, aby uzyskać 24-bitową rozdzielczość, ale także te 8-bitowe konwertery musiałyby być w stanie rozpoznać bin 24-bitowy (twój zwykły 8-bitowy konwerter nie byłby wystarczająco dobry, ponieważ jest w stanie rozwiązać do ~ ~ 3,9mV bin nie 59.6nV)
źródło
Rozdzielenie zakresu wejściowego da ci 13 bitów, a nie 24. Załóżmy, że masz zakres wejściowy od -4,096 V do + 4,096 V. Wówczas 12-bitowy przetwornik ADC będzie miał rozdzielczość 2 mV : 2 12 x 2 mV = 8,192 V (zakres od -4,096 V do + 4,096 V). Jeśli weźmiesz dodatnią połowę, uzyskasz tam rozdzielczość 1mV, ponieważ twój zasięg jest zmniejszony o połowę: 2 12 x 1mV = 4,096V. To 2 12 poziomów powyżej 0 V, a kolejne 2 12 poniżej. Razem 2 12 + 2 12 = 2 13 , tak że 1 bit dodatkowy, a nie 12.12 12 12 12 12 12 13
Nie ma czegoś takiego jak darmowy lunch.
edit
Nie wydaje się być nieporozumieniem o oversampling, a fakt, że nie są 1-bitowe przetworniki analogowo-cyfrowe audio, które mogą dać rozdzielczość 16-bitową.
Jeśli Twój sygnał wejściowy ma stały poziom napięcia stałego, powiedzmy 0,2 V w zakresie wejściowym 1 V, zawsze będzie on również taki sam. Przy 1-bitowym ADC będzie to zero w naszym przykładzie (poziom jest mniejszy niż połowa wartości odniesienia). Tak będzie, niezależnie od tego, czy próbkujesz z 1 próbką na sekundę, czy z 1000. Uśrednianie tego nie zmienia. Dlaczego działa z ADC audio ?, ponieważ napięcie zmienia się cały czas (szum), co według Einsteina (względność, wiesz ;-)) jest tym samym, co utrzymywanie stałego napięcia i zmienianie wartości odniesienia. A potemdostajesz kilka różnych odczytów podczas oversamplingu, które możesz uśrednić, aby uzyskać całkiem dobre przybliżenie twojego aktualnego poziomu.
Hałas musi być wystarczająco silny, aby przekroczyć próg (-y) ADC i musi spełniać pewne ograniczenia, takie jak rozkład Gaussa (biały szum). W przykładzie 1-bitowym nie działało, ponieważ poziom hałasu jest zbyt niski.
Dalsza lektura:
Nota aplikacyjna Atmel AVR121: Poprawa rozdzielczości ADC poprzez nadpróbkowanie
źródło
Tak, teoretycznie możesz robić, co chcesz, ale tylko wtedy, gdy masz do dyspozycji jakiś całkowicie nierealistyczny sprzęt.
Niestety, kilka innych dotychczasowych komentarzy na temat ograniczonej dodatkowej dokładności jest poprawnych.
Rozważać. Zmierz napięcie za pomocą 12-bitowego przetwornika ADC i powiedzmy 111111000010 Wiesz, że rzeczywista wartość leży gdzieś w przedziale 1-bitowym +/- 0,5 bitów po obu stronach tej wartości.
JEŻELI twój ADC był dokładny do 24 bitów, ale dostarczał tylko 12 bitów, oznacza to, że vaklue leży w granicach +/- połowy nieco 111111000010 000000000000. W takim przypadku możesz wziąć 12-bitowy ADC z +/- 1/2 bitu, wycentruj go na 111111000010000000000000 i przeczytaj wynik. Dałoby to różnicę między rzeczywistym sygnałem i wartością aDC, zgodnie z potrzebami. CO BYŁO DO OKAZANIA.
Jednak 12-bitowy ADC sam w sobie jest dokładny tylko do około połowy. Suma jego różnych błędów powoduje, że deklaruje on określony wynik, gdy rzeczywisty wynik wynosi około pół, ale inny plus lub minus.
Chociaż chcesz
111111000010 oznacza 111111000010 000000000000
może faktycznie oznaczać 111111000010 000101101010 lub cokolwiek innego.
SO jeśli następnie weźmiesz 2. ADC i zmierzysz dolne 12 bitów i PRZYJMUJESZ, że są one względne względem dokładnej granicy 12 bitów, to w rzeczywistości odnoszą się do powyższej błędnej wartości. Ponieważ ta wartość jest zasadniczo przypadkowym błędem, dodawalibyście nowe 12 mniejszych bitów do 12 bitów zasadniczo losowego szumu. Precyzyjne + losowe = nowe losowe.
PRZYKŁAD
Użyj dwóch konwektorów, które mogą zmierzyć zasięg i dać wynik w 1 z 10 kroków. Po skalowaniu do 100 woltów FS dają one ge 0 10 20 30 40 50 60 70 80 90
Po skalowaniu do pełnej skali 10 woltów dają 1 2 3 4 5 6 7 8 9
Decydujesz się na użycie tych dwóch przetworników do pomiaru zakresu 100 woltów z dokładnością 1 wolta.
Konwerter 1 zwraca 70 V. Następnie mierzysz napięcie względem 70 V i otrzymujesz -3 V. Uważasz więc, że rzeczywista wartość, tj. + 70 V - 3 V = 67 V.
JEDNAK wynik 70 V może w rzeczywistości być dowolnym z 65 66 67 68 69 70 71 72 73 74
Tylko jeśli pierwszy konwerter jest DOKŁADNY do 1 V na 100, mimo że wyświetla 10 V kroków w 100 V, możesz osiągnąć to, co chcesz.
Zatem twój rzeczywisty wynik to 67 V +/- 5 woltów = cokolwiek od 62 V do 72 V. Więc nie ma się lepiej niż wcześniej. Twoje centrum zostało przeniesione, ale może być zlokalizowane losowo.
W ten sposób będziesz mógł uzyskać niewielką poprawę, ponieważ konwerter jest zwykle nieco bardziej dokładny niż bity, które zwraca (masz nadzieję), więc drugi konwerter korzysta z tego.
System, który faktycznie działa, został wspomniany z jednym ważnym pominięciem. Jeśli spróbujesz sygnału N razy i dodasz + / _ pół tonu szumu gaussowskiego, rozłożysz sygnał „w całym możliwym zakresie”, a średnia wartość będzie teraz log (N) bardziej dokładna niż wcześniej. Ten schemat ma haczyki na ryby i kwalifikacje i nie można po prostu uzyskać dowolnej dodatkowej liczby bitów, ale oferuje pewne ulepszenia.
W pierwszym powyższym przypadku wspomniałem o 12-bitowym ADC z 24-bitową dokładnością. Możesz osiągnąć coś takiego, używając 12-bitowego przetwornika ADC i odczytując jego założoną wartość za pomocą 24-bitowego przetwornika np. Delta sigma. JEŻELI sygnał był wystarczająco stabilny, aby pozostawał w tym samym zakresie jednego bitu, możesz użyć drugiego ADC do odczytania 2. 12 bitów z tego stabilnego sygnału.
Alternatywnie - po prostu odczytaj 24-bitowy sygnał początkowo z sigma delta, zablokuj w tym punkcie, a następnie zmierzaj kolejno względem niego za pomocą 2. ADC. Dopóki sygnał pozostaje w zakresie 2. ADC, otrzymasz znacznie szybszy wynik.
źródło
Istnieje coś takiego, co nazywamy supersamplingiem, którego można użyć do zwiększenia rozdzielczości wielu rodzajów ADC.
Działa poprzez dodanie szumu do sygnału. Chociaż szum zmniejsza rozdzielczość, konieczne jest spowodowanie podziału danych na kilka bitów. (Nie jestem facetem od przetwarzania sygnałów - tak właśnie to rozumiem.) Twój szum może wynosić tylko 1 lub 2 bity, ale musi tam być. Jeśli weźmiesz jedną 12-bitową próbkę - masz 12 bitów. Jeśli następnie weźmiesz 4 próbki, dodaj je razem i podziel przez dwie, otrzymasz 13-bitową próbkę. (Każdy dodatkowy bit wymaga 4 próbek ze względu na Nyquist.)
Prostym sposobem na to jest dodanie szumu do napięcia odniesienia. Używam tego do zwiększenia 12-bitowego ADC w dsPIC33F do 16-bitów w celu uzyskania wyższej rozdzielczości. Wcześniej ustawiłem asynchroniczny zegar na wysokiej częstotliwości i używam DMA do kolejkowania sekwencji numerów PRNG w przechwytywaniu wyjściowym, co daje względnie czyste źródło hałasu. Szum wyjściowy obniża napięcie odniesienia o około 0,1% (dzielnik 1k-1 Meg.) Hałas jest dwukierunkowy, tonie i odbiera. Używam DMA dsPIC33F do kolejkowania próbek, więc można to zrobić przy niewielkiej interwencji procesora. Oczywiście maksymalna częstotliwość próbkowania spada do około 1/32 normalnej częstotliwości, ale to nie jest problem dla mojej aplikacji.
Ponieważ hałas nie zawsze jest równomiernie rozłożony, będę kalibrował wejścia na każdym wysyłanym urządzeniu, chociaż różnica prawdopodobnie wyniesie tylko 1 lub 2 LSB.
źródło
Za pomocą wzmacniacza sumującego można zsumować dwa wyjścia DAC. Możesz użyć R1 = 100k, R2 = R3 = 100 Ohm. W ten sposób wyjście będzie Vout = - (V1 + V2 / 1000). Będziesz potrzebował podwójnego zasilania, a jeśli chcesz, aby nie był odwrócony, musisz umieścić kolejny wzmacniacz odwracający ze wzmocnieniem = 1. Załóżmy, że masz 12-bitowy przetwornik cyfrowo-analogowy z 2 wyjściami i napięciem odniesienia 4.096 V. Następnie (jeśli masz drugi wzmacniacz odwracający) jeden przyrost z DAC 1 zwiększy moc wyjściową o 1uV, a jeden przyrost z DAC 2 zwiększy moc wyjściową o 1mV. To w sumie nie 24 bity. Ma około 22 bitów. Teoretycznie możesz wybrać R1, aby był 4096 razy większy niż R2 i R3 i uzyskać 24 bity, ale nie uzyskasz lepszych wyników. Będziesz miał wiele problemów z hałasem w zakresie mikrowoltów, nawet jeśli wybierzesz dobry opamp o niskim poziomie hałasu.Aktualizacja Myślałem, że to pytanie o DAC, ponieważ szukałem DAC-ów. Oto jak stosujesz podobną zasadę w przypadku ADC. Zamiast sumowania należy odjąć wynik ADC1, a następnie pomnożyć przez 1000 przed pomiarem za pomocą ADC2.
Korekta - ADC3 powinien być na VGnd (Vref / 2), a nie Vref, aby pasował do formuły wynikowej
Zamiast AZ431 możesz użyć dowolnego innego napięcia odniesienia 2,5 V lub innego regulowanego źródła odniesienia z odpowiednimi pasywnymi wartościami, aby uzyskać dokładnie 4,096 V. Im mniejszy jest dryft temperatury, tym lepsze wyniki. Ponadto musi to być niski poziom hałasu. Zauważ, że prawdopodobnie nie jest wystarczająco dokładny. Miło będzie umieścić 500-omowy wieloobrotowy trimpot między R7 i R8 z wycieraczką na wejściu odniesienia i dostosować go dla Vref = 4,096 V. Potrzebny będzie również trimpot (2) między R1 i R2 z wycieraczką na dodatnie wejście U1. Ulepsz dla 2.048V na VGnd. U1 to po prostu każdy opamp o niskim poziomie hałasu. (BTW AZ431 jest okropny do tej pracy. Ułożyłem to, ponieważ miałem symbol).
Bardzo ważne jest, aby U2, U3 i U4 były wzmacniaczami choppera o zerowym przesunięciu. U2 jest ważniejszy, ponieważ mnoży się przez 100. co 1 mikrowolt dochodzi do 100 mikrowoltów. Jeśli użyjesz OP07 i wyzerujesz go poprawnie, a temperatura zmieni się o 10 stopni, otrzymasz przesunięcie 13 uV, co przekłada się na 1,3 mV na wyjściu U4. To 13 mV na wyjściu ADC, co czyni ADC2 prawie bezużytecznym.
Również U3 musi być w stanie osiągnąć 6,048 V - to VGnd (2,048 V) + 2 x Vinmax (2 x 2 V = 4 V). To cały pomysł posiadania zasilacza Vcc = + 12V. Vcc może być tak niskie, jak 6,5 V, gdy używany jest MAX44252. Ponieważ MAX44252 jest opamp na szynie, ujemne zasilanie można pominąć, a Vss opampa można podłączyć do ziemi. Odnosi się to do każdego opampa, którego moc wyjściowa może wynosić nawet 48 mV.
MAX44252 ma napięcie przesunięcia 2-4uV (typowe) i odchylenie temperatury od 1 do 5 nV. Na digikey kosztuje 2,64 USD w ilości 1 i jest to quadopamp, więc tylko jeden układ wykona zadanie.
Jak to działa? Załóżmy na przykład 10-bitowy przetwornik cyfrowo-analogowy. Rozdzielczość wynosi 4,096 / 1024 = 4 mV. Sygnał wejściowy musi być względny do VGnd, czyli połowy Vref. ADC1 mierzy napięcie wejściowe jak zwykle. Następnie wyprowadza wartość przez DAC1. Różnica między Vin i DAC1 polega na błędzie, który należy wzmocnić, zmierzyć i dodać do wyniku ADC1. U2 zwiększa różnicę Vin - DAC1 w stosunku do DAC1 ze wzmocnieniem 100. U4 zwiększa tę różnicę o 10, a także odejmuje DAC1 w stosunku do VGnd. To sprawia, że ADC2 = (Vin - DAC1) * 1000 w stosunku do VGnd. Innymi słowy, jeśli masz 1,234567 V na Vin, w stosunku do VGnd. ADC1 zmierzy wartość 821ponieważ rozdzielczość wynosi 4 mV i (2,048 + 1,234567) / 0,004 = 820,64175. Tak więc wartość DAC zostanie ustawiona na 309, czyli 309 * 0,004 V = 1,236 V. Teraz ADC2 otrzyma 1,234567-1,236 = -0,001433 * 1000 = -1,433 V w stosunku do VGnd (idealnie). To 2.048-1.433 = wspólny tryb 0.615 V. 0,615 V / 0,004 = 153,75. Więc wartość ADC2 = 154. Łatwiej jest obliczyć wartość w mikrowoltach, aby uniknąć używania pływaka. aby przekonwertować ADC2 w mV, należy pomnożyć tę wartość przez 4: VADC1 = 821 * 4 = 3284 mV. Aby przekonwertować na UV, musimy pomnożyć przez 1000. Lub to wartość ADC1 pomnożona przez 4000. 821 * 4000 = 3284000. Zatem napięcie ADC1 w odniesieniu do VGnd wynosi 3284000-2048000 = 1236000uV. ADC2 jest już pomnożony przez 1000, więc musimy pomnożyć tylko przez 4: VADC2 = 154 * 4 = 616. Aby uzyskać napięcie względem VGnd, musimy odjąć VGnd: 616-2048 = -1432uV. Bierzemy tutaj VGnd = 2048uV, ponieważ mamy wzmocnienie x1000, a teraz dodajemy VADC1 i VADC2: 1236000 + (-1432) = 1234568uV lub 1,234568V
Oczywiście to tylko sny, ponieważ gdy masz do czynienia z mikrowoltami, pojawią się różnego rodzaju okropne problemy - szum opampa, szum rezystorów, przesunięcie napięcia, dryft temperatury, błąd wzmocnienia ... Ale jeśli używasz przyzwoitych części, co najmniej 1% rezystorów i programowo zerujesz przesunięcie i korygujesz wzmocnienie, możesz uzyskać całkiem dobry wynik. Oczywiście nie można oczekiwać stabilnego wprowadzania ostatniej cyfry. może możesz ograniczyć rozdzielczość do 10uV (podziel wynik przez 10). Również pomnożenie przez 4 można wykonać, sumując 4 kolejne wyniki, aby uzyskać jakieś uśrednienie.
Pamiętaj, że nic z tego nie jest testowane. Symulowałem tylko stopień wzmacniacza, nie biorąc pod uwagę szumu i przesunięcia opampa. Jeśli ktoś zdecyduje się go zbudować, napisz wyniki w komentarzach.
źródło
edycja: zobacz komentarze dotyczące poprawek do mojej matematyki.
źródło