Battery Amps, Motor Amps and Duty Cycle... Please Explain

the controller works by reducing your battery voltage that the motor sees via duty cycle and pulse width modulation.

the motor produces back emf voltage, which opposes the battery voltage, and which increases as the motor turns faster.

in order to maintain constant motor current, the controller has to increase the effective voltage the motor sees (and duty cycle) as the motor turns faster.

the electrical wattage is the effective voltage times the motor current, and it is also the battery voltage times the battery current.

18 Likes

The esc uses PWM modulation to adjust the motor current, this means that the transistors is on for a portion of time and off for the next, this happens really fast. The motors has inductance, so it smooths out the waveform

What the PWM does is adjust the voltage that is applied to the motor

So when you have 50% duty cycle, your battery voltage is 10V and the motor current is 10 A, the voltage applied to the motor is actually 5 V
If you calculate the power using P = U*I, you will see that for the power to be equal at the battery and the motor, the battery current should be 5 A

So battery current = motor current * duty cycle, and duty cycle is roughly proportional to motor speed

15 Likes

Excellent information. How is the duty cycle calculated?

2 Likes

My understanding is the controller observes the motor current and quickly adjusts the duty cycle until the commanded motor current is achieved… no calculations involved.

5 Likes

…but you can still calculate it precisely if you use algebra to combine and rearrange those equations I shared.

1 Like

So at full speed, is duty cycle 100%? So battery amps and motor amps are equal? Eg. 2 motors running at 50a are pulling 100a from battery?

2 Likes

they would be but vesc maxes at 95%

6 Likes

with no load and 100% duty, the motor turns full speed but you can hardly draw any amps because the bemf voltage produced by the motor nearly matches your battery voltage.

3 Likes

It confuses me because it seems a lot of people run their motor amps higher than what the battery can put out…

3 Likes

when the motor current is say 50a and the battery current is 25a (50% duty cycle or 50% on time)…

the battery is putting out 50a half the time, at an on-off frequency around 20-40 thousand cycles per second, which averages to 25a.

the motor is shorted to itself during the off times, so the 50a motor current keeps flowing the whole time from the motor’s inductance.

11 Likes

So having the motor amps higher than the battery amps isnt risking too much draw?

1 Like

close to 0rpm you can get 120a motor amps with likely less than 20a battery amps, for example.

at constant motor current the battery current increases with increasing rpm.

at constant battery current the motor current decreases with increasing rpm.

only one limit applies at any given time.

8 Likes

So say my battery can only put out 100a… and i have 2 motors set at 60a each, and vesc is limited to 100 battery amps. Does this mean i wont reach the top speed of my motors?

1 Like

that depends on the load, terrain, gearing, kv and tire size.

if your battery can do 100a and you have 2 motors, you want the battery current limit on each vesc to be 50a, but you can safely set the motor current limit higher.

10 Likes

Lets assume perfect conditions. The motors want to reach 120a to acheive 100% duty cycle but vesc is limiting to 100a, surely i wont reach full speed right?

2 Likes

with no load the motor will reach full speed with likely less than an amp, so it depends on the load and gearing.

2 Likes

Cheers dudes, very helpful. I’m gonna have to go back over this a few times with less beer in me for it to sink in. But it is making more sense to me now.

4 Likes

motor_current = (pwm_effective_voltage - bemf_voltage) / winding_resistance_ohms

motor_current = A
pwm_effective_voltage = B
bemf_voltage = C
winding_resistance_ohms = D

A = (B - C) / D

can be rearranged:

B = (A * D) + C

therefore:

pwm_effective_voltage = (motor_current * winding_resistance_ohms) + bemf_voltage

&

battery_voltage * duty_cycle_%_bldc = pwm_effective_voltage

therefore:

duty_cycle_%_bldc = pwm_effective_voltage / battery_voltage

5 Likes

Currently got no working builds :sweat_smile: trying to understand this stuff so i dont fuck anything up.

My flipsky dual6.6 just shit itself and im wondering if its because i set the braking too high. Max motor amps were 35 and i set braking to -60. 10s5p 30q

2 Likes

So would it be likely that I cooked the esc by having it too high?