Step (Adım) Motor Kontrolü

0
1048

Adim motor kontrolü

Adim motorlarin, endüstriyel ve elektronik uygulamalarda kullanimi oldukça fazladir. En basitinden, bilgisayarimizdaki floppy disket sürücüsünde ve hard diskler de bu teknolojiye basvurulmustur. Adim motorlar, girislerine uygulanan lojik sinyalleri dönme hareketine çevirirler. Istediginiz yönde ve derecede döndürebileceginiz adim motorlar, hassas hareketleri sayesinde, bir çok cihazda konum kontrolü amaciyla kullanilmaktradir. Disaridan bakinca çok komplike bir is gibi gözükse de PC ile adim motor kontrolü oldukça kolay ve eglencelidir.

Adim motorun kablolarindan bir veya iki tanesi ortaktir (vMotor). Yaptigimiz islem basit olarak bu ortak kabloya sürekli +12 Volt göndermek ve diger uçlari ise belli bir sirada topraga göndererek bir adim hareketi elde etmek. Bunu iki farkli sekilde yapabiliriz. Bunlardan bir tanesi geçen ayki yazimizda kullandigimiz 12 Voltluk röle devresine benzer bir devrenin 4 transistörlüsü ile bu sinyalleri göndermek. Bir diger yolu ise içerisinde bu transistörleri hali hazirda bulunduran bir entegre kullanmak. Ben her iki yöntemide anlatacagim. Yine de benim kolaylik açisindan tavsiyem, entegreli devreyi uygulamaniz.

Adim motor entegreli sürücü devresi malzemeleri:

1 X ULN2003 Entegre
1 X 1N4001 Diyot
1 X 12 Volt 5 Cable Step Motor

Adim motor sürücüsü olarak ULN2003 entegresini kullaiyoruz. Bu entegreyi bundan sonraki uygulamalarimizda bol bol kullanacagiz. Sürücü devresi olarak kullanilan ULN2003 Içerisinde 7 adet NPN transistör ve dahili diod barindirdirmaktadir. Haliyle bizi transistör bacaklariyla ugrasmaktan kurtarmaktadir. Kullanimi ise oldukça kolaydir. Devre semasindan da anlasilabilecegi gibi 9 numarali bacagina +12 Volt ve 8 numarali bacaginada Toprak (ground) uyguluyoruz. Daha sonra 3 ve 6 numarali bacaklarada paralel portun DATA pinlerinden gelen +5 Voltluk degerleri uygulayacagiz. Bu sayede örnegin 3 numarali bacaga +5 Volt (lojik voltaj) uyguladigimizda 14 numarali bacak toprak olacaktir. Ayni sekilde sirayla 4 için 13, 5 için 12, 6 için ise 11 numarali bacaklar toprak olacaktir.

40

Herseyden önce bir adim motora ihtiyacimiz var. Isimize en çok yarayacak olan adim motorunu eski 5 ¼ disket sürücülerinden kolayca sökebilirsiniz. Tabi bundan önce parçalayabilecek bir sürücü bulabilmeniz gerekli. Eger bulamiyorsaniz adim motor için sanirim biraz elektronikçi dolasmaniz gerekecektir. Bulacaginiz adim motoru 4,5 yada 6 kablolu olabilir. Ama benim en sik rastladigim 5 kablolu olani oldugundan, uygulamamizda 5 kablolu adim motoru kullanacagiz. Çalışma prensipleri ayni olduğundan kablo sayısının değişmesi yazacağımız programın mantığının değişmesi anlamına gelmeyecektir.

41

5 kablolu adim motorunun kablolarindan bir tanesi vMotor dedigimiz ortak kablodur. Önemli olan bu kablonun hangisi oldugunu bulmaktir. Bunun için avometreninizi OHM ölçere getirin ve kablolarin uçlarini ikiser ikiser ölçün. Tüm uçlar ile arasindaki direnç ayni olan kablo ortak vMotor kablosudur. Biraz deneyerek bulabileceginizden eminim. Sekilde gözüktügü gibi, diger 4 kablo motor kömürlerine (coil) gitmektedir. Bu 4 kablonunda bir sirasi vardir. Bu sirayida deneme yanilma yöntemiyle bulmak mümkün olacaktir. Eger bu kablolari yanlis sirada baglarsaniz, motor dönmek yerine sadece titreme yapacaktir. Yukaridada bahsettigim gibi motora adim attirmak için yapmamiz gereken, vMotor kablosuna +12 Volt verirken, diger kömürlere bagli kablolara belli bir sira ile toprak göndermek.

