arkadaslar bnm sorum netten satılan yada semaları bulunan bu pc den servo kontrol devrelerinde yeni devre üstündeki pic den (pici programlayarak) servoları hareket ettirebilirmiyiz kontrol edebilimiyiz ama bu devrenin hiç bir pc ile bağlantısı olmıcak batarya yada pil bağlıcaz devreye vede servoları kontrol edicez ben derdimi assağıdaki resimde acıkca acıklıyım
bu resimdeki gibi servolar eklemleri kontrol edicek ama pc ile bi kablo vs bağlantısı olmıcak bütün bilgileri picden alıcak enerjisini bataryadan alıcak orda kullanılan microcontroller devre hazır satılıo cok pahalılar tr dede pek yok ve en önemliside bu devreyi alarak yapıcağım robotun ben yaptım demesi biraz zor cünkü herseyi hazır alımış oluyo en azından uğrasıpta yaparsak bana ait bişi olur umarım derdimi anlatabilmisimdir. yardımcı olursanız sevinirim
< Bu mesaj bu kişi tarafından değiştirildi iso93iso -- 13 Temmuz 2009; 17:42:29 >
Eğer daha önce dikkat ettiyseniz servolarda 3 adet pin bulunur, bunlardan ikisi VCC ve toprak görevini üstlenirken, geri kalan uç servo'yu kontrol etmekte kullanılır. Servoları kontrol etmek için ise sadece PWM kullanmak yeterlidir. Genelde servolar saniyede 500us ile 2500us zaman aralığında çalışırlar. Yani siz servoya 500us'lik dalgalar gönderirseniz servo tam sol, 1500us'lik dalgalar gönderirseniz tam orta, 2500us'luk dalgalar gönderirseniz ise tam sağ yapacaktır. Bunu BASIC'te;
Servo PortPin, RotationValue
kodunu kullanarak veya PWM ile yapabilirsiniz. Koda sadece kullandığınız pini ve açı değerini (500-2500 us) girmeniz yeterli olacaktır. Uygulamada ise;
Dim x as Byte For x = 0 to y Servo PORTB.0,1500 Delayms 10 Next x
kodunu kullanmanız gerekmektedir. Koddaki değerleri motorun karakteristiğine göre belirleyebilirsiniz. Motorun hızına ve döneceği açıya göre y değerini belirleyebilir, bekleme süresini ise 10-20 ms arası seçebilirsiniz. y değerini biraz büyük seçerek hesaplama yapmadan tam kontol sağlayabilirsiniz.
Bunun için PIC'in I/O portlarını kullanabilirsiniz. 16F877A'nın toplam 40 adet pini vardır, bunların 33'ünü I/O için kullanabilir. I/O işlemi için görevlendirilmiş toplam 5 port vardır, bunlar;
portlarıdır. İlk işimiz bunlardan kullanacaklarımızı dijital çıkış portu olarak ayarlamaktır, daha sonra ise kullanacağımız servoların hepsini tek bir seferde sıralayıp ardından bir bekleme süresi bırakmamız yeterli olacaktır. Örnek olarak;
Output PORTA Output PORTB Output PORTC 'PORTA, PORTB ve PORTC'yi çıkış olarak ayarladık
Symbol Servo1=PORTA.0 . . . Symbol Servo20=PORTC.5 (İsteğine göre pinlere isim koyabilirsin)
Dim x as Byte 'FOR...NEXT döngüleri için değişken belirledik, kullanacağınız sayıya göre türünü değiştirebilirsiniz ama büyük ihtimalle Byte yeterli olacaktır
basla: 'Programımıza başladık
For x=0 to 15 Servo Servo1, 500 Servo Servo2, 2500 Servo Servo3, 200 Servo Servo6, 1000 Servo Servo8, 1250 Servo Servo15, 1500 . . . . Servo Servo18, 750 Delayms 20 NEXT x 'Burası tamamen sana ait, istediğin servoları yönlendirdikten sonra tek bir delay yeterlidir, motor karakteristiğine göre de tekrar sayısını belirleyebilirsin.
End
kodunu kullanabiliriz. Kodun içine ihtiyaçlarına göre başka fonkisyonlar veya daha fazla servo komudu ekleyebilirsin.
< Resime gitmek için tıklayın >
bu resimdeki gibi servolar eklemleri kontrol edicek ama pc ile bi kablo vs bağlantısı olmıcak bütün bilgileri picden alıcak enerjisini bataryadan alıcak orda kullanılan microcontroller devre hazır satılıo cok pahalılar tr dede pek yok ve en önemliside bu devreyi alarak yapıcağım robotun ben yaptım demesi biraz zor cünkü herseyi hazır alımış oluyo en azından uğrasıpta yaparsak bana ait bişi olur umarım derdimi anlatabilmisimdir. yardımcı olursanız sevinirim
< Bu mesaj bu kişi tarafından değiştirildi iso93iso -- 13 Temmuz 2009; 17:42:29 >