Sonar ultradźwiękowy
Transkrypt
Sonar ultradźwiękowy
Koło Naukowe Robotyków „KoNaR”
Sonar ultradźwiękowy
Jan Kędzierski
Wrocław. 04.04.2006
Spis treści
1.
2.
3.
4.
5.
6.
7.
Cel projektu..…………………………………………………….….. 3
Wstęp…………………………………………………………….….. 3
Układ nadawczy……………………..…………………………….… 4
Układ odbiorczy……………………………………………………... 8
Pomiar………………………………………………………….……. 13
Podsumowanie………………………………………………………. 17
Załącznik…….………………………………………………………. 18
2
1.Cel projektu
Celem projektu było skonstruowanie modułu sonarów ultradźwiękowych, pozwalającego na
pomiar odległości oraz położenia obiektów w przestrzeni działania robota, który byłby
zaopatrzony w zaprojektowany czujnik.
2.Wstęp
Pomiar odległości ultradźwiękami jest pomiarem pośrednim. Polega on na wyemitowaniu kilku
impulsów o określonej częstotliwości, a następnie zmierzeniu czasu powrotu od napotkanego
obiektu [Rys.1]. Ważne jest by zastosowane do pomiaru nadajniki sygnału i odbiorniki były
odpowiednio selektywne i właściwie dobrane. Dzięki temu sygnał odbierany przez odbiornik, nie
będzie wymagał dodatkowej filtracji. Na rynku dostępnych jest sporo gotowych rozwiązań
układów ultradźwiękowych. Jednakże prawie każde gotowe rozwiązanie zawiera w sobie
mikrokontroler, który mierzy czas oraz generuje niezbędne do wykonania pomiaru sygnały.
Ponieważ w większości docelowych projektów stosuje się centralny mikrokontroler, w celu
obniżenia kosztu całości zdecydowano opracować jedynie układy do sterowania odbiornikiem i
nadajnikiem ultradźwięków.
Jednostką centralną tego układu może być dowolny mikrokontroler, do testów użyto
mikrokontroler Motorola MC68332. Użycie tego kontrolera nie było do końca trafnym wyborem,
ponieważ jest to jednostka dość droga i rozbudowana, a w tym przypadku wystarczający byłby
mikrokontroler wyposażony w PWM (pulse width modulation) oraz funkcje IC (input capture).
Fot 1. Widok z przodu
3
3.Układ nadawczy
Schemat 1 Schemat ideowy nadajnika
W układzie nadawczym została zastosowana cewka z odczepem [Fot.2], która posłużyła do
powielenia napięcia, którym pobudzany jest nadajnik, oraz razem z pojemnością nadajnika i
rezystorem tworzą układ rezonansowy [Schemat 1]. Rolą rezystora R5 jest zmniejszenie dobroci
układu rezonansowego jak również szybkie wytłumienie oscylacji po ustaniu kluczowania
tranzystora T3. Tranzystor T3 powinien być tranzystorem o zwiększonej mocy np. BD140.
Dławik został wykonany przez nawinięcie 2x110 zwojów drutem 0,2mm i umieszczeniu ich w
rdzeniu o średnicy zewnętrznej 14mm i wysokości 8mm oraz stałej rdzenia 200nH/zw2. Rdzeń
został wykonany z materiału F2001. Do obliczenia wymaganej liczby zwojów można posłużyć
się wzorem:
N = L / AL
gdzie N - ilość zwojów
L - indukcyjność (9mH)
AL - stała rdzenia
Ponieważ większość mikroprocesorów ma po restarcie stany wysokie, układ został
nieco zmodyfikowany o dołączenie tranzystora T1, co pozwoliło na ustalenie jako aktywnego,
stan niski [Schemat 1].
4
Rys.1 Przykładowe przebiegi sygnału pobudzającego cewkę. (10 impulsów, pomiar na wejściu
czujnika)
Fot 2. Widok cewki
5
Poniżej przedstawiono przebiegi napięć na odczepie oraz na wyjściu cewki [Rys2]. Można
zaobserwować, że nie do końca została prawidłowo wykonana cewka. Sygnał powinien być
„bliższy” sygnałowi klucza. Spowodowane może być to tym, że w naszym projekcie celowo
odczep wypuszczono wcześniej niż jak opisano powyżej. Uzyskaliśmy dzięki temu większe
napięcia na nadajniku. Nie jest to jednak prawidłowa droga postępowania. Cewkę zaleca się
wykonać prawidłowo z odczepem w środku. Daje to również zadawalające efekty.
Rys.2 Przebiegi napięć na odczepie oraz na wyjściu cewki.
Zasięg dalmierza zbudowanego w oparciu o wyżej opisaną cewkę wynosił ok. 3m. Gdy
cewka zostanie wykonana prawidłowo i zwiększy się ilość impulsów emitowanych z nadajnika
zasięg ten można zwiększyć do max 6m.
Wadą powielacza okazała się trudna w wykonaniu wyżej opisana cewka. Nie łatwy był również
zakupu rdzenia. Prościej jest zbudować przetwornice pojemnościową lub wykorzystać gotowe
układy powielające np. MAX232 [5] [Schemat 2] stosowany do budowy interfejsów RS232.
Układy te jednak posiadają słabe parametry i napięcie na ich wyjściu „przysiada” w trakcie
pracy. Nieco lepszym rozwiązaniem jest układ ST232CD charakteryzuje się on trochę lepszą
wydajnością prądową.
Przypadku gdy istnieje potrzeba wykonania pomiarów z bardzo krótkiej odległości do
0,5-1m (np. Roboty Minisumo) możemy pobudzać nadajnik jedynie 5V. Daje to zupełnie
zadawalające efekty zwłaszcza jeśli zasilanie baterii jest większe niż zasilanie pozostałych
układów urządzenia. W trakcie badań posłużono się bateria 7,4V dodatkowo użyto wzmacniacza
z wyjściami Rail-To-Rail, które to dostarczały do nadajnika napięcie odpowiadające napięciu
zasilania. Aby zapewnić szybkie przełączanie się wyjścia, wzmacniacz pracuje w układzie
komparatora [Schemat 3]. Układ należy tak zaprojektować, aby stan aktywny na wyjściu był
stanem wysokim. W innym przypadku pojemność nadajnika będzie stale naładowana, a
amplituda drgań bardzo mała.
6
Schemat 2 Przykład nadajnika na układzie MAX232
(przetwornica pojemnościowa).
Schemat 3 Przykład nadajnika bez powielacza napięcia.
Układ zasilany bezpośrednio z baterii.
7
4.Układ odbiorczy
Pierwsze dwa elementy kaskady widoczne na układzie tworzą wzmacniacz wejścia [Schemat 4].
Pierwszy z nich pracuje w pętli ujemnego, zmiennoprądowego sprzężenia zwrotnego (C1 i R1).
Aby układ odczulić na wysokie częstotliwości równolegle z rezystorem R2 wpięto kondensator
C3 rzędu piko-faradów. Kondensator można wlutować tuż obok lub nad rezystorem R2. Element
C2 powinien mieć wartość w granicach 300p-10nF. Mała wartość może delikatnie skrócić zasięg
ale skutecznie odkłóca układ wejściowy od mechanicznych drgań. Ostatni wzmacniacz pracuje w
układzie komparatora, dzielnik rezystorowy R3 i R4 ustala próg progowania. Zwiększając
rezystor R4 zwiększamy czułość układu co za tym idzie, również i zasięg. Wartość ta powinna
być w granicach 1-2k Ohm. Rezystor R rzędu mega-omów zapobiega wahaniom komparatora
(histereza). Rezystor ten nie jest uwzględniony w projekcie płytki znajdującej się w dalszej części
raportu. Do budowy toru odbiornika użyto łatwo dostępny układ TLC274C (zintegrowane 4
wzmacniacze w jednym układzie, pasmo 2MHz) [Schemat 2]. Należy pamiętać aby czwarty
wzmacniacz układu miał zwarte wejścia do masy. Ważne jest również aby kondensator C był jak
najbliżej układu wzmacniaczy.
Jak widać na zdjęciu [Fot.1] użyto nadajnika i odbiornika o średnicy 16mm. Nadajniki tej
średnicy charakteryzują się dużym wzmocnieniem ponad 119dB w porównaniu do 12mm
(110dB). Zwiększa to oczywiście masę całego czujnika zatem decydując się na zainstalowanie
czujnika w konstrukcjach Mini-Sumo wystarczą nawet te 10mm (110dB). Wzmocnienie
odbiorników również wzrasta gdy wybierzemy przetworniki o większej średnicy. Dla
odbiorników 16mm wynosi -65dB, dla 12mm i 10mm -70dB. Warto pamiętać aby w trakcie
lutowania przetworników ultradźwiękowych zachować szczególną ostrożność. Ich nadmierne
podgrzewanie i naginanie wyprowadzeń może doprowadzić do pogorszenia parametrów, a co
gorsza do ich całkowitemu uszkodzeniu.
Niestety w momencie wysyłania szeregu sygnałów, nadawane fale są słyszalne dla
odbiornika, ponieważ układ jeszcze przez chwile rezonuje, i drgania te są przechwytywane przez
odbiornik. W celu eliminacji tego problemu odbiornik zaczyna nasłuchiwać dopiero po
odczekaniu pewnej chwili od nadawania. Realizuje się to programowo. Sygnał nadawany, jest to
kilka impulsów, zwiększenie ilości impulsów zdecydowanie poprawia zasięg, ale powoduje to
wydłużenie strefy martwej, ponieważ wydłuża się czas odczekiwania odbiorników na
wygaśnięcie drgań układu. Innym problemem w trakcie budowy okazało się podwójne echo
[Rys.6]. Niestety nie zdołano wyjaśnić skąd ono pochodzi. Można jedynie przypuszczać, że
prawdopodobnie pierwsze zakłócenie pochodzi bezpośrednio od nadajnika, a drugie odbija się od
odbiornika znajdującego się po drugiej stronie nadajnika. Wyeliminowanie zjawiska zostało
zrealizowano na 2 sposoby: odpowiednie nachylenie odbiornika względem nadajnika oraz
zmniejszenie czułości układu na komparatorze.
Na rysunku 7 pokazano widmo sygnału odebranego przed odbiornik. Pomiaru dokonano
na wyjściu 1-go wzmacniacza tak aby sygnał nie był zakłócony przez przewody i sondy
oscyloskopowe. Wyraźnie widać prążki sygnału częstotliwości 40kHz czyli takiej z jaką pracuje
nadajnik.
Dodatkowo zadecydowano o rozbudowie czujnika o dodatkowy identyczny tor
odbiornika, co zwiększyło precyzje pomiaru, oraz umożliwi śledzenie przeciwnika na ringu
(wykorzystanie w robocie sumo).
8
Schemat 4 Schemat ideowy pojedynczego odbiornika
Fot 3. Widok płytki odbiornika (bark jednego układu i kilku elementów pomocniczych)
Rys 3. Projekt płytki odbiornika
9
Rys.4 Przebiegi napięć zmierzone na wyprowadzeniach odbiornika (obiekt znajdował się o
odległości 20cm).
Rys.5 Przebiegi napięć zmierzone na wyprowadzeniach odbiornika (obiekt znajdował się
nieco dalej). Można rozróżnić dwie serie odbitych od obiektu impulsów.
10
Rys.6 Podwójne echo sygnału emitowanego przez nadajnik (pomiar na wejściu i wyjściu
czujnika)
11
Rys.7 Od góry, przebieg zmierzony na wyjściu 1-go wzmacniacza, następnie analizując
wykres uzyskano składowe (widmo) odebranego sygnału.
12
5.Pomiar.
Pomiar przeprowadzany za pomocą sonarów jest pomiarem
pośrednim. Nadajnik emituje fale akustyczne o częstotliwości ok.
40 kHz . Niestety prędkość fali rozchodzącej się w powietrzu
napotyka na szereg problemów związanych z ciśnieniem,
temperaturą oraz skład chemiczny powietrza. Fala która
ewentualnie odbije się od napotkanej przeszkody wraca i jest
przechwytywana przez odbiornik. Dzięki temu możemy w prosty
sposób obliczyć odległość do obiektu ze wzoru:
L=v*dt/2
Gdzie :
L –odległość od przedmiotu
V – prędkość dźwięku
Dt – zmierzone opóźnienie sygnału
Rys.8 Charakterystyki nadajnika i odbiornika
W trakcie testów zasięgu czujnika obiektem badanym, tym od którego odbijał się nadawany
sygnał, była ściana pomieszczenia. Są to oczywiście bardzo dogodne warunki. Niestety podczas
badania czujnika z różnymi obiektami (nieregularne bryły) zasięg okazał się nieco gorszy. Sygnał
powracający od odbitego obiektu był za słaby i nie do wykrycia. Problemem nie do rozwiązania
okazały się powierzchnie znajdujące się pod kątem do czujnika [Rys. 9] Sygnał odbijał się od
obiektu ale nie wracał w pole „widzenia” odbiorników [Rys. 8].
Rys. 9 Przykład błędnego działania czujnika – odbity sygnał nie dociera w pole „widzenia”
odbiorników
13
Rys.5
Rys.10 Oto przebiegi czasowe pokazujące sygnał wysłany oraz odebrany, widać tu jako
pierwsze (od lewej przebieg koloru niebieskiego) drgania na obudowie następnie echo
sygnału nadanego oraz właściwy odbity od obiektu sygnał. (pomiar na wejściu i wyjściu
czujnika)
Rys.11 Podobny pomiar jak wyżej tylko, że dla dwóch kanałów (pomiar na wejściu i
wyjściu czujnika)
14
Rys.12 Przebiegi czasowe kanału nadawczego i odbiorczego dla obiektu umiejscowionego
w większej odległości ok. 1,5m (pomiar na wejściu i wyjściu czujnika)
Rys.13 Przebiegi czasowe kanału nadawczego i odbiorczego dla obiektu umiejscowionego
bardzo blisko ok. 10cm. Wyraźnie widać, że sygnał odebrany jest w 100% a nawet nieco
szerszy co jest spowodowane wielokrotnym odbiciem. (pomiar na wejściu i wyjściu
czujnika)
15
Rys.14 Charakterystyka kilku pomiarów wykonywanych jeden po drugim w równych
odstępach czasu. Dolny przebieg (niebieski) przedstawia w pierwszej kolejności echo a
następnie sygnał powracający od odbitego obiektu. (pomiar na wejściu i wyjściu czujnika)
16
6. Podsumowanie
W trakcie realizacji projektu najwięcej problemów przysporzył układ odbiorczy. Najtrudniejszym
z zadań było wyeliminowanie zakłóceń oraz dobranie czasów oczekiwania na nasłuch. Należy
zwrócić szczególną uwagę aby obydwa układy odbiorcze miały identyczny rozstaw elementów.
Układ nadawczy powinien być w miarę możliwości odseparowany od układów odbiorczych,
dobrym rozwiązaniem okazało się umieszczenie w.w. modułów na osobnych płytkach. Do
układy zaprojektowanego w tym projekcie można wprowadzić jeszcze wiele usprawnień.
Chociażby wprowadzając dynamiczne progowanie, które wraz z upływem czasu maleje. Jeżeli
zależy nam na większym zasięgu, a mniej istotne są pomiary obiektów znajdujących się w
pobliży sonaru, należy zwiększyć ilość impulsów wysyłanych przez nadajnik. Zwiększenie
pojemności kondensatora C1 również poprawia zasięg, niestety kosztem strefy martwej.
Projekt miał na celu głównie pokazanie, że w domowych warunkach jest możliwe
wykonanie czujnika o równie dobrych parametrach jak te gotowe, które możemy zakupić w
sklepie. Oczywiście wymaga to poświęcenia czasu na precyzyjne dobranie elementów. W
prawdzie układ złożony w sposób pokazany wyżej od razu powinien działać to warto sprawdzić
czy istnieje jeszcze możliwość poprawy zasięgu zmieniając np. wartość progowania. Z drugiej
strony gotowe układy mają już w sobie zintegrowane szybkie mikrokontrolery i nie musimy już
wnikać w zasadę działania sonaru. Nie mniej jednak koszt wykonania czujnika wg tego projektu
jest wielokrotnie mniejszy niż tych gotowych rozwiązań. Przykładowa realizacja programu na
mikrokontrolerze opisanym w raporcie znajduje się w załączniku nr.1.
[1] Praktyczny Elektronik 7/1996 Ultradźwiękowy miernik odległości.
[2] WNUK M. Instytut Informatyki Automatyki i Robotyki Politechniki Wrocławskiej. Raport
serii SPRnr 7/04 Moduł z mikrokontrolerem MC68332.
[3] TPU Time Processor Unit Reference Manual, TPURM/AD Rev. 3, Motorola Inc., 1996.
[4] KĘDZIERSKI.J Kompaktowy zestaw czujników do percepcji otoczenia dla platform
mobilnych Konferencja Naukowa Studentów na PWr.
[5] JANIAK M. Instytut Informatyki Automatyki i Robotyki Politechniki Wrocławskiej. Budowa
prostego dalmierza ultradźwiękowego. Raport serii PRE nr. 55/04
17
Załącznik 1
#define pulse_led1 1
#define GENCHAN 0
/* wybrany kanal TPU dla PWM */
#define GENFUN 9
/* kod funkcji PWM w masce MJ */
#define GEN_PERIOD (104) /* okres PWM-a*/
#define NITC1 1
#define NITCFUN 10
/* kanal TPU dla NITC */
/* kod funkcji NITC w masce MJ */
#define NITC2 2
#define NITCFUN 10
/* kanal TPU dla NITC */
/* kod funkcji NITC w masce MJ */
TPURAM(GENCHAN,0) = 0x92;
TPURAM(GENCHAN,2) = GEN_PERIOD;
TPURAM(GENCHAN,3) = GEN_PERIOD;
/* sterowanie kanalu */
/* czas impulsu */
/* okres impulsu 100 -> 40kHz*/
SetFun(GENCHAN,GENFUN);
SetSer(GENCHAN,2);
SetCpr(GENCHAN,3);
EnInt(GENCHAN);
funkcja GENCHAN*/
/* kod funkcji: PWM z maski MJ */
/* zadanie: inicjacja -> Host Service */
/* priorytet: wysoki -> Chanell Priority*/
/* zezwolenie na przerwanie od kanlu z
/*Konfiguracja NITC*/
TPURAM(NITC1,0) = 7;
TPURAM(NITC1,2) = 1;
TPURAM(NITC1,3) = 0;
TPURAM(NITC1,4) = 0;
TPURAM(NITC1,5) = 0;
/* wykrywanie zbocza narastajacego */
/* tylko jeden impuls do zliczenia */
/* zerowanie licznika impulsow */
SetFun(NITC1,NITCFUN);
SetSeq(NITC1,0);
SetSer(NITC1,1);
SetCpr(NITC1,3);
EnInt(NITC1);
/* kod funkcji: NITC z maski janiaka */
/* single shot, no links*/
/* zadanie: inicjalizacja "TCR mode"*/
/* priorytet: wysoki */
/* zezwolenie na przerwanie od kanlu z
funkcja NITC*/
TPURAM(NITC2,0) = 7;
TPURAM(NITC2,2) = 1;
TPURAM(NITC2,3) = 0;
TPURAM(NITC2,4) = 0;
TPURAM(NITC2,5) = 0;
SetFun(NITC2,NITCFUN);
SetSeq(NITC2,0);
SetSer(NITC2,1);
SetCpr(NITC2,3);
EnInt(NITC2);
/* wykrywanie zbocza narastajacego */
/* tylko jeden impuls do zliczenia */
/* zerowanie licznika impulsow */
/* kod funkcji: NITC z maski janiaka */
/* single shot, no links*/
/* zadanie: inicjalizacja "TCR mode"*/
/* priorytet: wysoki */
/* zezwolenie na przerwanie od kanlu z
interrupt void int_PIT()
{
char i=0;
char p=0;
par_sonar.ch1_ready=0;
par_sonar.ch2_ready=0;
par_sonar.ch1=65535;
par_sonar.ch2=65535;
DisInt(NITC1);
DisInt(NITC2);
gen_pulse=0;
ClrInt(GENCHAN);
TPURAM(GENCHAN,2) = GEN_PERIOD/2;
18
sonar_start_t = TPURAM(GENCHAN,1);
EnInt(GENCHAN);
}
interrupt void int_GENCHAN()
{
gen_pulse++;
if (gen_pulse==8) {
/* 8 impulsow
TPURAM(GENCHAN,2) = GEN_PERIOD;
}
if (gen_pulse==25) {
DisInt(GENCHAN);
ClrInt(NITC2);
ClrInt(NITC1);
EnInt(NITC2);
EnInt(NITC1);
SetSer(NITC1,1);
SetSer(NITC2,1);
}
ClrInt(GENCHAN);
}
interrupt void int_NITC1()
{
ClrInt(NITC1);
par_sonar.ch1=TPURAM(NITC1,4)-sonar_start_t;
par_sonar.ch1_ready=1;
}
interrupt void int_NITC2()
{
ClrInt(NITC2);
par_sonar.ch2=TPURAM(NITC2,4)-sonar_start_t;
par_sonar.ch2_ready=1;
}
19