Using second axis to drive field current for high power variable KV motor


I am playing with a few modified automobile alternators to assess their utility for high torque and high speed drive applications with adjustable KV.

These alternators are quite cheap on ebay (e.g. And they are beefy. They range from 150A to 250A, which is about 2kw-4kw at 15V DC output. Torque wise they can do 10Nm to 20Nm depending on the size. The best part is that they have adjustable field strength through the slip ring supplied rotor field winding. That widens their effective speed range significantly. Most of them are rated to 18000rpm mechanically and electrically.

To use them as BLDC servos I have made the following modifications:

  • stator: To support high output current most alternators are winded as 3 phase generators with 2 independent sets of delta in parallel and rectified. I remove the rectifiers and reconnect the 2 deltas in series and in wye, this generally lowers the kv by a factor of 3~4.

  • rotor: Remove voltage regulator and supply DC (1-10V) directly.

  • encoder: Mount magnet at the slip ring end (back end) of the shaft and AS5048 encoder on back cover.

I have tested driving these alter-motors with ODrive 3.6 with rotor field excited with fixed 5V DC and that worked quite well after some tuning. I would like to drive the rotor field with the second axis and test real time current control. Can I use the “brushed motor” support in for this?

For now my use case is limited to 2 preset field current levels: high torque and high speed. Would I need 2 sets of tuned gain parameters then?


1 Like

Yes, if you drive the field winding as if it were a brushed motor in torque (current) mode then you will get what you need :slight_smile:

2 sets of parameters (aka gain scheduling) will get better performance than a single tuning, true, but you may be able to link velocity gain directly to your field current if you can do a bit of maths…

Very interesting idea. Would love to know how you get on. :smiley:

I haven’t tested the code yet. Took a look at the pull request and it only has open loop voltage control implemented at the moment. The current control mode is not implemented. I am trying to determine how much work it is to implement and test current loop.

In other news I have installed a 3-wheel tension sensor ( to my set up so that I can measure dynamic load on the shaft through a cable spool mounted on the shaft. I want to see how quickly my set up can respond to load changes.