Power supply + battery?

Hi All,

I have a power supply serving 48V and 20A.
Let’s say that my motor needs … 30A current.

Is there any solution combining AC power supply + a battery pack?

In my configuration let’s say that 60% of the time the motor should draw … 15A - it could run from the power supply here.
There will be moments where 30A will be needed and here the battery should take control.
(ideally 20A from the power supply + 10A from the battery).

Commutation between 15A (power supply) and full 30A will be quite often (let’s say that 1,2 times per … 2 sec). When the current consumption < 20A (power supply serving current to the motor) the battery pack should be charged (all maybe should be connected to a charger all the time?).

Is the above possible to build?

Thank you for any hints.

Yes, all possible, I think there have been a couple other threads on this. e.g.
https://discourse.odriverobotics.com/t/motor-efficiency-dyno-odrive-control-queries
In this case, a lead-acid battery was used to sink long-term regen energy. For transients, a combination of power supply and brake resistor is fine.

Provided you have a voltage-limited and current-limited power supply (e.g. a lab power supply) then you can simply set your power supply for your battery’s safe nominal voltage and safe maximum charging current, and connect the power supply directly across the battery in parallel.

Configure the ODrive max regen current in line with the safe charging current, and set the overvoltage_ramp_start to be slightly higher than the power supply voltage. overvoltage_ramp_end should be no higher than your battery’s maximum safe voltage.

However, I suspect you don’t need this at all for your application! (a force feedback steering wheel, iirc?).
If you send 30A to the motor, you are NOT drawing 30A from the power supply. You actually draw something similar to motor current * PWM Duty because the mosfets switch between drawing current from the power input, and recirculating the current in the motor coils, driven by the stored energy in the motor’s inductance. So it acts kind of like a switch mode power supply, with the motor itself as the inductor.
This effect is most pronounced when the motor is stalled (producing torque but not moving) because the PWM duty is extremely low since you aren’t driving against any back-EMF from the motor, you only have winding resistance to overcome.
To calculate current from the power supply at stall: Think abut the electrical power (I^2 R) needed to push 30A through your (very low) winding resistance. Then take I=P/V at the power supply, and multiply by about 1.1 for the efficiency of the ODrive (about 90%). Or take a multimeter and measure the actual current. :slight_smile:

1 Like

I haven’t as of yet tested the lead acid battery sink…

Can I use a Li-ion Battery Pack like this one:

Battery pack parameters:
Charging voltage: 48V
Charge current: greater than or equal to 5A

in this case, battery’s safe nominal voltage=48V and safe maximum charging current=5A?

If I set a power supply for 48V/5A and my current demand (motor) will be:

  1. 4A, than i will be able to drive the motor (4A) and charge the battery (1A spare)?
  2. 15A, than i will take 5A from the power supply and 10A from the battery?

Yes.
I’m gonna use position control to set a predefined zero position and use vel_gain to change the current (stiffnes).

Right now when I set
odrv0.axis0.motor.config.current_lim=10

and when I move the shaft of my motor by let’s say… 90deg
than
odrv0.axis0.motor.current_control.Iq_measured
shows -10 (10)

And you say that if I measured the output current from my power supply (input current supplying the ODrive) It wouldn’t show 10A, correct?

correct. and if you’re runni.g at 48v on the psu, i’d predict less than 1A

yeah, it must be true:

right now i have s-1000-48 power supply (48V/20.8A).
I was afraid of burning it, so I set current_lim=20 (max of my power supply).
I just changed it to 30 and Iq-measured shows 30 :slight_smile: (no evidence of smoke from my power supply :slight_smile: ).

  1. Is there any command showing ODrive input current?
  2. if my motor’s max ratings are: 48V and 70A, than which is the limmiting current Iq_measured or ODrive input current?

Lol. Of course it’s true. :stuck_out_tongue:

As I say - think about it in terms of power and energy.
If your motor really was consuming 1kW of electrical power, and transmitting none of that as mechanical power (torque x velocity, where velocity ~= 0) then you should expect smoke from the motor!

  1. yes, ODrive provides an estimate of its input current - ordv0.ibus iirc.
  2. Work it out for yourself!! :roll_eyes: :stuck_out_tongue_closed_eyes:
    What is the power in terms of I^2 R for 30A through your motor’s winding resistance? (ODrive measures that for you - see motor.config.phase_resistance after you’ve done a motor calibration at least once)
    Then calculate the power supply current (ie divide the power by 48V).
    As I say, ODrive is 90% efficient or more, so discount it (unless you can feel those FETs getting hot)