Page 1 of 1

The parameter documentation project

Posted: Sun Jan 13, 2019 11:28 pm
by johu
In this thread I'd like to develop a description of the various parameters and how they affect operation. I'll start out with what can be found on https://openinverter.org/docs/index.htm ... rs,24.html .
Please feel free to make suggestions, make graphs or drawings etc. to make it as easy to read as possible. I think this is also a good place to submit parameter files. Maybe this should be an "editing thread" so whenever you come back with something new add it to your existing post. A wiki would be more suitable for this, so when I have the time I can set one up.

Motor Parameters

The parameters to adjust the inverter to the motor are boost, fweak, fslipmin, fslipmax, polepairs, fmin, fmax and numimp.

They can be deduced from the motors nameplate or by trying which feels best. For illustration we will assume a bus voltage of 500V and a 4-pole (p=2) motor with a nominal speed of n=1450rpm@f=50Hz and 230V. With 500V DC an AC voltage of 500/1.41=355V can be generated.

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.

Example: boost=1700

At full throttle an effective voltage of 1700/37813*355=16V is generated. The best way to find a feasible value is to optimize it in the finished car. Start with the default value and increase until you get a good startup.

fweak is the frequency at which the full possible voltage is generated. It is also the point of the highest motor power. Beyond fweak torque will decrease to the square of frequency and thus power will decrease linear with frequency.

A starting point for fweak is the motors nameplate:
fweak.png
fweak.png (5.45 KiB) Viewed 5957 times
With our illustration motor fweak=355/230*50=77Hz. fweak can be configured lower than that resulting in more torque at the low end.

fslipmin/fslipmax is the slip frequency at which the motor is run at minimum/maximum throttle. fslipmin is set to the motors optimal slip frequency which can be deduced from the nameplate. fslipmin=f-p*n/60. With our illustration motor fslipmin=50-2*1450/60=1.66Hz. fslipmax can be set as high as breakdown torque which is not found on the nameplate. So its best found experimental starting with 2*fslipmin. If set too high the motor will start to rock violently on startup, possibly tripping the over current limit.

polepairs is set to p, 2 in our example.

fmin should be set just below fslipmin.

fmax is used to limit the speed of the motor. The default 200Hz would result in a maximum speed of about 6000rpm.

ampmin Is the minimum relative amplitude fed to the motor. At very low amplitudes the motor does not generate any noticable torque and throttle travel is wasted that does nothing. Find out a good value by experimenting.


Inverter Parameters

pwmfrq Sets the frequency at which the IGBTs are switched on and off. The faster the switching the higher the losses in the inverter and the lower the losses in the motor. The maximum frequency is also limited by the driver boards as explained here.

pwmpol Sets the polarity of the PWM signals, active high or active low. Do not touch this parameter if you don't know what you're doing. When configured inversely it will blow up your power stage immediatly if connected to a potent power source like batteries.

deadtime The time between switching off one IGBT and switching on the other. 28=800ns, 63=1.5µs. More values can be found in the STM32 data sheet. Make sure to test the deadtime at low power levels. Setting the deadtime too low while operating of a potent power source can blow up your power stage!
Here are some example values (Thanks arber!)
  • 28 (0.8us)
  • 64 (1us)
  • 88 (1.4us)
  • 116 (1.6us)
  • 135 (2us)
  • 155 (2.5us)
  • 185 (3.3us)
  • 195 (4us)
To be continued...

Re: The parameter documentation project

Posted: Tue Jan 15, 2019 8:33 am
by arber333
Deadtime
I suggest first to test without DClink connected.
You can do this by connecting 2channel scope directly to GE terminals of IGBT module.

WARNING! The same should not be attempted with live DC link connected to inverter. Even 12Vdc can cause large interference and noise since both probe GND connections are on the same reference inside scope usually.

You could observe that under load only using differential probes. And they are serious $$$.
Normally i set deadtime by observing unloaded IGBT channel 50% duty signal PWM curve. Observed time is between up slope of second transistor and the downslope of first transistor. I mark one line on 0V of upp transition and 0V down transition. Well 0V transition can need some time so i usually dont observe much below 0V even though shutoff tail can span across several 100ns. For IGBT shutoff voltage is -8V and +15V is on voltage.
Then i add 1.2 factor to account for the distortion under load.
2-Figure4-1.png
Worked for me...

Re: The parameter documentation project

Posted: Tue Jan 15, 2019 3:35 pm
by Peter
Please could you show where the deadtime values can be seen or the calculation data required in the STM32 datasheet, thank you.

Re: The parameter documentation project

Posted: Wed Jan 16, 2019 12:54 pm
by arber333
Peter wrote: Tue Jan 15, 2019 3:35 pm Please could you show where the deadtime values can be seen or the calculation data required in the STM32 datasheet, thank you.
I didnt bother with theoretical calculation much. I just connected GE to 2ch scope and probed 50% PWM. Then i entered values and observed results. Results were not at all linear. Note you must reset Olimex when you change deadtime for setting to come in effect.
With my scope i got values in brackets...
Parameter DEADTIME
64 (1us)
88 (1.4us)
116 (1.6us)
135 (2us)
155 (2.5us)
185 (3.3us)
195 (4us)

Finally i compared my results with IGBT datasheet values and accounted also driver chip delay from datasheet.
I followed equasion from infineon chapter 2.1 and decided on approx value that provided least PWM noise at driveoff.
https://www.infineon.com/dgdl/Infineon- ... aefc41005b

Also i adapted driver desat blanking time tbl to deadtime value. In fact it came out tbl is usually little less than 2x deadtime value otherwise one can get false triggering at heavy acceleration from standstill.

