Jakub WILK 149500 Wrocław 12.06.2009
Podstawy i Algorytmy Przetwarzania Sygnałów
Ćwiczenie 7: Zastosowanie mikroprocesorów w analizie i przetwarzaniu sygnałów
Prowadzący:
Dr inż. Jacek Ziemba
1. Zastosowanie mikroprocesorów w analizie sygnałów
Rozwój technologii mikroprocesorów w ostatnich latach umożliwił szereg zastosowań mikrokontrolerów w analizie sygnałów. Specjalna gałąź procesorów typu DSP (ang. Digital Signal Processor) została stworzona w celu szybkiej analizy oraz przetwarzania sygnałów cyfrowych. Większość czujników pomiarowych generuje sygnał analogowy, w postaci standardowego sygnału napięciowego bądź prądowego. Ponieważ operacje cyfrowe na analogowym sygnale nie są możliwe, potrzebny jest przetwornik analogowo -cyfrowy, przekształcający odczytywaną wartość sygnału na postać liczby binarnej, zrozumiałej dla komputera. Odczytywane sygnały mogą być zmiennymi wejściowymi dla systemu sterowania, opartego na mikroprocesorze, lub być przechowywane w pamięci w celu późniejszej analizy.
2. Przetwornik analogowo cyfrowy - zasada działania
Przetwornik A/C nie robi nic skomplikowanego. Jego zadaniem jest przypisanie zmierzonej wartości odpowiedniego ciągu bitów, kodującego tą wartość w kodzie binarnym. Ważną sprawą jest rozdzielczość przetwornika. Decyduje ona o dokładności z jaką kodowana jest odczytana wartość.
Przebieg konwersji jest następujący:
- Na podstawie najbardziej znaczącego bitu, obliczana jest wartość zakodowana przez jedynkę na tym miejscu . Na przykład dla 10-bitowego przetwornika wartość kodowana przez najbardziej znaczący bit to Vref/210 *29, przy czym Vref to napięcie referencyjne. Po obliczeniu tej wartości, jest ona porównywana ze zmierzoną na wejściu wartością. Jeśli wartość mierzona jest większa od obliczonej, do rejestru przechowującego dane z konwersji na pierwsze miejsce wystawiana jest jedynka. W drugim przypadku wstawiane jest zero.
- W kolejnym kroku oblicza się wartość zakodowaną przez jedynkę na kolejnym miejscu w rejestrze. Wartość ta jest sumowana z poprzednio zakodowanymi wartościami i ponownie porównywana z wartością mierzoną. Algorytm zapisu jest analogiczny do pierwszego kroku.
- Operacja jest powtarzana dla kolejnych miejsc w rejestrze. Po skończeniu konwersji w rejestrze zawierającym dane, pozostaje liczba binarna, będąca cyfrową reprezentacją sygnału analogowego. Przykładowo dla Vref = 3V, liczba 1100000000 oznacza 1,5V + 0,75V = 2,25V.
3. Czujniki o nieliniowych charakterystykach
Mikrokontrolery pozwoliły na zastosowanie czujników pomiarowych o nieliniowych charakterystykach. Do tej pory używanie ich było utrudnione ze względu na problem w interpretacji wyniku pomiaru. Za pomocą mikroprocesora można zaimplementować algorytm pomiaru oraz przeliczenie wyniku według empirycznie uzyskanej charakterystyki.
Przykładem był optyczny czujnik przemieszczenia, badany na laboratorium. Zmierzono jego charakterystykę:
Tabela1. Wyniki pomiaru zależności napięcia na czujniku, od odległości przedmiotu badanego
Odległość |
Napięcie |
[cm] |
[V] |
20 |
2,52 |
22 |
2,4 |
26 |
2,14 |
30 |
1,95 |
35 |
1,7 |
43 |
1,5 |
45 |
1,35 |
50 |
1,2 |
55 |
1,1 |
60 |
1 |
65 |
0,97 |
70 |
0,85 |
75 |
0,79 |
80 |
0,75 |
85 |
0,71 |
90 |
0,66 |
95 |
0,63 |
100 |
0,59 |
Wyk1. Charakterystyka czujnika wraz z aproksymacją wielomianową
Na podstawie aproksymacji wielomianem trzeciego rzędu otrzymano następująco charakterystykę.
X = -4-6*U3 + 0,001U2 - 0,099U + 4,125
X - odległość w cm, U - napięcie w V
4. Realizacja prostego programu pomiarowego
Poniżej przedstawiony został algorytm realizacji prostego programu, który mierzy odległość przedmiotu od czujnika i wyświetla dane na wyświetlaczu. Program ten był pisany na procesorze typu ARM, będącym na wyposażeniu laboratorium Zakładu Inżynierii Biomedycznej i Mechaniki Eksperymentalnej
a) Obliczenie parametrów konwersji
Na podstawie impedancji czujnika oraz zadanego taktowania zegara obliczamy wartości pól bitowych odpowiadających za wartości czasu Sample&Hold, Startup oraz Prescaler. Obliczenia te różnią się nieco w zależności od procesora. Czas Sample&Hold jest czasem, który przetwornik potrzebuje na odczytanie wartości dla komparatora, Startup jest czasem który jest potrzebny do rozpoczęcia konwersji, a Prescaler wartością, przez którą dzielone jest taktowanie procesora. Wszystkie te dane, pozwalają określić ile będzie trwała jedna konwersja, co z kolei określa częstotliwość próbkowania jaką można osiągnąć przy określonym czujniku i procesorze.
b)Ustawienie kanałów i rozpoczęcie konwersji
Należy włączyć dostęp do głównego zegara, dla przetwornika oraz określić który z kanałów przetwornika będzie włączony do odczytu. Kolejnym krokiem jest ustawienie parametrów działania przetwornika (sleep mode, konwersja 8 lub 10 bit itd.), które zależą od tego, z jakim procesorem mamy do czynienia. Rozpoczęcie konwersji odbywa się przez wysłanie wartości jeden na odpowiedni pole bitowe rejestru kontrolnego przetwornika. Istnieje też możliwość zaprogramowania sprzętowego sygnału rozpoczęcia konwersji.
c) Odczytywanie danych
Po starcie konwersji, program musi czekać, aż przetwornik zakończy pierwszą konwersję. Aby to zrobić, wystarczy zaprogramować pustą pętlę, wykonującą się pod warunkiem, że nie ma sygnału końca konwersji. Po zakończeniu konwersji wystarczy odczytać dane z rejestru z danymi, nastąpi wtedy automatyczne skasowanie zawartości rejestru.
d) Wyświetlenie danych
Uzyskane z konwersji dane należy przeliczyć według charakterystyki czujnika, na wartość użyteczną. Dysponując wynikiem, zazwyczaj musimy jeszcze przekonwertować do na łańcuch znaków, w celu wysłania go do wyświetlacza.
Ten prosty algorytm zazwyczaj implementuje się wewnątrz nieskończonej pętli, tak aby uzyskiwać wyświetlanie wyniku w czasie rzeczywistym. W takim wypadku po skończeniu wyświetlania należy dodać żądane opóźnienie, aby szybkość z jaką zmienia się wynik była zauważalna dla ludzkiego oka, oraz możliwa do uzyskania biorąc pod uwagę inercję układu wyświetlacza.