You are on page 1of 9

Obsuga przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ

OBSUGA PRZETWORNIKA ADC


NA MIKROKONTROLERZE
ATMEGA8

Opracowanie zawiera treci rnych publikacji takich jak:


ksiki, datasheety, strony internetowe

Cezary Klimasz
Krakw 2008
1

Obsuga przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ

Spis treci
1. Wprowadzenie .................................................................................... str. 3
2. Podstawowe wiadomoci .................................................................. str. 3
3. Przykad obsugi przetwornika w jzyku C .................................... str. 7
4. Podsumowanie ................................................................................... str. 9
5. Bibliografia ......................................................................................... str. 9

Obsuga przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ

1. Wprowadzenie
Co jest porednikiem powidzy sygnaem analogowym a sygnaem cyfrowym ? Oczywicie
przetwornik. Dziki zastosowaniu ADC (Analog-to-Digital Converter) lub DAC (Digital-toAnalog Converter) moliwe jest wykorzystanie techniki analogowej oraz cyfrowej na raz.
Stwarza to olbrzymie moliwoci w wielu dyscyplinach elektroniki, dlatego istnieje wiele
rodzajw przetwornikw realizujcych przetwarzanie sygnaw. Podstawowymi parametrami
takich przetwornikw jest rozdzielczo czyli zdolno przetwornika do wiernego odtworzenia
sygnau oraz szybko jego dziaania.
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 natenia pola magnetycznego
czujnikami Halla).

2. Podstawowe wiadomoci
MikrokontroleryATmega8 posiadaj w zalenoci od obudowy:
8 kanaowy przetwornik ADC dla ukadw w obudowach SMD
6 kanaowy przetwornik ADC dla ukadw produkowanychw obudowach DIP.
Wsplne cechy przetwornikw w ATmega8 to:
rozdzielczo 10 bitw (1024 prbek),
0.5 LSB nieliniowoci charakterystyki przetwarzania,
2 LSB cakowitej dokadnoci,
od 13-260s czasu konwersji,
6 multipleksowanych pojedyczych wej,
2 wsplnie multipleksowane wejcia (obudowy SMD),
zakres pomiaru ADC od 0 do Vcc
przerwanie od zakoczenia konwersji na posta cyfrow.
10-bitowy przetwornik ADC podczony jest do 8-kanaowego analogowego multipleksera.
Wejcia tego multipleksera podczone s do Portu C mikrokontrolera. Przetwornik
teoretycznie posiada odseparowany obwd zasilania. Niestety w mikrokontrolerze ATmega8
dokumentacja wprowadza w bd czytelnika, gdy de facto zasilanie mikrokontrolera oraz
zasilanie przetwornika nie s odseparowane (bd podczas produkcji inne mikrokontrolery
AVR maj odseparowane zasilania).
Wewntrzne napicie odniesienia dla przetwornika wynosi 2.56V lub AVcc podane do
mikrokontrolera. Napicie odniesienia moe by zewntrznie odsprzony poprzez podpicie
kondensatora do pinu AREF. Poniej widoczny jest mikrokontroler ATmega8 w obudowie DIP
z opisanymi pinami znaczcymi dla ADC.

Obsuga przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ

Poniej widoczny schemat blokowy przetwornika ADC.

Przetwornik konwertuje wejciowe napicie analogowe na 10-bitow cyfrow warto.