Yukarida bahsettigimiz bu 4 kabloya toprak sinyalini göndermek için entegrenin 3,4,5 ve 6. bacaklarina sira ile +5 Volt göndermemiz gerekiyor. Haliyle bu + 5 Voltu paralel portun seklinde görülen DATA pinlerinden çekecegiz. Paralel portun seklini bundan sonraki her yazima ekleyecegim. Okurken size kolaylik saglayacaktir.

Herzamanki gibi DATA pinlerinden çikis almak için OUT komudunu kullaniyoruz. Çokta kisa olsa yaziyi ilkkez okuyanlar için OUT komudu ile nasil DATA pinlerini + 5 Volt yapacagimiza deginecegim. DATA portundan 8 bitlik veri çikisi alabiliyoruz. DATA portuna hiçbir veri göndermedigimiz zaman ki degeri “00000000” dir. Dikkat ederseniz 8 tane “0” var. Örnegin data portuna 25 degerini gönderelim. 25 degerinin ikilik sayi sisteminde karsiligi “00011001” dir.
Bu durumda D4, D3 ve D0 pinlerine karsilik gelen lojik degerler “1” oldugundan o pinler +5 Volt olacaktir.

Örnek : OUT &h378,25

Buradaki &h378 ise paralel portunuzun taban adresidir. Biz sekilde D0, D1, D2, D3 ile gösterilen ilk dört data pinini kullanacagiz. Burada OUT komutlarini pespese kullanamayiz. Çünkü veriyi DATA pinlerine ufakta olsa belli zaman araliklari ile göndermemiz gerekiyor. Bunun için her OUT komudunun arasina bekletmek için çok eski yöntemlerden biri olan FOR-NEXT döngüsünü yaziyoruz. Fakat dikkat etmeniz gereken nokta FOR-NEXT döngüsünü bitirdiginiz sayi. Ben burada “2000” kullandim. Pentium bir PC için yeterli beklemeyi sagliyor. Sizde sisteminizin hizina göre buradaki sayiyi degistirmelisiniz. Örnegin 486 bir PC için “500” yeterli olacaktir. Asagidaki Visual Basic program örnegi D0, D1, D2 ve D3 pinlerini sira ile +5 Volt yapacak ve entegrenin bu pinlerine bagli olan bacaklarinin karsiliklarini topraga çekecektir. Neticede motorunuz bir adim atmış olacaktır.

ADIM MOTOR KONTROLÜ (Dalga Sürüm) – Visual Basic kodu
Sub bekle(sayi as long)Dim i as long

For i=1 to sayi:next i

End sub

Command1_Click()

‘ Bu örnek program,  dalga sürümü sinyallerini, motora göndermektedir.

Dim adres as integer

Adres=&h378

OUT adres, 0 ‘Tüm data pinlerinin degerlerini “0” olacaktir

Bekle 2000

OUT adres,1 ‘D0 pininin lojik degeri “1” olacak ve +5 Volt yüklenecek.

Bekle 2000 ‘Tanimladigimiz BEKLE fonksiyonu ile bir sürelik gecikme sagliyoruz.

OUT adres,2 ‘D1 pininin lojik degeri “1” olacak ve +5 Volt yüklenecek.

Bekle 2000 ‘Tanimladigimiz BEKLE fonksiyonu ile bir sürelik gecikme sagliyoruz.

OUT adres,4 ‘D2 pininin lojik degeri “1” olacak ve +5 Volt yüklenecek.

Bekle 2000 ‘Tanimladigimiz BEKLE fonksiyonu ile bir sürelik gecikme sagliyoruz.

OUT adres,8 ‘D3 pininin lojik degeri “1” olacak ve +5 Volt yüklenecek.

Bekle 2000 ‘Tanimladigimiz BEKLE fonksiyonu ile bir sürelik gecikme sagliyoruz.

End Sub

