I’m trying to use two ODrive Pro’s in a dynamometer, in which a test motor is driven forward, and a load motor provides resistance. I’m trying to use a shared 48V source, and I’m realizing that at top speed my load motor might generate more than 48V on its phase wires. I think up to 54V, based on 2600 rpm and a motor k_v of 48 rpm/V.
How will the ODrive respond to this?
I’ve been imagining it as a current source onto the input bus. But maybe that’s wrong. Or maybe the ODrive will explode/melt.
More details:
My power supply is a bank of Mean Well BIC-2200-48, which are bidirectional. If the line rises above 48V, it’s supposed to push this back onto the mains.
The net power usage of the test and load motors should just be the losses in the system, as the load motor generates electricity to partially-fuel the test motor. I hope.
The load and test motors have different k_v’s so the test motor should be able to reach 2600 rpm on 48V.
We’re running at high power, trying to hit 3.5 kW continuous with active liquid cooling, so the currents are like 80A.
We’re willing to push the boundaries on specs where it isn’t crazy, as this is just a lab setting.
Any other obvious problems you can spot in my plan?
Hi! So, I’m going to check internally to verify what I’m saying is correct, but here’s my thoughts:
Normally, yes the ODrive would act as a current source if it’s regenerating. However, this is a specifically different operating mode; if the motor back-EMF voltage is higher than the supply voltage, the ODrive’s inverter will act as a three phase rectifier and raise the supply voltage – this is a generally uncontrolled operating mode due to the reverse conduction in the FETs.
The FETs in reverse conduction mode have a much lower current capacity – we don’t have definite numbers from the FET manufacturer, but I’d say the maximum current would be more around 10-15A.
I agree that no current should be flowing back to the supply, however the circulating current in the system will still be through the FETs in reverse conduction mode, which will cause issues.
Overall, I’d definitely not recommend running this system in this configuration. I’d see two options here:
The simplest option is to just keep the test RPMs lower than 48*KV_load (where KV_load is the load motor’s kv), then extrapolate data outwards. Since you’ll be running these at least to 48/54=89% of max speed, you should have enough data to fit the motor model and performance quite accurately.
You can also change to a 54V or 56V power supply. We use the GE/ABB EP3000AC48INZ for our rack testing, which is configurable between 48-58V. They can typically be found quite cheaply on eBay (e.g. here), and you could use two regen clamps without brake resistors to put them in parallel. Or, since the power will be regenerated between the two motors and you just need the supply to be higher wattage than inefficiency losses, you may just need one supply
That was excellent information! I will use a combination of those methods, boosting my supply slightly, and limiting my speed slightly. I’m glad I asked!
Is it the RMS voltage that matters, or the peak? I imagine that k_v values are RMS-based, so I’d be generating (for example) 54Vrms. Can the FETs handle that, with a supply of >54VDC? Otherwise I need a sqrt(2) factor in there too, reducing my allowed speed further.
If I keep the voltage under the supply voltage, is there a current limit? I’ve been using the input current limits around 80A DC in my thinking. Can the ODrive handle regenerating the full 80A DC @ 48V source voltage?
Here, it’s the peak voltage that matters; when operating in uncontrolled reverse conduction (as opposed to normal regeneration) the FETs operate as a three phase rectifier, so even the waveform peaks will conduct through the FET body diode, which cannot handle much current – plus, the ODrive won’t be properly controlling the motor.
Unfortunately the units of KV are frustratingly inconsistent dependent on the manufacturer – some people use line-line volts, some use RMS; ODrive uses line-line, so a 48V DC supply + 100 KV (line-line) motor would result in 4800 RPM maximum. You’ll have to check your motor’s datasheet for the exact number – typically you can assume line-line unless otherwise stated.
Two methods for experimentally determining KV:
The one I use:
Spin the motor unloaded (no gearbox or anything connected) in velocity control, at some medium-high speed in velocity mode. Make sure you’re well below saturation speed, I usually do around ~half of the motor’s theoretical maximum speed, and try a few different points along the speed range to ensure consistency
Measure the velocity in rev/s with axis0.vel_estimate and look at axis0.motor.foc.v_current_control_integral_q
KV will be roughly 60*vel_estimate / (sqrt(3) * v_current_control_integral_q)
for example, if you’re spinning at 30 rev/s and v_current_control_integral_q is 8.73, then that’s a KV of 60*30/(sqrt(3) * 8.73) == 1800 / (1.732*8.73) == 119 RPM/V
I’d definitely recommend characterizing KV if possible, since the ODrive also assumes that the motor’s torque constant is proportional to the KV, so for accurate torque reporting you’ll also need an accurate KV.
Regarding the current limit, you’re fully current limited by the motor phase current, no matter the actual motor velocity / back-EMF voltage (assuming V_bEMF < V_supply of course). We rate the ODrive Pro up to 80A with active cooling (datasheet here), but realistically it’s fully thermally limited and I’ve seen currents of >120A continuous with the proper heatsink setup. With the heatspreader + heatsink and fan, I don’t think there will be an issue reaching 80A (or higher). Note that if you’re designing some thermal management solution to push above that current (you can fairly trivially with an improved thermal pad for the Pro and a higher CFM fan under 400-500mA continuous draw) I’d definitely recommend making sure you have some thermal management for the top-side capacitors; even a fan blowing at them from above helps a lot once you start pushing current towards the triple digits.