Pack Voltage vs max rpm/power
Pack Voltage vs max rpm/power
Damien's video today around the GS450H being under-volted got me thinking...
Presumably these things are inverter current limited at low rpms - I don't have enough experience to know when back-emf and then field weakening starts to play their part.
You can spin a Tesla small drive unit up to around 6000rpm 30% (no load) with just 40V at around ~6amps - how much power would be available under load with a higher current limit at this voltage I have no idea, Damien mentions being able to move the car around at around 40V with the GS450H I believe.
I think ZeroEV mentioned they had a car running a tesla SDU at ~260volts, but said performance was hampered right through the rpm range and to avoid doing it at all costs. My instinct at a fairly modest undervolt would be still current limited at most low rpms (and you could perhaps push the inverter current limit a little harder to make up for that), but this anecdotal evidence would suggest otherwise...
Any others out there with any real-world experiences? It would be interesting to hear people's experiences with running lower pack voltages.
Presumably these things are inverter current limited at low rpms - I don't have enough experience to know when back-emf and then field weakening starts to play their part.
You can spin a Tesla small drive unit up to around 6000rpm 30% (no load) with just 40V at around ~6amps - how much power would be available under load with a higher current limit at this voltage I have no idea, Damien mentions being able to move the car around at around 40V with the GS450H I believe.
I think ZeroEV mentioned they had a car running a tesla SDU at ~260volts, but said performance was hampered right through the rpm range and to avoid doing it at all costs. My instinct at a fairly modest undervolt would be still current limited at most low rpms (and you could perhaps push the inverter current limit a little harder to make up for that), but this anecdotal evidence would suggest otherwise...
Any others out there with any real-world experiences? It would be interesting to hear people's experiences with running lower pack voltages.
- Kevin Sharpe
- Posts: 1339
- Joined: Fri Dec 14, 2018 9:24 pm
- Location: Ireland and US
- Been thanked: 8 times
Re: Pack Voltage vs max rpm/power
We often drive my Tesla SDU powered VW Bus around the yard using a 200V Prius GEN 2 pack. I've no idea what the top speed is but seriously doubt it would hit 30mph even though the bus weighs very little (stripped out insides and no main traction battery installed).
This is a personal post and I disclaim all responsibility for any loss or damage which any person may suffer from reliance on the information and material in this post or any opinion, conclusion or recommendation in the information and material.
- tom91
- Posts: 2410
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 209 times
- Been thanked: 572 times
Re: Pack Voltage vs max rpm/power
The issue is that you need to modify the tune (due to the way the OpenInverter software does not use current and just controls speeds), to recover the lost performance. Which Zero-EV and myself have not dared go to far on.Kevin Sharpe wrote: ↑Wed Jun 03, 2020 9:11 pmWe often drive my Tesla SDU powered VW Bus around the yard using a 200V Prius GEN 2 pack. I've no idea what the top speed is but seriously doubt it would hit 30mph even though the bus weighs very little (stripped out insides and no main traction battery installed).
As you drop the voltage the more PWM duty you need to push the same current into the motor (OHMs Law). However seeing that a Tesla inverter is quite an expensive bit of kit you do not want to empirically find the current limits trying to recover the lost performance.
Kevin, have you modified any of the parameters to compensate for running a lower voltage?
-
- Posts: 440
- Joined: Sat Jul 27, 2019 10:53 am
- Location: UK
- Has thanked: 1 time
- Been thanked: 15 times
Re: Pack Voltage vs max rpm/power
The back-emf from the motor opposes the pack voltage. With a higher pack voltage, you gain the ability to consume more power at higher rpm compared to lower voltages.
When selecting a pack voltage you would work backwards from your desired performance at the maximum rpm required.
Inverter current limits are based on the max power which can be dissipated by the switching components, for an IGBT this is (as a generalisation) mostly from P=IV (where I = Ic is the collector current flowing through the IGBT and V = Vce is the voltage from across the IGBT (typically around 0.6V)). This is why IGBTs are used for higher voltage inverters, where as in a MOSFET power dissipation is a function of their internal resistance, Rdson.
The max power dissipation of the GS450h IGBTs is unknown, but can be calculated from the data we have on the unit. It is more complicated in this unit, as the inverter has 18x IGBTs (6 for MG1, 12 for MG2), and different characteristics for the two motors.
I realise you never asked a question in your post. Do you have any questions about this topic?
When selecting a pack voltage you would work backwards from your desired performance at the maximum rpm required.
Inverter current limits are based on the max power which can be dissipated by the switching components, for an IGBT this is (as a generalisation) mostly from P=IV (where I = Ic is the collector current flowing through the IGBT and V = Vce is the voltage from across the IGBT (typically around 0.6V)). This is why IGBTs are used for higher voltage inverters, where as in a MOSFET power dissipation is a function of their internal resistance, Rdson.
The max power dissipation of the GS450h IGBTs is unknown, but can be calculated from the data we have on the unit. It is more complicated in this unit, as the inverter has 18x IGBTs (6 for MG1, 12 for MG2), and different characteristics for the two motors.
I realise you never asked a question in your post. Do you have any questions about this topic?
- tom91
- Posts: 2410
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 209 times
- Been thanked: 572 times
Re: Pack Voltage vs max rpm/power
A graph of what happens, less voltage the sooner the torque knee occurs.


