CCS C ile Step Motor Uygulaması

pr_01_37_max

 

PIC16F877 ile Step Motor Uygulaması (ULN2003A İle)

#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

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

#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.

// Giriş ve çıkış pinlerine isim atanıyor
#define buton_ileri pin_a0
#define buton_geri pin_a1

int i=0,hiz=10;

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);

 while(1) // Sonsuz döngü
 {

 if (input(buton_ileri)) // İLERİ Butonuna basıldı ise
 {
 output_b(yarim_adim[i]); // Step motor 1 adım ileri
 while(input(buton_ileri));// Basılan tuş bırakılana kadar bekle
 delay_ms(hiz); // Adımlar arası bekleme süresi

 if (i==7) // i değişkeni 7 olunca i değeri -1 olsun
 i=-1;
 i++; // i değişkenini 1 arttır

 }

 if (input(buton_geri)) // GERİ Butonuna basıldı ise
 {
 if (i==0) // i değişkeni 0 ise i değeri 8 olsun
 i=8;
 i--; // i değişkenini 1 azalt
 output_b(yarim_adim[i]); // Step motora 1 adım geri
 while(input(buton_geri)); // Basılan tuş bırakılana kadar bekle
 delay_ms(hiz); // Adımlar arası bekleme süresi
 }
 }
}

Step Motor Uygulaması

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