PIC16F84 ile DC Motor Hız Kontrol Devresi

Facebookta Paylas



Devre PIC16F84 mikrodeneteyicisi ile DC motorların hızını kontrol etmemize yarıyor. Devrenin 2 farklı versiyonu mevcut

 

Devrede hız arttırıp azaltmaya yarayan 2 adet buton bulunuyor. Motorun dönüş hızı ise 2 adet 7 segment displayde gösteriliyor.

 

Yukarıdaki devrenin .ASM kodları:

<pre>	LIST P=16F84A
	INCLUDE"P16F84A.INC"
	__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
LT	EQU	H'20'
HT	EQU	H'21'
LT1	EQU	H'22'
HT1	EQU	H'23'
LSB	EQU	H'24'
MSB	EQU	H'25'
AYAR	EQU	H'26'

ZERO    EQU     H'3F'		; Sayılar için değer atamaları
ONE     EQU     H'06'
TWO     EQU     H'5B'
THREE   EQU     H'4F'
FOUR    EQU     H'66'
FIVE    EQU     H'6D'
SIX     EQU     H'7D'
SEVEN   EQU     H'07'
EIGHT   EQU     H'7F'
NINE    EQU     H'6F'
TEN	EQU	H'BF'
K_BIR	EQU     H'01'
K_IKI	EQU     H'03'
K_US	EQU     H'07'
K_DORT	EQU     H'0F'
K_BES	EQU     H'1F'
K_ALTI	EQU     H'3F'
K_YEDI	EQU     H'80'
K_SEKIZ	EQU     H'A3'
K_DOKUZ	EQU     H'C8'
K_ON	EQU     H'FF'
;----------------------
	ORG	0X00
	GOTO	BASLA
BASLA
	CLRF	PORTB
	CLRF	AYAR	; !!! AYAR'I MUTLAKA SIFIRLA YOKSA HATA ÇIKAR !!!!
	CLRF	LSB
	CLRF	MSB
	BSF	STATUS,5
	MOVLW	B'00010111';  PORTA,3 ÇIKIŞ PİNİ
	MOVWF	TRISA
	CLRF	TRISB
	BCF	STATUS,5
	BCF	PORTA,3
	BCF	PORTA,2
	GOTO	TEST
TEST
	CALL	GOSTER
	MOVWF	PORTB
	BTFSS	PORTA,0
	GOTO	AZAL
	BTFSS	PORTA,1
	GOTO	ART
	GOTO	HAZIRLA
AZAL
	CALL	BEKLE
	MOVLW	.0
	SUBWF	AYAR,W
	BTFSC	STATUS,Z
	GOTO	TEST
	DECF	AYAR,F
	CALL	GOSTER
	MOVWF	PORTB
	GOTO	HAZIRLA
ART
	CALL	BEKLE
	MOVLW	.10
	SUBWF	AYAR,W
	BTFSC	STATUS,Z
	GOTO	TEST
	INCF	AYAR,F
	CALL	GOSTER
	MOVWF	PORTB
	GOTO	HAZIRLA
GOSTER
	MOVF	AYAR,W
KODLA
        ADDWF   PCL,F
        RETLW   ZERO
        RETLW   ONE
        RETLW   TWO
        RETLW   THREE
        RETLW   FOUR
        RETLW   FIVE
        RETLW   SIX
        RETLW   SEVEN
        RETLW   EIGHT
        RETLW   NINE
	RETLW	TEN
        RETLW   K_BIR
        RETLW   K_IKI
        RETLW   K_US
        RETLW   K_DORT
        RETLW   K_BES
        RETLW   K_ALTI
        RETLW   K_YEDI
        RETLW   K_SEKIZ
        RETLW   K_DOKUZ
	RETLW	K_ON
;--------------------
HAZIRLA
	CLRF	HT1
	CLRF	LT1
	MOVLW	.0
	SUBWF	AYAR,W
	BTFSC	STATUS,Z
	GOTO	TEST
ISLEM
	MOVF	AYAR,W
	ADDLW	.10
	CALL	KODLA
	MOVWF	HT1
	SUBLW	.255
	BTFSC	STATUS,Z
	INCF	LT1,W
	MOVWF	LT1
	GOTO	CALIS
CALIS
	MOVF	HT1,W
	MOVWF	HT
	MOVF	LT1,W
	MOVWF	LT
SIFIR
	BCF	PORTA,3  ; PORTA,3'Ü "0" YAP
	CALL	SAYAC
	DECFSZ	LT,F
	GOTO	SIFIR
;----------------------
	BTFSS	PORTA,0
	GOTO	AZAL
	BTFSS	PORTA,1
	GOTO	ART