- Kevin Sharpe
- Posts: 1339
- Joined: Fri Dec 14, 2018 9:24 pm
- Location: Ireland and US
- Been thanked: 8 times
Re: Pack Voltage vs max rpm/power
Damien spent a couple of minutes getting it working and I have no idea what he changed if anything. It's only purpose was to move the bus around

This is a personal post and I disclaim all responsibility for any loss or damage which any person may suffer from reliance on the information and material in this post or any opinion, conclusion or recommendation in the information and material.
Re: Pack Voltage vs max rpm/power
@xp677 - My question I guess was to try and understand how the effects of pack voltage scale in the real world...
Kevin's mention of a reasonable 200V not feeling capable of 30mph is surprising, I would have expected reduced performance, but not to that extent!
Kevin's mention of a reasonable 200V not feeling capable of 30mph is surprising, I would have expected reduced performance, but not to that extent!
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 2 times
- Contact:
Re: Pack Voltage vs max rpm/power
Likely with a modified tune 200v could still provide good performance (less so at higher speeds). But it would certainly require lots of tuning, just as any voltage does. And as tom91 said, you don't want to catastrophically learn that your power stage doesn't like lots of current.
-
- Posts: 3567
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 134 times
- Been thanked: 336 times
- Contact:
Re: Pack Voltage vs max rpm/power
Hm... Leaf motor running at 220Vdc gives enough power to be able to reach 140km/h mounted to transmission.
Likewise i see a rise in performance with Leaf motor and 360Vdc. But i use a single speed gearbox so it is not exactly vis a vis.
Likewise i see a rise in performance with Leaf motor and 360Vdc. But i use a single speed gearbox so it is not exactly vis a vis.
- Kevin Sharpe
- Posts: 1339
- Joined: Fri Dec 14, 2018 9:24 pm
- Location: Ireland and US
- Been thanked: 8 times
Re: Pack Voltage vs max rpm/power
It's important to remember that reality is often different from what the internet hive mind 'knows'. The Toyota/Lexus systems are a perfect example of that as anyone who's driven in BEXUS will attest

