Ćwiczenie nr 1 Metody wprowadzania informacji cyfrowej o wyniku pomiaru do komputera Cel ćwiczenia: zapoznanie z podstawowymi typami przetwarzania analogowo-cyfrowego oraz wyznaczaniem błędów statycznych i dynamicznych przetwarzania.
1. Wstęp Przetwornik służy do zmiany jednej wielkości lub jej postaci w inną. Możemy także zmieniać wielkość w taką samą ale o innej wartości - takie przetworniki nazywamy przetwornikami skali. Najważniejsze jest aby przetwarzanie odbywało się w sposób jednoznaczny. W przypadku konieczności wprowadzenia informacji o sygnale elektrycznym do komputera lub systemu mikroprocesorowego należy przetworzyć wielkość analogową w postać cyfrową - dokładniej mówiąc w jej reprezentację liczbową w odpowiedniej postaci (binarnej, szesnastkowej lub też dziesiętnej). Dokonujemy tego za pomocą przetwornika analogowocyfrowego (ang. analog - digital converter w skrócie ADC). Wyprowadzając sygnał z komputera do układu należy go przetworzyć z wartości cyfrowej na analogową za pomocą przetwornika cyfrowo-analogowego (ang. digital-analog converter DAC). 2. Przetwornik cyfrowo-analogowy Przetwornik cyfrowo-analogowy dokonuje zamiany dyskretnego sygnału cyfrowego na wartość elektryczną (napięcie lub prąd) zgodnie z zależnością: wy N i1 a i i 2 (1) gdzie: - napięcie odniesienia a i - bity 0 lub 1 pochodzące od kodu sygnału wejściowego od najbardziej znaczącego (MSB) do najmniej znaczącego (LSB) N - ilość bitów sygnału wejściowego Możemy wyróżnić przetworniki z wyjściem unipolarnym w którym sygnał wyjściowy zmienia się w zakresie od 0 do i wyjściem bipolarnym dla sygnału zmieniającego się w zakresie od -1/2 do +1/2. Ze względu na strukturę budowy przetworniki możemy podzielić na bezpośrednie i pośrednie. Przetworniki bezpośrednie polegają na bezpośrednim sterowaniu wejściowym kodem cyfrowym i sumowaniem na wyjściu poprzez wzmacniacz sumacyjny. W przetwornikach pośrednich sygnał cyfrowy zamieniany jest na inną postać np. liczbę impulsów o różnej szerokości a dopiero w następnym etapie na sygnał analogowy w postaci napięcia lub prądu. Możemy dokonać podziału przetworników ze względu na sposób wprowadzania sygnału cyfrowego. W przetwornikach równoległych wszystkie bity równocześnie są podawane na wejście przetwornika, natomiast do przetwornika szeregowego wprowadzamy informację bit po bicie. Najczęściej stosowane są przetworniki równoległe. Biorąc pod uwagę budowę wewnętrzną przetwornika możemy wyróżnić przetworniki z drabinką rezystorową o wartościach wagowych (R-2R-4R itd.) lub też z siecią rezystorów R- 2R. Przykład typowego przetwornika równoległego z siecią rezystorów R-2R przedstawiony jest na rysunku 1. Jest to struktura układu AD7533 firmy Analog Devices.
REF 10k 10k 10k 20k 20k 20k 20k 20k S-1 S-2 S-3 S-N BIT 1 (MSB) BIT 2 BIT 3 BIT N (LSB) 10k I OT2 I OT1 I FEEDBACK Rys.1. proszczony schemat przetwornika C/A 3. Przetworniki analogowo-cyfrowe Przetwornik analogowo-cyfrowy dostaje na wejście sygnał analogowy (najczęściej napięcie) i przetwarza go na zakodowaną postać cyfrową. Przetwarzanie A/C polega na przyporządkowaniu wartości napięcia wejściowego we odpowiedniej wartości kodu cyfrowego N x w postaci stanów logicznych 0 lub 1. Dla napięć unipolarnych możemy zapisać przybliżone równanie przetwarzania jako: we N x (2) N gdzie: - napięcie odniesienia N - zakres przetwarzania równy wartości gdy wszystkie bity są ustawione jako 1. 3.1 Przetwornik analogowo-cyfrowy z sukcesywną aproksymacją (kompensacji wagowej) Działanie tego typu przetwornika polega na sukcesywnym równoważeniu napięcia przetwarzanego we z napięciem wyjściowym k generowanym za pomocą przetwornika C/A doprowadzając stopniowo do tego aby we - k =0. W praktyce różnica ta nie osiąga wartości 0 ze względu na skończoną rozdzielczość przetwornika. Schemat blokowy takiego przetwornika został przestawiony na rysunku 2. W przetworniku z sukcesywną aproksymacją napięcie wejściowe we jest porównywane z napięciem odniesienia zwiększanym kolejno o wartości wagowe,,, itd. Jeżeli 2 4 8 napięcie wejściowe we jest większe od kolejnej wartości wagowej to ustawiany jest dany bit jako 1 a jeżeli jest mniejsze od to ustawiamy bit jako 0 po czym przechodzimy do kolejnego porównania z kolejną załączoną wartością wagową. Przebieg procesu przetwarzania przedstawia rysunek 3. Bity będą ułożone w kolejności od najbardziej znaczącego MSB do
najmniej znaczącego LSB. Po wykorzystaniu pełnej rozdzielczości przetwornika zwykle okazuje się, że pozostaje niewielka wartość napięcia, której nie jesteśmy w stanie zrównoważyć - jest to konsekwencja błędu kwantowania. koniec przesuwania start wpis przesuwania "1" u(t ) j k K układ sterujący f 0 generator kasuj rejestr przesuwny a 1 a k a k+1 rejestr wyjściowy b k+1 b 1 b k N przetwornik C/A Rys.2. proszczony schemat przetwornika A/C z sukcesywną aproksymacją k 1 2 u(t ) j 1 2 3 4 b 1=1 b 2=0 b 3=1 b 4=1 Rys.3. Przebieg procesu przetwarzania A/C w przetworniku z sukcesywną aproksymacją W przetworniku z sukcesywną aproksymacją trzeba zadbać o to, aby napięcie przetwarzane nie ulegało zmianie przez cały czas przetwarzania - w przeciwnym razie kolejne wartości napięć wagowych będą porównywane z inną wartością napięcia wejściowego co będzie prowadzić do trudnego w określeniu błędu przetwarzania. Aby uniknąć zmian napięcia wejściowego w czasie pracy przetwornika stosuje się na jego wejściu przetwornik próbkująco-pamiętający. 3.2 Przetwornik analogowo-cyfrowy z podwójnym całkowaniem W metodzie tej ładujemy kondensator C przez określony czas prądem, którego natężenie proporcjonalne jest do wartości napięcia wejściowego. W drugim etapie kondensator jest rozładowywany prądem o stałej wartości do 0. Czas rozładowania kondensatora jest proporcjonalny do wartości napięcia wejściowego i w tym czasie zliczane są impulsy t T 0
generatora zegarowego przez licznik. proszczony schemat blokowy przetwornika z podwójnym całkowaniem przestawiony jest na rysunku 4. we R C - REF W K KŁAD STEROWANIA LICZNIK GENERATOR ZEGAROWY BIT 1 BIT N (MSB) (LSB) Rys. 4. proszczony schemat blokowy przetwornika z podwójnym całkowaniem Przebieg napięcia podawanego na wejście komparatora w czasie pełnego cyklu pracy przetwornika z podwójnym całkowaniem pokazany jest na rysunku 5. t T p T x t 1 t 2 t 3 Rys. 5. Przebieg napięcia na wejściu komparatora w czasie pracy przetwornika z podwójnym całkowaniem Możemy napisać równanie bilansu ładunku na integratorze: 1 RC t2 t1 we dt 1 RC t3 t2 dt (3) Po uproszczeniach i podstawieniu T p i T x otrzymujemy: Tp T x 0 we dt 0 dt (4)
co dalej daje nam zależność: x T p = T x (5) co możemy napisać w postaci: x Tx Tp (6) przy czym wartości T p i są ustalone. Wynika z tego, że czas zliczony przez licznik jest proporcjonalny do wartości napięcia wejściowego. Przetwornik z podwójnym całkowaniem jest przetwornikiem uśredniającym więc zmiany napięcia wejściowego w czasie przetwarzania zostają uśrednione. Jeżeli mamy do czynienia ze zmiennym przebiegiem zakłócającym to w przypadku gdy jego okres jest równy czasowi przetwarzania to takie zakłócenie zostanie skutecznie wytłumione. Wykorzystując tą zaletę buduje się przetworniki o dobranym czasie przetwarzania tak aby wytłumiały przebieg o częstotliwości sieciowej 50Hz (lub też 60Hz w SA i Japonii). Wadą jest długi czas przetwarzania. Porównanie obu typów przetworników analogowo-cyfrowych zostało przestawione w tabeli 1. Tabela 1. Porównanie przetworników A/C typu podwójne całkowanie (Dual slope) i z sukcesywną aproksymacją (Successive approximation) metoda podwójne całkowanie sukcesywna aproksymacja szybkość niska (1-10 próbek/s) wysoka (10-10 5 próbek/s) rozdzielczość wysoka (3-6 cyfr, 10-20 bitów) średnia (8-12 bitów) niedokładność bardzo dobra (mniejsza niż 0,01%) dobra (typowo 0,1%) tłumienie zakłóceń bardzo dobre (uśrednianie całkowaniem) brak - konieczna wcześniejsza filtracja typowe zastosowanie multimetry cyfrowe (DMM) cyfrowe przetwarzanie sygnału (DSP) 4 Błędy przetwarzania cyfrowo-analogowego i analogowo-cyfrowego Błąd przetwarzania cyfrowo-analogowego możemy wyrazić zależnością: wy = + ins (2) gdzie: - błąd napięcia odniesienia ins - błąd instrumentalny Na błąd instrumentalny składają się: - błąd zera polegający na przesunięciu charakterystyki rzeczywistej w punkcie 0, prosta zamiast równania y=ax ma równanie y=ax+b, - błąd skali polega na złym kącie nachylenia charakterystyki względem charakterystyki idealnej - wartości są zawyżane lub zaniżane względem rzeczywistych, - błąd nieliniowości powodujący odchylanie charakterystyki przetwarzania od liniowej, wyraża się go jako stosunek maksymalnego odchylenia do maksymalnej wartości dopasowywanej - błąd niemonotoniczności przetwarzania, poszczególne punkty nie leżą na idealnej charakterystyce przetwarzania tylko nad lub pod nią.
W przypadku przetwarzania analogowo-cyfrowego błąd przetwarzania możemy określać podobnie: wy = + kw + ins (4) gdzie dodatkowo kw oznacza błąd kwantowania polegający na tym, że wartość mierzona jest zaokrąglana do wartości wynikającej z rozdzielczości przetwornika. 5 Wykonanie ćwiczenia 5.1 Napisać program realizujący algorytm przetwarzania analogowo-cyfrowego z kolejnym porównaniem SAR, który będzie sterował pracą modelowego przetwornika udostępnionego na stanowisku. Pomoc do napisania programu stanowi dodatek Wykonanie ćwiczenia zamieszczony na końcu instrukcji. 5.2 ruchomić program symulujący działanie przetwornika z podwójnym całkowaniem dualslope.vi. Zadając napięcie wejściowe obserwować jak zachowuje się napięcie wyjściowe, którego wartość możemy obliczyć korzystając z zależności: licznik wy (2) 20000 5.3 Sprawdzić jak zachowuje się przetwornik w obecności sygnału zakłócającego o różnych parametrach amplitudzie i częstotliwości. 5.4 żywając podprogramu dslope.vi zbudować aplikację testującą badany przetwornik i wykonać badanie jak w punkcie 4.3. i 4.4. Porównać otrzymane zależności z wielkościami uzyskanymi za pomocą przetwornika z sukcesywną aproksymacją. Wykonanie ćwiczenia 1.Sterowanie przetwornikiem DAC (cyfrowo-analogowym) z poziomu programu napisanego w środowisku LabView. Należy napisać aplikację, która umożliwi ręczne sterowanie ośmiobitowym wejściem przetwornika cyfrowoanalogowego, stanowiącego część składową fizycznego modelu przetwornika analogowo-cyfrowego z kolejnym przybliżaniem (SAR) udostępnionego na stanowisku. Model ten połączony jest z portami cyfrowymi modułu akwizycji danych (DAQ) NI6009, a przez łącze SB z komputerem, który będzie realizował algorytm zapisany w tworzonym programie. Najprostszy program musi zapewnić ciągłe wysyłanie stanu bitów sterujących D0-D7 z panelu operatora (Front Panel) do modułu NI6009, który ustawi je na wejściu przetwornika DAC oraz odczyt stanu logicznego jednego wejścia NI6009 do którego dołączone jest wyjście komparatora (elementu elektronicznego porównującego dwa napięcia i ustawiającego stan logiczny 0 lub 1 na wyjściu, zależnie od wyniku porównania 1>=2, 1<2). Procedurę współpracy aplikacji z modułem DAQ buduje się w LabVIEW za pomocą kreatora DAQAssistant pobranego z biblioteki Express>Input. Po otworzeniu kreatora przeciągniętego na Block Diagram należy wybrać opcję Digital I/O i Line Output, a w oknie Supported Physical Chanels wybrać wszystkie linie portu0 wybierając je klikając z klawiszem <CTRL>, po czym zakończyć konfigurację wyjść klawiszem Finish. W następnym oknie pojawią się nazwy linii Digital Out 0-7, które należy zmienić na nazwy odpowiadające fizycznym wejściom przetwornika D0-D7. Można to wykonać klikając prawym klawiszem myszy na starej nazwie i wybierając z menu Rename. W oknie Task Timing należy wybrać opcję wysyłania jednego bajtu na żądanie (1 Sample on demand). Po wykonaniu konfiguracji zamykamy kreator procedury obsługi OK. Na Block Diagramie zbuduje się procedura reprezentowana przez ikonę o nazwie DAQAssistant z wejściem data typu boolean (kolor zielony) do którego należy dołączyć zmienną sterującą w postaci tablicy ośmiu stanów logicznych odpowiadających bitom D0-D7. Najprościej wykonuje się to kursorem szpulki,przesuniętym na wejście data, po otworzeniu prawym
klawiszem menu i wybraniu opcji Create>Control. Automatycznie utworzy się odpowiednia tablica z ośmioma stanami logicznymi symbolizowanymi przez okrągłe lampki, których kolor zielony oznacza stan 1 zaś czarny stan 0. Klikanie na Front Panel na poszczególne lampki w tablicy zmienia ich kolor i pozwala na ustawienie stanu logicznego bitów D0-D7 w przetworniku DAC. Aby odczytać stan wyjścia komparatora trzeba wywołać drugi raz ten sam kreator DAQ Assistant, umieścić go na diagramie i skonfigurować wejście wybierając Digital I/O>Line Input>Port1/line0 i zakończyć Finish. Można zmienić nazwę linii wejściowej i nazwać ją Komparator oraz wybrać opcję 1Sample. Naciśnięcie OK. zakończy tworzenie procedury odczytu stanu wyjścia komparatora dołączonego do wejścia Port1/line0 modułu DAQ. Procedura w postaci ikony, tak jak opisano wcześniej, wyprowadzi teraz zmienną logiczną data (kolor zielony). Należy utworzyć na wyjściu data indykator, tak jak to opisano wcześniej, wybierając z menu rozwiniętego po prawym kliknięciu myszy, opcję Create>Indicator. Wyświetlacz przyjmie postać ośmiobitowej tablicy (jest tu nieścisłość w pracy kreatora ponieważ konfiguracja dotyczyła jednej linii portu1) więc należy przeciągnąć dolną lub prawą krawędź tablicy i zwinąć ją do jednego elementu w postaci lampki o indeksie 0. Stan wyjścia komparatora będzie teraz odpowiadał kolorowi lampki zielony<=>1, czarny<=>0. Tablicę tę można nazwać komparator zmieniając nazwę etykiety-label (dwukrotne kliknięcie i wpisanie w zaczernione pole nowej nazwy). Tak przygotowane procedury są elementami które posłużą do napisania prostego programu wysyłającego bity sterujące D0-D7 do modelu przetwornika i odczytującego aktualny stan komparatora znajdującego się w nim. Należy samodzielnie zbudować program, który w sposób ciągły będzie sterował pracą przetwornika DAC, na podstawie stanu bitów znajdujących się na Front Panelu w tablicy D0-D7, oraz będzie odczytywał stan wyjścia komparatora i pokazywał go na wyświetlaczu nazwanym Komparator. Aktualizacja stanu przetwornika i komparatora powinna się odbywać co 0,2s. Po zbudowaniu programu należy go uruchomić pojedynczą strzałką lub <CTRL+R> i zmierzyć, za pomocą woltomierza, napięcie na wyjściu przetwornika DAC (w modelu wyjście F, przełącznik w pozycji DAC), ustawiając kolejno bity : D7=1 a pozostałe w stan 0, D6=1 a D7 i pozostałe w stan 0 i.t.d. Zanotować wartości napięć odpowiadające ustawieniu tylko jednego bitu na poszczególnych wejściach przetwornika DAC i wyciągnąć wnioski wiedząc, że napięcie wzorcowe doprowadzone do tego przetwornika wynosi 10V. Przewidzieć a następnie sprawdzić na modelu wartość napięcia w przypadku gdy kilka, dowolnie wybranych, wejść przetwornika jest ustawionych w stan 1 a pozostałe w stan 0. 2.Program realizujący sterowanie przetwornikiem analogowo-cyfrowym ADC z kolejnym przybliżaniem (SAR). Korzystając z procedur utworzonych i sprawdzonych w punkcie1 zbudować samodzielnie program sterujący pracą przetwornika ADC, taki, aby efektem jego działania był ośmiobitowy kod binarny, dziesiętny,szesnastkowy, reprezentujący wartość napięcie (wielkości analogowej) doprowadzonego do wejścia przetwornika ADC j. Napisanie takiego programu nie powinno nastręczać problemów po zapoznaniu się ze schematem przetwornika ADC naklejonym na modelu, a wyjaśnienia może wymagać odczyt stanu komparatora. Procedura odczytująca stan wyjścia komparatora zbudowana w punkcie1 wyświetla element o indeksie 0 z ośmioelementowej tablicy boolowskiej. Na potrzeby wyświetlacza wystarczyło ukryć pozostałe elementy zaś w przypadku gdy trzeba odczytać stan bitu B0 (wyjście komparatora) należy użyć odpowiedniej funkcji z biblioteki Programing>Array, która pobierze z tablicy element o zerowym indeksie (bit B0-stan wyjścia komparatora ). Aby możliwe było obserwowanie w zwolnionym tempie realizacji algorytmu sterowania należy przewidzieć w programie wyświetlanie stanów bitów sterujących D0-D7 i stanu komparatora w każdym kroku przybliżania oraz zapewnić stosowne opóźnienia. Funkcję opóźnienia można pobrać z biblioteki Express>ExecControl. Po napisaniu programu ustawić przełącznik w pozycji ADC, ustawić za pomocą potencjometru dowolną wartość napięcia i dołączyć jego wyjście do wejścia przetwornika ADC (zworka łącząca suwak potencjometru z wejściem ADC połączone B z C). ruchomić zbudowany program sterujący. Obserwować stany wejść D0-D7 przetwornika DAC ustawiane w programie i stan wyjścia komparatora w celu oceny poprawności zrealizowanego algorytmu przetwarzania. Po wykonaniu przetworzenia zanotować otrzymane kody. Należy zmierzyć za pomocą woltomierza wartości napięć na wejściu przetwornika ADC (zworka łącząca suwak potencjometru z wejściem, połączone B z C, przełącznik w pozycji ADC ) oraz na wyjściu przetwornika DAC (wyjście F, przełącznik w pozycji DAC), odpowiadające kodowi (bajtowi) otrzymanemu w wyniku przetworzenia. Wyciągnąć wnioski z wyników pomiarów obu napięć i ocenić poprawność zapisanego w programie algorytmu sterowania pracą przetwornika ADC.