Bilgisayar İle Step Motor Kontrol Uygulaması

pr_01_37_max

 

Adım motorları adından da anlaşılacağı gibi adım adım hareket eden yani sargılarından birinin enerjilenmesi ile sadece 1 adım hareket eden motorlardır. Bu adımın kaç derece olacağı motorun tasarımına bağlıdır.

Adım motor, elektrik enerjisini dönme hareketine çeviren eletro-mekanik bir cihazdır. Elektrik enerjisi alındığında rotor ve buna bağlı şaft, sabit açısal birimlerde (adım-adım) dönmeye başlar. Adım motorlar, çok yüksek hızlı anahtarlama özelliğine sahip bir sürücüye bağlıdırlar (adım motor sürücüsü). Bu sürücü, bir encoder, PC veya PLC’den giriş darbeleri (pals) alır. Alınan her giriĢ darbesinde, motor bir adım ilerler. Adım motorlar bir turundaki adım sayısı ile anılırlar. Örnek olarak 400 adımlık bir adım motor bir tam dönüşünde (360º) 400 adım yapar. Bu durumda bir adımın açısı 360/400 = 0.9º derecedir. Bu değer, adım motorun hassasiyetinin bir göstergesidir. Bir devirdeki adım sayısı yükseldikçe adım motor hassasiyeti ve dolayısı ile maliyeti artar.

/******************************************************
 PIC16F877 İle Bilgisayar İle Step Motor Uygulaması
******************************************/
#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları

#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) // RS232 protokolü ayarları belirtiliyor

int i,hiz=500; // Tam sayı tipinde değişkenler tanımlanıyor
char islem=0; // Karakter tipinde değişken tanımlanıyor

const int yarim_adim[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09}; // Step motor yarım adım dönüş adımları

/********* ANA PROGRAM FONKSİYONU********/

void main ()
{
 setup_psp(PSP_DISABLED); // PSP birimi devre dışı
 setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
 setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
 setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
 setup_adc(ADC_OFF); // ADC birimi devre dışı
 setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
 setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı

 output_b(0x00); // B portu çıkışı başlangıçta sıfırlanıyor

/****************MENÜ**********************************/

 printf("\n\r************************************************");
 printf("\n\r ADIM MOTOR KONTROLÜ ");
 printf("\n\r************************************************");
 printf("\n\n");
 printf("\n\rIslem Seciniz:\n");
 printf("\n\r------------------------------------------------");
 printf("\n\r Saga Dondur (R)");
 printf("\n\r Sola Dondur (L)");
 printf("\n\r Motoru Durdur (R ve L disindaki herhangi bir tus)");
 printf("\n\r------------------------------------------------");
 printf("\n\rYapmak istediginiz islemi seciniz>");

 while(1)
 {
 islem="null"; // islem değişkeninin içeriğini boş olarak ayarla
 islem=getchar(); // Seri port üzerinden gelen karakter islem değişkenine aktarılıyor
 putc(islem); // RS232 üzerinden klavye'den girilen karakteri ekrana gönder.

 while (islem=='R'||islem=='r') //Sağa döndürme işlemi seçildi ise
 {
 printf("\n\rMotor Saga Donuyor...");
 for (;i<8;i++) // Sıra ile sağa dönme değerlerini gönder
 {
 output_b(yarim_adim[i]); // Step motor 1 adım ileri
 delay_ms(hiz); // Adımlar arasındaki süre

 if (i==7) // Eğer i değeri 7 olursa sıfırla
 i=0;

 if (kbhit()) break; //Seri portan bir veri alındı ise döngüden çık
 }
 if (kbhit()) break; //Seri portan bir veri alındı ise döngüden çık
 }

 while (islem=='L'||islem=='l') //Sola döndürme işlemi seçildi ise
 {
 printf("\n\rMotor Sola Donuyor...");

 for (;i>=0;i--) // Sıra ile sola dönme değerlerini gönder
 {
 if (i==0) // Eğer i değeri 0 ise i değeri 7 olsun
 i=7;
 output_b(yarim_adim[i]); // Step motor 1 adım geri
 delay_ms(hiz); // Adımlar arasındaki süre

 if (kbhit()) break; // Seri portan bir veri alındı ise döngüden çık
 }
 if (kbhit()) break; // Seri portan bir veri alındı ise döngüden çık
 }
 }
}

Bilgisayar İle Step Motor Kontrol Uygulaması

Bu yazı CCS C Örnekleri kategorisine gönderilmiş ve , ile etiketlenmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.