It's worth watching Damien's latest Model 3 DU video... at 40V with no load the motor is very slow. Would it exceed 30mph at 200V in a car? Only one way to find out for sure.
This is a personal post and I disclaim all responsibility for any loss or damage which any person may suffer from reliance on the information and material in this post or any opinion, conclusion or recommendation in the information and material.
- tom91
- Posts: 2410
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 209 times
- Been thanked: 572 times
Re: Pack Voltage vs max rpm/power
The biggest issue in this topic is that Induction (speed based) and Magnet (Current Based) are two different beasts due to the opensource inverter code differences.
The induction motor code does not voltage compensate automatically, FOC code (magnet) works based on current so automatically compensates for voltage drop as it targets a current.
Tesla Models SDU and LDU are both induction, thus will not compensate automatically.
All other motors from OEMs(discussed on this forum) are magnet motors thus automatically compensate, I do not know how the field weakening is moved around when certain things cannot be achieved due to lack of voltage to over come bemf.
-
- Posts: 3567
- Joined: Mon Dec 24, 2018 1:37 pm
- Location: Slovenia
- Has thanked: 134 times
- Been thanked: 336 times
- Contact:
Re: Pack Voltage vs max rpm/power
Actually sine code does compensate for this with rather ingenious code Johannes put forth some years back. Thus even ACIM has voltage compensation in software.
I remember years back even Zapi had this option and it was slip control algorithm.
I remember years back even Zapi had this option and it was slip control algorithm.
- tom91
- Posts: 2410
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 209 times
- Been thanked: 572 times
Re: Pack Voltage vs max rpm/power
Yes It can, does not do so automatically, you need to set it up, and giant variations in voltage will not compensate fully so anytime you change battery setup you should retune.
- celeron55
- Posts: 804
- Joined: Thu Jul 04, 2019 3:04 pm
- Location: Finland
- Has thanked: 38 times
- Been thanked: 136 times
- Contact:
Re: Pack Voltage vs max rpm/power
I counted frames in the video, and it looks like the axles were spinning at about 260rpm at 40V. With 2000mm circumference wheels that's 29km/h. So you could be going 100km/h at just 140 volts.Kevin Sharpe wrote: ↑Thu Jun 04, 2020 6:56 am It's worth watching Damien's latest Model 3 DU video... at 40V with no load the motor is very slow. Would it exceed 30mph at 200V in a car? Only one way to find out for sure.
- Kevin Sharpe
- Posts: 1339
- Joined: Fri Dec 14, 2018 9:24 pm
- Location: Ireland and US
- Been thanked: 8 times
Re: Pack Voltage vs max rpm/power
It's easy to speculate but vehicles driving are more compelling... lets try and deal with facts which I think is what the OP is interested inceleron55 wrote: ↑Thu Jun 04, 2020 11:17 amI counted frames in the video, and it looks like the axles were spinning at about 260rpm at 40V. With 2000mm circumference wheels that's 29km/h. So you could be going 100km/h at just 140 volts.Kevin Sharpe wrote: ↑Thu Jun 04, 2020 6:56 am It's worth watching Damien's latest Model 3 DU video... at 40V with no load the motor is very slow. Would it exceed 30mph at 200V in a car? Only one way to find out for sure.