;----------------------
BIR
	BSF	PORTA,3  ; PORTA,3'Ü "1" YAP
	CALL	SAYAC
	DECFSZ	HT,F
	GOTO	BIR
	GOTO	CALIS
;----------------------
SAYAC
	MOVLW	.10
	MOVWF	LSB
SAY
	DECFSZ  LSB,F
	GOTO SAY
	RETURN
;----------------------
BEKLE
	MOVLW .255
	MOVWF LSB
DON1
	MOVLW .255
	MOVWF MSB
DON2
	DECFSZ  MSB,F
	GOTO DON2
	DECFSZ  LSB,F
	GOTO DON1
	RETURN
;============================================================================;

	END

Yukarıdaki devrenin .ASM kodları:


<pre>	LIST P=16F84A
              #include "P16F84A.INC"
              __CONFIG _WDT_OFF &_XT_OSC &_PWRTE_ON &_CP_OFF
LSB 	EQU 	H'20'
MSB 	EQU 	H'21'
SAYI	EQU	H'22'
;*******************
	ORG 	0X00
	GOTO 	BASLA
;*******************
BEKLE
	MOVLW .45
	MOVWF LSB
DON1
	MOVLW .95
	MOVWF MSB
DON2
	DECFSZ  MSB,F
	GOTO DON2
	DECFSZ  LSB,F
	GOTO DON1
	RETURN
;*******************

BASLA
	CLRF	 MSB
	CLRF	 LSB
	BSF	 STATUS,5
	MOVLW 	 B'11000000'
	MOVWF    TRISA
	CLRF	 TRISB
	BCF	 STATUS,5
	CLRF 	PORTB
	CLRF	PORTA
	CLRF	SAYI
	GOTO	ANA
;********************
ANA
	BTFSS	PORTA,0
	CALL	AZALT
	BTFSS	PORTA,1
	CALL	ARTI
	CALL	GOSTER
	GOTO	ANA
;********************
AZALT
	CALL	BEKLE
	MOVLW	.0
	SUBWF	SAYI,W
	BTFSC	STATUS,Z
	RETURN
	DECF	SAYI,F
	GOTO	GOSTER
;********************
ARTI
	CALL	BEKLE
	MOVLW	.255
	SUBWF	SAYI,W
	BTFSC	STATUS,Z
	RETURN
	INCF	SAYI,F
	GOTO	GOSTER
;********************
GOSTER
	MOVF	SAYI,W
	MOVWF	PORTB
	RETURN
;********************
	END</pre>

Devrelerin ASM ve HEX dosyaları ektedir

Yazıyla İlgili Dosyaları İndirmek İçin Aşağıdaki Dosyaları İndir Butonuna Tıklayın



Facebookta Paylas






Benzer Yazılar

PIC16F84 ile 4′lü Tek Display İle 0-9999 Sayıcı

Devre 16F84 ile 0-9999 ileri geri sayıcı devresi. Devrede sayıları göstermek amacıyla 4 tane 7 segment display yerine 4lü tek display kullanılıyor. Bu da devrede kullanılan devre elemanı ve bağlantı sayısını azaltıyor

PIC16F84 İle 0-9999 Sayıcı Devre – PBP

Devrede mikrodenetleyici olarak Pic16F84 kullanıldı. Programlama dili olarak da PicBasic Pro. Devre 0 ile 9999 arasında ileri geri sayım yapıyor

PIC16F84 İle LCD’li Termometre Devresi

Pic16f84 kullanılarak yapılmış termometre devresi. Sıcaklık 2x16 LCD'de gösteriliyor. Program dili olarak C kullanılmış.

28903 Görüntüleme.

Yazar : hakki0548

“PIC16F84 ile DC Motor Hız Kontrol Devresi” for 2 comments

  1. Yılmaz diyor ki:

    Hocam biz öğrencilerimizle bu devreyi yapmak istiyoruz teşekkürler, hocam bu devrede butonlara basılı konumdayken display artıp azalırken motora pwm voltajı gelmediği için parmağımızı çekene kadar motora gerilim gitmiyor. Bunu display gibi basılı konumdaykende çalıştırma imkanımız olurmu? Teşekkürler

    • srdbhdr diyor ki:

      bunu hpwm ile yapabilirsiniz ancak, 16f84 de bu olay yok ancak bu devreyi 16f628 e uyarlanırsa yapılabilir. orada duty ayarını buton ile ayarlayıp çıkıştaki pwmi değiştirebilirsiniz. slm

PIC16F84 ile DC Motor Hız Kontrol Devresi Yazısı için Yorum Yapabilirsiniz