Merhaba sevgili arkadaşlar.

Bugün PIC ile basit bir step motor sürücü yapacağız. Step Motor ya da namı diğer Adım Motoru, DC motorlardan farklı olarak uçlarına gelen pals darbeleriyle hareket ederler. Günümüzde step motorların kullanılmadığı yer yoktur desek mübalağa etmiş oluruz ama en azından bu motorun önemini de anlamış olursunuz.
Step motorlar, hard disk, yazıcı gibi bilgisayar parçalarında kullanıldığı gibi endüstriyel alanda da bolca kullanılmaktadır.

Neden Step Motor kullanılır, Step Motorun avantajları nelerdir konularına fazla girmeyeceğim yoksa konu çok uzar. Çalışma Prensibini anlatıp programını yazalım bize kafi gelir kanaatindeyim.


Step Motorların her pals ile belli bir açı kadar dönerler. Devamlı dönmesi için bir pals dizisi uygulamanız gerekir. Pals yoksa dönüş de yok. Ne kadar ekmek o kadar köfte yani. Step Motorun bir pals ile ne kadar döndüğüne adım açısı denir.  Piyasada en kolay 1.8 derece adımlı step motor bulabilirsiniz. Bu demek oluyor ki bu motoru 1 tam devir döndürmek için ard arda 200 adet pals vermeliyiz –ki 200x1,8=360- derece tamam olsun.  Step Motorun pals e cevap verdiği süreye de stepper response denir. Siz öyle pals verir vermez zınk diye döndüğünü zannetmeyin.  Yazıyı fazla uzatmayalım.


Bir de şu var arkadaşlar; denetleyici akımı motoru sürmeye yetmez. Bu yüzden akım sürücü entegreler kullanacağız. ULN2003 entegresi işimizi görür. Bu entegrenin görevine girişine gelen zayıf akımı kuvvetlendirir diyelim. İçinde darlington bağlantılı transistorlar vardır.


Biz uygulamamızda unipolar (6 uçlu) step motor kullanacağız. Ve bunu çift fazlı çalıştıracağız. Bunun manası kısaca her seferinde step motora çift pals vereceğiz demektir. Bobinler Çifter Çifter enerjilenecek. Sırayla aşağıdaki palsleri uygulayacağız.


Adım C0 C1 C2 C3
1       1   1   0   0
2       0   1   0   1
3       0   0   1   1
4       1   0   1   0

step motor sürücü


Program kodu aşağıda. İleri ve geri tuşları var. Bu tuşların durumu Timer0 Kesmesi ile kontrol ediliyor. #define ile tanımladığımz tanımlar sadece programın okunuşu kolaylıştırmak için. #byte ön komutu ise PIC donanınımın özel registerlerine isim vermek için kullanıldı. Mesela #byte PORTB = 0x06 diyerek, PORTB yi direk kullanabileceğiz. Program hakkında kafanıza takılan soru varsa. Yorumlarla yazınız.


#include "main.h"

#define ILERI 2
#define GERI 1
#define YOK 0

#byte PORTC = 0x07
#byte PORTB = 0x06

#bit B0 = PORTB.0
#bit B1 = PORTB.1

#bit C0 = PORTC.0
#bit C1 = PORTC.1
#bit C2 = PORTC.2
#bit C3 = PORTC.3

int8 TusBilgi;
/**************************
**************************/
#INT_TIMER0
void TusKontrol()
{
if(B0) TusBilgi=GERI;
Else if(B1) TusBilgi=ILERI;
Else TusBilgi=YOK;

}

/****************************
****************************/
#zero_ram
void main()
{

int8 Adim=1;
set_tris_b(0x0F);
set_tris_c(0x00);

PORTB=0;
PORTC=0;

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64|RTCC_8_BIT);
enable_interrupts(int_timer0);
enable_interrupts(GLOBAL);

do{

if (TusBilgi==ILERI)
{
TusBilgi=YOK;
delay_ms(100);

switch(Adim)
{
case 1:C0=1;C1=1;C2=0;C3=0;break;
case 2:C0=0;C1=1;C2=0;C3=1;break;
case 3:C0=0;C1=0;C2=1;C3=1;break;
case 4:C0=1;C1=0;C2=1;C3=0;break;
}

if(++Adim==5) Adim=1;

}Else if(TusBilgi==GERI)
{
TusBilgi=YOK;
delay_ms(100);
switch(Adim)
{
case 1:C0=1;C1=0;C2=1;C3=0;break;
case 2:C0=0;C1=0;C2=1;C3=1;break;
case 3:C0=0;C1=1;C2=0;C3=1;break;
case 4:C0=1;C1=1;C2=0;C3=0;break;
}
if(++Adim==5) Adim=0;
}

}while(1);

}


TAGS: pic step motor kontrolü, mikroc step motor kontrolü, step motor sürücü, stepper motor driver. adım motor kontrolü.

Anahtar Kelimeler: Mikrodenetleyici, CCS PIC C ile Step Motor Programı, PIC ile Step Motor Sürücü, PIC Step Motor Devresi, Step Motor Nasıl Çalışır, Step Motor Nasıl Sürülür, Step Motor Nedir, Step Motor Uygulamaları, Step Motorları Sürmek

peynir6 suyu tozu , 12/10/2008-08:07 Facebook'ta Paylas