TIC T249 Dropping Steps with 3.9V 600mA Stepper

Driving a SY20STH30-0604A from T249. Basic operation seems ok, but it’s not rock solid.

Controlling using Arduino via UART & TIC library.
Current limit set to 600mA (when stepping), dropped back to 100mA when idle. I give it a few ms to settle after requesting the ‘run’ current.
Vin is 12V.

When I’m stepping one step at a time, I don’t notice dropped steps. But if I set a home position, step away from home, then drive back the same number of steps (set target pos to 0), it mostly doesn’t reach home. It rattles a bit occasionally which sounds like it tried to step but didn’t succeed.

When scoping the coil voltage it looks a whole lot like the 12V is modulated, so current limiting is not ‘smooth’ like with a buck SMPS. My suspicion is that steps are happening in the middle of a modulation ‘low’ and therefore getting missed, but it’s hard to verify that. I also guess that somebody would have encountered this and therefore probably synchronised the 2, but you can’t always assume these things.

Any thoughts before I dig too much deeper? It’s so close to being great, but not quite over the line.
Thanks in advance.


There are a lot of possible causes for missed steps. Can you tell me more about your system? For example, what are you using as a power source, and what (if anything) is attached to the output shaft of your stepper motor?

Could you post the scope captures of the coil voltage that you are referring to? Also, could you post your Tic settings file? You can save your Tic settings file by selecting the “Save settings file…” option within the “File” drop-down menu of the Tic Control Center software while your Tic is connected.


Hi Brandon,
The stepper controller is powered from a lab PSU running at 12V with current limit of 3A.
There is a low torque worm drive attached to the stepper shaft, but the issue was still happening with no mechanical load, and with stepper current limit set to 600mA (rated for that motor). It actually works fine (except the occasional dropped step) with the load attached and current set to 400mA, so torque is not the problem.
I don’t have a Tic settings file; it’s all done through code.

The setup code for the stepper is:
tic.setCurrentLimit(100); // Hold current

When stepping, I ramp up the current first:
stepperSetRunCurrent(); // 400mA, with 20ms delay
bool res = stepperWaitForPosition(targetSteps); // From example source
stepperSetHoldCurrent(); // 100mA
return res;

A couple of scope pics attached too, if that helps. Duty cycle definitely changes depending on input voltage.T249 1 T249 2 T249 3 T249 4 T249 5

Every Tic controller has settings stored on it and the settings file allows us to see those settings. Even when you are specifying some parameters from your code, the settings file from your Tic will still hold a lot of useful configuration settings that could give us insight, such as starting speed, acceleration values, step mode, decay mode, and more. So, it would still be useful to see it.

Do the missed steps still occur if you leave the current limit at your higher setting instead of reducing it to 100mA when the stepper motor reaches its position? Another thing you could try is reducing your max speed setting; this would check if Tic is stepping too fast for the stepper motor to keep up with.


The missed steps were at high current (400mA) so I’m pretty sure it isn’t a torque issue, but you never know. Settings file attached. I have since changed the mode from Full step to Half step, and it seems to have improved things.
I’ve attached the settings file anyway, but I don’t think there’s much wrong going on there. Let me know if you see something fishy though.
tic_settings T249 Default.txt (1.3 KB)
After the ‘half step’ change I’m happy enough to run with what I have. Many thanks for your help.

I am glad you are happy with the performance in half-step mode. I glanced through your settings file just in case, but I didn’t see anything obviously concerning. If you would like to troubleshoot further or run into other problems, please let us know.