Szukam pomysłu na ustabilizowanie odczytu potencjometru z ADC w układzie gdzie potencjometr pełni rolę "manetki gazu" do sterowania wypełnieniem PWM.
Obecnie wygląda to tak:
P.S.
Tak, wiem, to można zrobić na NE555 bez mikrokontrolera
ale tu 0 jest na środku i są obroty przód-tył.
Obecnie wygląda to tak:
Temp = 512
Inval = 127
Do
If Inval < 16 Then ' ### Reverse w/bypass ###
Set Rev ' Reverse polarity relays on
Reset Fwd
Set Byp ' Bypass relay on
Pwm1a = 255
Elseif Inval < 112 Then ' ### Reverse w/PWM 20%-94% ###
Set Rev ' Reverse polarity relays on
Reset Fwd
Reset Byp ' Bypass relay off
Pwm = 112 - Inval ' ADCmax - ADCCurrent
'Pwm = Pwm * 48 ' *= (255 - PWMmin)
'Pwm = Pwm / 32 ' /= (ADCmax - ADCmin)
Shift Pwm , Left , 1
Pwm = Pwm + 48 ' += PWMmin
Pwm1a = Pwm ' Set desired PWM duty cycle
Elseif Inval < 142 Then ' ### Stop ###
Reset Byp ' Bypass relay off
Pwm1a = 0
Reset Rev ' Reverse polarity relays off, only for power consumption reasons, motor is stopped anyways
Reset Fwd
Elseif Inval < 239 Then ' ### Forward w/PWM 20%-94% ###
Reset Rev ' Reverse polarity relays off
Set Fwd
Reset Byp ' Bypass relay off
Pwm = Inval - 142 ' ADCCurrent - ADCmin
'Pwm = Pwm * 48 ' *= (255 - PWMmin)
'Pwm = Pwm / 32 ' /= (ADCmax - ADCmin)
Shift Pwm , Left , 1
Pwm = Pwm + 48 ' += PWMmin
Pwm1a = Pwm ' Set desired PWM duty cycle
Else ' ### Forward w/bypass ###
Reset Rev ' Reverse polarity relays off
Set Fwd
Set Byp ' Bypass relay on
Pwm1a = 255
End If
Do
Inval = Getadc(0)
Inval = Getadc(0)
If Inval > Temp Then
Adcdelta = Inval - Temp
Else
Adcdelta = Temp - Inval
End If
Loop Until Adcdelta > 32
Temp = Inval
Shift Inval , Right , 2
LoopP.S.
Tak, wiem, to można zrobić na NE555 bez mikrokontrolera