PIC Uygulamaları
Pic ile servo motorları kontrol edelim.
Bu ay pic 16f84 uygulamalarında radyo kontrollu modellerde kullanılan
darbe genişlik modülasyonlu servo motorlarını ele alacağız ve bir PC
ve pic üzerinden 8 adet servo motoruna kumanda etmenin yollarını
göreceğiz.
Servo kumanda motorları model uçak gibi hareketli yüzeyleri bulunan
modellerin hareketini kumanda çubuklarının hareketine birebir uyarlamak
için kullanılırlar. Servolar modellerde ağırlık ve hacim sorunu önemli bir
problem olduğu için son derece hafif ve küçük olmak zorundadır.
Akım çekişi düşük olmalıdır, 4.8v gibi bir voltaj kaynağı ile
beslenebilmelidir.Bu kriterlerde batarya boyutlarında kazanç
sağlamaktadır. Fakat tüm bu kısıtlayıcı kriterlere rağmen 1 metrelik
bir moment kolu uzaklığında 100 gram ağırlığı oynatabilmelidir.
Bu derece küçük ve sınırlı bir cihazın böylesine güçlü olması insana
şaşırtıcı ve imkansız gelmektedir ama en ucuz servo bile bu
kriterleri fazlasıyla sağlar.
Servo motorlar şu anda piyasada lineer veya dairesel bir hareketi
kumanda edebileceğiniz en ucuz ekipmandır. Bu kriterde servoyu
biz amatörlere ve özellikle robotikle ilgilenenlere çok cazip kılmaktadır.
Türkiyede servoları bulabileceğiniz bir kaç model dükkanı
Ankara ve İstanbulda vardır. Eğer internetten sipariş vermek
isterseniz http://www.mustanghobbies.com.tr adresinden
yararlanabilirsiniz. 20 USD civarında standart servoları bu
adresten temin edebilirsiniz.
Birazda servoların iç yapısı ve çalışma mekanizmasına göz atalım.
Bir servo motor yapı olarak dört kısımdan oluşmaktadır. Dc elektrik
motoru, planetar dişli sistemi, geri besleme potansiyometresi ve
dc motor pozisyon kumanda elektroniği.
DC motor herhangi bir dc oyuncak motorundan farklı olmayan çift
mıknatıslı bir statora ve fırçalı bobin rotora sahiptir. Motor mili
1:200 ile 1:300 arası dönme oranına sahip bir dişli sistemine
bağlanır, bu sayede oldukça yüksek bir tork değerine ulaşılır.
Dişli sisteminin çıkışında bir 5k'lık potansiyometre, mil konumunu
elektronik kumanda devresine iletir. Elektronik devrenin görevi mil
konumunu gelen veri konumuna gelinceye kadar motoru iletimde
tutup tam yerinde durdurmaktadır.
Elektronik devre bu konumu algılamak için PWM-(pulse width
modulation)-darbe genişlik modülasyonu tekniğinden yararlanmaktadır.
Kumanda devresi kumanda çubuğunun konumuyla doğru orantılı
olarak 1 ile 2 milisaniye arasında dalga genişliği değişen bir sinyali
her 20 milisaniyede bir servoya gönderir. 1 milisaniye tam sol,
2 milisaniyede tam sağ pozisyonu ifade eder. Servo içindeki
elektronik devre ilk önce gelen darbelerin darbe genişliğini ölçer
daha sonra potansiyometre konumuna bakar ve kendi darbe
osilatörünün darbe genişliği gelen darbelerle eşitlenene kadar
motoru hareket ettirir.Motorun durduğu konum sizin kontrol
çubuğunu tuttuğunuz konumla birebir aynıdır. Servolarda üç
adet kablo dışarı çıkar bunlardan kırmızı olan +4.8v-5.0 V arası
besleme, siyah olan şase yani Ground, diğer kablo ise
-turuncu yeşil veya beyaz olabilir- data girişidir.
PC ile servo kontrolu için aşağıdaki şemada görüldüğü gibi bir
pic 16f84 ve çok az yan eleman yeterlidir. Bu devre ile 8 adet
servo aynı anda kumanda edilebilir.
Daha ayrıntılı görmek için mouse un sağ tuşundan "view image" i seçin.
Devre şemasındanda görüleceği gibi kontrol pic'i ile PC seri portu
arasında tek yönlü asenkron bir haberleşme yapılmaktadır.
Şemada bizim her zaman uyguladığımız 4 Mhz kristal, bir adet
270 ohm direnç ve iki adet 22 pF kondansatörlü osilatör yerine
bir adet 4 Mhz lik seramik rezonatör kullanılmıştır bu Amerika ve
Avrupa'da bir pic'i çalıştırmak için en ucuz osilatördür ama
Türkiye piyasasında bulunması biraz zor olan seramik rezonator
yerine eski yazılardaki şemalar yardımıyla klasik
kristal-direnç-kondansatör yapısında bir osilatör de kurulabilir.
PC kısmında çalıştıracağımız program her zaman yaptığımız
gibi bir terminal programı değil artık visual basic 5.0 ile hazırlanmış
oldukça iyi 8 adet servonun kontrolu için yazılmış bir program.
Bu programı ve pic'i programlamak için gerekli servo2.hex
dosyasını servo.zip dosyası içinde bulabilirsiniz.
Servo.zip dosyasını öncelikle diskiniz üzerinde yaratacağınız boş
bir alana kopyalayın. Pic'i servo2.hex ile programlamak için eski
sayılardaki yazı dizimde verdiğim programlayıcıyı kullanabilirsiniz.
Programı PC,ye kurmak için setup dosyasına tıklayın,
program kendine bir alan yaratıp kurulur.
Programı pc_servo uzerine tıklayarak çalıstırın. Karşınıza
aşağıdaki gibi bir ekran çıkar.
Setup seçeneğine tıklayıp karşınıza çıkan menuden com portları
değiştirip baud rate ile oynayabilirsiniz.
Default com port, com2 baud rate ise 2400 baud'dur.
Devreyi hatasız yapıp voltaj vermeden önce bazı ayrıntılara
dikkatinizi çekmek istiyorum:
- PC RS232 (COM) portuna bağlantı konektörünü takarken
- DB9 konnektör kullanırsanız COM1, DB25 konnektörünü
- RS232 (COM) portun bacaklarının kesinlikle kısa devre
PC yada PICden en az birinin enerji almaması gerekir aksi
halde RS232 portunun arızalanması işten bile değildir.
kullanırsanız COM2 portunu işgal etmeniz gerekir.
PIC için hangi COM portun kullanıldığının önemi yoktur,
bu servo kontrol programının sorunudur.
olmasına izin vermeyin, aksi takdirde port arızalanır.
Kontrol etmek istediğiniz servonun düğmesine tıkladığınız takdirde
servoyu seçersiniz,daha sonra potansiyometre düğmelerinin
kenarlarına tıklayarak ilgili servoyu kumanda edebilirsiniz.
Servo kontrol pic'in yardımıyla başka bir programlama
diliyle kendi PC kontrol ara biriminizi de yazabilirsiniz.
Kontrol formatı 175 gibi olabilir, burada 1 servo numarasını
75 ise kumanda konumunu ifade eder. Eğer bu bilgiyi
2400 baud 8 bit no parity şeklinde pic'e iletirseniz 1 nolu
servoyu 75 birim oynatmış olursunuz.
Bu ay radyo kontrollu modellerin hareketlerinde temel taşı
olan servo motorları pic-pc karışımıyla kontrol etmeyi denedik.
Bunun bize ne faydası olabilir? "Ne tür bir uygulama böyle bir
ara birime ihtiyaç duyar?" diye düşünüyorsanız birkaç
uygulama örneğini ele alalım. Özellikle günümüzde amatör
elektronikçilerin en çok ilgisini çeken konu amatör robotik
yani ev robotları ile deneylerdir. Servo motorlar, küçük robot
kollar ve hareketli böcek benzeri robotların
yapımına en uygun
ve en ucuz hareket aktarıcılarıdır. Bu tür robotların neye
benzediğini merak ediyorsanız kendisi de amatör bir robotik
meraklısı iken çok başarılı bir şirket kurup servo bazlı
robotlar üreten Jim Frye'nin şirket sayfasını ziyaret
etmenizi isterim. http://www.lynxmotion.com
Bu tip bir robot yapmak için kendi pc programınızı yazıp
bu yazıdaki pic uygulaması ile 8 adet servoyu kontrol ederek
oldukça karmaşık bir robot yapmanız mümkündür.
Gerisi tamamen hayal gücünüze kalmıştır. Amatörler hayal
gücü en geniş insanlar kitlesi olduğuna göre bu tip uygulamalar
zor olmasa gerek.
Gelecek ay buluşmak dileğiyle.