Inform us here if you get different values please.

Re: The parameter documentation project

Posted: Wed Jan 16, 2019 3:39 pm
by Peter
Hello arber333. Thank you for your efforts in evaluating the deadtimes. From your information could there be a window of minimum and maximum deadtimes that can be recommended ? Obviously too little deadtime can lead to shoot through but what about too much deadtime, what would be the effect please? Is there any relevance to the maximum current being handled by an IGBT or is that not relevant? All adds to the learning curve :-) Peter

Re: The parameter documentation project

Posted: Sat Feb 09, 2019 8:15 pm
by arber333
Peter wrote: Wed Jan 16, 2019 3:39 pm Hello arber333. Thank you for your efforts in evaluating the deadtimes. From your information could there be a window of minimum and maximum deadtimes that can be recommended ? Obviously too little deadtime can lead to shoot through but what about too much deadtime, what would be the effect please? Is there any relevance to the maximum current being handled by an IGBT or is that not relevant? All adds to the learning curve :-) Peter
Hah! I have 3us deadtime on my inverter with Skyper 32 drivers. It works good and i like the slow avalanche of power. Its relaxing considering my motor could pull so hard it broke springs on a clutch plate.
Basically if you had too long dead time it wouldnt be anything bad, the power rise would be slower than equivalent faster deadtime.

On the Volt inverter my motor with the same settings and 1/2 deadtime could pull rubber whereas now is more civil.
Lets say it like... Faster application of power.

Re: The parameter documentation project

Posted: Sat Feb 09, 2019 10:07 pm
by johu
Basically the higher the dead time, the lower the achievable AC output voltage. The 3µs vs. 1µs is 2µs on both edges, so 4µs per cycle difference. If total cycle length 113µs (8.8kHz) you loose 3.5% output voltage.

Just for informative purposes here is an excerpt from the data sheet:
This bit-field defines the duration of the dead-time inserted between the complementary
outputs. DT correspond to this duration.
DTG[7:5]=0xx => DT=DTG[7:0]x t dtg with t dtg =t DTS .
DTG[7:5]=10x => DT=(64+DTG[5:0])xt dtg with T dtg =2xt DTS .
DTG[7:5]=110 => DT=(32+DTG[4:0])xt dtg with T dtg =8xt DTS .
DTG[7:5]=111 => DT=(32+DTG[4:0])xt dtg with T dtg =16xt DTS .
Example if T DTS =125ns (8MHz), dead-time possible values are:
0 to 15875 ns by 125 ns steps,
16 us to 31750 ns by 250 ns steps,
32 us to 63us by 1 us steps,
64 us to 126 us by 2 us steps
In our application T DTS=14ns (72MHz). So you have to divide all values in the example by 8.93
Double check: Arber measured 4µ with 195. For 195 DTG[7:5]=110 DTG[4:0]=11 (3). So DT=(32+3)*8*14ns=3.92µs . QED :)

In the more recent releases you can change deadtime without rebooting because I reset the timer at every start event.

Re: The parameter documentation project

Posted: Mon Sep 16, 2019 3:38 pm
by joromy
Did some measurement on dead time.
With the stock Ford Ranger IGBT driver board and openinverter.
If I chose 0 or 200 I get the exact same DT 0.88uS on the my scope.
Not shure if I measure the DT correct? (see the scope capture)

There are some thing going on, that I haven't dig in to.
Is it possible that it adjust the DT by itself?
Here is the IC's on the Gate driver board:
U7,U8,U9,U10 Philips 74HC132D Quad 2-input NAND Schmitt trigger
U11 Philips 74HC4075D 3-input OR gate

U201 Motorola LM317BT adjustable voltage reg
Q402 BUK453-60B Philips PowerMOS

U6 LM2901D Quad Comparator
U3,U5 MC33074AD Quad OpAmp

U1,U4,U19ABC,U14ABC 431BI (LM431) Adjustable Precision Zener Shunt Regulator

U13ABC,U18ABC UC2543DW Power Supply Supervisory Circuit
IMG_20190916_172400_5.jpg

Re: The parameter documentation project

Posted: Mon Sep 16, 2019 5:17 pm
by johu
Did you restart the inverter when changing dead time? Like change value, hit stop, start back up.

Re: The parameter documentation project

Posted: Mon Sep 16, 2019 7:28 pm
by joromy
Yes I did restart. Have done this several times, and the result is the same.
Will do a reverse engineering of the driver board, to try to find out what is really happening, when I have some spare time (almost never)
I see there is some signal going out from the IGBT driver, the opto coupler is going both ways.

BTW it's the same DT I got when I measured on the original Ranger inverter.

Re: The parameter documentation project

Posted: Wed Oct 30, 2019 6:56 pm
by jon volk
Came up with a few questions.

Is iacmax based off rms or peak values?
What are the affects of ifltrise and ifltfall values?

Re: The parameter documentation project

Posted: Wed Oct 30, 2019 9:22 pm
by johu
iacmax targets peak values.

ifltfall controls how fast slip and amplitude are reduced, ifltrise controls how fast it recovers. The greater the value, the slower.

Re: The parameter documentation project

Posted: Wed Mar 11, 2020 5:36 pm
by yaroslav
Hi, what are the effects of parameter changes:
syncofs
udcofs

Re: The parameter documentation project

Posted: Wed Mar 11, 2020 5:55 pm
by dima
yaroslav wrote: Wed Mar 11, 2020 5:36 pm Hi, what are the effects of parameter changes:
syncofs
udcofs
viewtopic.php?f=4&t=108