I am working on a project with hoverboard motors driving arms linked together, which means that there will be times where one motor pushes another. Since I will have numerous motors, motors could be driven by separated drives.
As a result an Odrive might have to regenerate energy that will be used by another drive, and possibly fairly large amounts of power since both motors on a drive could be regenerating at the same time.
The net energy consumed will be likely always positive, or close to it - might be regenerating a bit of energy for a short amount of time. Typically something easy to handle with a brake resistor, but that would be one brake resistor for the whole setup (with at least 2 Odrives and 4 motors).
The project is still quite undefined in terms of hardware. I will probably be using a standard power supply for powering that setup, not sure which yet.
I understood that Odrives can provide regen to the mains and I’d guess that if net consumed energy is positive that won’t be a problem. However I’d probably need some safeguard setup for energy to be stored: I can’t use the brake resistor (or I’ll dissipate energy instead of running it back in the mains), I’ll have a large value at the maximum regen current parameter, and I do have a bit of energy flowing back on braking.
Has any of you been in this kind of situation ? Is there any safeguard circuit you’d suggest, typically implying diodes, capacitors and brake resistor(s), to protect the power source in that situation ?
From an individual axis basis, the ODrive will absolutely generate “regen” current during braking / acting as a generator.
Each ODrive v3.6 (with two axes on board) is smart enough to look at the net bus current for the two motors and not turn on the brake resistor unless the net bus current is negative. However, they’re not smart enough to do this across multiple v3.6 devices.
Options:
Always make sure that the two “fighting” motors are on the same v3.6 board, and each board always pulls net positive current. Then you don’t need anything else, as it’ll always be handled on the individual board. Still need a brake resistor on each board for when the whole system comes to a stop.
Enable the dc_bus_overvoltage_ramp feature on the ODrives, so that as the DC bus voltage rises due to net negative current, the ODrive actively burns up power to keep the bus voltage from rising. A diode on the mains is optional to prevent any regen current from going to your power supply
Diode on the mains, then an active braking module - this is like option #2, except it’s a 3rd party device which monitors the bus voltage and sends current to a large resistor.
For my desktop setup, I am using a 2A power supply IN PARALLEL WITH a 2200mAh, 4S lipo. I set the power supply to 15.4V, which keeps the Lipo charged at only around 30-50%. This way, the lipo can both source and sink around 70A of current as needed.
You might want to consider using a high-discharge (“60C style”) Lipo in parallel with your power supply to provide this current sink/source buffer.
a 6S lipo would provide the same functionality around 23-24V.
Note that if the lipo is fully charged, it’s current-sinking capability will be much less. Hence, you need to keep it at not 100% charge.
Hey everyone, thank you for the tips.
I guess Wetmelon’s solution 2 with diode and possibly capacitor would be the best pick in my situation. I understand that the extra power is burnt in the choke resistor, right?
The trick then is to estimate how much capacitance I need on the line. Braking an amount of energy means storing this energy in the capacitors, both the capacitor on the Odrives and the extra one(s). Selecting the right capacitor means making sure the voltage never exceeds safety level (say 48V for the 50V board).
You will need quite large capacitors, possibly a supercap bank. Depending on your budget and reliability requirements, lipo might be cheaper; it is even cheaper and much more robust to just let the excess energy go. Most applications simply do not benefit all that much from regenerating.