Przetwornik analogowo-cyfrowy


Tematy pokrewne   Podrozdziały
(w budowie)
  Pomiar sygnałów analogowych
Przetwornik A/C

 

 

Pomiar sygnałów analogowych

 
   
Sygnał analogowy to taki, który może przyjmować wartości pośrednie pomiędzy wartościami skrajnymi. Sygnały analogowe spotykamy przy aplikacjach, które sterują różnymi urządzeniami. W rozdziale o liczniku opisaliśmy sposób generowania napięć analogowych w trybie PWM (ang. Pulse Width Modulation). Dzięki temu trybowi mikrokontroler, który jest urządzeniem cyfrowym, może generować napięcia analogowe regulując szerokość impulsów. Taki sygnał może sterować intensywnością oświetlenia lub szybkością obrotową silnika elektrycznego.

W świecie rzeczywistym sygnały analogowe są powszechne. Np. czujnik temperatury daje na swoim wyjściu napięcie zależne od temperatury. Do przetwarzania sygnałów analogowych musimy posiadać możliwość ich odczytu w postaci cyfrowej. Do tego celu służy przetwornik analogowo-cyfrowy (ang. ADC – Analog to Digital Converter). Jest to urządzenie, na którego wejście podajemy napięcie w określonym zakresie, a na wyjściu otrzymujemy liczbę dwójkową, która odpowiada wartości tego napięcia:

obrazek

Im więcej bitów ma liczba wyjściowa, tym dokładniejszy jest dany przetwornik A/C.

Załóżmy, że mamy przetwornik, który na swoim wyjściu daje nam wynik 4-bitowy. Cztery bity mogą reprezentować w systemie dwójkowym liczby od 0 do 15:

Dwójkowo 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Dziesiętnie 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Załóżmy dodatkowo, że mierzony zakres napięć wynosi od 0V do 5V. Podzielmy ten zakres równomiernie na 16 wartości z zaokrągleniem do 1 miejsca po przecinku:

Dwójkowo 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Dziesiętnie 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0...5V: 0V 0,3V 0,7V 1,0V 1,3V 1,7V 2,0V 2,3V 2,7V 3,0V 3,3V 3,7V 4,0V 4,3V 4,7V 5,0V

Jeśli na wyjściu przetwornika otrzymamy liczbę 1011, to na jego wejściu jest około 3,7V. W taki sposób możemy odczytywać cyfrowo mierzone napięcie. Przy zakresie 0...5V i 4 bitach mamy rozdzielczość około 0,3125V. Jeśli jednak zastosujemy przetwornik 8-bitowy, to dokładność pomiaru znacznie wzrośnie, a rozdzielczość wyniesie już 0,01953125V. Widzisz zatem, że dokładność pomiaru zależy od liczby bitów, które daje na wyjściu przetwornik. W mikrokontrolerach AVR spotkasz przetworniki 10-bitowe.

Pomiar napięcia wejściowego przez przetwornik analogowo-cyfrowy nazywamy próbkowaniem (ang. sampling).

Kolejną cechą przetworników jest ich szybkość próbkowania (ang. sampling rate). Jest to czas po jakim przetwornik podaje na wyjściu wynik pomiaru napięcia wejściowego.

Szybkość próbkowania przetworników A/C zależy od ich wewnętrznej konstrukcji. Najszybsze są przetworniki bezpośrednie. Tutaj mierzone napięcie jest przekazywane równolegle na ciąg komparatorów, które jednocześnie porównują je z napięciami wzorcowymi. Wyjścia komparatorów są skierowane do dekodera, który tworzy liczbę wyjściową. Są to przetworniki A/C typu Flash. Poniżej jest przedstawiony przykładowy taki przetwornik:

obrazek

Tego typu przetworniki nie cechują się zbyt dużą liczbą bitów wyjściowych (zwykle 8-9), z uwagi na trudności konstrukcyjne i pojemności pasożytnicze, które zwiększają czas pomiaru (napięcie mierzone trafia na dużą liczbę wejść komparatorów). W mikrokontrolerach AVR nie stosuje się tego typu przetworników, jednakże można je spotkać w postaci osobnych układów scalonych, które mogą współpracować z mikrokontrolerami.

