PIC|ULAK PIC|ULAK ile Bilgisayardan Step Motor Kontrolü By Sinan Sözügüzel Posted on 31 Aralık 2015 8 min read 1 0 4,243 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 bilgisayar üzerinden step motoru sağ ve sol olmak üzere belirli açılarda döndürme işlemini gerçekleştireceğiz. Bunun için ilk olarak bilgisayarımıza herhangi bir Serial Communicator yazılımını yüklememiz gerekiyor. Bu işlemden sonra, aşağıdaki uygulama kodunu c derleyici ile derleyip hex kodunu oluşturuyoruz.. Oluşturduğumuz hex kodunu PICKit2 yazılımı ile PIC|ULAK’a yüklüyoruz.. Yükleme işleminden sonra PIC|ULAK’ı Programlayıcı modundan Seri-USB dönüştürücü moduna alıyoruz.. Seri-USB moduna aldığımız da artık bilgisayarımız ile PIC|ULAK’ı konuşturabiliriz.. Serial Communşcator yazılımının transmit alanına step motoru döndürmek için açı ve yön girmemiz gerekiyor ve daha sonrasında enter tuşuna basmak kalıyor. Örneğin, 60° sağa→ döndürmek istiyorsak 60R veya 180° sola← döndürmek istiyorsak 180L yazmamız yeterli olacaktır. iyi çalışmalar…. Malzemeler pic|ulak 7.5 step motor(5 Volt) bağlantı kabloları Bağlantı şeması: Kod kısmı: [php] #include <main.h> #fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD #use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor. #use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1) // Giriş ve çıkış pinlerine isim atanıyor char islem[20]; //max 20 char tipinde dizi tanımlaıyor. int a; void main() { PRINTF("\n\r——————PIC|ULAK—————"); // printf("\n\r*-*-*-*-*-*- STEP MOTOR CONTROL -*-*-*-*-*-*-*");// RECEİVE KISMINA YAZILACAKLAR. printf("\n\rDERECE ve YÖN GİRİNİZ:"); // while(1) { output_b(0x00); // B portu sıfırlanıyor islem="null"; // islem değişkeninin içi boş olarak ayarlanıyor. gets(islem); // yazılan metni islem değişkenine aktar. puts(islem); // yazılan değeri ekrana yaz printf("\n\rDERECE ve YÖN GİRİNİZ:"); // receive kısmına yazdır. // 360 DERECE SAĞA KOMUTU if (islem[0]==’3′ && islem[1] ==’6′ && islem[2]==’0’&&islem[3]==’R’ ) { for(a=0;a<=11;a++) // 3×8=24 adım atıyor 24×3.75=90 derece sağa hareket edecek { output_b(0b00001001); delay_ms(10); output_b(0b00000011); delay_ms(10); output_b(0b00000110); delay_ms(10); output_b(0b00001100); delay_ms(10); } } // 180 DERECE SAĞA KOMUTU if (islem[0]==’1′ && islem[1] ==’8′ && islem[2]==’0’&&islem[3]==’R’ ) { for(a=0;a<=5;a++) // 3×8=24 adım atıyor 24×3.75=90 derece sağa hareket edecek { output_b(0b00001001); delay_ms(10); output_b(0b00000011); delay_ms(10); output_b(0b00000110); delay_ms(10); output_b(0b00001100); delay_ms(10); } } // 90 DERECE SAĞA KOMUTU if (islem[0]==’9′ && islem[1] ==’0’&&islem[2]==’R’ ) { for(a=0;a<=2;a++) // 3×8=24 adım atıyor 24×3.75=90 derece sağa hareket edecek { output_b(0b00001001); delay_ms(10); output_b(0b00000011); delay_ms(10); output_b(0b00000110); delay_ms(10); output_b(0b00001100); delay_ms(10); } } //60 DERECE SAĞA KOMUTU if (islem[0]==’6′ && islem[1] ==’0’&&islem[2]==’R’) { for(a=0;a<=1;a++) { output_b(0b00001001); delay_ms(10); output_b(0b00000011); delay_ms(10); output_b(0b00000110); delay_ms(10); output_b(0b00001100); delay_ms(10); } } //30 DERECE SAĞA KOMUTU if (islem[0]==’3′ && islem[1] ==’0’&&islem[2]==’R’) { for(a=0;a<=0;a++) { output_b(0b00001001); delay_ms(10); output_b(0b00000011); delay_ms(10); output_b(0b00000110); delay_ms(10); output_b(0b00001100); delay_ms(10); } } // 360 DERECE SOLA KOMUTU if (islem[0]==’3′ && islem[1] ==’6′ && islem[2]==’0′ && islem[3]==’L’) { for(a=0;a<=11;a++) { output_b(0b00001100); delay_ms(10); output_b(0b00000110); delay_ms(10); output_b(0b00000011); delay_ms(10); output_b(0b00001001); delay_ms(10); } } // 180 DERECE SOLA KOMUTU if (islem[0]==’1′ && islem[1] ==’8′ && islem[2]==’0′ && islem[3]==’L’) { for(a=0;a<=5;a++) { output_b(0b00001100); delay_ms(10); output_b(0b00000110); delay_ms(10); output_b(0b00000011); delay_ms(10); output_b(0b00001001); delay_ms(10); } } // 90 DERECE SOLA KOMUTU if (islem[0]==’9′ && islem[1] ==’0′ && islem[2]==’L’ ) { for(a=0;a<=2;a++) { output_b(0b00001100); delay_ms(10); output_b(0b00000110); delay_ms(10); output_b(0b00000011); delay_ms(10); output_b(0b00001001); delay_ms(10); } } // 60 DERECE SOLA KOMUTU if (islem[0]==’6′ && islem[1] ==’0′ && islem[2]==’L’) { for(a=0;a<=1;a++) { output_b(0b00001100); delay_ms(10); output_b(0b00000110); delay_ms(10); output_b(0b00000011); delay_ms(10); output_b(0b00001001); delay_ms(10); } } // 30 DERECE SOLA KOMUTU if (islem[0]==’3′ && islem[1] ==’0′ && islem[2]==’L’) { for(a=0;a<=0;a++) { output_b(0b00001100); delay_ms(10); output_b(0b00000110); delay_ms(10); output_b(0b00000011); delay_ms(10); output_b(0b00001001); delay_ms(10); } } } } [/php] Devrenin çalışma videosu: