PIC Assembly - PIC C 16F877A İle Servo Motor Kontrolü By Burak Ablay Posted on 12 Şubat 2015 2 min read 16 0 18,956 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr SERVO MOTOR Robotik uygulamalarının temelini oluşturan servo motor R/C tip servo motordur. R/C Servo motorların 3 kablosu bulunur. Genellikle kırmızı kablo +, siyah yada kahve kablo -, sarı yada turuncu kablo ise mikrodenetleyiciye bağlanacak kontrol (PWM) ucudur. Servo motorlar genel itibari ile içerlerinde bir DC motor ve şaft konum bilgisi devresi barındırırlar. Bu devre şaftın kaç derece döndüğünün algılanmasında kullanılır . Servo motorlar 20ms periyotlu, 1ms’den 2ms’e kadar değişen duty cycle’lı PWM sinyali ile sürülürler. Verilen duty cycle periyotlarına göre servo motorun 0-180 derece aralığı arasında alacakları değerler yanda gösterilmiştir. Burada sinyal verilirken örneğin 1,5ms ile 1ms arası 90’a bölünerek istenilen açıya gidilebilir. Model uçak, araba ve robotik uygulamalarda yaygın olarak kullanılır. DEVRENİN ŞEMASI DEVRENİN HI-TECH C KODU [php] #include "htc.h" #include "delay.h" __CONFIG(0x3FF1); void main() { TRISB =0x00; // PORTB cikis TRISD=0xFF; while(1) { if(RD5)//0 Derece Dön { for(;;){ RB0 = 1; DelayUs(250);DelayUs(250);DelayUs(250);DelayUs(250); RB0 = 0; DelayMs(19); if(RD6 | RD7) break; } } if(RD6) { for(;;) { RB0=1; // 1,5ms Gecikme DelayUs(250);DelayUs(250);DelayUs(250);DelayUs(250); DelayUs(250);DelayUs(250); RB0=0; // 18,5ms Gecikme DelayMs(18); DelayUs(250);DelayUs(250); if(RD5 | RD7) break; }} if(RD7) { for(;;) { RB0=1; // 2ms Gecikme DelayMs(2); RB0=0; // 18ms gecikme DelayMs(18); if(RD5 | RD6) break; } } } } [/php] DEVRENİN VİDEOSU: Programın hex dosyasını buradan ulaşabilirsiniz..