Elektronika i elektrotechnika

ADC – jak działa przetwornik analogowo-cyfrowy i gdzie się go stosuje

Spis treści
ADC – jak działa przetwornik analogowo-cyfrowy i gdzie się go stosuje

Przetwornik analogowo-cyfrowy (ADC) zamienia ciągły sygnał analogowy, najczęściej napięcie, na wartość cyfrową możliwą do przetworzenia przez mikroprocesor lub mikrokontroler. Dzięki niemu urządzenia elektroniczne mogą mierzyć temperaturę, dźwięk, ciśnienie, natężenie światła i wiele innych wielkości fizycznych.

Przetworniki ADC są powszechnie stosowane w mikrokontrolerach, systemach pomiarowych, urządzeniach audio, automatyce oraz rozwiązaniach IoT.

Czym jest ADC i do czego służy?

ADC jest układem elektronicznym, który przekształca wartość analogową na odpowiadającą jej liczbę binarną. Na wejście przetwornika podaje się napięcie z określonego zakresu, a na wyjściu otrzymuje kod cyfrowy reprezentujący zmierzoną amplitudę sygnału.

ADC jest potrzebny z kilku powodów:

  • pomiar wielkości fizycznych – temperatura, ciśnienie, natężenie światła lub przyspieszenie mogą zostać zamienione na napięcie i zmierzone przez ADC;
  • współpraca z układami cyfrowymi – procesory i mikrokontrolery wykonują operacje na liczbach, dlatego wymagają cyfrowej reprezentacji sygnału;
  • dalsze wykorzystanie danych – wyniki pomiarów można przetwarzać za pomocą algorytmów, archiwizować, przesyłać, kompresować i wykorzystywać w systemach sterowania.

W nowoczesnych mikrokontrolerach, takich jak AVR i STM32, przetwornik ADC jest zazwyczaj wbudowany. Służy do pomiaru napięcia na wybranych pinach, a wynik udostępnia w postaci liczby, na przykład od 0 do 1023 w przypadku przetwornika 10-bitowego.

Sygnał analogowy a cyfrowy

Różnicę między sygnałem analogowym i cyfrowym przedstawia poniższe porównanie:

Rodzaj sygnału Charakterystyka Przykład
analogowy zmienia się w sposób ciągły i może przyjmować dowolną wartość z określonego zakresu napięcie od 0 do 5 V
cyfrowy przyjmuje skończoną liczbę poziomów reprezentowanych przez liczby wartości od 0 do 1023 dla ADC 10-bitowego

ADC zastępuje ciągłe wartości sygnału określoną liczbą poziomów wynikającą z rozdzielczości przetwornika. Proces ten nazywa się kwantyzacją.

Etapy działania ADC

Przetwarzanie analogowo-cyfrowe obejmuje trzy podstawowe etapy:

  1. próbkowanie – przetwornik mierzy chwilową wartość napięcia wejściowego w określonych odstępach czasu;
  2. kwantyzacja – zmierzona wartość zostaje przypisana do jednego z dostępnych poziomów wynikających z rozdzielczości ADC;
  3. kodowanie – wybrany poziom jest zamieniany na ciąg cyfr binarnych, który można zapisać w rejestrze lub pamięci.

Wynikiem każdej konwersji jest liczba binarna stanowiąca cyfrową reprezentację napięcia analogowego w chwili wykonania pomiaru.

Rozdzielczość ADC i napięcie odniesienia

Rozdzielczość

Rozdzielczość ADC określa liczbę bitów wyniku, a tym samym liczbę poziomów, na które dzielony jest zakres napięcia wejściowego.

Najczęściej spotykane rozdzielczości to:

  • ADC 8-bitowy – wynik od 0 do 255, czyli 256 poziomów;
  • ADC 10-bitowy – wynik od 0 do 1023, czyli 1024 poziomy;
  • ADC 12-bitowy – wynik od 0 do 4095, czyli 4096 poziomów.

Im większa rozdzielczość, tym mniejszy krok napięcia przypada na jeden poziom przetwornika. Pozwala to wykrywać mniejsze zmiany sygnału, jednak sama liczba bitów nie gwarantuje wysokiej dokładności pomiaru.

Napięcie odniesienia Vref

