Elektronik / Mikrodenetleyici Projeleri/

MicroC ile step motor sürücü örneği (pic16f628a)

Sponsorlu Bağlantılar

STEP MOTOR SÜRÜCÜ:

Bu çalışmada derste sunmak üzere eğitim materyali olarak hazırladığım 5 uçlu unipolar step motor sürücüyü paylaşıyorum. Proje MicroC ile hazırlanmıştır.

Adım sıraları bir dizi ile tabloda belirlenip menüde belirlenen zamanlara göre portbye aktarıldı.

Çıkış katı 220ohm direnç üzerinden BD241(3A) NPN transistörlerle güçlendirilip motor sürüldü.

microc-step-motor-surucu-pic16f628a

STEP (ADIM) MOTORLAR

TANIM

Bir motora elektrik palsleri uygulayınca mekaniki bir hareket (dönme) yapabiliyorsa bu tip motorlara denir.

Dijital bilgileri mekanik harekete çeviren TRANSDUSER olarak görev yapan motorlara denir.

CALIŞMA PRENSİBİ

Step motora giriş pals uygulandığı zaman belli bir miktar döner ve durur. Bu dönme miktarı motorun yapısına göre belli bir açı ile sınırlandırılmıştır. Step motorda rotorun dönmesi girişe uygulanan pals adedine bağlı olarak değişir. Girişe tek bir pals verildiğinde rotor tek bir adım hareket eder ve durur daha fazla pals uygulayınca pals adedi kadar adım hareket eder.

ÇEŞİTLERİ

1. Sabit mıknatıslı s.m (PM)
2. Değişken relüktanslı s.m (VR)
3. hybrid s.m
4. Hidrolik s.m
5. Lineer s.m

KULLANILDIĞI YERLER

Bant sürücüler
Printer
Teyp sürücüler
Dikiş mak..
Taksimetre
Uzaktan kumanda göstergelerinde
Kameralarda

Uygulama dosyaları: MicroC ile step motor sürücü örneği (pic16f628a)

Dosya indirme LINK listesi (TXT formatında) link-9808.zip şifre-pass: 320volt.com

Uygulamanın çalışma görüntüsü;

Microc yazılım içeriği;


/*
Projenim Adı: 5 uçlu unipolar stepmotor kontrolü
Proje tarihi : Mart 2010
Mikro işlemci:16f628a
Osilatör     : 8Mhz İNTRC on I/O
Kullanılan yapı:Dizi ile tablo oluşturulup hers aşamada
tablodan bilgilaer farklı zaman aralıkları ile okunup portBye gönderilmiştir.
Menü seçimi için INT0 kesmeesi kullanılmıştır böylece program döngüden çıkar çıkmaz
yeni menüya dallanma yapar
Projeyi yapan:AYTAÇ DÜRGEN
KOCAELİ UNİVERSİTESİ


*/


short int sayac=0;
void interrupt()
{ sayac = (sayac+1)%7;
  INTCON.INTF=0;
}
void ayarlar()
{
OPTION_REG = 0x00;
INTCON.GIE  = 1;
INTCON.INTE  = 1;
TRISB=0x01;
PORTB=0;
TRISA=0;
PORTA=0;
}


signed int a,b;
unsigned char tablo[]={2,4,8,16 };
void main()
{
ayarlar();

 /********************************************/
for(;;){
PORTB=0;
/*********************************************/
 if(sayac==0)
{
for(a=0;a<4;a++)
{
PORTB=tablo[a];
Delay_ms(4); // 4ms bekle

PORTA=sayac;
}
}
/********************************************/
if(sayac==1)
{
for(a=0;a<4;a++)
{
PORTB=tablo[a];
Delay_ms(80); // 80ms bekle

PORTA=sayac;
}
}
 /********************************************/
if(sayac==2)
{

for(a=3;a>=0;a--)
{
PORTA=sayac;
PORTB=tablo[a];
Delay_ms(80); // 80ms bekle


}
}
 /********************************************/
if(sayac==3)
{

for(a=0;a<4;a++)
{
PORTA=sayac;
PORTB=tablo[a];
Delay_ms(20); // 20ms bekle


}
}
 /********************************************/
if(sayac==4)
{

for(a=3;a>=0;a--)
{
PORTA=sayac;
PORTB=tablo[a];
Delay_ms(20); // 20ms bekle


}
}
 /********************************************/
if(sayac==5)
{
for(b=0;b<100;b++)
{
for(a=0;a<4;a++)
{
PORTA=sayac;
PORTB=tablo[a];
Delay_ms(5); // 5ms bekle

}
}
for(b=0;b<100;b++)
{
for(a=3;a>=0;a--)
{
PORTA=sayac;
PORTB=tablo[a];
Delay_ms(5); // 5s bekle

}
}
}
/**********************/
 if(sayac==6) PORTB=0;

}
 /********************************************/


}


  • Doğukan

    gerçekten çok değişik ve çok güzel bir devre. Tebrikler.

  • mkilickap

    Güzel olmuş eline sağlık

  • Harun

    güzel olmuş kardeşim.bilgilerini paylaştığın için teşekkürler.

  • mehmet

    merhaba.

    güzel bir devre elinize sağlık. ben bu devreyi pc den kontrol edebilirmiyim acaba. yani dışarıdan mahc3 gibi bir programla pals göndererek kontrol edebilirmiyim. yardımcı olursanız sevinirim.

    iyi günler.

  • aytac dürgen

    rs 232 ile seri port üzerinden PC ile Pıc i haberleşime açabilirsin.ya da paralel portlu bir bilgisayarın var ise bu sinyalleri direk olarak uln 2003 step motor sürücü ile direk olarak sürebilirsin

  • mehmet

    AYTAC hocam ilginiz için teşekkür ederim. en az 4amper olması gerekiyor sürücünün. o yüzden yukarıdaki sürücü mosfet li olduğu için uygun. ben bu sürücüyü paralel porttan hız ve yön pals i uygulayarak nasıl çalıştırabilirim. yardımcı olursanız sevinirim

  • aytac dürgen

    Step motorun devir yönü ve hızı gönderdiğin palsin hızı ile ve pals sırası ile değişmektedir. Bu işi PC ile en kolay Visual Basic ile yapabilirsin. Fakat bu konularda hergangi bir uygulamam yok.

  • mehmet

    Aytaç hocam ben mach 3 den yön ve hız bilgisini pals olarak verebiliyorum (20-100khz olarak). benim sorduğum picin atıyorum b0’a yön bilgisini verdim(mesela 1 ise saga-0 ise sola dön gibi). b1’e hız bilgisini pals olarak (mesela 1mm si 2000 pals olarak ayarladım 5mm için paralel portdan 2000×5=10000 pals verdim) motor bu pals geldiği sürece dönecek pals durduğunda kendiside duracak. yani b1 e kaç pals gelirse anında motora aktaracak. yukarıdaki programda nasıl bir değişiklik yaparsak böle bir şeyi başarabiliriz acaba .

    Yani aslında dışarıdan mesela portb1 e hazır gelen pals i sadece motora aktarmasını nasıl sağlarız.

  • emrecanbjk

    bu devre kaç liraya patlar… bilgi verebilir misiniz rica etsem…