Laboratorium Podstaw Techniki Mikroprocesorowej

Transkrypt

Laboratorium Podstaw Techniki Mikroprocesorowej
wiczenie 5
Woltomierz jednokana owy
IMiO PW, LPTM, wiczenie 5, Woltomierz jednokana owy
-2-
Celem wiczenia jest zapoznanie si# z programow% obs ug% prostego przetwornika
analogowo-cyfrowego na przyk adzie przetwornika ADC0804. Do wykonania wiczenia b#d%
potrzebne modu y DBLCD (wy1wietlacz ciek okrystaliczny i klawiatura) oraz DBADDA
(przetwornik analogowo-cyfrowy).
1. Przetwornik analogowo - cyfrowy ADC0804
Przetwornik ADC0804 znajduj%cy si# na p ytce DBADDA jest bardzo prostym uk adem. Z
naszego punktu widzenia jego najwa4niejsze parametry to:
• rozdzielczo1 pomiaru:
8 bitów,
• b %d wzgl#dny:
1 LSB,
• czas konwersji:
dla konfiguracji jak w module DBADDA, ok. 100µs,
• zakres napi#cia wej1ciowego:
0 - Vref, w module DBADDA 0 - 5V;
Start konwersji powodowany jest przez wymuszenie opadaj%cego zbocza na wej1ciu \WR
(Rys.1.). Uk ad zaprojektowany jest w taki sposób, 4e zapisanie dowolnej warto1ci pod adres
przetwornika powoduje wytworzenie impulsu \WR, a co za tym idzie start konwersji.
Zako>czenie konwersji sygnalizowane jest stanem niskim na wyj1ciu \INTR, co mo4e
spowodowa zg oszenie przerwania (wyzwalanie opadaj%cym zboczem). W tym celu nale4y
zewrze jedn% ze zworek konfiguracyjnych (J3 lub J4) na p ytce (Rys.4.). Na rys. 1
przedstawione s% zale4no1ci czasowe cyklu akwizycji i przetwarzania, natomiast na rys.2.
zale4no1ci czasowe odczytu danej z przetwornika.
Rys.1. Timing przetwarzania przetwornika ADC0804.
IMiO PW, LPTM, wiczenie 5, Woltomierz jednokana owy
-3-
Rys.2. Timing odczytu danej z przetwornika ADC0804.
Rys. 3. Zale4no1 cz#stotliwo1ci zegara przetwornika ADC0804 od warto1ci pojemno1ci
oscylatora.
Dla zastosowanych w module DBADDA warto1ci elementów oscylatora (10 k , 150 pF –
650 kHz) czas przetwarzania TC (zgodnie z zale4no1ci% przedstawion% na rys.3.) wynosi oko o
100µs, natomiast czas od zg oszenia przerwania do odczytu danych musi wynosi co najmniej
8 taktów zegara przetwornika, czyli w naszym przypadku 8*1,5µs = 12µs. Oznacza to, 4e po
przyj#ciu przerwania mikrokontroler mo4e dokona odczytu z przetwornika dopiero po co
najmniej 11 cyklach maszynowych (cykl maszynowy dla stosowanego zegara = 11,0592 MHz
IMiO PW, LPTM, wiczenie 5, Woltomierz jednokana owy
-4-
jest równy ok. 1,1 µs). Wi#cej informacji na temat przetwornika ADC0804 mo4na znaleJ w
karcie katalogowej (firmy National Semiconductors) znajduj%cej si# w komputerze.
2. Konfiguracja modu u DBADDA
Adres bazowy modu u DBADDA jest równy 0FC0CH, a adresy poszczególnych funkcji s%
nast#puj%ce:
•
0FC0DH - wybór kana u (adres multipleksera analogowego);
•
0FC0EH - adres przetwornika A/D (do zapisu lub odczytu).
Wej1cia analogowe IN0-IN7 do %czane s% do wej1cia przetwornika ADC0804 (U4) przez 8kana owy multiplekser analogowy CD4051 (U5). Uk ad ten posiada 4 wej1cia steruj%ce: INH,
A, B i C. Stan wysoki na wej1ciu INH (inhibit) blokuje przenoszenie sygna u z linii
wej1ciowych X0-X7 multipleksera na jego wyj1cie X. W module DBADDA wej1cie INH
multipleksera na sta e zwarto do masy, co oznacza, 4e wyboru aktywnego kana u
multipleksera dokonuje si# wy %cznie za pomoc% wej1 A, B i C, zgodnie z poni4sz% tabel%:
INH
0
0
0
0
0
0
0
0
1
C
0
0
0
0
1
1
1
1
x
B
0
0
1
1
0
0
1
1
x
A
0
1
0
1
0
1
0
1
x
KANAP “ON”
0
1
2
3
4
5
6
7
TADEN
W module DBADDA pod jednym adresem znajduj% si# dwa multipleksery analogowe
CD4051. Jeden z nich (U5)wspó pracuje z przetwornikiem analogowo-cyfrowym, drugi (U11)
z przetwornikiem cyfrowo-analogowym. Bajt wysy any pod adres multiplekserów ma
nast#puj%cy format:
B7
INHDA
B6
CDA
B5
BDA
B4
ADA
B3
X
B2
CAD
B1 B0
BAD AAD
Indeks DA oznacza multiplekser wspó pracuj%cy z przetwornikiem cyfrowo-analogowym, a
indeks AD z przetwornikiem analogowo-cyfrowym. Symbol X oznacza, 4e warto1 bitu jest
dowolna. Poniewa4 przetwornik cyfrowo-analogowy nie jest w wiczeniu u4ywany, nale4y
zablokowa mo4liwo1 przenoszenia sygna u przetwornika na wyj1cia analogowe, czyli
ustawi B7 = 1.
3. Zadanie
Nale4y zrealizowa jednokana owy woltomierz cyfrowy. Na wy1wietlaczu LCD powinna by
wy1wietlona warto1 mierzonego napi#cia (cz#1 ca kowita i dwie cyfry po przecinku).
Nale4y zastanowi si# nad celowo1ci% i ewentualnie zrealizowa u1rednianie wyników kilku
pomiarów. W programie trzeba wykorzysta przerwanie zewn#trzne INT0 do sygnalizacji
ko>ca konwersji przetwornika. Do prawid owego dzia ania uk adu konieczne jest ustawienie
zwory na p ytce BDADDA w pozycji J4.
Przed pierwszym zapisem do przetwornika nale4y odpowiednio zaprogramowa multiplekser
(operacj# t# wykonuje si# tylko jeden raz). Pierwszy zapis do przetwornika musi znaleJ si# w
programie g ównym.
IMiO PW, LPTM, wiczenie 5, Woltomierz jednokana owy
-5-
UWAGA!!! Przerwanie zewn#trzne musi by wyzwalane opadaj%cym zboczem (a nie
niskim poziomem). Tak% konfiguracj# otrzymuje si# przez ustawienie bitu IT0 w rejestrze
specjalnym TCON.
W procedurze obs ugi przerwania zewn#trznego powinny si# znaleJ nast#puj%ce funkcje:
odczyt z przetwornika A/C
konwersja warto1ci binarnej na dziesi#tn%
przepisanie uzyskanej warto1ci do bufora wy1wietlacza
zainicjowanie kolejnej konwersji (zapis do przetwornika A/C)
4. Algorytm konwersji warto,ci odczytanych z przetwornika na system dziesi/tny
Je4eli przyjmiemy, 4e binarna warto1 odczytana z przetwornika wynosi X, to warto1
dziesi#tn% otrzymujemy w nast#puj%cy sposób:
d [V] = X×napi#cie_referencyjne[V]/255.
W naszym przypadku napi#cie referencyjne wynosi 5 V, zatem mo4na napisa , 4e:
d [V]= X×5[V]/255 = X/51
Mikrokontroler 8051 posiada instrukcj# dzielenia liczb ca kowitych DIV AB. Wykonanie tej
instrukcji powoduje podzielenie zawarto1ci akumulatora przez zawarto1 rejestru B
traktowanych jako liczby ca kowite. W wynik dzielenia (liczba ca kowita) zostaje wpisany do
akumulatora, a do rejestru B zostaje wpisana reszta z dzielenia. Przyk adowo, je4eli
pocz%tkowo w rejestrze A znajdowa a si# liczba 9, a w rejestrze B liczba 2, to po wykonaniu
instrukcji DIV AB w rejestrze A znajduje si# liczba 4, a w rejestrze B liczba 1 (2×4+1=9).
Algorytm konwersji
W akumulatorze umieszczamy warto1 odczytan% z przetwornika.
W rejestrze B umieszczamy liczb# 51 (33H).
Wykonujemy instrukcj#
1.
2.
3.
DIV
AB
Warto1 znajduj%ca si# teraz w akumulatorze, to cz#1 ca kowita wyniku dzielenia.
Dodajemy do niej 30H (aby uzyska jej kod ASCII) i wysy amy na wy1wietlacz:
4.
call
5.
Na wy1wietlacz wysy amy kropk# dziesi#tn%:
mov
call
6.
DanaLCD
A, #’.’
DanaLCD
Reszt# z dzielenia, znajduj%c% si# w rejestrze B, mno4ymy przez 10:
mov
mul
A, #10
AB
7. Poniewa4 maksymalna reszta z dzielenia to 50, istnieje mo4liwo1 , 4e wynik instrukcji
mno4enia b#dzie d u4szy ni4 jeden bajt (np. 50×10 = 500 > 255). Instrukcja mno4enia (MUL
AB) dzia a tak, 4e m odszy bajt wyniku mno4enia jest przechowywany w A, a starszy w
rejestrze B. Aby si# zorientowa z jakim przypadkiem mamy do czynienia, wystarczy
sprawdzi czy rejestr B po wykonaniu mno4enia jest równy zeru, czy nie.
IMiO PW, LPTM, wiczenie 5, Woltomierz jednokana owy
-6-
7.1. Je4eli
rejestr B jest równy zeru, to wynik mno4enia (akumulator) dzielimy przez 51,
dodajemy 30H i wysy amy na wy1wietlacz.
7.2. Je4eli rejestr B nie jest równy zeru, to wiadomo, 4e jest równy jedno1ci. Wynik mno4enia
mo4na zapisa nast#puj%co:
256 + A = 255 + 1 + A
W tej sytuacji dzielenie przez 51 b#dzie wygl%da o nast#puj%co:
(255 + 1 + A)/51 = 255/51 + (1 + A)/51 = 5 + A/51
Zwi#kszamy zatem akumulator o 1 (nie ma obaw o przepe nienie) i dzielimy go przez 51
(DIV AB). Nast#pnie dodajemy do wyniku 5, a potem 30H i wysy amy na wy1wietlacz.
8. Wynik dzielenia, przechowywany w rejestrze B ponownie mno4ymy przez 10 oraz
wykonujmy punkty 7 - 7.2. W zasadzie, aby uzyska lepsz% dok adno1 przed wy1wietleniem
drugiej cyfry po przecinku nale4a oby wykona punkty 6 - 7.2 jeszcze raz i ewentualnie
zwi#kszy liczb# setnych o 1, je4eli otrzymana liczba tysi#cznych jest 5.
UWAGA: Prosz# zwróci uwag#, 4e opisana wy4ej procedura jest wy %cznie procedur%
konwersji postaci binarnej na BCD po %czona z procedur% standaryzacji wyniku (wynik
binarny = 255 ma dawa na wy1wietlaczu warto1 5.00) w celu wy1wietlenia wyniku. Nie jest
to procedura kalibracji, któr% nale4a oby przeprowadzi aby wy1wietlany wynik odpowiada
rzeczywistej warto1ci napi#cia wej1ciowego – rzeczywisty woltomierz mo4e mie offset (dla
napi#cia wej1ciowego = 0 wynik nie jest równy 0) oraz nachylenie charakterystyki ró4ni%ce
si# od wzorcowego. W celu wykonania kalibracji nale4a oby wi#c zmierzy dwa znane
napi#cia a nast#pnie – na podstawie tych pomiarów obliczy dwa wspó czynniki
charakterystyki przej1ciowej woltomierza aproksymowanej lini% prost% y = ax + b –
wyznaczy wspó czynniki a i b.
IMiO PW, LPTM, wiczenie 5, Woltomierz jednokana owy
Rys.4 Schemat ideowy pakietu DBADDA
-7-