Wynik konwersji zależy od stosunku napięcia wejściowego do napięcia odniesienia Vref. Im napięcie wejściowe jest bliższe Vref, tym większą wartość cyfrową zwraca ADC.

Wartość najmniej znaczącego bitu można obliczyć ze wzoru:

LSB = Vref / 2^N

W tym wzorze N oznacza rozdzielczość przetwornika wyrażoną w bitach. Dla ADC 10-bitowego i napięcia odniesienia 5 V obliczenie wygląda następująco:

LSB = 5 V / 1024 ≈ 4,88 mV

Zmiana napięcia wejściowego o około 4,88 mV odpowiada w tym przypadku zmianie wyniku o jeden poziom.

W mikrokontrolerach źródłem napięcia odniesienia może być:

  • napięcie zasilania – na przykład 5 V lub 3,3 V;
  • zewnętrzne napięcie odniesienia – doprowadzone do osobnego pinu Vref;
  • wewnętrzne źródło napięcia – stabilizowane napięcie generowane wewnątrz mikrokontrolera.

Jak ADC działa wewnątrz?

Typowy przetwornik ADC może składać się z następujących bloków:

  • układu próbkująco-pamiętającego – pobiera i chwilowo przechowuje wartość napięcia;
  • przetwornika cyfrowo-analogowego DAC – generuje napięcia odpowiadające próbnym kodom cyfrowym;
  • komparatora – porównuje napięcie próbki z napięciem wygenerowanym przez DAC;
  • logiki sterującej i rejestrów – kontrolują konwersję oraz przechowują jej wynik.

Układ próbkująco-pamiętający

Podczas pomiaru sygnał analogowy musi zostać na chwilę „zamrożony”, aby ADC analizował stałą wartość. Odpowiada za to układ próbkująco-pamiętający.

Do wejścia ADC jest chwilowo dołączany niewielki kondensator, na przykład o pojemności około 14 pF. Kondensator ładuje się do poziomu napięcia wejściowego, a następnie zostaje odłączony na czas konwersji. Przetwornik mierzy wtedy zgromadzone na nim napięcie.

Komparator i DAC w przetworniku SAR

W przetworniku z sukcesywną aproksymacją (SAR) wynik jest wyznaczany za pomocą wbudowanego DAC, komparatora i logiki sterującej:

  • generowanie wartości próbnej – DAC wytwarza napięcie odpowiadające testowanemu kodowi binarnemu;
  • porównanie napięć – komparator zestawia napięcie z DAC z napięciem zapisanym przez układ próbkująco-pamiętający;
  • ustalanie kolejnych bitów – logika ustawia każdy bit na 0 lub 1, aż powstanie końcowa reprezentacja binarna.

W zależności od konstrukcji układu proces ten trwa zwykle od kilku do kilkunastu cykli zegara.

Rejestr wyniku

Wynik konwersji jest zapisywany w rejestrach, na przykład ADCH i ADCL w mikrokontrolerach AVR. Dane mogą być wyrównane do lewej lub prawej strony, co ułatwia ich odczyt i dalsze przetwarzanie w programie.

Typy przetworników ADC

Poszczególne architektury ADC różnią się szybkością, rozdzielczością, dokładnością, poborem energii i zastosowaniem. Najważniejsze różnice przedstawia tabela:

Typ ADC Najważniejsze cechy Typowa rozdzielczość Zastosowanie
SAR dobry kompromis między szybkością, dokładnością i poborem energii 10–16 bitów mikrokontrolery, automatyka, uniwersalne systemy pomiarowe
flash bardzo wysoka szybkość, duża liczba komparatorów i wysoki pobór mocy 6–8 bitów systemy wideo, układy radiowe, oscyloskopy
sigma-delta wysoka rozdzielczość i dokładność kosztem mniejszej szybkości 18–24 bity aparatura pomiarowa, precyzyjne czujniki, urządzenia audio
potokowy konwersja podzielona na kilka szybkich etapów zależna od konstrukcji szybkie systemy akwizycji danych
całkujący dobra odporność na zakłócenia i pomiar realizowany przez całkowanie sygnału zależna od konstrukcji multimetry i precyzyjna aparatura pomiarowa

Przetwornik SAR

