mojozoom
Member
I have a 2-phase stepper motor driven buy a pre-built MCU with TMC2130 stepper motor drivers. Based on measurements it appears that the stepper motor doesn’t microstep in equal amounts (some are 50% wider than others), and I’d like to improve on that.
The microstepping is accomplished by PWM of the current to the two stepper motor phases, following a sine/cosine current arrangement. Based on the measured results, one of the two phases is providing more magnetic flux than the other, resulting in unequal length microsteps. Interestingly, a change in stepper motor made almost no difference, therefore I feel that the unbalanced output is mostly due to the driver IC, not the stepper motor itself. I have not measured the actual currents to each stepper phase, it sounds like I'd need a decent oscilloscope to do that.
I can't solve this with software, as the stepper driver uses the same curve data internally for both the sine and cosine current waveforms, just offset by 90 degrees. Any changes would apply to both. So all I can imagine doing to equalize the two are:
1) Optimizing the current sensing resistors used by the TMC2130 stepper driver
2) Use a potentiometer to adjust the current through the 6 ohm stepper coils as needed to balance the current
3) Intercepting and altering the PWM current signal sent to the stepper via Arduino or equivalent
This isn't the kind of thing I do very often, so I may be missing some possible obvious solution. Any help is appreciated. thanks!
The microstepping is accomplished by PWM of the current to the two stepper motor phases, following a sine/cosine current arrangement. Based on the measured results, one of the two phases is providing more magnetic flux than the other, resulting in unequal length microsteps. Interestingly, a change in stepper motor made almost no difference, therefore I feel that the unbalanced output is mostly due to the driver IC, not the stepper motor itself. I have not measured the actual currents to each stepper phase, it sounds like I'd need a decent oscilloscope to do that.
I can't solve this with software, as the stepper driver uses the same curve data internally for both the sine and cosine current waveforms, just offset by 90 degrees. Any changes would apply to both. So all I can imagine doing to equalize the two are:
1) Optimizing the current sensing resistors used by the TMC2130 stepper driver
2) Use a potentiometer to adjust the current through the 6 ohm stepper coils as needed to balance the current
3) Intercepting and altering the PWM current signal sent to the stepper via Arduino or equivalent
This isn't the kind of thing I do very often, so I may be missing some possible obvious solution. Any help is appreciated. thanks!