|
Sayfa 1 Toplam: 2
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
Şekil 1-LM7805 Şekil 2-PIC16F628A Pin Diyagramı Şekil 3-ULN2003
PIC ve ULN2003 Devresi
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----------------------------
;---------------------------Tuna
Bulut tarafından yazıldı---------------------------
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
<< Başa Dön < Önceki 1 2 Sonraki > Sona Git >> |