ADC z sukcesywną aproksymacją jest jedną z najczęściej stosowanych architektur w mikrokontrolerach AVR i STM32. Kolejno sprawdza bity wyniku, porównując napięcie wygenerowane przez DAC z napięciem próbki. Zapewnia korzystny kompromis między szybkością, dokładnością i poborem energii.

Przetwornik flash

Przetwornik równoległy, nazywany również przetwornikiem flash, wykorzystuje drabinkę rezystorową oraz wiele komparatorów pracujących jednocześnie. Zapewnia bardzo dużą częstotliwość próbkowania, ale wymaga większej powierzchni układu i pobiera więcej energii.

Przetwornik sigma-delta

Przetwornik sigma-delta wykorzystuje nadpróbkowanie, modulację i filtrację cyfrową, aby uzyskać bardzo wysoką rozdzielczość. Jest stosowany przede wszystkim w precyzyjnej aparaturze pomiarowej, czujnikach i urządzeniach audio.

Kluczowe parametry ADC

Rozdzielczość

Rozdzielczość określa liczbę dostępnych poziomów wyniku oraz najmniejszy teoretyczny krok napięcia, który może zostać odwzorowany w kodzie wyjściowym. Wpływa na zdolność układu do rozróżniania niewielkich zmian sygnału.

Zakres napięcia wejściowego

ADC pracuje w określonym zakresie napięcia względem masy. Najczęściej jest to przedział od 0 V do Vref. Wejścia różnicowe mogą dodatkowo mierzyć różnicę napięć między dwoma punktami.

Przekroczenie dopuszczalnego zakresu może zafałszować wynik, a w skrajnym przypadku uszkodzić mikrokontroler lub przetwornik. Jeśli sygnał ma wyższe napięcie niż wejście ADC, należy zastosować odpowiedni dzielnik napięcia lub układ kondycjonowania sygnału.

Czas konwersji i częstotliwość próbkowania

Czas potrzebny do wykonania pojedynczej konwersji ogranicza maksymalną częstotliwość próbkowania. Szybszy ADC może mierzyć sygnały o wyższych częstotliwościach, ale często wymaga większej mocy lub oferuje mniejszą rozdzielczość.

Najczęściej dostępne tryby pracy obejmują:

  • pojedynczą konwersję – ADC wykonuje jeden pomiar, a kolejny musi zostać ponownie uruchomiony;
  • tryb ciągły – przetwornik automatycznie rozpoczyna następną konwersję po zakończeniu poprzedniej;
  • tryb wyzwalany – pomiar rozpoczyna zdarzenie sprzętowe, na przykład sygnał z timera.

Dokładność, nieliniowość i szum

Rozdzielczość nie jest równoznaczna z dokładnością. Na rzeczywistą jakość pomiaru wpływają między innymi:

  • błąd przesunięcia i błąd wzmocnienia – powodują systematyczne odchylenie wyniku;
  • nieliniowość INL i DNL – określa odchylenia charakterystyki ADC od idealnego przebiegu;
  • szum układu i zasilania – może powodować wahania kolejnych wyników;
  • stabilność napięcia odniesienia – bezpośrednio wpływa na skalę i powtarzalność pomiaru.

Szczegółowe wartości tych parametrów znajdują się w nocie katalogowej danego przetwornika lub mikrokontrolera.

ADC w mikrokontrolerach

Ogólna zasada działania

W mikrokontrolerach, takich jak AVR i STM32, praca z ADC obejmuje kilka podstawowych operacji:

  • wybór wejścia – multiplekser łączy przetwornik z odpowiednim pinem lub kanałem;
  • wykonanie pomiaru – ADC przekształca napięcie na odpowiadający mu kod binarny;
  • zapis wyniku – wartość jest umieszczana w rejestrze dostępnym dla programu;
  • obsługa danych – program odczytuje wynik i wykorzystuje go do obliczeń, sterowania lub rejestracji.

Konfiguracja przetwornika zazwyczaj wymaga:

  • wybrania napięcia odniesienia – zasilania, źródła wewnętrznego albo zewnętrznego Vref;
  • wskazania kanału wejściowego – za pomocą multipleksera ADC;
  • ustawienia szybkości pracy – między innymi preskalera i czasu próbkowania;
  • wyboru trybu konwersji – pojedynczego, ciągłego, sekwencyjnego lub wyzwalanego.