Minimaln warto reprezentuje poziom masy za maksymaln napicie AREF minus 1
najmniej znaczcy bit. Opcjonalnie, AVcc oraz wewntrzne rdo odniesienia 2.56V mog by
podczone do pinu AREF poprzez zapis w rejestrze ADMUX bitu REFSn.
Analogowe wejcie wybierane jest poprzez zapis bitw MUX w rejestrze ADMUX.
Przetwornik aktywowany jest poprzez ustawienie bitu ADEN w rejestrze ADCSRA. Ustawienie
napicia odniesienia czy kanau wejciowego nie bdzie miao skutku dopki ADEN nie
zostanie ustawiony. Przetwornik nie pobiera energii jeli bit ADEN jest wyczyszczony, dlatego
zaleca si wycza przetwornik ADC przez przejciem do trybu pracy sleep mode.
ADC generuje 10-bitowy wynik, ktry prezentowany jest w rejestrach ADCH i ADCL.
Domylnie wynik prezentowany jest ze skorygowaniem do prawej, mona to zmieni
ustawiajc korygowanie do lewej poprzez ustawienie bitu ADLAR w rejestrze ADMUX. Jeli
wynik korygowany jest do lewej i potrzebna jest dokadno wysza ni 8 bitw, wystarczajcy
jest odczyt jedynie z rejestru ADCH. Z kolei, ADCL musi by odczytane pierwsze, nastpnie
ADCH aby mie pewno, e oba wyniki pochodz z tej samej konwersji. Kiedy ADCL jest
odczytywany ADC blokuje dostp do rejestrw danyh. Oznaza to, e kiedy ADCL jest
odczytywane oraz konwersja zakoczya si przed oczytem ADCH, aden rejest nie jest
modyfikowany oraz aden wynik nie jest tracony. Kiedy odczytywany jest rejestr ADCH, ADC
aktywuje dostp do rejestrw danych.
Przetwornik ADC posiada wasna przerwania, ktre wyzwalane s kiedy przetwarzanie do
postaci cyfrowej koczy si. Kiedy przetwornik korzysta z rejestrw danych zabronione jest
odczytywanie rejestrw ADCH oraz ADCL.

Obsuga 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 dugo jak dugo trwa konwersja i jest czyszczony sprztowo
kiedy konwersja koczy si. Jeli podczas konwersji zostanie wybrany inny kana danych, ADC
skoczy biec konwersj przed zmian kanau.
Domylnie aby uzyska maksymaln rozdzielczo pomiaru wejciowy zegar powinien
taktowa z czstotliwoci pomidzy 50kHz a 200kHz. Jeli potrzebujemy mniej ni 10-bitw
rozdzielczoci a czstsze prbkowanie moemy zwikszy czstotliwo taktowania powyej
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 zaczony ustawienie bitu ADEN w
rejestrze ADCSRA. Zliczanie trwa tak dugo jak dugo ustawiony jest bit ADEN.
Po konwersji pomiaru (bit ADIF ustawiany na wysoki), wynik zostaje zapisany w rejestrach
ADCL oraz ADCH. Zaleno wica wynik z pomiarem:

Warto 0x000 reprezentuje poziom masy, za 0x3FF reprezentuje warto napicia


odniesienia minus 1 LSB.

Opis poszczeglnych rejestrw ADC


ADC Multiplexer Selection
ADMUX

Bity 7:6 REFS1:0 Bit wyboru napicia referencyjnego


Bit ten odpowiada za wybr odpowiedniego napicia co pokazuje ponisza 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 kanau analogowego
Warto zapisana w tych bitach wybiera ktre z analogowych wej podczone jest
aktualnie do przetwornika.

Obsuga przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ

ADC Control and Status


ADCSRA

Bit 7 ADEN: ADC Enable


Zapis tego bitu jako jeden aktywuje przetwornik. Zapis logicznego zera wycza ADC.
Wyczenia ADC podczas konwersji powoduje zakoczenie tej konwersji.
Bit 6 ADSC: ADC Start Conversion
W trybie pojedynczej konwersji, zapis tego bit jako jeden powoduje start konwersji. W
trybie Free Running zapis tego bitu jako jeden powoduje start pierwszej konwersji. ADSC
jest tak dugo ustawione na jeden dopki konwersja trwa.
Bit 5 ADFR: ADC Free Running Select
Ustawienie tego bitu jako jeden powoduje, e ADC dziaa w trybie Free Running.
Bit 4 ADIF: ADC Interrupt Flag
Bit ten jest ustawiany kiedy konwersja koczy si i rejestry danych s uaktualnione.
Przerwanie od zakoczenia konwersji jest aktywne kiedy bit ADIE oraz I-bit w rejstrze
mikrokontrolera SREG s ustawione.
Bit 3 ADIE: ADC Interrupt Enable
Kiedy ten bit jest ustawiony wraz z I-bitem w rejestrze SREG wtedy aktywne jest
przerwanie od zakoczenia konwersji.
Bity 2:0 ADPS2:0: Wybr preskalera
Bity te okrelaj s za wspczynnik podziau pomidzy czstotliwoci taktowania
mikrokontrolera a wejciowym zegarem ADC.

