MicroLYNX – Using encoder motor to detect stall
The following MicroLYNX sample program shows how to detect a stalled condition by using an encoder motor.
VAR Num 'declare variables
Msel=256 'set 256 microsteps/full step
Munit=51200 'set 51200 microsteps per revolution
'MUNIT=256*200=51200
Eunit=800 'set encoder counts to 800
'encoder counts = 4*encoder line count
Ee=1 'enable encoder mode
Stlde=1 'enable stall detection
Stlf=.01 'stall factor. Stepper motors stall when
'they lag behind by more than 2 full steps
'(2/200)=.01 revolution. Thus Stlf=0.01
Ios 13=3,0,0,0,1,0 'Encoder Channel A input (low true)
Ios 14=4,0,1,0,1,0 'Encoder channel B input (high true)
'logic levels vary depending on the
'encoder and the direction of count.
'+ moves need a + count.
Ios 21=0,1,0,0,0,0 'set IO 21 as a general purpose output
VAR stalled=21 'declare global variable called "stalled"
Pgm 1 'enter program mode at address 1
LBL startup 'label designation that executes on power up
Io stalled=0 'set IO 21 to 0 or off
ONER stuck 'On Error transfer execution to a sub routine
'called stuck. ONER acts as a call not a branch.
MOVR 1 'move relative 1 revolution in the + direction
HOLD 2 'hold program execution until move is complete
DELAY 500 'delay 500 milliseconds
BR startup 'branch to label startup and repeat program
END 'end of program
Pgm 'exit program mode
Pgm 100 'enter program mode at address 100
LBL stuck 'label referred to in the "ONER" command
Error=0 'set ERROR to 0 and clear error
Io stalled=1 'set IO 21 to 1 or on.
END 'end of program. Clears sub routine stack
Pgm 'exit program mode