Dodatek D 1. Przetwornik analogowo-cyfrowy 1.1. Schemat blokowy Uproszczony schemat blokowy konwertera analogowo-cyfrowego przedstawiony został na rys.1. Rys. 1. Schemat blokowy przetwornika A/C Przetwornik posiada rozdzielczość 10 bitów, przy całkowitej dokładności ±2 LSB.
1.2. Opis działania Przetwornik realizuje 10-bitową konwersję sygnału wejściowego, pochodzącego z wyjścia 8- kanałowego multipleksera podłączonego do Portu F mikrokontrolera. Sygnał wejściowy może być niesymetryczny (podawany bezpośrednio z linii portu F) lub różnicowy, wykorzystujący jedną z 16 kombinacji par linii portu F. Dla dwu takich kombinacji (ADC1/ADC0 i ADC3/ADC2) możliwe jest zastosowanie dodatkowego wzmacniacza wejściowego o regulowanym wzmocnieniu 0 db, 20 db lub 46 db. W przetworniku zastosowano układ próbkująco-pamiętający, który zapewnia niezmienność sygnału podczas przetwarzania. Przetwornik może wykorzystywać zewnętrzne napięcie odniesienia (równe napięciu zasilania) lub wewnętrzne: 2,56 V. Dla sygnału niesymetrycznego minimalna wartość napięcia wejściowego wynosi 0 V, a maksymalna jest równa napięciu odniesienia pomniejszonemu o wartość LSB. Linie wejściowe wybierane są za pomocą odpowiednich bitów w rejestrze ADMUX. Aktywacja układu przetwornika obywa się przez ustawienie bitu ADEN w rejestrze ADCSRA w stan wysoki. 10-bitowy wynik przetwarzania pojawia się w 16-bitowym rejestrze ADC, dostępnym jako 8- bitowe rejestry ADCL (odczytywany jako pierwszy!) i ADCH. W zależności od ustawienia bitu ADLAR w rejestrze ADMUX, wynik może być przesunięty w lewo (ADLAR = 1) lub w prawo (ustawienie domyślne). Jeżeli wynik jest przesunięty w lewo i interesuje nas jedynie jego 8 starszych bitów, wystarczy odczytywać rejestr ADCH. Proces przetwarzania może zostać uruchomiony przez ustawienie bitu ADSC w rejestrze ADCSRA (normalny tryb pracy), lub może być powtarzany automatycznie, po ustawieniu bitu ADFR w tym rejestrze. Zakończenie procesu przetwarzania sygnalizowane jest za pomocą ustawienia flagi ADIF (rejestr ADCSRA) i ewentualnie wywołania przerwania wewnętrznego (maskowanego bitem ADIE w rejestrze ADCSRA). Przy normalnym trybie pracy jednocześnie zerowany jest bit ADSC. Takt przetwarzania (dzielnik sygnału zegara systemowego sterowany jest bitami ADPS0.. ADPS2 rejestru ADCSRA) powinien być w granicach 50.. 200 khz. Pierwsze przetwarzanie wymaga 25 cykli, natomiast kolejne wymagają jedynie 13 cykli sygnału taktującego. Sygnał wejściowy jest zatrzaskiwany po 1,5 cyklu (przy pierwszym przetwarzaniu po 13,5 cyklu). Przebiegi występujące w procesie przetwarzania przedstawiono na rys. 2 i 3. Rys. 2. Pierwsze przetwarzanie
Wynik przetwarzania dla wejścia niesymetrycznego można określić na podstawie wzoru: VIN 1024 ADC = V REF gdzie VIN jest napięciem na wybranym wejściu, a VREF jest napięciem odniesienia. Wynik jest liczbą całkowitą dodatnią, w zakresie 0x000 (0) do 0x3FF (1023). Rys. 3. Przebiegi podczas kolejnych procesów przetwarzania. W przypadku, gdy napięcie wejściowe podawane jest różnicowo między parę końcówek, wynik przetwarzania określony jest wzorem: ( VPOS VNEG ) GAIN 512 ADC = V REF gdzie VPOS i VNEG są napięciami na końcówkach wejściowych, a GAIN jest wybranym współczynnikiem wzmocnienia. Wynik jest liczbą zapisaną w postaci uzupełnionej do 2, w zakresie od 0x200 (-512) do 0x1FF (511). 1.3. Rejestry 1.3.1. Rejestr multipleksera ADMUX Nr bitu 7 6 5 4 3 2 1 0 Wartość początkowa REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0 Wybór źródła napięcia odniesienia REFS1 REFS0 Źródło napięcia 0 0 AREF, źródło wewn. wyłączone 0 1 AVCC, na AREF kond. odsprzęgający 1 0 - R/W R/W R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 0 0 1 1 Wewn. 2,56 V, na AREF kond. odsprzęgający
Wybór źródła sygnału wejściowego MUX4..0 V IN V POS V NEG GAIN 00000 ADC0 00001 ADC1 00010 ADC2 00011 ADC3 00100 ADC4 00101 ADC5 00110 ADC6 00111 ADC7 01000 ADC0 ADC0 20 db 01001 ADC1 ADC0 20 db 01010 ADC0 ADC0 46 db 01011 ADC1 ADC0 46 db 01100 ADC2 ADC2 20 db 01101 ADC3 ADC2 20 db 01110 ADC2 ADC2 46 db 01111 ADC3 ADC2 46 db 10000 ADC0 ADC1 0 db 10001 ADC1 ADC1 0 db 10010 ADC2 ADC1 0 db 10011 ADC3 ADC1 0 db 10100 ADC4 ADC1 0 db 10101 ADC5 ADC1 0 db 10110 ADC6 ADC1 0 db 10111 ADC7 ADC1 0 db 11000 ADC0 ADC2 0 db 11001 ADC1 ADC2 0 db 11010 ADC2 ADC2 0 db 11011 ADC3 ADC2 0 db 11100 ADC4 ADC2 0 db 11101 ADC5 ADC2 0 db 11110 1,23 V (V BG ) 11111 0 V (GND)
1.3.2. Rejestr sterowania i statusu ADCSRA Wybór dzielnika preskalera: ADPS2 ADPS1 ADPS0 Dzielnik 0 0 0 2 0 0 1 2 0 1 0 4 0 1 1 8 1 0 0 16 1 0 1 32 1 1 0 64 1 1 1 128 1.3.3. Rejestr danych ADCH i ADCL Zawartość rejestru ADC jest odświeżana po odczytaniu starszej części (ADCH).