Przykładowy zakres wyniku

W mikrokontrolerze z 10-bitowym ADC napięcie wejściowe jest zamieniane na jedną z 1024 wartości. Dla typowego wejścia jednobiegunowego zależność wygląda następująco:

  • wynik 0 – odpowiada napięciu bliskiemu 0 V;
  • wynik 1023 – odpowiada napięciu zbliżonemu do Vref;
  • wyniki pośrednie – reprezentują kolejne poziomy między 0 V a Vref.

Przybliżone napięcie wejściowe można obliczyć na podstawie odczytanego wyniku:

Vin = wynik ADC × Vref / (2^N − 1)

Dla wyniku 512, rozdzielczości 10 bitów i Vref równego 5 V napięcie wejściowe wynosi w przybliżeniu:

Vin = 512 × 5 V / 1023 ≈ 2,50 V

Typowe zastosowania przetworników ADC

Przetworniki analogowo-cyfrowe są wykorzystywane wszędzie tam, gdzie sygnał analogowy musi zostać zmierzony i przetworzony cyfrowo:

  • mikrokontrolery i systemy wbudowane – pomiar temperatury, ciśnienia, światła, przyspieszenia, położenia, napięcia baterii i natężenia prądu;
  • systemy audio – przekształcanie sygnału z mikrofonów i wejść liniowych na strumień cyfrowy;
  • aparatura pomiarowa – oscyloskopy cyfrowe, multimetry, analizatory i rejestratory danych;
  • automatyka i sterowanie – kontrola temperatury procesów, ciśnienia, poziomu cieczy oraz sygnałów z czujników;
  • elektronika użytkowa i IoT – smartfony, urządzenia ubieralne, stacje pogodowe i czujniki środowiskowe.

Bez przetworników ADC nowoczesne układy cyfrowe nie mogłyby mierzyć ani interpretować sygnałów pochodzących ze świata analogowego.

Jak korzystać z ADC w praktycznych projektach?

Dobór napięcia odniesienia

Napięcie odniesienia powinno być dopasowane do mierzonego zakresu:

  • szeroki zakres pomiarowy – Vref powinno obejmować maksymalne spodziewane napięcie wejściowe;
  • wąski zakres pomiarowy – niższe Vref pozwala lepiej wykorzystać dostępną rozdzielczość;
  • precyzyjny pomiar – stabilne i odpowiednio filtrowane Vref ogranicza błędy oraz wahania wyników.

Napięcie wejściowe nie może przekraczać dopuszczalnego zakresu ADC, nawet jeśli program nie wykorzystuje całej skali pomiarowej.

Filtrowanie i prowadzenie ścieżek

Sygnały analogowe są wrażliwe na szum i zakłócenia. Aby poprawić jakość pomiaru, warto:

  • stosować kondensatory filtrujące – szczególnie przy Vref i zasilaniu części analogowej;
  • oddzielać ścieżki analogowe od cyfrowych – zwłaszcza od linii zegarowych i szybkich magistral;
  • stosować filtr RC – gdy sygnał wejściowy zawiera zakłócenia o wysokiej częstotliwości;
  • zapewnić odpowiednią impedancję źródła – zbyt duża może utrudnić naładowanie kondensatora układu próbkującego.

Częstotliwość próbkowania i aliasing

Zgodnie z kryterium Nyquista częstotliwość próbkowania musi być co najmniej dwukrotnie większa od najwyższej częstotliwości obecnej w mierzonym sygnale. W praktyce warto zastosować większy zapas oraz filtr antyaliasingowy przed wejściem ADC.

Zbyt niska częstotliwość próbkowania powoduje aliasing, czyli pojawienie się w danych cyfrowych fałszywych składowych częstotliwości.

Wybór trybu pracy

Tryb działania ADC należy dostosować do charakteru projektu:

  • pojedyncza konwersja – sprawdza się przy sporadycznych pomiarach i pozwala ograniczyć zużycie energii;
  • tryb ciągły – umożliwia regularne monitorowanie jednego sygnału;
  • sekwencyjne skanowanie kanałów – pozwala automatycznie zbierać dane z wielu wejść;
  • wyzwalanie sprzętowe – zapewnia precyzyjne rozpoczęcie pomiaru, na przykład zgodnie z sygnałem timera.