Belt drive spindle tuning

I have an unknown 4 pole (I think) servo motor with a 1024PPR encoder attached to a milling machine spindle with a toothed belt. I’m using an Argon servo drive. I’ve tuned the torque parameters to a good fit with the expected curve by clamping the spindle in the machine vice and going through the guide on the wiki.

I’m now having trouble tuning either velocity or position modes and was wondering if anybody has some tips, or whether there are inherent issues in my setup. I’m not at the machine right now so I can’t post config/tuning screenshots but will do if they help. My questions (if I may be greedy):

  1. Does the slight elasticity in the belt and the inertia of the spindle cartridge make tuning the servo harder/impossible?
  2. If I change the magnetic pole count to a number other than 4, the motor stalls. Is 4 a sensible amount of poles, or is something really messed up in my motor? It’s a second hand eBay special so documentation is nonexistent.
  3. Is 1024PPR (4096 pulse quadrature) accurate enough for a spindle with orient ability?
  4. Even with an acceleration of 1 set, both the commanded velocity and position are impossible to tune to the orange “set” line on the scope graphs. I’ve tried all sorts of values, most of which make the motor squeal and squawk. If I tune it so it’s quiet again, I get lots of overshoot, etc.
  5. I clamped the spindle to stop it moving when I torque tuned it. Again, there’s slight elasticity in the belt between spindle and motor. Does this affect torque tuning? Would that affect position/velocity tuning?

I’ve been struggling with this on and off for like 3 days now so would appreciate some help or tips, or something obvious I’m not doing. Happy to provide more details later - I can get the config and some screenshots when I’m next in the shop. Has anyone else had problems tuning spindle motors before? It’s a BT30 spindle and the motor is rated at 380V/12A. I’m feeding it about 300V/10A which should give me plenty of power.


If you can run the motor continuously more than one turn in torque mode, then your pole count and encoder resolution settings are correct. These are critical parameters and if they are not correct, the motor will either stall or run havoc after a while.

More info about testing this here:

The belt does not affect torque tuning.

When a motor can be run continuously, velocity and/or position mode can be tuned.

The encoder should always be attached to the servo motor directly. All kinds of mechanical non-idealities cause delays etc. to the data available inside the drive microcontroller, and these can easily cause oscillations and other issues.

The elasticity of the belt and the inertia of the spindle will cause delays in fast accelerations, decelerations, and during rapidly changing loads, and the delay affects the drive calculations by not giving accurate position data.

The orientng accuracy you have to decide related to the application. Please note that in position mode it’s normal that the position drifts between approx. ±5 encoder units when “locked” into a position. The encoder being attached to the spindle will increase this, and it’s likely to cause oscillations rendering position holding impractical.

Due to this, higher accuracy encoder is always preferred.

Kind regards,

1 Like

Thanks for the response! The motor spins smoothly in torque mode so I think I’ve got those parameters dialled in. Thanks for putting my concerns about the belt to rest.

Sorry if I wasn’t clear, but the encoder is indeed attached directly to the back of the motor :slight_smile:

Orient accuracy doesn’t have to be perfect - probably +/- 1 degree is fine, as long as the drive dogs on the BT30 spindle face fit in the toolholder slots it’s gonna be fine.

Now attempting to tune position mode, I get these results:

Ignore the jitter in the first screenshot - obviously too high P gain, but I can’t for the life of me get the blue line to sit on the orange. It always lags behind by a bit, regardless of what P or I values I input. This is why I was asking about belt stretch and load inertia. The wiki page has screenshots of the achieved position sitting nicely on the set position, but I haven’t been able to achieve that with hours of fiddling. Also, the closer I get to a maybe ideal line, the more the motor screams and squeals. Is it underpowered for the load, perhaps?


I’m sorry for the late reply.

Tuning a motor can indeed be quite long process and might seem impossible to achieve.

My experience has been so far, that first you get tuning close to the setpoint, but not good enough. Then the parameters need to be increased further, and sometimes quite much so.

Remember to try to adjust the position feed-forward, which usually is between 80%-100%.

Kind regards,

No worries, thank you for the advice! I managed to get a stable motor in position and velocity modes by using some unusually low (compared to the wiki) values. I kept going higher which never worked, but using lower numbers did the trick.