Katja and Guido Socher <katja/at/linuxfocus.org, guido/at/linuxfocus.org>
About the authors:
Katja LinuxFocus'un Alman edit�r�d�r. Kendisi Tux, Bilgisayar Tabanl� �izim, film ve foto�raf��l�k ve denizi sever.
Ana sayfasina buradan ula�abilirsiniz. Guido �ok uzun zamandan beri Linux severdir ve Linux'un kedisine se�im �ans� ve �zg�rl�k verdi�ini d���n�yor.
Linux ile gereksinimlerinize g�re ��z�mler �retip geli�tirebilirsiniz.
T�rk�e'ye �eviri:
M. Muti G�zel <gozelm/at/be.itu.edu.tr>
��erik:
|
Otomatik ���k izleyici robot yapmak
�zet:
Bu yaz�da bir mikro kontrol birimi ile en parlak noktaya y�nelerek ilerleyen otomatik bir robotun nas�l yap�laca��n� anlataca��z.
_________________ _________________ _________________
|
Giri�
�ki y�l �nce LinuxFocus'da Linux-kontroll� y�r�yen robot'u anlatt�k. �ki aya�� �zerinde y�r�yebilmesi ve al���lagelmi� motorlar�n�n
bulunmamas� a��s�ndan tasar�mda �ok �zel bir yap�ya sahipti. Bu, bu robotun �ok ilgin� olan bir yan�yd�; bununla birlikte robot
�ok yava�t�, �ok fazla ak�ma gereksinim duyuyordu ve yap�m� i�in �ok fazla �zel par�a ve h�ner gerektiriyordu.
Yeni robotumuzun tasar�m� son derece farkl�. Ucuz ve her yerde bulabilece�imiz t�rden par�alarla yapabileceksiniz.
Bir AVR mikro kontrol birimi ile kontrol edilebilen bir otomatik robottur. Otomatik bir �ekilde (ki�i kontrol� olmadan) odadaki
en ayd�nl�k tarafa y�nelerek ilerleyecek �ekilde programlad�k.
Mekanik K�s�m
Conrad'tan k���k �arkl� bir motor.
|
Motor olarak �al��mas� i�in d�zenlenmi� bir Servo. Bu belki en iyi ��z�md�r ama bu fikir robotumuzu bitirdikten sonra
akl�m�za geldi.
|
Robotun iki ba��ms�z motor taraf�ndan y�r�t�len iki tekerle�i var. ���nc� tekerlek ise bir pinpon topudur. Bu, robotun parlak
noktada d�nmesini sa�layacakt�r. Tekerlek i�in oyuncaktan s�kt���m�z lastik tekerlekler kulland�k ama siz buna mecbur
de�ilsiniz. Etraf�na bir lastik bant sar�lm�� bir re�el kavanozunun kapa�� da iyi bir tekerlek olabilir.
Otomatik bir robotun pillerle �al��mas� olduk�a �nemlidir. Mikro kontrol birimi 4.5V ile �al��t���ndan motorlar da 3-4.5V ile
�al��mal�d�r. Daha fazla ak�ma gerek olmamal�d�r, aksi durumda piller ve kontrol devresi a��r� b�y�k ve a��r olacakt�r.
Bu tasar�m i�in 1293d olarak adland�r�lan bir entegre motor s�r�� �ipi kulland�k. 1293d motor s�r�� �ipi 0.5A'e kadar olan
y�kleri ta��yabilir. Bu nedenle motorlar, en k�t� ko�ullarda, 0.5A'in alt�nda �al��mal�d�r.
Conrad'dan (www.conrad.de, part number: 242802) elde etti�imiz �anz�man kutulu 2 k���k motor kulland�k ama siz
ba�ka bir t�r �anz�man kutulu motor da kullanabilirsiniz. Asl�nda simdi, k���k botlar�n, arabalar�n ve u�aklar�n uzaktan
kumandas�nda kullan�lan Servo Motorlar�n kullanmam�z�n en iyi ��z�m olaca��n� d���n�yoruz. Normalde bu Servo Motorlar
sadece bir y�nde d�nerler ama siz �anz�man kutusunu a�abilir, durdurucuyu alabilir, potansiyometreyi ve elektronik birimi
��karabilirisiniz. Kolay bulunabilir ufak ve g��l� motorlard�r.
Robotu yapmak i�in motorlar� bir tahtan�n (12cm x 9cm) alt taraf�na, y�k�n b�y�k k�sm� iki dingil �zerinde ta��nacak �ekilde,
ortaya yak�n yerle�tiriniz. ���nc� tekerlek olan pinpon topu, yuvas�nda rahat bir �ekilde d�nebilmesinin sa�lanmas� i�in,
y�k�n k���k bir k�sm�n� ta��mal�d�r.
Pinpon topunun yuvas� do�ru b�y�kl��e sahip k���k bir plastik �ise kapa�� olabilir.
Robotun hareketi i�in 3 tane AAA pil kulland�k. Pil tutucular�n� a�a��da g�sterildi�i gibi yerle�tiriniz.
Piller olduk�a a��rd�r bu y�zden yerle�tirilmelerinde y�k�n �o�unun tekerlekler �zerine ve yaln�zca az�n�n pinpon topuna
gelmesine dikkat edilmelidir. Bir a�-kapa d��mesini kenarda istedi�iniz yere yerle�tirebilirsiniz.
Alg�lay�c�lar
Robotumuza iki tip alg�lay�c� verdik:
- dokunma alg�lay�c�lar�: bu yolla robot bir yere �arp�p �arpmad���n� anlar
- ���k alg�lay�c�lar�: robotun odadaki en ayd�nl�k noktay� bulmas� i�in
Dokunma alg�lay�c�lar� �elik tellerden yap�lm�� basit a�k�lard�r. �elik telleri a�a��da g�sterildi�i gibi e�dik:
Tahta plakan�n her kenar�nda bir vida ile tutturulmu� b�yle 4 alg�lay�c� vard�r.
Robot bir cisme dokundu�unda �elik tel (2, sekle bak�n�z) tahta plaka (3) �zerindeki ikinci tele dokunur ve bu �elik tel ile tahta
�zerinde bulunan tel aras�ndaki elektrik ba�lant�s�n� kapat�r.
Pinpon topu yuvas�ndan ��kt���nda �elik telin e�ilmemesi i�in tahta plaka alt�na bir tahta par�as� (1) ekledik.
Bu par�a pinpon topu yuvas�nda iken yerden 5mm y�ksekte olmal�d�r.
�elik telin ucu yerden 5-7mm y�ksekte olmal�.
I��k alg�lay�c�lar� 3 foto diren�ten olu�uyor. Ka��t par�alar�n� foto diren�lerin aras�na a�a��da �ekilde g�r�ld��� gibi yerle�tirdik.
Bu ka��t par�alar� ���k yandan vurdu�unda g�lge olu�turacakt�r. Sadece ���k tamamen tepeden vurdu�unda, 3 alg�lay�c�n�n hepsi
�zerinde e�it miktarda ���k sa�layacakt�r. Robot 3 alg�lay�c� �zerindeki de�erleri kar��la�t�rarak hangi do�rultuda gidece�ine
karar verebilecektir.
Bu 3 foto direnci k���k bir deney tahtas� (�zerinde �ok say�da delik bulunan plakalar) �zerine yap��t�r�p sonra hepsini bir tek
vida ile robota ekleyebilirsiniz.
Alg�lay�c�lar�n ve motorlar�n bask�l� devre plakas� �zerine mikro kontrol birimi ile nas�l bile�tirilece�i a�a��da daha ayr�nt�l� olarak
anlat�lacakt�r. Mekanik par�alar� olu�turdu�umuza g�re, simdi robotun beynini inceleyelim.
Devre
Robotumuzda beyin olarak bir AT90S4433 mikro kontrol birimi kulland�k fakat beyin motorlar� d�nd�recek kadar enerjiyi
do�rudan aktaramaz. ��te bu noktada L293D motor s�r�� birimi devre girer. Bu �ip 4 y�kselticili dijital ��k�� kap�s�na ve
motorun sar�mlar�ndan kaynaklanabilecek y�ksek ak�ma kar�� korumak i�in ekstra korumal� diyotlara sahiptir.
Bu ��k�� kap�lar�n�n ikisi bir motoru s�rmek i�in kullan�labilir. B�ylelikle motorun sa�a ve sola d�nmesi sa�lanabilir.
Bir motoru 1. ve 2. di�erini de 3. ve 4. ��k�� kap�lar�n�n aras�na ba�lad�k. Bu, �ipin sa�lay�c� ayaklar�na de�i�ik s�reli etkiler
g�nderdi�imizde, �ipin ayaklar�n�n motorlar�n h�z�n� kontrol etmek i�in kullan�lmas�n� sa�lar.
Devrenin geri kalan taraf� �ok basittir: Atmel AT90S4422 mikro kontrol birimini tekrar kullan�r�z.
Daha �nceki LinuxFocus makalelerinden bu mikro kontrol birimini biliyorsunuz.
Analog giri�leri foto diren�ler �zerindeki ����� �l�mek i�in kullan�labilir ve dokunma alg�lay�c�lar�,
a�a��daki �ekilde g�sterildi�i gibi, do�rudan dijital giri�lere ba�lanabilir.
Mikro kontrol birimi hakk�nda daha fazla bilgiyi Guido'nun Mart 2002 yaz�: GCC ile AVR Mikro Kontrol Biriminin Programlanmas�
makalesinde bulabilirsiniz.
Devre 4.5V ile �al���r. �� AAA pili bu nedenle robotu �al��t�rmak i�in yeterlidir.
Otomatik robotumuzun devresi art�k haz�r olacakt�r. Bununla birlikte yaz�l�mda bir �eyler do�ru gitmez ve robot beklendi�i
gibi �al��maz ise ne yapacaks�n�z? Hi� bir �ey g�remezsiniz. Foto diren�lerin de�erini bilmezsiniz, robot yaz�l�m�n�n hangi
secimi yapt��� hakk�nda bir fikir sahibi olmazs�n�z. Bize gereken �ey robotun ne yapt���n� g�sterecek herhangi bir ekrand�r.
RS232 seri ba�lant�s� bu is i�in uygunudur. De�i�kenlerin de�erini okuyabilir ve hatta robotla ileti�im kurabiliriz.
Ba�lant�y� s�rekli yapmak istemiyoruz ama robotun hatalar�n� ay�klamak i�in gerek duyuyoruz. Bu nedenle max232'yi ve RS232
ba�lant�s� i�in gerekli olan di�er par�alar� ba�ka bir plaka �st�ne eklemek ve gerekti�inde ba�lay�p ��karmak daha ak�ll�ca
olacakt�r:
Tam Eagle devresi diyagramlar�, plakadaki yerle�im ve robot i�in gerekli yaz�l�m bu makalenin sonundaki b�l�mden indirilebilir.
Burada plakadaki yerle�imi anlatmayaca��z. Devre plakas� piller aras�na yerle�ecek kadar k���kt�r.
a�a��da robotun hangi taraf�ndaki dokunma alg�lay�c�s�n�n devre diyagram�n�n hangi aya��na ba�lanaca��n� g�rebilece�iniz bir
�ekil var. �ekil ayn� zamanda motorlar�n nas�l ba�lanaca�� da g�stermektedir. Motorlar, +3V hatt� "+" aya��na ba�lan�p toprak
hatt� "-" aya��na ba�lan�rsa robot ileriye do�ru (ok y�n�nde) hareket edecek �ekilde kutuplanmal�d�r. 1293d'nin ayaklar� 1y den
4y'ye kadar adland�r�lm��t�r.
Yaz�l�m
Burada fazla detaya girmek istemiyoruz. Ana program linuxrobot.c dosyas�nda g�r�lebilir (makalenin sonundan indirin).
Program, bir C programc�s� taraf�ndan rahatl�kla anla��labilecek a��klamalar� i�eriyor. Ana d�ng� ilk �nce Mikro kontrol
biriminin analog-dijital �eviricisini bir anda �evirme modunda 3 kez �al��t�rarak foto diren�lerin analog bilgilerini elde eder.
Bundan sonra dokunma alg�lay�c�lar�na bakar. E�er dokunma alg�lay�c�lardan herhangi biri bas�lm��sa ���k alg�lay�c�lar�ndan
daha �nemli hale gelecekler ��nk� bu durumda robotun hareketini engelleyen bir �ey yoluna ��km�� olabilir. Robot, motoru,
bas�lm�� durumdaki dokunma alg�lay�c�s�n�n tersi y�nde birka� milisaniye d�nd�recektir. E�er dokunma alg�lay�c�lar�na
bas�lmam��sa ���k alg�lay�c�lar� aras�nda bir kar��la�t�rma yap�lacak. Bu kar��la�t�rma compare_with_tol() fonksiyonun ile
yap�l�yor. Bu fonksiyon bir de�eri di�er iki tanesinin ortalama de�eriyle kars�la�t�rmaktad�r. G�r�lt�y� ortadan kald�rmak i�in,
de�erler aras�ndaki fark y�zde 5 in alt�nda ise iki de�eri e�it al�yoruz.
Hangi motorun d�nece�ini foto alg�lay�c�lar�n kars�la�t�rmas� sonucunda sapt�yoruz. 2 tekerle�imiz oldu�una g�re robotu
d�nd�rmek i�in tekerleklerin birini di�erinden daha h�zl� yada ters y�nlerde hareket ettirebiliriz.
Mikro kontrol birimi �l��mleri �ok h�zl�, saniyede �ok kez, tekrarlad���ndan robotun hareketi, motoru biraz sa�a yada sola
d�nd�rmek i�in motorun birini saniyenin bir kesri kadar durdursak bile, s�rekli g�r�n�r.
Bir araya getirmek
Elektroni�i bir araya getirirken testleri a�amal� yapmak her zaman iyi bir fikirdir. Bu yolla olas� hatalar� en aza indirebilirsiniz.
Linuxrobot yaz�l�m paketinde 3 farkl� test program� vard�r. Ledtest program� 2 LED'in yan�p s�nmesi sa�lar.
Bunu "make ledtestload" komutu ile y�kleyebilirsiniz. Bu program�n derlenmesini ve Mikro kontrol birimine y�klenmesinin sa�lar.
2 LED, program y�klenir y�klenmez yan�p s�nmeye ba�lamal�. Bu test ba�ar�l� oldu�unda mikro kontrol biriminin, osilat�r�n ve
yaz�l�m� y�klemek i�in PC ile kurulan ba�lant�n�n �al��t���ndan emin olabilirsiniz.
Sonraki ad�m, motor test program�d�r. Bu test program� "elektronik lastik top" i�erir. Bunu "make motortestload" komutu ile
y�kleyebilirsiniz. Motor test program� dokunma alg�lay�c�lar�n� s�rekli yoklar ve biri dokunuldu�unda robot dokunulan
alg�lay�c�dan uzakla�mak i�in hareket eder. E�er robota parma��n�zla bir taraftan dokunursan�z robot ters y�nde sekecektir.
Di�er elinizi robotun arkas�na koyarsan�z robot iki elinizin aras�nda lastik bir top gibi s�rekli sekecektir.
Robot bu testi ge�erse ���k alg�lay�c�lar� ile RS232 ba�lant�s� d���nda her �ey test edilmi�tir.
Son test program� adctes olarak adland�r�l�r ("make adctestload" ile derleyip y�kleyin). Program, robotun hatalar�n� ay�klamak i�in
konmu� bulunan RS232 ba�lant�s�n� ve 3 foto alg�lay�c� i�in analog-dijital �eviriciyi (ADC - analog to dgital converter) test eder.
Program� mikro kontrol birimine y�kleyin ve PC'nize RS232'yi ba�lay�n�z. Bundan sonra a�a��daki 3 komutu kabukta �al��t�r�n:
make ttydevinit
./ttydevinit /dev/ttyS0
cat /dev/ttyS0
Robot periyodik olarak foto alg�lay�c�lar taraf�ndan �l��len ���k �iddetinin miktar�n� ekrana yazacakt�r.
T�m testler ba�ar� ile tamamland���nda son program� robota "make load" ile y�kleyebilirsiniz. �lk test i�in en uygun yer ortas�nda
tek lamba olan bir odad�r. Robot direkt lambaya do�ru gitmeli ve orda durmal�.
Arka taraf� ���k kayna��na gelecek �ekilde yerle�tirdi�inizde nas�l d�nd���n� veya g�lgeleri nas�l yok etti�ini g�rmek olduk�a
e�lencelidir.
Problemler ve �yile�tirmeler:
Bu robotu k���k bir deney olarak ba�latt�k. Kendi kendine karar veren ve PC ile data ba�lant�s�na gerek duymadan ilerleyen bir
robot yapmak e�lenceliydi. Makalenin ilerleyen k�s�mlar�ndan indirebilece�iniz linuxrobot paketindeki program olduk�a k���k
ve basit olmas�na ra�men istedi�imizi yap�yor: Robot en ayd�nl�k yere do�ru ilerler.
�lerideki geli�tirmeler i�in ba�lang�� noktalar� kullan�labilecek baz� noktalardan bahsetmek istiyoruz:
- Dokunma alg�lay�c�lar�n�n olduk�a geni� zaman dilimlerinde yoklanmas� robotun yan�t verebilirli�ini s�n�rl�yor.
Bunlar daha s�k yoklanmal�d�r.
- Bir dokunma alg�lay�c�s�na temas edilirse bu di�er her �eyden daha �nemli duruma gelir ve robot ters y�nde birka� y�z
milisaniye hareket eder. Bu zaman zarf�nda bir ba�ka dokunma alg�lay�c�s� bir �eye dokunursa bu genellikle ihmal edilir.
- Foto alg�lay�c�lar�n hassasl��� zay�f ���kta azal�yor. Bu, alg�lay�c�lar�n �l�t��� de�erlerin aras�ndaki fark�n programa
yerle�tirilmi� e�ik d�zeyinin (%5)alt�na inmesi etkisine yol a�abilir ve bu durumda robot b�t�n alg�lay�c�lar�n e�it miktarda
���k ald���n� d���n�r. Bu etkiyi ortadan kald�rmak i�in ADC'den gelen ���k de�erleri lineer olmayan bir filtre e�risiyle ayarlanabilir.
Su anda Linuxrobot program� olduk�a k���k ve basittir, bu y�zden kolayl�kla anlayabilir ve geli�tirebilirsiniz.
Bir 4433 Mikro kontrol biriminin haf�zas�n�n yaln�zca %50'sine ihtiya� duyar b�ylece daha pek �ok �ey ekleyebilirsiniz.
Bu robot ile ilgili iyi �ey donan�m�n su yada bu �ekilde geli�tirilebilir olmas�d�r: Temel olarak 2 motor ve mikro kontrol birimine
ba�l� birka� alg�lay�c�dan ibarettir. T�m mant�k yaz�l�m�n i�indedir. Bu, yaz�l�m� de�i�tirmekle hemen hemen istedi�iniz her �eyi
de�i�tirebilmeniz anlam�na gelir.
Test durumundaki robotun bir resmi vard�r. Etrafa ka�mas�n diye alt�na birka� post-it blo�u yerle�tirdik. RS232 ba�lant�s� hata
ay�klamak amac� ile yap�lm��t�r:
... son olarak ����� arayan robot ...:
Referanslar
Bu yaz� i�in g�r�� bildiriminde bulunabilirsiniz
Her yaz� kendi g�r�� bildirim sayfas�na sahiptir. Bu sayfaya yorumlar�n�z� yazabilir ve di�er okuyucular�n yorumlar�na bakabilirsiniz.
<--, Bu say�n�n ana sayfas�na gider
2003-11-07, generated by lfparser version 2.43