Hi,
Yes, if the motor/gearbox requires 4096 steps to turn one revolution the first piece of code will move 360 degrees forward and then 360 degrees back. There are 4 "steps" each time thru the FOR-NEXT loop so 512*4=4096.
In the second piece of code it'll move 1440 degrees forward and then 1440 degrees back.
You can improve your motor performance in two ways:
1) Use half step sequence ( here a sample code)
Code:
HStep var byte [8] ' Half step sequence array
B0 var byte
C0 var byte
P0 var byte
W0 var word
TRISB = 0
P0 = 50 ' incrementing the delay will reduce the motor speed (max 255)
C0 = 0
B0 = 0
HalfMode:
If C0 = 0 then gosub CW
C0 = C0 + 1
if C0 = 2 then C0 = 0
If C0 = 0 then gosub CW
If C0 = 1 then gosub CCW
for W0 = 0 to 8192 ' one turn of the gear shaft ( 64 motor turns)
PortB = HStep[B0]
B0 = B0+1
if B0 = 8 then B0=0
pause P0
next W0
Goto HalfMode
CW: ' half step sequence (clockwise)
HStep[0] = 1
HStep[1] = 3
HStep[2] = 2
HStep[3] = 6
HStep[4] = 4
HStep[5] = 12
HStep[6] = 8
HStep[7] = 9
return
CCW: ' half step sequence (counter clockwise)
HStep[0] = 9
HStep[1] = 8
HStep[2] = 12
HStep[3] = 4
HStep[4] = 6
HStep[5] = 2
HStep[6] = 3
HStep[7] = 1
return
end
2) Use a constant current setup to your motor. The simple way is to use a LM317 configured as costant current supply. See the attached schematic (Resistor 33 Ohms 1 watt. Use 24 V dc as an input to the LM317)
cheers
Al.
Last edited by aratti; - 5th September 2011 at 21:31.
Thks,all for help!!!
I tired testing all code,I hope I do something!
Just one question,
Is possible make some code in picbasic,
When I start step motor,to start every time to one position,
example:
If step motor work some,go to left,go to right,.......
and I stop power,and turn again,is possible,motor back in some start position,and continue work some function!
Last edited by dragan77; - 6th September 2011 at 02:20.
Bookmarks