Stepper motor skipping steps until I lower voltage

I have four of KL23H2100-35-4B stepper motors on my 3-axis CNC (doubled up on the y-axis); these are 3.5A 4-wire bipolar stepper motors with a rated 2.8mH inductance.

I am driving them with the Geckodrive 214V driver, set to 32 microsteps; I have also set the driver DIP switches for a 3.5A motor. Using Geckodrive's voltage equation of 32 * SQRT (L) = VMAX, I originally started out with 53V setting on my 2000w switching power supply.

The wiring is done via shielded 4-conductor cabling of approximately 6' each cable, where the outer shield is grounded to earth near the driver; the shield is left unconnected at the motor end.

This configuration skipped a lot of steps, losing about one inch of movement for about 100" of back-and-forth travel; I tried a lot of different things to troubleshoot (such as turning off the spindle, unplugging the VFD, adding a power line filter), before zeroing in on changing the voltage. It seems that lowering the voltage lead to fewer missed steps. I've finally arrived at a setting of 18V that seems to deliver zero missed steps.

One additional potentially relevant point: it seems the missed steps were always counterclockwise steps. Without fail, with the higher voltages, whenever I would direct the machine to return to return to machine X0 Y0, the actual position would be at a positive X & Y. This was true whether the testing was done with a small number of back & forth movements that I hand coded (or even just triggered manually with my pendant), or from a much more-involved command file with thousands of instructions.

I did not change any motor speeds - at 18V, the steppers still seem to be able to reach my desired speeds (albeit with less torque that might be problematic for my needs). However, I am stumped as to why the "right" voltage of 53V skips steps; even a modest-but-still-higher voltage of 24V skips (fewer) steps. I would expect that a higher voltage would just cause the motor to (over)heat and maintain high torque at higher speeds.

I'm wondering if anyone can give guidance on either my misunderstanding here, or perhaps on other troubleshooting or testing steps to see why the higher voltage skips steps. Thank you!

--- UPDATE MARCH 1 --- My original settings when I posted this were max speed of 350 IPM / max acceleration 8 IPS/S, and 8 microsteps per revolution. Given the machine characteristic of 0.47 inches per revolution (there's a few more decimal points, but I'll ignore that), that led to a 17.8KHz max frequency.

In the last few days, I've tried many different settings, to no avail in completely eliminating the missed steps (except the low voltage of 18v -> low torque). Most of these other settings were tried at 24V:

• change driver current to 3A (instead of 3.5A)
• change to 4 microsteps
• change to 2 microsteps
• change to 6 IPS/S acceleration
• change to 4 IPS/S acceleration
• change max speed to 300 IPM
• change max speed to 250 IPM

The only thing that seems to work is indeed the 18V.

To answer a few other questions here, the drivers have a large aluminum heat sink on them, but even more to the point, the driver itself is barely warm to the touch, so I don't think them overheating is a contributor.

And with the power off (but motors still attached), I can move the gantry with some force. With the motors unattached, I can move the gantry fairly easily.

Still to try: lowering the driver current to something much lower, say, 2A as suggested. And perhaps purchasing an oscilloscope - don't have one yet! Thank you.

--- UPDATE #2 MARCH 1 --- As I searched for higher-voltage motors, I saw some similar spec'd motors that had both a continuous current rating and a higher current peak. Since I was potentially replacing these motors, I figured "why not", and increased the GeckoDrive current to 5A (with the power supply still at 18V), with the idle current set to 50% (as in, the GeckoDrive will automatically drop the current when no pulses are received within 1s). Lo and behold, this seems to be the sweet spot: high torque; high speed (back to my 350 IPM); high acceleration (back to 8IPS/S); and no missed steps after a test 150k line cut.

The motors do get hot to the touch (still safe to touch, but just barely), so I will be adding some heatsinks to them and perhaps further augment with some small cooling fans. But this seems to meet the needs.

Thanks for all the help & pointers in this process.

• Did motor get hot? – Tony Stewart EE75 Feb 25 at 8:50
• Warm, yes. But not too hot to touch. – David W Feb 25 at 8:58
• Is it possible that the driver overheats and enters a protection mode? – user253751 Feb 25 at 10:51
• As a troubleshootnig tactic, a small clamp-on current sense transformer and oscilloscope can help visualize the current waveform produced by your driver, which can help home in on the issue – Pete W Feb 25 at 14:56
• the driver seems to be a current-mode one and can be configured for various current levels. Make sure it is set to something reasonable (try 2A to start with, work up if needed). A bit unlikely, but the reaction of the power supply may have some effect too, although you seem to have a good sized supply – Pete W Feb 25 at 14:58

Update TL;DR version

You are exceeding the motor spec of 3.5A per phase. This means the coil DCR = 2.55V/3.5A = 0.73 Ohms which means it is rated for I^2R= 9 Watts per coil or 18W max per motor. This does not include reactive power but just the real power dissipated in coil resistance. The coil impedance of 2.4mH at 50 Hz is about the same as the resistance (Z= 2pi f*L). Thus you need to know your full step cycle frequency at max microstep rate. But if you have a current limit of 3.5 and limit the acceleration to not exceed motor force limit from f=ma the inertial mass. Thus in theory raising the voltage should have no effect above current limit if it behaveses well.

When current saturates core L reduces and heat loss raises the temperature.

V=LdI/dt where dt is the step rate from maximum velocity setting and thus impedance of motor at some commutation frequency of windings where fractional steps also create a fraction of max torque in between full steps.

I max depends on temp rise of the motor at idle from the cooling method (fan opt.) and $$\I^2*DCR*Rth\$$ [‘C/W]

Slip depends on inertial force > holding torque while accelerating, so acceleration max setting is critical.

So how do you control the max acceleration? It is the most critical function. Then current limit for heat and voltage control allows faster acceleration at high speed before the current limits the average voltage.

With Gcode Panel on windows using a CNC bridge on an UNO, it is one of many parameters easily set by trial and error for max seek velocity for a given frictional and inertial load. With this I was able to use a dual Y motor gantry with 12V, 2A sweep 1m back and forth with full steps in about 2 seconds error-free. I could same with 1m spans on a single X-axis which has less inertia.

I can’t comment yet on their formulae and your driver may not give you access to the acceleration(?)

• Is there a way to get from that spec to the "right" voltage to use other than my trial and error approach? Thanks! – David W Feb 25 at 9:03
• And should I lower the driver current to allow more voltage in order to eke out more torque? Thanks – David W Feb 25 at 9:09
• No , reduce acceleration to increase performance but increase max velocity maybe.. what are your parameters for load and V, I step rate, a, &v – Tony Stewart EE75 Feb 25 at 14:20
• When you shut off the system and move the gantry by hand slowly, is the friction low in each direction? This will generate back EMF into your system . – Tony Stewart EE75 Feb 25 at 14:27
• Added more detail above - thank you. – David W Mar 1 at 16:59