20 Ocak 2019, 11:53:38

Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d


12f683 hpwm motor surme

Başlatan elektro77, 23 Aralık 2018, 17:35:33

elektro77

Üstadlarım.aşağıdaki yazılımı ve devreyi L298 ile butonlu motor hız kontrolu yapmak için kullanmak istiyorum.
Yazılımda çok iyi değilim. ordan burdan karıştırarak yazdım.  Çalışıyor.Fakat buton kontrol kısmında sorunlar var. Bi bakarmısınız. birde programda doğru olmayan yerler varsa düzeltebilirmisiniz. Devre ve yazılım ektedir.SAYGILARIMLA
Kod Seç
DEVICE PIC12F683
DEVICE PIC12F683FCMEN_OFF
DEVICE PIC12F683IESO_OFF
DEVICE PIC12F683WDT_ON
DEVICE PIC12F683BOD_ON
DEVICE PIC12F683PWRT_ON
DEVICE PIC12F683PROTECT_OFF
DEVICE PIC12F683MCLR_OFF
DEVICE PIC12F683INTRC_OSC_NOCLKOUT
DEVICE PIC12F683BOD_ON

DEFINE OSC 4
OSCCON
=%01100001
CMCON0 
7
ADCON0
=%10000000

DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 1
DEFINE ADC_SAMPLEUS 30

' ============= PWM Ayarları =========
CCP1CON = %00001100 '
CCP1PWM mode
PR2 
249           'max Duty=1000 olacak %50 için 500 oluyor.249'
T2CON = %00000101   'TMR2 on, prescaler 1:4 'bu işlemcide PWM Timer2 ile çalışıyor.
CCPR1L 0

GPIO
=0
TRISIO
= %00110001
ANSEL 
= %01110001
WPU
=0
'--------------------------------------------------
dim var BYTE
sayi  VAR BYTE
pmw   con 1023   ' 
Pwm çözünürlüğü
motor_min con 0
hiz   con 1      
' Butona basarken değişim hızı, bu değer ile oynayarak hız değiştirilir
HAM   VAR WORD
DUTY  VAR WORD
X     var word
artir var GPIO.4   '
Arttırma
azalt 
var GPIO.5   'Azaltma  
PAUSE 300
HAM=511            '
başlangıctaki pwm değerideğiştirilebilir.
'---------------------------------------------------


BASLA:

if ARTIR=1 and AZALT=0 and ham<pmw then   
sayi=sayi+1
if sayi>hiz then
ham=ham+64
sayi=0
endif 
endif

if ARTIR=0 and AZALT=1 and ham>motor_min then   
sayi=sayi+1
if sayi>hiz then
ham=ham-64
sayi=0
endif 
endif

DUTY=(ham+1)*/250
PAUSE 100

IF X=DUTY THEN BASLA
X=DUTY
CCP1CON.4=X.0
CCP1CON.5=X.1
CCPR1L=x>>2
goto basla
end