Bu uygulamada PIC 16F628A ve ULN2003A kullanarak 5 kablolu unipolar step motor kontrol edeceğiz.
Kullanılacak Malzemeler
• 1xPIC16F628A
• 1x4 Mhz kristal
• 2x22pf seramik kondansatör
• 1x100nF seramik kondansatör
• 1x100 ohm direnç
• 1x4k7 ohm direnç
• 1xButon
• 1xULN2003A
• 1x1N4001 diyot
• 1x12 volt 5 kablolu unipolar step motor
• 12 V DC kaynak(Batarya, pil, adaptör veya güç kaynağı)
Kullanılacak Malzemeler(Regülatör İçin)
• 1x7805
• 1x330uF elektrolitik kondansatör
• 1x100nF seramik kondansatör
• 1x1N4001 diyot
<!--[endif]--> <!--[if !vml]--><!--[endif]--> <!--[if !vml]--><!--[endif]-->
Şekil 1-LM7805 Şekil 2-PIC16F628A Pin Diyagramı Şekil 3-ULN2003
PIC ve ULN2003 Devresi
<!--[if !vml]--> <!--[endif]-->
Step Motor Uçlarının Saptanması
Bizim kullandığımız 5 kablolu motorda 4 veri ucu 1 de ortak uç vardır. Motoru döndürebilmemiz için doğru uçları bulmamız lazım. Bunun için bir multimetre aracılığıyla bütün kablolar arası direnci ölçün. Diğer kablolarla arasında eşit direnç olan kablo ortak uçtur. Genellikle ortadaki kablo ortak uç olmakta, bu yüzden ölçümünüze ortadaki kablodan başlamanızı tavsiye ederim. Ortak ucu 12 V a diğer veri uçlarını da pic’e bağlayacağız.
PIC Assembly Kodu
;------------------------------Step Motor Kontrol Kodu----------------------------
;------------------------------------------------------
LIST P=16F628A
INCLUDE "P16F628A.INC"
__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
CBLOCK H'20'
ACI
SAYAC1
SAYAC2
ADIM
ENDC
MOVLW H'07'
MOVWF CMCON ;COMPARATOR ÖZELLİĞİ KAPALI VE PORTA I/O İÇİN AKTİF MODDA
CLRF PORTB ;PORTB Yİ SIFIRLA
;GİRİŞ-ÇIKIŞ TANIMLAMALARI
BANKSEL TRISA ;BANK1 E GEÇİŞ YAP
MOVLW H'FF'
MOVWF TRISA ;PORTA NIN BÜTÜN PİNLERİNİ GİRİŞ YAP
CLRF TRISB ;PORTB NİN BÜTÜN PİNLERİNİ ÇIKIŞ YAP
BANKSEL PORTB ;TEKRAR BANK0 A GEÇ
CLRF PORTB ;PORTB Yİ SIFIRLA
;ANA PROGRAM
MOVLW H'FF'
MOVWF ADIM
MOVLW D'48'
MOVWF ACI ;48*7.5=360 DERECE
ADIM_AT
DECFSZ ACI,1 ;ACI'YI BİR AZALT 0'A EŞİTSE BİR SONRAKİ KOMUTU ATLA VE MOTORU DURDUR
GOTO DEVAM
DONGU
GOTO DONGU
DEVAM
INCF ADIM,F ;ADIM'I 1 ARTIR
MOVF ADIM,W
ANDLW b'00000011' ;ADIM'DAKİ DEĞERLE ‘00000011’ BINARY DEĞERINE AND İŞLEMİ YAP
CALL ADIM_TABLOSU ;ADIM_TABLOSU'NU ÇAĞIR
MOVWF PORTB ;TABLODAN ÇAĞIRDIĞIMIZ DEĞERİ PORTB'YE TAŞI
CALL GECIKME ;ADIM ARASI GECİKME
GOTO ADIM_AT ;BİR SONRAKİ ADIMA GEÇ
ADIM_TABLOSU
ADDWF PCL,1 ;W DAKİ DEĞERLE PCL Yİ TOPLAR
RETLW B'00000001' ;W'YA BU DEĞERİ YÜKLER VE ÇAĞIRILAN YERE DÖNER
RETLW B'00000010'
RETLW B'00000100'
RETLW B'00001000'
;-------------------7.65 MS'LİK GECIKME-----------------------------------
GECIKME
MOVLW H'FF'
MOVWF SAYAC1
DONGU1
MOVLW D'10'
MOVWF SAYAC2
DONGU2
DECFSZ SAYAC2,F
GOTO DONGU2
DECFSZ SAYAC1,F
GOTO DONGU1
RETURN
END