Benim kullandigim adim motorlar 1.8 derecelikti. Bu, motora attiracaginiz her normal adimda 1.8 derecelik bir dönme elde edeceginiz demek oluyor. Bu da motorun bir tur atmasi için 200 normal adim atmasi gerektigi anlamina geliyor. Motorun vMotor disinda kalan diger 4 kablosuna göndereceginiz sinyallere göre bu adimin yönünü ve açisini degistirmeniz mümkün olacaktir. En basitinden motora ters adim attirmak için, sinyalleri D3 ten D0 a dogru göndermeniz yeterli olacaktir. Çok hassas çalismadigimizi ve motorumuzun 2 derece oldugunu ve 45 derecelik bir dönme gerçeklestirmek istedigimizi düsünelim. Bunun için yukarida anlattigim normal adim sinyalleri yeterli olmayacaktir. Bu durumda motoru 1 er derecelik açilarla döndürebilmemiz gerekmektedir. Yarim adim attirma metodu ile bu isi kolayca yapmamiz mümkündür. Bir diger metod ise dalga sürümü sinyalleridir. Hassas hareketler üzerinde çalismayacaksaniz dalga sinyallerini kullanabilirsiniz. Asagidaki tablolarda tam adim, yarim adim ve dalga sürümü için uçlara göndermeniz gereken sinyal çesitlerini ve OUT komudu ile göndermeniz gereken degerleri yaziyorum. Degerlerin ikilik sistemdeki karsiliklari D3-D0 sütunlarini soldan saga dogru okudugumuzda ki degerlerine esit olduguna dikkatinizi çekmek istiyorum. Eger ters yönde dönüs elde etmek istiyorsaniz, sinyalleri ters yönde (tablodaki satirlari asagidan yukariya dogru okuyarak) gönderebilirsiniz.

Yarim Adim Metodu
Deger D3 D2 D1 D0
9 1 0 0 1
1 0 0 0 1
2 0 0 1 0
6 0 1 1 0
4 0 1 0 0
2 0 0 1 0
12 1 1 0 0
8 1 0 0 0

 

Tam Adim Metodu
Deger D3 D2 D1 D0
9 1 0 0 1
3 0 0 1 1
6 0 1 1 0
12 1 1 0 0

 

Dalga sürümü  Adim Metodu
Deger D3 D2 D1 D0
1 0 0 0 1
2 0 0 1 0
4 0 1 0 0
8 1 0 0 0

 

Bir diger olayda adim motorun referans noktasini nasil bulacagi. Yani motorun durdugu en son pozisyonun ne oldugunu nerden bilecegiz? Döndürme islemine basladigimiz noktayi biliyorsak bu çok fazla sorun olmayacaktir. Fakat motoru daha döndürmeye baslamadan, elimizle biraz çevirdigimizi düsünelim. Bu durumda baslangiç noktasi kayacak ve motoru istedigimiz pozisyona getiremeyecegiz. Disket sürücülerde kullanilan yöntem oldukça ilkel ama geçerli bir yöntemdir. Disket sürücü bir sekilde diski okuyan kafanin nerede oldugunu bilmek zorundadir. Bunun için motoru bir yönde sürekli döndürerek, kafanin en basa dayanmasini saglar. Bu gelinen noktaya referans noktasi denir. Bu sebeple bazi adim motorlarin kendi etrafinda sürekli olarak dönmesini engelleyecek bir tirnak vardir. Motoru referans noktasina dayamak için bu tirnaktan yararlanilir. Biz simdilik hassas hareket yaptirmayacagimizdan varsa bu tirnagi sökebilirsiniz.

Adim motor transistörlü sürücü devresi malzemeleri:

4 X BC547B Transistör
4 X 1N4001 Diyot
1 X 12 Volt 5 Cable Step Motor

42

Her iki devrede de kullandigimiz diyotun degerinin herhangi bir önemi yoktur. Motorda adim attiktan sonra olusacak ters EMK bu diyot sayesinde absorbe edilebilir. Yine benim tavsiyem entegreli sürücü devresini kullanin. Bu entegrenin nasil çalistigini iyi anlarsaniz, bir çok uygulamada transistörler ile ugrasmak zorunda kalmadan 12 Voltu kontrol edebilirsiniz.

Transistörlü sürücü devresi, geçen ayki RÖLE devremize benzemektedir. Bu sefer +12 Voltluk akim vMotor kablosuna baglidir. Motorun diger kablolarini sira ile topraga göndermemiz gerekmektedir. Transistörün BEYZ ucuna uygulayacagimiz data pininden gelen +5Volt sayesinde transistör tetiklenecek ve kollektör-emitör (CE) iletime geçecektir. Dolayisi ile transistörün C ucuna bagli kablolar topraga ulasabilecektir. Transistörün uçlarini bulmak biraz zor oldugundan, BC547 transistörünün, alttan bakildigindaki bacak baglantilarini veriyorum.

43

Henüz Yorum Yok

CEVAPLA