przetwornik_adc atmega8.pdf

(209 KB) Pobierz
Microsoft Word - Przetwornik ADC dla ATmega8.doc
Obsþuga przetwornika ADC na mikrokontrolerze ATmega8 Î CEZARY KLIMASZ
OBSýUGA PRZETWORNIKA ADC
NA MIKROKONTROLERZE
ATMEGA8
sss
Cezary Klimasz
Krakw 2008
1
 
Obsþuga przetwornika ADC na mikrokontrolerze ATmega8 Î CEZARY KLIMASZ
Spis tre Ļ ci
1. Wprowadzenie .................................................................................... str. 3
2. Podstawowe wiadomo Ļ ci .................................................................. str. 3
3. Przykład obsługi przetwornika w j ħ zyku C .................................... str. 7
4. Podsumowanie ................................................................................... str. 9
5. Bibliografia ......................................................................................... str. 9
2
 
Obsþuga przetwornika ADC na mikrokontrolerze ATmega8 Î CEZARY KLIMASZ
1. Wprowadzenie
Co jest poĻrednikiem powiħdzy sygnaþem analogowym a sygnaþem cyfrowym ? OczywiĻcie
przetwornik. Dziħki zastosowaniu ADC (Analog-to-Digital Converter) lub DAC (Digital-to-
Analog Converter) moŇliwe jest wykorzystanie techniki analogowej oraz cyfrowej na raz.
Stwarza to olbrzymie moŇliwoĻci w wielu dyscyplinach elektroniki, dlatego istnieje wiele
rodzajw przetwornikw realizujĢcych przetwarzanie sygnaþw. Podstawowymi parametrami
takich przetwornikw jest rozdzielczoĻę czyli zdolnoĻę przetwornika do wiernego odtworzenia
sygnaþu oraz szybkoĻę jego dziaþania.
Celem niniejszego opracowania jest wykorzystanie bloku przetwornika AD wbudowanego w
mikrokontroler ATmega8. Uwaga zostanie zwrcona na opis katalogowy mikrokontrolera oraz
praktycznie wykorzystanie w systemie pomiarowym (pomiar natħŇenia pola magnetycznego
czujnikami Halla).
2. Podstawowe wiadomoĻci
MikrokontroleryATmega8 posiadajĢ w zaleŇnoĻci od obudowy:
8 kanaþowy przetwornik ADC dla ukþadw w obudowach SMD
6 kanaþowy przetwornik ADC dla ukþadw produkowanychw obudowach DIP.
Wsplne cechy przetwornikw w ATmega8 to:
rozdzielczoĻę 10 bitw (1024 prbek),
0.5 LSB nieliniowoĻci charakterystyki przetwarzania,
°2 LSB caþkowitej dokþadnoĻci,
od 13-260Ǩs czasu konwersji,
6 multipleksowanych pojedyıczych wejĻę,
2 wsplnie multipleksowane wejĻcia (obudowy SMD),
zakres pomiaru ADC od 0 do V cc
przerwanie od zakoıczenia konwersji na postaę cyfrowĢ.
10-bitowy przetwornik ADC podþĢczony jest do 8-kanaþowego analogowego multipleksera.
WejĻcia tego multipleksera podþĢczone sĢ do Portu C mikrokontrolera. Przetwornik
teoretycznie posiada odseparowany obwd zasilania. Niestety w mikrokontrolerze ATmega8
dokumentacja wprowadza w bþĢd czytelnika, gdyŇ de facto zasilanie mikrokontrolera oraz
zasilanie przetwornika nie sĢ odseparowane (bþĢd podczas produkcji Î inne mikrokontrolery
AVR majĢ odseparowane zasilania).
Wewnħtrzne napiħcie odniesienia dla przetwornika wynosi 2.56V lub AV cc podane do
mikrokontrolera. Napiħcie odniesienia moŇe byę zewnħtrznie odsprzħŇony poprzez podpiħcie
kondensatora do pinu AREF. PoniŇej widoczny jest mikrokontroler ATmega8 w obudowie DIP
z opisanymi pinami znaczĢcymi dla ADC.
3
103538841.004.png 103538841.005.png
Obsþuga przetwornika ADC na mikrokontrolerze ATmega8 Î CEZARY KLIMASZ
PoniŇej widoczny schemat blokowy przetwornika ADC.
Przetwornik konwertuje wejĻciowe napiħcie analogowe na 10-bitowĢ cyfrowĢ wartoĻę.
MinimalnĢ wartoĻę reprezentuje poziom masy zaĻ maksymalnĢ napiħcie AREF minus 1
najmniej znaczĢcy bit. Opcjonalnie, AV cc oraz wewnħtrzne Ņrdþo odniesienia 2.56V mogĢ byę
podþĢczone do pinu AREF poprzez zapis w rejestrze ADMUX bitu REFSn.
Analogowe wejĻcie wybierane jest poprzez zapis bitw MUX w rejestrze ADMUX.
Przetwornik aktywowany jest poprzez ustawienie bitu ADEN w rejestrze ADCSRA. Ustawienie
napiħcia odniesienia czy kanaþu wejĻciowego nie bħdzie miaþo skutku dopki ADEN nie
zostanie ustawiony. Przetwornik nie pobiera energii jeĻli bit ADEN jest wyczyszczony, dlatego
zaleca siħ wyþĢczaę przetwornik ADC przez przejĻciem do trybu pracy sleep mode.
ADC generuje 10-bitowy wynik, ktry prezentowany jest w rejestrach ADCH i ADCL.
DomyĻlnie wynik prezentowany jest ze skorygowaniem do prawej, moŇna to zmienię
ustawiajĢc korygowanie do lewej poprzez ustawienie bitu ADLAR w rejestrze ADMUX. JeĻli
wynik korygowany jest do lewej i potrzebna jest dokþadnoĻ wyŇsza niŇ 8 bitw, wystarczajĢcy
jest odczyt jedynie z rejestru ADCH. Z kolei, ADCL musi byę odczytane pierwsze, nastħpnie
ADCH aby mieę pewnoĻę, Ňe oba wyniki pochodzĢ z tej samej konwersji. Kiedy ADCL jest
odczytywany ADC blokuje dostħp do rejestrw danyh. Oznaza to, Ňe kiedy ADCL jest
odczytywane oraz konwersja zakoıczyþa siħ przed oczytem ADCH, Ňaden rejest nie jest
modyfikowany oraz Ňaden wynik nie jest tracony. Kiedy odczytywany jest rejestr ADCH, ADC
aktywuje dostħp do rejestrw danych.
Przetwornik ADC posiada wþasna przerwania, ktre wyzwalane sĢ kiedy przetwarzanie do
postaci cyfrowej koıczy siħ. Kiedy przetwornik korzysta z rejestrw danych zabronione jest
odczytywanie rejestrw ADCH oraz ADCL.
4
103538841.001.png
Obsþuga przetwornika ADC na mikrokontrolerze ATmega8 Î CEZARY KLIMASZ
Konwersja rozpoczyna siħ w momencie zapisu logicznej jedynki do bitu ADSC. Bit ten
pozostaje w stanie wysokim tak dþugo jak dþugo trwa konwersja i jest czyszczony sprzħtowo
kiedy konwersja koıczy siħ. JeĻli podczas konwersji zostanie wybrany inny kanaþ danych, ADC
skoıczy bieŇĢcĢ konwersjħ przed zmianĢ kanaþu.
DomyĻlnie aby uzyskaę maksymalnĢ rozdzielczoĻę pomiaru wejĻciowy zegar powinien
taktowaę z czħstotliwoĻciĢ pomiħdzy 50kHz a 200kHz. JeĻli potrzebujemy mniej niŇ 10-bitw
rozdzielczoĻci a czħstsze prbkowanie moŇemy zwiħkszyę czħstotliwoĻę taktowania powyŇej
200kHz. Blok przetwornika zawiera w sobie preskaler, ktry generuje sygnaþ zegarowy dla
ADC ponad 100kHz. Preskaler ustawiany jest poprzez wybr bitu ADPS w rejestrze ADCSRA.
Preskaler zaczyna zliczaę od momentu kiedy ADC zostaje zaþĢczony Î ustawienie bitu ADEN w
rejestrze ADCSRA. Zliczanie trwa tak dþugo jak dþugo ustawiony jest bit ADEN.
Po konwersji pomiaru (bit ADIF ustawiany na wysoki), wynik zostaje zapisany w rejestrach
ADCL oraz ADCH. ZaleŇnoĻę wiĢŇĢca wynik z pomiarem:
WartoĻę 0x000 reprezentuje poziom masy, zaĻ 0x3FF reprezentuje wartoĻę napiħcia
odniesienia minus 1 LSB.
Opis poszczeglnych rejestrw ADC
ADC Multiplexer Selection
ADMUX
Bity 7:6 Î REFS1:0 Î Bit wyboru napiħcia referencyjnego
Bit ten odpowiada za wybr odpowiedniego napiħcia co pokazuje poniŇsza tabela.
Bit 5 Î ADLAR: ADC Left Adjust Result
Bit ten odpowiada za odpowiednie prezentowanie wyniku konwersji. Zapis bitu jako
logicznej jedynki powoduje ustawienie korygowania do lewej. W innym wypadku do
prawej.
Bity 3:0 Î MUX3:0: Bit wyboru kanaþu analogowego
WartoĻę zapisana w tych bitach wybiera ktre z analogowych wejĻę podþĢczone jest
aktualnie do przetwornika.
5
103538841.002.png 103538841.003.png
Zgłoś jeśli naruszono regulamin