PIC|ULAK PIC|ULAK ile Servo Motor Kontrolü By Sinan Sözügüzel Posted on 27 Şubat 2016 3 min read 1 0 7,918 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhaba arkadaşlar, Bu yazımızda, MekatronikLAB firmasının üretmiş olduğu PIC mikrodenetleyiciler ile proje geliştirme kiti PIC|ULAK ile joystick ile servo motor kontrolünü gerçekleştirdik. Hobi servolar, girişine uyguladığımız darbenin genişliğine göre 0-180 derece arasında dönme açısını değiştirilebildiğimiz motorlardır. Hobi servomuzu kontrol etmek için bir kare dalga işaretinin darbe genişliğini belirli sınırlar içerisinde değiştiririz, yani ismini koymak gerekirse darbe-genişlik modülasyonu yaparız. Servomuzda kahverengi:-, kırmızı:+, turuncu:data ucudur. Servo Motorlarda bulunan kontrol ucuna vereceğimiz sinyal ile motorumuzu 0°-180° arasında istediğimiz dereceye ulaşana kadar döndürebileceğiz. Dönmenin gerçekleşebilmesi için kontrol sinyalimizin frekansı 50Hz olmalıdır. Periyodumuz ise 20ms olacaktır. Malzemeler pic|ulak servo motor joystick 1k direnç Bağlantı Şeması CCS C kodları [php] #include <18f2550.h> #device adc=10 // 10 bitlik adc kullanılıyor. #use delay(clock=4M) // osilatör frekansı #fuses HS, NOWDT, NOLVP, NOPROTECT // sigorta ayarları #use fast_io(c) // C portunun kullanılacağı belirtiliyor unsigned long int bilgi; // bilgi adında işaretsiz tam sayı değişkeni tanımlanıyor. void main() { setup_adc(adc_clock_div_32); // ADC clock frekansı fosc/32 setup_adc_ports(AN0); // A0 pini analog giriş olarak ayarlanıyor. set_adc_channel(0); // A0 pini adc işlemine tabi tutuluyor. delay_ms(20); // gecikme veriliyor. set_tris_c(0x00); // c portu çıkış olarak ayarlanıyor. while(1) { bilgi=read_adc(); // okunan değer bilgi değişkenine aktarılıyor. bilgi=bilgi*1.9+1000; // bilgi değişkeninin değeri ayarlanıyor. output_high(PIN_c1); delay_us(bilgi); output_low(PIN_c1); delay_us(25000-bilgi); } } [/php] Devrenin Çalışma Videosu