Rozmiar kroku LSB i parametry szumowe przetwornika ADC
Przetwornik analogowo-cyfrowy (ADC) przekształca ciągły sygnał napięciowy na dyskretne wartości liczbowe. Kluczowym parametrem określającym zdolność przetwornika do odwzorowania drobnych zmian sygnału jest jego rozdzielczość bitowa oraz napięcie odniesienia. Narzędzie Kalkulator rozdzielczości ADC pozwala na precyzyjne wyznaczenie parametrów takich jak krok LSB, maksymalny błąd kwantyzacji, szum kwantyzacji oraz teoretyczny stosunek sygnału do szumu (SNR).
Wszystkie obliczenia wykonywane są bezpośrednio na urządzeniu użytkownika. Dane wprowadzane do pól kalkulatora nie są przesyłane na serwer, a przetwarzanie odbywa się lokalnie w przeglądarce internetowej.
Matematyczne podstawy kwantyzacji sygnału
Kalkulator opiera się na modelu idealnego kwantyzatora, w którym pierwsze przejście kodu następuje przy wartości równej połowie kroku LSB (±½ LSB). Podstawowym parametrem wyjściowym jest pełny zakres napięć (FSR), którego definicja zależy od wybranego zakresu wejściowego:
- Zakres unipolarny (Unipolarny · 0 do Vref): Pełny zakres napięć jest równy napięciu odniesienia: FSR = Vref
- Zakres bipolarny (Bipolarny · −Vref do +Vref): Pełny zakres napięć ulega podwojeniu: FSR = 2 × Vref
Mając dany pełny zakres napięć oraz rozdzielczość N (bity), kalkulator wyznacza liczbę poziomów kwantyzacji oraz krok LSB według następujących zależności:
- Poziomy kwantyzacji: 2^N
- Najwyższy kod: 2^N − 1
- Rozmiar kroku LSB: LSB = FSR ÷ 2^N
W idealnym przetworniku maksymalny błąd kwantyzacji (±½ LSB) wynosi: Maksymalny błąd kwantyzacji = ±LSB ÷ 2
Teoretyczny szum kwantyzacji (rms) wynikający z równomiernego rozkładu błędu w przedziale ±½ LSB obliczany jest jako: Szum kwantyzacji (rms) = LSB ÷ √12
Na podstawie rozdzielczości bitowej wyznaczane są również teoretyczne granice dynamiki i szumu dla pełnozakresowego sygnału sinusoidalnego w paśmie Nyquista:
- Idealny SNR (pełnozakresowy sinus): SNR = 6.02 × N + 1.76 dB
- Zakres dynamiczny: 6.02 × N dB
Konwersja napięcia na kod i kodu na napięcie
Kalkulator umożliwia dwukierunkową konwersję w punkcie pomiarowym. W zależności od wybranego trybu, obliczenia przebiegają według poniższych reguł:
Tryb: Napięcie → kod
Dla wprowadzonego napięcia wejściowego (Vin) wyznaczany jest najbliższy kod cyfrowy z uwzględnieniem zaokrąglenia do najbliższej liczby całkowitej:
- Zakres unipolarny: kod = round(Vin ÷ LSB)
- Zakres bipolarny: kod = round((Vin + Vref) ÷ LSB)
Po wyznaczeniu kodu, kalkulator oblicza odpowiadające mu dokładne napięcie kodu:
- Zakres unipolarny: V = kod × LSB
- Zakres bipolarny: V = kod × LSB − Vref
Różnica między rzeczywistym napięciem wejściowym a napięciem przypisanym do kodu określa błąd kwantyzacji: Błąd kwantyzacji = napięcie kodu − napięcie wejściowe
Tryb: Kod → napięcie
Dla wprowadzonej wartości całkowitej z zakresu od 0 do najwyższego kodu, kalkulator wyznacza dokładne napięcie kodu oraz przedział wejściowy dla tego kodu (czyli zakres napięć analogowych, które zostaną przypisane do tej samej wartości cyfrowej).
Obsługa sytuacji granicznych i nasycenia
Podczas konwersji napięcia na kod rzeczywiste sygnały mogą przekroczyć zakres napięć referencyjnych przetwornika. Kalkulator obsługuje te przypadki zgodnie z fizycznym zachowaniem układów ADC:
- Przekroczenie górnego zakresu: Jeśli napięcie wejściowe leży powyżej górnej szyny, następuje nasycenie wyjścia na najwyższym kodzie. Wyświetlane jest ostrzeżenie: "Napięcie wejściowe leży powyżej górnej szyny: następuje nasycenie wyjścia na najwyższym kodzie, a wyświetlany błąd jest rzeczywistą wartością szczątkową — granica ±½ LSB już nie obowiązuje."
- Przekroczenie dolnego zakresu: Jeśli napięcie wejściowe leży poniżej dolnej szyny, następuje nasycenie wyjścia na kodzie 0. Wyświetlane jest ostrzeżenie: "Napięcie wejściowe leży poniżej dolnej szyny: następuje nasycenie wyjścia na kodzie 0, a wyświetlany błąd jest rzeczywistą wartością szczątkową — granica ±½ LSB już nie obowiązuje."
- Punkt środkowy: Gdy napięcie wejściowe odpowiada dokładnie środkowi skali, kalkulator wskazuje, że połowa zakresu odpowiada kodowi środkowemu z zerowym błędem kwantyzacji.
Dobór rozdzielczości do wymaganej dokładności
Sekcja projektowa pozwala określić minimalną liczbę bitów wymaganą do zarejestrowania określonej zmiany napięcia. Po wprowadzeniu wartości w polu "Najmniejsza zmiana do rozróżnienia", kalkulator wykonuje obliczenie: N ≥ log₂(FSR ÷ step)
Wynik jest zaokrąglany w górę do najbliższej liczby całkowitej. Narzędzie porównuje ten wynik z aktualnie ustawioną rozdzielczością przetwornika i wyświetla odpowiedni komunikat statusu (np. informujący, czy obecny przetwornik spełnia wymagania, czy też rozróżnia jedynie większe kroki).
Przykład obliczeniowy (12-bitowy przetwornik ADC)
Wczytanie przykładowych danych dla przetwornika 12-bitowego o napięciu odniesienia 3.3 V w zakresie unipolarnym pozwala prześledzić pełną ścieżkę obliczeniową:
- Liczba poziomów: 2¹² = 4096
- Najwyższy kod: 4095
- Rozmiar kroku LSB: 3.3 V ÷ 4096 ≈ 805.6641 µV (co stanowi około 0.0245% pełnego zakresu lub 244.14 ppm)
- Maksymalny błąd kwantyzacji: ±402.832 µV
- Szum kwantyzacji (rms): 805.6641 µV ÷ √12 ≈ 232.5752 µV rms
- Idealny SNR: 6.02 × 12 + 1.76 = 74.01 dB
- Zakres dynamiczny: 6.02 × 12 = 72.25 dB
Dla napięcia wejściowego równego dokładnie 1.65 V (środek skali), przetwornik zwraca kod wyjściowy 2048. Reprezentacja dwójkowa tego kodu to 1000 0000 0000, a szesnastkowa to 0x800. Błąd kwantyzacji w tym punkcie wynosi dokładnie 0 V.
Rozdzielczość a rzeczywista dokładność układu
Należy pamiętać, że rozdzielczość nominalna (wyrażona w bitach) nie jest tożsama z dokładnością pomiarową całego toru sygnałowego. Rzeczywiste przetworniki ADC wprowadzają szereg nieidealności, takich jak:
- Błędy statyczne: Całkowa nieliniowość (INL), różnicowa nieliniowość (DNL), błąd przesunięcia (offset) oraz błąd wzmocnienia (gain error).
- Szum i zniekształcenia: Szum termiczny układu wejściowego oraz zniekształcenia harmoniczne ograniczają efektywną liczbę bitów (ENOB). Rzeczywisty parametr SNR jest zawsze niższy od teoretycznego sufitu wyznaczonego wzorem 6.02N + 1.76 dB.
- Napięcie odniesienia: Dryft temperaturowy, szum własny oraz początkowa tolerancja źródła napięcia odniesienia bezpośrednio wpływają na stabilność i dokładność szerokości kroku LSB.
Często zadawane pytania (FAQ)
Czy rozdzielczość 12-bitowa oznacza dokładność 12-bitową?
Nie. Rozdzielczość określa jedynie szerokość kodu — jak drobno podzielony jest zakres. Dokładność jest ograniczona przez błędy INL, przesunięcia (offset) i wzmocnienia przetwornika, tolerancję i szum napięcia odniesienia oraz otaczający go układ. Dlatego karty katalogowe podają ENOB: 12-bitowy przetwornik SAR zazwyczaj zapewnia 10–11 bitów efektywnych. Pokazany tutaj idealny SNR na poziomie 74 dB to teoretyczny sufit, którego nie osiąga żaden rzeczywisty przetwornik 12-bitowy.
Jak wejście ±Vref zmienia obliczenia?
Zakres (span) podwaja się do 2 × Vref, więc ten sam przetwornik rozróżnia kroki o dwukrotnie większej szerokości: LSB = 2 × Vref ÷ 2^N. Kody biegną od ujemnej do dodatniej szyny zasilania — kod 0 to −Vref, kod środkowy 2^(N−1) to 0 V, a najwyższy kod znajduje się o jeden krok poniżej +Vref. Wybierz powyżej zakres bipolarny, a napięcie zero woltów trafi dokładnie na środkowy kod.
Dlaczego niektóre źródła dzielą przez 2^N, a inne przez 2^N − 1?
Są to dwa różne modele tego samego przetwornika. Karty katalogowe i klasyczna teoria kwantyzacji definiują LSB = FSR ÷ 2^N, z pierwszym przejściem kodu przy połowie kroku — i ten model jest używany na tej stronie. Zapis Vref ÷ (2^N − 1) wynika z przypisania najwyższego kodu dokładnie do Vref, co jest powszechne w poradnikach dotyczących mikrokontrolerów. Przy 12 bitach obie wersje różnią się o około 0.02%, czyli znacznie poniżej tolerancji jakiegokolwiek rzeczywistego napięcia odniesienia; po prostu nie należy ich mieszać podczas porównywania wartości z różnych źródeł.
Co mogę zrobić, gdy krok kwantyzacji jest zbyt gruby?
Nadpróbkowanie i uśrednianie pozwala uzyskać wyższą rozdzielczość, gdy sygnał zawiera niewielki szum: uśrednienie 4× większej liczby próbek daje około jednego bitu efektywnego, a 16× daje dwa bity, pod warunkiem, że szum jest biały i nieskorelowany — idealnie czysty, niezmienny sygnał dawałby w kółko ten sam kod. Poza tym należy przejść na przetwornik o większej liczbie bitów lub dodać stopień ze wzmacniaczem o programowalnym wzmocnieniu, aby sygnał wypełniał większą część zakresu.