Ü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
@ DEVICE PIC12F683
@ DEVICE PIC12F683, FCMEN_OFF
@ DEVICE PIC12F683, IESO_OFF
@ DEVICE PIC12F683, WDT_ON
@ DEVICE PIC12F683, BOD_ON
@ DEVICE PIC12F683, PWRT_ON
@ DEVICE PIC12F683, PROTECT_OFF
@ DEVICE PIC12F683, MCLR_OFF
@ DEVICE PIC12F683, INTRC_OSC_NOCLKOUT
@ DEVICE PIC12F683, BOD_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 'CCP1, PWM 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ğeri. değ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
(https://ibb.co/GC2m3X9)