LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W
Transkrypt
LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W
POLITECHNIKA WROCŁAWSKA INSTYTUT MASZYN I NAPĘDÓW ELEKTRYCZNYCH LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Opracowanie: mgr inż. Krzysztof P. Dyrcz mgr inż. Zdzisław Żarczyński LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM 1. CEL ĆWICZENIA Celem ćwiczenia jest poznanie 8 bitowego przetwornika analogowocyfrowego wbudowanego w mikrokontroler SAB 80C535 i zapoznanie się z metodą pomiaru sygnału analogowego. Podczas ćwiczenia należy napisać program w języku asemblera do obsługi przetwornika oraz program w języku BASIC do wizualizacji mierzonego sygnału, uruchomić programy, a także zapoznać się ze sposobem zwiększenia rozdzielczości przetwornika do 10 bitów. 2. PRZYGOTOWANIE DO ĆWICZENIA ∗ Zapoznanie się ze strukturą wewnętrzną przetwornika analogowo-cyfrowego, ∗ Instrukcje asemblera SAB 80C535, ∗ Zintegrowane środowisko programowe asm535. 3. STANOWISKO LABORATORYJNE ∗ Sterownik Minikon z klawiaturą i wyświetlaczem, ∗ IBM PC z programem Monitor, ∗ miernik cyfrowy uniwersalny. 4. WPROWADZENIE Przetwornik a/c jest wewnętrznym układem mikrokontrolera SAB 80C535 przeznaczonym do przetwarzania sygnałów z postaci analogowej na cyfrową 8 bitową. Istnieje jednak możliwość zwiększenia rozdzielczości przetwornika do 10 bitów dzięki programowalnemu zawężeniu zakresu pomiarowego przetwornika. Wejście przetwornika a/c stanowi 8-wejściowy analogowy multiplekser umożliwiający pomiar napięciowego sygnału analogowego w 8 różnych kanałach w zakresie 0..5V. Czas przetwarzania przetwornika wynosi 13 cykli maszynowych. (15 cykli maszynowych dla mikrokontrolera SAB 80535). Przetwornik a/c wyróżnia się następującymi parametrami: • 8 kanałów analogowych AN0..AN7, • 8-bitowy port wejść cyfrowych P6, • 8-bitowa rozdzielczość pomiaru (10 bitowa przy programowym zawężeniu zakresu pomiarowego), • 16 programowalnych podzakresów pomiarowych, • programowe wyzwalanie pojedynczego pomiaru lub serii pomiarów, • możliwość generowania przerwania po każdym pomiarze. Przetwornik analogowo-cyfrowy Strona 2 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Przetwornik korzysta z 3 rejestrów specjalnych SFR: • ADCON (adres 0D8H) - wybór kanału pomiarowego i rodzaju przetwarzania, Rejestr ADCON BD CLK - BSY ADM MX2 adres 0D8H MX1 MX0 Znaczenia poszczególnych bitów są następujące: BD - bit używany do określenia szybkości transmisji łącza szeregowego. Zmiana stanu tego bitu może powodować zawieszenie systemu, dlatego podczas pracy przetwornika nie należy modyfikować jego wartości. CLK - umożliwia uzyskanie na wyprowadzeniu procesora CLKOUT (P1.6) sygnału o częstotliwości fCLKOUT = fGEN/12 i wypełnieniu 1/6, przy czym fGEN jest częstotliwością zewnętrznego rezonatora kwarcowego dołączonego do mikrokontrolera. Podobnie jak dla bitu BD nie modyfikuje się jego wartości podczas pracy przetwornika. BSY - wskazuje aktualny stan przetwornika. Jest znacznikiem o atrybucie tylko do odczytu, ustawianym i kasowanym sprzętowo. BSY=0 - przetwornik po zakończeniu przetwarzania, BSY=1 - przetwornik w trakcie przetwarzania. ADM - określa rodzaj przetwarzania. ADM=1 - przetwornik w trybie pracy wielokrotnego pomiaru. Przetwornik wykonuje serię pomiarów, aż do chwili gdy ADM=0. ADM=0 - pomiar pojedynczy, przy czym każdy pomiar musi być uruchamiany programowo. MX2..MX0 - wybór numeru kanału pomiarowego Tabela 4.1. Wybór numeru kanału pomiarowego. MX2 0 0 0 0 1 1 1 1 MX1 0 0 1 1 0 0 1 1 MX0 0 1 0 1 0 1 0 1 Kanał 0 1 2 3 4 5 6 7 Wejście AN0/P6.0 AN1/P6.1 AN2/P6.2 AN3/P6.3 AN4/P6.4 AN5/P6.5 AN6/P6.6 AN7/P6.7 Należy pamiętać, że wejścia AN0..AN7 są jednocześnie wejściami portu cyfrowego P6. Przetwornik analogowo-cyfrowy Strona 3 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM • ADDAT (adres 0D9H) - modyfikowany wynik przetwarzania, Rejestr ADDAT bit 7 bit 6 bit 5 MSB bit 4 bit 3 bit 2 LSB adres 0D9H bit 1 bit 0 Przy czym: MSB - najbardziej znaczący bit (Most Significant Bit), LSB - najmniej znaczący bit (Last Significant Bit) W rejestrze ADDAT przechowywana jest całkowita wielokrotność poziomów kwantowania : Ux ADDAT = , 1LSB przy czym: V −V 1LSB = IntAREF 8 IntAGND 2 ( 1LSB oznacza tu najmniejszy poziom kwantowania) Jeżeli podczas pracy mikrokontrolera nie wykorzystujemy przetwornika a/c, wówczas rejestr ADDAT może służyć jako rejestr ogólnego przeznaczenia. • DAPR (adres 0DAH) - wybór zakresu przetwarzania. Wybór zakresu rozpoczyna pomiar i przetwarzanie a/c na wybranym kanale. Rejestr DAPR bit 7 bit 6 bit 5 bit 4 Napięcie VIntAREF bit 3 adres 0DAH bit 1 bit 0 bit 2 Napięcie VIntAGND przy czym: Napięcie VIntAREF - górne wewnętrzne napięcie odniesienia, Napięcie VIntAGND - dolne wewnętrzne napięcie odniesienia. Napięcia te tworzone są przez podział różnicy napięć VAREF i VGND zgodnie ze wzorami: DAPR 7..4 VIntAREF = VAGND + (VAREF - VAREF) 16 gdy DAPR7..4 > 3H DAPR 3..0 (VAREF - VAREF) 16 gdy DAPR3..0 < 0CH VIntAGND = VAGND + Przetwornik analogowo-cyfrowy Strona 4 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Wyboru podzakresu pomiarowego dokonuje się wg tabeli 2 przy założeniu, że wartości napięć odniesienia są następujące: VAREF = +5V, VAGND = 0V. Tabela 4.2. Wybór podzakresu pomiarowego. Podzakres pomiarowy 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DAPR7..4 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 VIntAREF [V] 5.0 1.25 1.5625 1.875 2.1875 2.5 2.8125 3.125 3.4375 3.75 4.0625 4.375 4.6875 DAPR3..0 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 VIntAGND [V] 0.0 0.3125 0.625 0.9375 1.25 1.5625 1.875 2.1875 2.5 2.8125 3.125 3.4375 3.75 - Przy pomiarze na pełnym zakresie pomiarowym 0V..5V dokładność przetwarzania przetwornika wynosi 1LSB = VIntAREF − VIntAGND 5V − 0V = = 19,531 mV, 8 256 2 natomiast przy pomiarze na zakresie zawężonym do 1.25V 1LSB = VIntAREF − VIntAGND 1,25V − 0V = = 4,883 mV. 8 256 2 Z powyższych obliczeń wynika prosty sposób na zwiększenie dokładności przetwornika o dodatkowe dwa bity. Należy tylko dokonać dwóch pomiarów: pierwszego, na pełnym zakresie pomiarowym dla określenia dwóch najbardziej znaczących bitów wyniku oraz określenia nowego podzakresu pomiarowego, oraz drugiego pomiaru na zawężonym podzakresie pomiarowym dla uzyskania 8 mniej znaczących bitów wyniku przetwarzania. Przetwornik analogowo-cyfrowy Strona 5 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Ponieważ rejestr ADDAT jest modyfikowany po każdym cyklu pomiarowym, należy zwrócić uwagę na to, aby podczas pomiaru z dokładnością 10 bitów przed dokonaniem drugiego pomiaru na zawężonym zakresie zapamiętać aktualną zawartość rejestru w innym, nie modyfikowanym podczas pracy przetwornika rejestrze ogólnego przeznaczenia. Do prawidłowej pracy przetwornika a/c wymagane jest spełnienie następujących warunków: − napięcia VIntAREF i VIntAGND muszą być dołączone do wyprowadzeń mikrokontrolera. Obecność tych napięć nie jest konieczna, gdy przetwornik nie pracuje, − jeżeli napięcia VIntAREF i VIntAGND dołączone są do napięć zasilających mikrokontroler VCC i VSS, to muszą spełniać warunek: VIntAREF = VCC ± 5%, VIntAGND = VSS ± 0.2V, − minimalna różnica napięć (VIntAREF - VIntAGND) ≥ 1V, − rezystancja wewnętrzna źródła mierzonego napięcia i napięcia wzorcowego nie może być większa niż 5 kΩ. Po każdym wykonanym pomiarze przetwornik ma możliwość generowania przerwania. Ustawiany jest wówczas bit IADC w rejestrze IRCON, przy czym wektor przerwania ma adres 43H. Rejestr IRCON EXF2 TF2 IEX6 IEX5 IEX4 IEX3 adres 0C0H IEX2 IADC Na rys.4.1 przedstawiono schemat blokowy przetwornika a/c. Przetwornik analogowo-cyfrowy Strona 6 BD CLK MSB bit 6 bit 3 bit 2 Przetwornik analogowo-cyfrowy Multiplexer VintAREF VGND VAREF Układ próbkująco-pamiętający (Sample&Hold) AN0 AN7 wpis do DAPR VintAGND Programowanie podzakresu pomiarowego VintAREF Przetwornik analogowo-cyfrowy fGEN Rejestr programowania podzakresu pomiarowego DAPR Rejestr wyniku przetwarzania ADDAT BSY ADM Rejestr sterujący działaniem ADCON MX2 MX1 MX0 Port P6 wersja ACMOS adres 0DAH adres 0D9H adres 0D8H adres 0DBH LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM wewnętrzna magistrala procesora BSY ADM MX2 MX1 MX0 ADCON bit 5 bit 4 bit 3 bit 2 bit 1 LSB ADDAT bit 1 bit 0 bit 3 bit 2 bit 1 bit 0 DAPR VintAGND Rys.3.1. Schemat blokowy przetwornika a/c. Strona 7 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM 5. LITERATURA 1. SIEMENS, „Microcomputer Components. SAB 80515 / SAB 80C515 8 bit single chip Microcontroller Family”. Users Manual. 2. Krzysztof P. Dyrcz, Czesław T. Kowalski, Zdzisław Żarczyński, „Podstawy techniki mikroprocesorowej”, skrypt PWr., Wrocław 1999 3. A. Rydzewski, „Mikrokontrolery jednoukładowe rodziny MCS-51”. Przetwornik analogowo-cyfrowy Strona 8 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Przetwornik analogowo-cyfrowy Strona 9 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM 1. WSTĘP Najprostszym zastosowaniem przetwornika a/c jest jednokrotny pomiar napięcia z rozdzielczością 8 bitową. Ponieważ w rejestrze ADDAT przechowywana jest całkowita wielokrotność poziomów kwantowania, wartość zmierzonego napięcia należy obliczyć ze wzoru: Ux = ADDAT10 * 1LSB, przy czym: ADDAT10 - dziesiętna postać zawartości rejestru ADDAT. Wynik pomiaru można wyświetlić na linijce diodowej, sterowanej z dowolnego portu wyjścia, na przykład z portu P5. Jednak lepszym sposobem „wizualizacji” wyniku pomiaru jest wyświetlenie go na ekranie monitora w postaci dziesiętnej, korzystając z programu napisanego w języku BASIC. Listing programu w języku BASIC przedstawiono poniżej: 10 CALL 00H 20 U=XBY(100H) 30 V=(U*5)/256 40 PRINT ”U = ” 50 PRINT USING (##.##),V 60 PRINT ”V” 70 INPUT ”CZY JESZCZE JEDEN POMIAR ? 0-NIE, 1-TAK”,Z 80 IF Z=1 THEN GOTO 10 90 END przy czym: CALL 00H - wywołanie podprogramu przetwornika a/c, U=XBY(100H) - przypisanie zmiennej U wyniku pomiaru zawartego w zewnętrznej pamięci RAM w komórce o adresie 100H. Algorytm podprogramu do pomiaru napięcia, który należy napisać w asemblerze SAB 535 jest następujący: Przetwornik analogowo-cyfrowy Strona 10 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Start programu Deklaracja stałych. Adres początku programu org $00 Konfiguracja przetwornika. Start pomiaru TAK BSY=1 NIE Wysłanie wyniku z ADDAT do zewn. pamięci RAM do komórki #100 Stop programu Rys.4.2. Algorytm programu do pomiaru 8-bitowego przetwornika a/c. 2. PRZEBIEG ĆWICZENIA 1. Zapoznać się z wyposażeniem stanowiska. 2. Przygotować moduł sterownika do pracy z przetwornikiem a/c i do współpracy z komputerem PC. 3. Uruchomić komputer IBM PC. 4. Napisać program w języku asemblera do pomiaru napięcia z rozdzielczością 8 bitów. 5. Uruchomić i przetestować program. 6. Napisać program w języku BASIC do obsługi programu pomiarowego asembler. 7. Uruchomić program BASIC i wyświetlić wyniki pomiaru na ekranie monitora. Przetwornik analogowo-cyfrowy Strona 11 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Przetwornik analogowo-cyfrowy Strona 12 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM 1. WSTĘP Jeżeli istnieje potrzeba pomiaru z dokładnością 10 bitów, to pomiaru napięcia Ux zawartego w przedziale 0..5V należy dokonać dwukrotnie. Pierwszy pomiar odbywa się przy pełnym zakresie pomiarowym 0..5V. Na podstawie wyniku pomiaru dokonywany jest dobór właściwego podzakresu pomiarowego do wykonania drugiej operacji przetwarzania a/c. Przy doborze podzakresu należy spełnić warunki: • VIntAREF - VIntAGND ≥ 1V, • mierzone napięcie nie może znajdować się na granicy podzakresu, ponieważ wynik drugiego pomiaru może zostać zafałszowany. Sposób pomiaru z rozdzielczością 10 bitów został przedstawiony na rys. poniżej. U 5V pierwszy pomiar 8 bitowy na pełnym zakresie pomiarowym VIntAREF - VIntAGND >= 1V Ux VIntAREF VIntGND drugi pomiar 8 bitowy na zawężonym zakresie pomiarowym 0V Rys.4.3. Dobór zakresu pomiarowego. Algorytm doboru podzakresu pomiarowego przedstawiony został poniżej. Dla lepszego zrozumienia ograniczono się do 4 podzakresów pomiarowych: 0..1.25V, 1.25..2.5V, 2.5V..3.75V, 3.75..5V. Dobór podzakresu pomiarowego dokonywany jest na podstawie analizy dwóch najbardziej znaczących bitów wyniku uzyskanego z pierwszego pomiaru. Jeżeli dwa najbardziej znaczące bity mają wartość 00, to wynik pomiaru mieści się w przedziale 6 mniej znaczących bitów, czyli może przyjmować wartości 0..64d (0..3FH), stąd mierzone napięcie znajduje się w zakresie: 5 (0..64)* = 0..1.25V 256 Należy zatem do drugiego pomiaru wybrać zakres 0..1.25V, czyli do rejestru DAPR wpisać wartość 01000000b = 40H. Przetwornik analogowo-cyfrowy Strona 13 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Jeżeli dwa najbardziej znaczące bity mają wartość 01, to wynik pomiaru mieści się w przedziale 7 mniej znaczących bitów, czyli może przyjąć wartości 64..128d (40H..80H), a mierzone napięcie zmienia się w zakresie: 5 (64..128)* = 1.25..2.5V, 256 do drugiego pomiaru należy zatem wybrać zakres 1.25..2.5V, czyli do rejestru DAPR wpisać wartość 10000100b = 84H. Jeżeli dwa najbardziej znaczące bity mają wartość 10, to wynik pomiaru mieści się w przedziale 8 bitów, czyli przyjmuje wartości 128..192d (80H..C0H). Mierzone napięcie przyjmuje zatem wartości w zakresie: 5 = 2.5..3.75V, 256 czyli należy wybrać zakres 2.5..3.75V wpisując do rejestru DAPR wartość 11001000b = 0C8H. (128..192)* W ostatnim przypadku dwa najstarsze bity mogą przyjąć wartość 11. Wówczas wynik pomiaru mieści się w przedziale 192..255d (C0H..FFH), a zmierzone napięcie mieści się w zakresie 5 (192..255)* = 3.75..5V, 256 czyli należy wybrać zakres 3.75..5V wpisując do rejestru DAPR wartość 11111100b = 0FCH. A zatem deklaracja tablicy, w której umieszczone są wartości podzakresów pomiarowych wygląda następująco: db #$40, #$84,#$0C8,#$0FC Wartość mierzonego napięcia obliczana jest na podstawie obu pomiarów wg wzoru: A + B * 256 U= *5, 1024 przy czym: A - osiem bitów z drugiego pomiaru, B - dwa najbardziej znaczące bity z pierwszego pomiaru. B A 256 1024 Przetwornik analogowo-cyfrowy Strona 14 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Podobnie jak w pierwszej części ćwiczenia, wynik pomiaru należy wyświetlić na ekranie monitora, korzystając z programu napisanego w języku BASIC, przy czym dwa najbardziej znaczące bity z pierwszego pomiaru należy przesłać do zewnętrznej pamięci RAM do komórki o adresie #101, a osiem bitów z drugiego pomiaru do komórki o adresie #100. Listing programu w języku BASIC przedstawiono poniżej: 10 CALL 00h 20 A=XBY(100H) 30 B=XBY(1O1H) 40 U=256*B+A 50 V=(U*5)/1024 60 PRINT ”U=” 70 PRINT USING (##.##),V 80 PRINT ”V” 90 INPUT ”CZY JESZCZE JEDEN POMIAR ? 0-NIE, 1-TAK”,Z 100 IF Z=1 THEN GOTO 10 110 END przy czym: CALL 00H - wywołanie podprogramu przetwornika a/c, A=XBY(100H) - przypisanie zmiennej A wyniku pomiaru zawartego w zewnętrznej pamięci RAM w komórce o adresie 100H, B=XBY(101H) - przypisanie zmiennej B wyniku pomiaru zawartego w zewnętrznej pamięci RAM w komórce o adresie 101H. Algorytm podprogramu do pomiaru napięcia z rozdzielczością 10 bitów, który należy napisać w asemblerze SAB 535 jest następujący: Przetwornik analogowo-cyfrowy Strona 15 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM Start programu Deklaracja stałych. Adres początku programu org $00 Konfiguracja przetwornika. Start pomiaru TAK BSY=1 NIE Analiza wyniku pomiaru i określenie nowego podzakresu pomiarowego Zapamiętanie 2 najbardziej znaczących bitów pomiaru w komórce o adresie 20H Wybór podzakresu z tablicy. Start pomiaru TAK BSY=1 NIE Przesłanie zawartości komórki #20 do zewn. pamięci RAM do komórki #100 Przesłanie wyniku 2 pomiaru z ADDAT do zewn. pamięci RAM do komórki #100 Stop programu Rys.4.4. Algorytm programu do przetwarzania 10-bitowego przetwornika a/c. Przetwornik analogowo-cyfrowy Strona 16 LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH W NAPĘDZIE ELEKTRYCZNYM 2. PRZEBIEG ĆWICZENIA 1. Przygotować moduł sterownika do pracy z przetwornikiem a/c i do współpracy z komputerem PC. 2. Uruchomić komputer IBM PC. 3. Napisać program w języku asembler do pomiaru napięcia z rozdzielczością 10 bitów. 4. Uruchomić i przetestować program. 5. Zmodyfikować program BASIC. 6. Uruchomić program BASIC, wyświetlić wyniki pomiaru na ekranie monitora. Przetwornik analogowo-cyfrowy Strona 17