Teknikim

Üye Girişi

PIC Uygulamaları 5-Step Motor Kontrolü
 

Yazan: Tuna BULUT, Tarih: 10-05-2008 11:18

Okunma Sayısı : 1088

Beğenilme : 10

Yayınlama yeri : Dersler, PIC Dersleri

Step Motor’un ve Kodun Çalışma Şekli

Step motora 1 adım attırabilmek için sırasıyla B’00000001',    B'00000010', B'00000100', B'00001000' değerlerini step motorun data pinlerine gönderiyoruz. Bu veriler sırasıyla gönderilmediği takdirde motor dönmeyecek ve titreme yapacaktır. Bu verileri göndermek için de bir tablo oluşturuyoruz. Bu tablodaki verileri sırayla çağırma işini de ADIM değişkenini kullanarak yapıyoruz.

;Adım değişkenine ilk değerini yüklüyoruz

MOVLW        H'FF'     

MOVWF        ADIM

;Adım değerini 1 artırıyoruz, 00000011 binary sayısıyla adımı and leyerek adım değişkenindeki sayının 3 ten sonra 0 lanmasını istiyoruz. Adım ın tabloyu çağırmadan önceki ilk değeri böylece 00000000 oluyor ve tabloyu çağırıyoruz. Sıra tekrar bu rutine gelince adım değeri 00000001 oluyor sonra 00000010, 00000011 değerlerini alıyor ve böylece step motor 1 adım atmış oluyor. Bir sonraki adıma gelirken adım değeri 00000100 oluyor ancak tabloda sadece 4 tane değerimiz olduğundan ve bu değerleri motora yükledikten sonra tekrar bir sonraki adım için başa dönmesini istiyoruz, bu yüzden adım değerini 00000100’ı 00000011 ile AND lediğimizde adım değeri tekrar 00000000 oluyor ve böyle devam ediyor.

INCF              ADIM,F                                 

MOVF             ADIM,W                   

ANDLW          b'00000011'                 

CALL              ADIM_TABLOSU

;Tabloyu çağırmadan önce adım değerini w yazmacına atıyoruz ve ADDWF PCL,1 işlemini yapıyoruz. PCL özel yazmacı sayesinde w değeri 0 olduğunda ilk değeri, 1 olduğunda ikinci değeri, 2 olduğunda üçüncü değeri, 3 olduğunda ise dördüncü değeri çağırmış oluyoruz.

ADDWF          PCL,1                                    

RETLW           B'00000001'                          

RETLW           B'00000010'

RETLW           B'00000100'

RETLW           B'00001000'

;Benim kullandığım motorun her adımı 7.5 dereceydi. ACI değişkenine d’48’ decimal değerini yükleyerek motoru 7.5*48=360 derece döndürmüş oldum. Siz de ACI değişkenine farklı değerler yükleyerek motoru istediğiniz derecede döndürebilirsiniz.

MOVLW        D'48'

MOVWF        ACI

;Her adım arasına ise motorun adımını tamamlayabilmesi için belli bir gecikme koymanız gerekiyor. Bu gecikme olmazsa veya yetersiz olursa motor adım atlar ve istenildiği gibi dönmez. Gecikme süresini artırarak motorun hızını yavaşlatmış, azaltarak ise artırmış olursunuz. Ama sürenin belli bir değerin altına inmemesi lazım. Bu süreyi deneme yanılma yoluyla bulabilirsiniz. Benim kullandığım motor için bu limit süre 7.65 ms idi. Eğer bu süre sizin motorunuz için yeterli gelmez ve motor adım atlarsa D’10’ değerini artırarak bu süreyi artırınız.

GECIKME

            MOVLW        H'FF'

            MOVWF        SAYAC1

DONGU1

            MOVLW        D'10'

            MOVWF        SAYAC2

DONGU2

            DECFSZ         SAYAC2,F

            GOTO            DONGU2

            DECFSZ         SAYAC1,F

            GOTO            DONGU1

            RETURN



   
Beğenilme
E-mail olarak gönder
İlgili makaleler
Teknikim'e kaydet

Okuyucu yorumları  RSS feed Yorum
 

Ortalama Üye Değerlendirmesi

   (2 Oylamalar)

 

Yorum Sayısı: 3 / 3

pıc assembly

Yazan:: hunter (Kayıtlı ) Tarih: 19-11-2008 17:42

bu kodları hangi program veya araç sayesinde girebiliyoruz teşekkür ederim

 

» Yorumu cevapla...

» Tüm cevap(ları) 1 gör

step motor

Yazan:: hunter (Kayıtlı ) Tarih: 19-11-2008 17:23

teşekür ederiz

 

» Yorumu cevapla...

devre

Yazan:: aydınyaşar (Kayıtlı ) Tarih: 02-11-2008 02:22

slm programını guzel yazmıssın begendım  
;)

 

» Yorumu cevapla...

» Tüm cevap(ları) 1 gör

Yorum Sayısı: 3 / 3



Yorumunuzu ekleyin
Sadece kayitli kullanicilar bir Makaleyi yorumlayabilir. Lütfen ücretsiz üye olun veya giriş yapın.


mXcomment 1.0.8 © 2007-2008 - visualclinic.fr
License Creative Commons - Some rights reserved