Obsuga przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ

ADC Data Register ADCL, ADCH

Kiedy konwersja si koczy wynik zapiswany jest do tych obu rejestrw.


ADC9:0: Wynik konwersji
Bity te reprezentuj wynik konwersji.

3. Przykad obsugi przetwornika w jzyku C


W ukadach pomiarowych czujniki zazwyczaj posiadaj wyjcia analogowe, cho nie jest to
ju regu. Chcc zinterpretowa otrzymany sygna analogowy musimy poda go na
przetwornika ADC. W naszym wypadku zakadamy uycie dwch czujnikw Halla (czujniki
pola magnetycznego) uywanych w ukadach pozycjonowania czy pomiaru prdkoci
obrotowej. Dla nas nie istotne bdzie zastosowanie tych czujnikw, ale przetworzenie ich
wskaza do postaci cyfrowej.
Czujniki Halla SS49 (prod. Honeywell) daj na wyjciu sygna napiciowy proporcjonalny
do przyoonego pola magnetycznego. Nie s one jednak na tyle dokadne aby mona byo
mierzy bezporednio pole magnetyczne Ziemi. Czujniki zasilane s napiiem zakresu 4-10V.
Poniej widoczny schemat podpicia czujnikw do mikrokontrolera.

Obsuga przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ

Wartoci rezystorw akurat w wypadku naszych czujnikw nie maj wikszego znaczenia.
W doborze moe by pomocna informacja o tym i wewntrzne rdo napicia referencyjnego
mikrokontrolera wynosi 2.56V1. Im nisze napicie referencyjne tym dokadniejszy pomiar
moemy przeprowadzi, gdy zawsze warto wskazana przez ADC - 0x000 jest to warto
poziomu masy, za warto 0x3FF (1024) jest wartoci napicia referencyjnego minus 1LSB.
Jeli chodzi o realizacj programow obsugi przetwornika to rodowiskiem w ktrym to
wykonamy bdzie WinAVR (AVR-GCC). Realizacja programowa zakada uycie dwch kanaw
przetwornika oraz wykorzystanie przerwania od zakoczenia przetwarzania AD. Konfiguracja
sprztowa: AREF +5V, AVCC +5V, PC0 sensor1, PC1- sensor2.

1LSB=2.56/1024=0.0025

Obsuga przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ

Kluczow funkcj dziaania przetwornika jest odpowiednia jego inicjalizacja. Jako, e


bdziemy korzysta z niego oczywicie aktywujemy go: ADEN, pozwalamy na przerwanie od
zakoczenia przetwarzania ADIE oraz ustawiamy tryb Free Running ADFR. Tryb ten pozwala
na realizacj pomiarw non-stop. Bit ADSC uruchamia pomiary, za bity ADSPX
odpowiedzialne s za ustawienie odpowiedniego preskalera i zwizanej z tym czstotliwoci
pracy przetwornika.
Wan operacj jest rwnie multipleksowanie kanaow przetwornika. Jak wida zmiana
kanaw (zmiana bitw w rejestrze ADMUX) odbywa si co 50 przerwa. Oglnie zaoono, e
pod uwag bdzie brany co 50 wynik przetwarzania. Oczywiie mona to uskuteczni liczc
redni arytmetyczn z 50 pomiarw ale w wypadku programu jakim jest powyszy program
testowy nie miaoby to i tak gbszego sensu.
Jak wida obsuga programowa przetwornika jest prosta i moliwoci ktre oferuje ADC s
due, moe poza rozdzielczoci (10 bitw) oraz wartoci minimalnego napicia
referencyjnego (2V przy zasilaniu mikrokontrolera 5V). W wypadku napi innych ni 0-5V
naley stosowa dzielniki napicia, ew. wzmacniacze w przypadku sygnaw zbyt maych.

4. Podsumowanie
W niniejszym opracowaniu przedstawiono jedynie podstawowe informacje na temat
przetwornika oraz sposbu przeprowadzenia pomiaru. Jednake opis dokumentacji powinien
pozwoli na realizacj trudnych projektw, w ktrych kluczow rol peni bdzie przetwornik
ADC.

5. Bibliografia
[1] ATMEL. ATmega8 datasheet 07/07. 2007

You might also like