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-