TMC2209 stepper speed
Posted: Tue Nov 28, 2023 12:24 pm
Hello everyone,
I'm experiencing a problem where I can not seem to run my stepper motor at any speed above around 250RPM.
I see this is a pretty common issue around the web, but I have not found any solution that actually fixes my problem.
My setup is as follows: The stepper im using is a bipolar JoY-iT Nema11-02 motor, with the specs:
Rated voltage: 6.5V
Rated current: 0.67A
Phase resistance: 9.7ohm
Step angle: 1.8deg
Holding torque: 120mN.m
200 steps/rev
Rated for 3000rpm.
However, i have the same problem with a bigger Nema 14 (400mN.m, 4.2V, 1.5A) and Nema17 (3.4V, 1.7A).
Using the TMC2209 library by Peter Polidoro (https://github.com/janelia-arduino/TMC2209)
I'm setting the following things with the library:
Run-current = 100%
Hold-current = 5%
Enable CoolStep (2,0)
Disable analog current scaling
Enable automatic current scaling
Disable StealthChop
Reply delay = 2
StallGuard threshold = 0
StealthChop duration threshold = 0
Standstill mode = freewheeling
Microsteps per step = 1 (in order to disable microstepping, for torque reasons mainly)
CoolStep current increment = 0
Use external sense-resistors
Inverse motor direction
Enable automatic gradient adaptation
Then, for running the motor, i set vAct to a value that makes the motor run at 200 RPM, which works.
However, going above 250 makes it unstable, and not self-start, and above about 280 it just stops turning. This is the same for all motors.
It helps a little to lower the run-current, and i can reach somewhere around 300-320 rpm with that, however with reduced torque (as expected).
It also sometimes helps to change the start and end hysterises for SpreadCycle.
Using stealthchop or not makes little to no difference.
Using an oscilloscope, the output to my motor seems fine, and doesnt seemingly drop in voltage under load/higher current.
Measuring across my exteral sense resistors, or putting a meter in series with the motor, shows i use about 300mA per resistor (so per coil, 600mA in total) for the small 0.67amp motor.
My theory is I'm either not charging the coils fast enough (too low voltage) or I'm not discharging the coils fast enough (decay too slow, yet changing things like TBL, PWM offset, HSTRT and HEND doesn't seem to do much). But I'm not sure how to deal with either without burning out the motor.
Please help, and please let me know what more info y'all might need.
Thanks in advance,
Ras
I'm experiencing a problem where I can not seem to run my stepper motor at any speed above around 250RPM.
I see this is a pretty common issue around the web, but I have not found any solution that actually fixes my problem.
My setup is as follows: The stepper im using is a bipolar JoY-iT Nema11-02 motor, with the specs:
Rated voltage: 6.5V
Rated current: 0.67A
Phase resistance: 9.7ohm
Step angle: 1.8deg
Holding torque: 120mN.m
200 steps/rev
Rated for 3000rpm.
However, i have the same problem with a bigger Nema 14 (400mN.m, 4.2V, 1.5A) and Nema17 (3.4V, 1.7A).
Using the TMC2209 library by Peter Polidoro (https://github.com/janelia-arduino/TMC2209)
I'm setting the following things with the library:
Run-current = 100%
Hold-current = 5%
Enable CoolStep (2,0)
Disable analog current scaling
Enable automatic current scaling
Disable StealthChop
Reply delay = 2
StallGuard threshold = 0
StealthChop duration threshold = 0
Standstill mode = freewheeling
Microsteps per step = 1 (in order to disable microstepping, for torque reasons mainly)
CoolStep current increment = 0
Use external sense-resistors
Inverse motor direction
Enable automatic gradient adaptation
Then, for running the motor, i set vAct to a value that makes the motor run at 200 RPM, which works.
However, going above 250 makes it unstable, and not self-start, and above about 280 it just stops turning. This is the same for all motors.
It helps a little to lower the run-current, and i can reach somewhere around 300-320 rpm with that, however with reduced torque (as expected).
It also sometimes helps to change the start and end hysterises for SpreadCycle.
Using stealthchop or not makes little to no difference.
Using an oscilloscope, the output to my motor seems fine, and doesnt seemingly drop in voltage under load/higher current.
Measuring across my exteral sense resistors, or putting a meter in series with the motor, shows i use about 300mA per resistor (so per coil, 600mA in total) for the small 0.67amp motor.
My theory is I'm either not charging the coils fast enough (too low voltage) or I'm not discharging the coils fast enough (decay too slow, yet changing things like TBL, PWM offset, HSTRT and HEND doesn't seem to do much). But I'm not sure how to deal with either without burning out the motor.
Please help, and please let me know what more info y'all might need.
Thanks in advance,
Ras