Drugi rodzaj przetworników działa na zasadzie pomiaru czasu. Wyposażone są one w generator napięcia piłokształtnego, komparator oraz licznik z rejestrem zatrzaskowym. Generator tworzy impulsy piłokształtne o wysokiej liniowości. W momencie rozpoczęcia narastania impulsu piłokształtnego zostaje wyzerowany i uruchomiony licznik dwójkowy, zliczający impulsy z dodatkowego generatora o tak dobranej częstotliwości, aby zakres licznika pokrył czas narastania przebiegu piłokształtnego. Następnie komparator porównuje napięcie z generatora piłokształtnego z napięciem mierzonym. W momencie ich zrównania się stan licznika jest przesyłany do rejestru zatrzaskowego i pojawia się na wyjściu jako wynik próbkowania.

obrazek

 

Dokładność przetwarzania zależy tutaj od liniowości generatora piłokształtnego. Natomiast nie ma problemu co do ilości bitów wyjściowych, jednakże ich liczba wpływa na czas przetwarzania. Na przykład, chcemy otrzymywać dane wyjściowe o długości 16 bitów. Załóżmy, że licznik może pracować z szybkością 100MHz. 16 bitów to 65536 poziomów, zatem częstotliwość wejściową musimy podzielić przez 65536. Otrzymujemy około 1525Hz. Z taką częstością (a nawet mniejszą z uwagi na to, że sygnał piłokształtny z generatora wymaga pewnego czasu, zanim przejdzie z wartości maksymalnej do minimalnej) może pracować ten przetwornik. Nie nadawałby się on do próbkowania sygnałów dźwiękowych, które wymagają częstotliwości próbkowania co najmniej 44kHz. Niemniej przy innych zastosowaniach może być zupełnie wystarczający.

Tego typu przetworniki również nie są stosowane w mikrokontrolerach AVR.

Trzeci rodzaj przetworników A/C (ten już jest stosowany w mikrokontrolerach AVR) to przetworniki kompensacyjne. Zasada ich działania polega na kolejnych porównaniach napięcia mierzonego z napięciami generowanymi przez przetwornik cyfrowo analogowy. Schemat takiego przetwornika pokazany jest poniżej:

obrazek

Przetwornik działa następująco. Po uruchomieniu sygnałem START układ sterujący zapisuje w najstarszym bicie rejestru przesuwającego 1 i zeruje rejestr n-bitowy. Następnie bit ten jest kopiowany do rejestru n-bitowego. Rejestr steruje przetwornikiem cyfrowo analogowym, który na wyjściu tworzy napięcie proporcjonalne do liczby dwójkowej podanej na jego wejściu z rejestru. Napięcie wyjściowe z przetwornika zostaje porównane przez komparator z napięciem mierzonym. Jeśli napięcie z przetwornika jest wyższe, to w rejestrze zostaje wyzerowany bit wpisany z rejestru przesuwającego. Jeśli nie, to bit pozostaje w stanie 1. Rejestr przesuwający przesuwa swój bit w prawo i cała operacja się powtarza. W efekcie w rejestrze n-bitowym są kolejno ustawiane bity od najstarszych do najmłodszych. Gdy wpisany na początku bit 1 wyjdzie w rejestrze przesuwającym poza najmłodszy bit przetwarzanie zostaje zakończone i można odczytać wynik na wyjściu rejestru n-bitowego.

Przetwornik kompensacyjny dokonuje pomiaru napięcia wejściowego w n cyklach, gdzie n to liczba bitów wyjściowych. Dokładność przetwarzania zależy od dokładności zastosowanego przetwornika C/A. Szybkość próbkowania zależy od częstotliwości generatora taktującego oraz od szybkości przetwornika C/A.

 

 

 

Przetwornik A/C

 
   
Większość mikrokontrolerów AVR wyposażona jest w układ przetwornika A/C, który pozwala na pomiar wielkości analogowych z różnych czujników (temperatury, ciśnienia, wagi, światła, itp.). Jest to przetwornik typu kompensacyjnego o dokładności 10 bitów. We wszystkich mikrokontrolerach AVR zbudowany jest on bardzo podobnie, zatem podane tutaj informacje będą również obowiązywały dla innych mikrokontrolerów firmy Atmel. Układ przetwornika A/C przedstawiono poniżej:

 

 

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2024 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe