Constant torque and Regen

In my application the motor maintains a constant torque regardless of which direction it is rotating. There is an input torque that can either be slightly higher than the motor’s output torque,causing it to rotate backwards (opposite the output torque vector), or it can be slightly less at which point the motor moves in the same direction of the torque vector. I call the first scenario “overdriving” and it tends to cause problems as it produces regenerative energy and the back EMF produces a voltage opposite the power supply and current increases. The scenarios are constantly alternating every second or so (kind of like an oscillating spring), so the motor is never overdriven for very long and it is always followed by the more typical scenario. The servo drive and power supply from my first prototype would error out if the motor was overdriven too fast (I used an Elmo servo, amp and power supply I got off Ebay) My current setup seems to handle it fine though. From what I can tell, this power supply stores the energy in capacitors and then dissipates it during the next normal move. Now to the question, do you think the Odrive could handle this? I see you have a terminal block for a resistor to handle regen, but I’d rather capture it and use it as my current setup does. Since my application will be very repetitive, I’d need a large resistor and it just makes more sense to reuse the energy if I can. I assume the resistor is there to protect the power supply, but if I leave the resistor out (or just but a jumper in) would the energy flow back to the power supply, assuming that the power supply can handle it?

Since my application requires minimal to no feedback for position and velocity, I’m not sure I need encoder feedback. Generally speaking, do you think you could commutate the motor in torque control mode using only hall sensors? If you think it’s possible, do you plan on adding hall feedback in the future? Not having encoders would be a nice simplification for my system. If you are planning on adding them, I’ve used this to quickly add hall feedback to an RC motor

Maybe it could help you prototype, rather than figuring out how to get hall sensors inside the motor.

What would it take to increase the voltage of the Odrive? My setup right now is running at 75 VDC. I realize that’s pretty specific and maybe higher than what your typical buyer would need, but is increasing it to 48V possible?

Does the PWM input you mention on the feature page control torque or position? Many industrial servo drives take a 0-10 V analog signal that controls the torque. The Teknic system I’m using takes a PWM or a variable frequency pulse train and varies torque relative to duty cycle or frequency. Having a way to vary torque without having to use a communication protocol would be nice.

1 Like

Yes, I know what you mean with “overdriving” in this sense. It is usually simply called braking, as the torque from the motor is applied to slow down the rotor. A drive that is capable of braking is sometimes called a “four quadrant drive”, see this for more explanation.

As you say, we need to deal with the energy that is absorbed when we brake, and indeed the AUX port on the ODrive can be used to dump the energy into a power resistor. You can also omit the resistor, and in that case the energy will simply accumulate on the combined capacitance of the ODrive and the power supply. What happens next depends on your setup:

  • If you have a reversible power supply that can absorb energy, then that’s great. But I think these are very uncommon and expensive. If you find a cheap one, then let me know ;D
  • The voltage rises on the capacitors, and the Over Voltage Protection (OVP) of the power supply trips, and the power supply shuts down.
  • You have a power supply that has OVP that is much higher than nominal output (this is common in CC/CV PSUs and some battery chargers). Then the capacitor voltage may have room to rise without tripping the protection. That leaves you some room to store the energy. However if you do the calculation, electrolytic capacitors store very little energy. For example, the ODrive has almost 2mF capacitance, and if you are running at 12V nominal, and absorb energy until they are 24V, you can capture 0.8J of energy. Calculation here.
  • You have a CC/CV power supply AND a battery on the bus. This is a great idea, and will probably work very well. We developed this idea a bit here on the forum.

About hall sensor feedback, there is some other people interested in this too, see this topic. It should be doable, and I think hall support will become available: Either you or someone in the community will implement the code (I’m happy to provide guidance), or I will make it at some point, though it’s not an immediate priority for myself. One issue you might have with hall commutation is torque distortions from the low resolution. This graph shows the normalised magnitude of torque ripple you will get (it’s normalised to applied torque).

Those hall sensor boards are cool! I bought two for my own testing ;D. I think there is some applications where hall effect commutation can be used at low speed regimes, and then dynamically switched to sensorless as the rotor speed increases.

Yes, there are some discussions about higher voltages, and it’s looking like 48V is quite popular. So maybe there will be a 48V version ;D.

The PWM input function is a planned feature, it is not implemented yet. When it is in place, the intent is that you should be able to use the USB to configure the ODrive, and during configuration you can map the PWM to any kind of input you want. But right now, the only well supported input method is USB. The timeline for getting the PWM interface in place is a couple of months if I am left to do it, but anyone is free to do it, and again I’m happy to provide guidance.

Thanks for your interesting comments and questions!