This is a personal post and I disclaim all responsibility for any loss or damage which any person may suffer from reliance on the information and material in this post or any opinion, conclusion or recommendation in the information and material.
- Jack Bauer
- Posts: 3665
- Joined: Wed Dec 12, 2018 5:24 pm
- Location: Ireland
- Has thanked: 11 times
- Been thanked: 347 times
- Contact:
Re: Pack Voltage vs max rpm/power
So a few things to note here. Tom made the most important point in that the Tesla LDU and SDU motors are async (induction) whereas the Toyota and M3 Rear DU motors are sync (permanent mag). Now I am no motor expert by any means but from what I understand and have observed an induction motor is designed around a base speed and voltage. e.g. the Siemens 1pv5135 : https://evwest.com/support/Azure300VDC-400Acurve.pdf
In the case here we see 300v was used. Openinverter controls an induction motor by varying the slip. Slip is how far in front or behind the rotor field is to the stator field. We do this because we need to induce currents in the rotor bars to make them magnets. Hence the term induction motor. No slip = no rotor magnets. No rotor magnets = no torque generated. Ok, so we want to make our induction motor accelerate under load. To do this we add current to the stator windings (Volts) and we make them move (Hertz). The rotor sees this moving magnetic field and gets excited! It gets current induced into its rotor bars and wants to start following the stator field. The encoder tells Johannes brain if the rotor is moving. If not we need to add more V/Hz and so on. Once it gets moving we keep it in line by means of controlling its slip. So what has all this got to do with Pack voltage? Well, we need a certain voltage to overcome the winding resistance but that is quite small. Once we get the rotor moving we want move voltage to push back against the back emf that the rotating rotor is producing BUT we also need to keep inducing MORE current into the rotor if we want to keep it accelerating. So we get a viscious circle. The more we want the rotor to accelerate the more it pushes back against our pack voltage.
So can we cheat? Yes a little bit. In Kevin's bus once we hooked up the prius pack of course it sat there looking at us despite Kevin pushing that throttle like it had an accelerator pump on there:) This is the stationary rotor case. We didn't have enough V/Hz in the stator to induce enough current into the rotor to make it move under load. Answer? MORE BOOST! The parameter Boost causes the initial V/Hz applied at the detection of positive throttle to increase. Once we got enough current in there the bus moves. But not very fast. That's problem 2.
That strong boost is giving us a strong rotor field which causes a strong back emf which causes us to run out of pack voltage to push more current and so on.... Can we beat this? Yes sort of. I didn't bother in the bus because we only need it to move around the yard. But could it do a burn out? oh yeah. Answer is ??? Make one of the magnets weaker! We can't do much about the strong rotor field as we need it to make torque but what if we could weaken the stator field while still having a strong rotor field? That's called field weakening or Fweak in openinverter parameters. Lower that value and we start backing off the strength of the stator magnets at lower rpms. The cost is in lower torque and efficiency if I remember correctly but it lets the rotor accelerate.
In the case here we see 300v was used. Openinverter controls an induction motor by varying the slip. Slip is how far in front or behind the rotor field is to the stator field. We do this because we need to induce currents in the rotor bars to make them magnets. Hence the term induction motor. No slip = no rotor magnets. No rotor magnets = no torque generated. Ok, so we want to make our induction motor accelerate under load. To do this we add current to the stator windings (Volts) and we make them move (Hertz). The rotor sees this moving magnetic field and gets excited! It gets current induced into its rotor bars and wants to start following the stator field. The encoder tells Johannes brain if the rotor is moving. If not we need to add more V/Hz and so on. Once it gets moving we keep it in line by means of controlling its slip. So what has all this got to do with Pack voltage? Well, we need a certain voltage to overcome the winding resistance but that is quite small. Once we get the rotor moving we want move voltage to push back against the back emf that the rotating rotor is producing BUT we also need to keep inducing MORE current into the rotor if we want to keep it accelerating. So we get a viscious circle. The more we want the rotor to accelerate the more it pushes back against our pack voltage.
So can we cheat? Yes a little bit. In Kevin's bus once we hooked up the prius pack of course it sat there looking at us despite Kevin pushing that throttle like it had an accelerator pump on there:) This is the stationary rotor case. We didn't have enough V/Hz in the stator to induce enough current into the rotor to make it move under load. Answer? MORE BOOST! The parameter Boost causes the initial V/Hz applied at the detection of positive throttle to increase. Once we got enough current in there the bus moves. But not very fast. That's problem 2.
That strong boost is giving us a strong rotor field which causes a strong back emf which causes us to run out of pack voltage to push more current and so on.... Can we beat this? Yes sort of. I didn't bother in the bus because we only need it to move around the yard. But could it do a burn out? oh yeah. Answer is ??? Make one of the magnets weaker! We can't do much about the strong rotor field as we need it to make torque but what if we could weaken the stator field while still having a strong rotor field? That's called field weakening or Fweak in openinverter parameters. Lower that value and we start backing off the strength of the stator magnets at lower rpms. The cost is in lower torque and efficiency if I remember correctly but it lets the rotor accelerate.
I'm going to need a hacksaw
Re: Pack Voltage vs max rpm/power
So the boost param is only used during the exact transition from 0rpm to >0rpm? (Haven't really understood the difference between boost and ampmin)
I guess to your point of the required voltage at zero speed the SDU has a boost setting of 2400 in your default params giving just 22V to drive enough current at startup with 355V pack. The voltage increases beyond this would all be in order to create a differential over the rising backemf?
If so, at least at the point of startup in theory a 22V pack with boost set to 37813 would have the same torque as a setup with a full pack (assuming both could supply comparable current)
Is field weakening the dropping of field current via pwm whilst continuing to increase the field rotation speed (hz)?
I guess to your point of the required voltage at zero speed the SDU has a boost setting of 2400 in your default params giving just 22V to drive enough current at startup with 355V pack. The voltage increases beyond this would all be in order to create a differential over the rising backemf?
If so, at least at the point of startup in theory a 22V pack with boost set to 37813 would have the same torque as a setup with a full pack (assuming both could supply comparable current)
Is field weakening the dropping of field current via pwm whilst continuing to increase the field rotation speed (hz)?
- Jack Bauer
- Posts: 3665
- Joined: Wed Dec 12, 2018 5:24 pm
- Location: Ireland
- Has thanked: 11 times
- Been thanked: 347 times
- Contact:
Re: Pack Voltage vs max rpm/power
Ok I see I havent really helped the understanding...
I'm going to need a hacksaw
Re: Pack Voltage vs max rpm/power
That's disheartening - none of the above is accurate?
It was based off a similar example in the wiki: "Example: boost=1700 At full throttle an effective voltage of 1700/37813*355=16V"
for the SDU example - if motor startup involves a pwm duty to drive 22V (and the resultant ohms law current), presumably a 22V pack with the inverter generating ~100% pwm is capable of generating the same conditions in the motor at this point in time ? (startup only)
Someone mentioned there is some correction factors implemented in code (if you set udcnom) seems to be this portion below:
if (udcnom > 0)
{
s32fp udcdiff = udcfp - udcnom;
s32fp factor = FP_FROMINT(1) + FP_DIV(udcdiff, udcnom);
//increase fweak on voltage above nominal
fweak = FP_MUL(fweak, factor);
//decrease boost on voltage below nominal
boost = FP_DIV(boost, factor);
}
It was based off a similar example in the wiki: "Example: boost=1700 At full throttle an effective voltage of 1700/37813*355=16V"
for the SDU example - if motor startup involves a pwm duty to drive 22V (and the resultant ohms law current), presumably a 22V pack with the inverter generating ~100% pwm is capable of generating the same conditions in the motor at this point in time ? (startup only)
Someone mentioned there is some correction factors implemented in code (if you set udcnom) seems to be this portion below:
if (udcnom > 0)
{
s32fp udcdiff = udcfp - udcnom;
s32fp factor = FP_FROMINT(1) + FP_DIV(udcdiff, udcnom);
//increase fweak on voltage above nominal
fweak = FP_MUL(fweak, factor);
//decrease boost on voltage below nominal
boost = FP_DIV(boost, factor);
}
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 2 times
- Contact:
Re: Pack Voltage vs max rpm/power
Yes, that should theoretically work. Boost would have to be set to 37813 or whatever the max is.cloudy wrote: ↑Thu Jun 04, 2020 2:12 pm That's disheartening - none of the above is accurate?
It was based off a similar example in the wiki: "Example: boost=1700 At full throttle an effective voltage of 1700/37813*355=16V"
for the SDU example - if motor startup involves a pwm duty to drive 22V (and the resultant ohms law current), presumably a 22V pack with the inverter generating ~100% pwm is capable of generating the same conditions in the motor at this point in time ? (startup only)
This scales boost and fweak according to battery voltage, since boost is effectively a percentage and fweak is the endpoint of the v/f curve.cloudy wrote: ↑Thu Jun 04, 2020 2:12 pm Someone mentioned there is some correction factors implemented in code (if you set udcnom) seems to be this portion below:
if (udcnom > 0)
{
s32fp udcdiff = udcfp - udcnom;
s32fp factor = FP_FROMINT(1) + FP_DIV(udcdiff, udcnom);
//increase fweak on voltage above nominal
fweak = FP_MUL(fweak, factor);
//decrease boost on voltage below nominal
boost = FP_DIV(boost, factor);
}
Here's how I understand boost:
If you had a V/F graph, it would show zero volts at zero hertz.
Let's say the field weakening point is 150hz at 300v. Thus the slope is 2 volts per hertz.
Now let's say the motor isn't moving. You floor the accelerator, and the inverter starts sending power to the motor. If the motor isn't moving then the frequency will equal fslipmax (I think). So let's say the motor is getting 3Hz; it will only get 6v of power!
Boost changes the startpoint of the V/F graph. Now this I'm less clear on; does it change the y-intercept, and thus the overall slope, or does it just provide a flat spot at the beginning? Or maybe it offsets the whole graph upwards?
Anyways boost provides higher voltage at startup.
-Isaac
Re: Pack Voltage vs max rpm/power
I think the relevant code is below. I'm not certain, but it looks like the entire slope is being affected
/** Set 0 Hz boost to overcome winding resistance */
void MotorVoltage::SetBoost(uint32_t boost /**< amplitude in digit */)
{
MotorVoltage::boost = boost;
CalcFac();
}
/** Set frequency where the full amplitude is to be provided */
void MotorVoltage::SetWeakeningFrq(u32fp frq)
{
endFrq = frq;
CalcFac();
}
** Calculate slope of u/f */
void MotorVoltage::CalcFac()
{
fac = FP_DIV(FP_FROMINT(maxAmp - boost), endFrq);
}
/** Get amplitude for given frequency multiplied with given percentage */
uint32_t MotorVoltage::GetAmpPerc(u32fp frq, u32fp perc)
{
uint32_t amp = FP_MUL(perc, (FP_TOINT(FP_MUL(fac, frq)) + boost)) / 100;
if (frq < minFrq)
{
amp = 0;
}
if (amp > maxAmp)
{
amp = maxAmp;
}
return amp;
}
/** Set 0 Hz boost to overcome winding resistance */
void MotorVoltage::SetBoost(uint32_t boost /**< amplitude in digit */)
{
MotorVoltage::boost = boost;
CalcFac();
}
/** Set frequency where the full amplitude is to be provided */
void MotorVoltage::SetWeakeningFrq(u32fp frq)
{
endFrq = frq;
CalcFac();
}
** Calculate slope of u/f */
void MotorVoltage::CalcFac()
{
fac = FP_DIV(FP_FROMINT(maxAmp - boost), endFrq);
}
/** Get amplitude for given frequency multiplied with given percentage */
uint32_t MotorVoltage::GetAmpPerc(u32fp frq, u32fp perc)
{
uint32_t amp = FP_MUL(perc, (FP_TOINT(FP_MUL(fac, frq)) + boost)) / 100;
if (frq < minFrq)
{
amp = 0;
}
if (amp > maxAmp)
{
amp = maxAmp;
}
return amp;
}
- johu
- Site Admin
- Posts: 6738
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 380 times
- Been thanked: 1562 times
- Contact:
Re: Pack Voltage vs max rpm/power
Just found this. It offset the whole graph upwards as the various voltage drops don't simply disappear at higher rpm.
Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 2 times
- Contact:
Re: Pack Voltage vs max rpm/power
Glad to hear from the expert on this. Would changing boost theoretically change fweak then?
-Isaac
- johu
- Site Admin
- Posts: 6738
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 380 times
- Been thanked: 1562 times
- Contact:
Re: Pack Voltage vs max rpm/power
Good question as it reveals the expert was wrong
the slope is changed as the maximum amplitude is constant. Fweak is nor affected by boost

Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 2 times
- Contact:
Re: Pack Voltage vs max rpm/power
Hmmm....
The wiki states that
"boost is the digital amplitude of the sine wave at motor startup. It is needed to overcome the motors ohmic resistance. Digital amplitude is an internal quantity. 0 means no voltage is generated at all, 37813 means the full possible voltage is generated."
So does the need to overcome the 'ohmic resistance' disappear at higher frequencies/motor speeds?
-Isaac