hi kees, great to know that's working for you now.
p.s.for some reason all my indentation disappears when I posted this message, don't know why
must use VB code click here to know how
after that your code can look something like that
Code:
motor CON 3
sensor VAR PORTB.0
temp VAR WORD
setspeed VAR BYTE 'speed set by user
power VAR WORD 'control variable (CV) , PWM dutycycle
PV VAR WORD 'process value, or actual speed
error VAR BYTE 'difference between set speed and actual speed
Kprop VAR BYTE 'constant for proportional feedback control
Kprop = 4
run:
Pot 5,25,setspeed
PulsIn sensor,0,temp ' measure speed
IF temp2 > 0 Then ' check if motor is running
PV = 10000 / temp ' depends on encoder and motor
IF PV >255 Then PV = 255
IF setspeed > PV Then
error = setspeed - PV
power = power + (error / Kprop) 'new PWM value
IF power > 255 Then power = 255 'otherwise overflow
Else
error = PV - setspeed
power = power - (error / Kprop) 'new PWM value
IF power > 255 Then power = 0 'otherwise overflow EndIF
Else
power = setspeed ' so a motor without optical sensor
EndIF ' can also be used
HPwm motor,power,10000 ' Send a PWM signal at 10kHz, drive motor
LCDOut $FE,1,"spd ",DEC3 setspeed 'show on screen
LCDOut $FE,$C0,"pv ", DEC3 PV 'for debugging
GoTo run
and once it's done, it appear that there's one ENDIF missing
Bookmarks