What is dead time?
Data Book parameters
How to calculate the reasonable dead time?
Configuring dead time in stm32
What is dead time? PWM is pulse width modulation, in power electronics, the most commonly used is the rectifier and inverter. This requires the use of rectifier bridge and inverter bridge.
For three-phase power, three bridge arms are needed. Take two-level for example, each bridge arm has two power electronic devices, such as IGBT. It is roughly as shown in the figure below;
The two IGBTs can not conduct at the same time, otherwise there will be a short circuit, causing damage to the system.
Then why is there simultaneous conduction?
Because the switch components and the strict meaning is not the same.
Therefore, when driving the gate pole of a switch element, it is necessary to increase a time delay to ensure that the other switch tube is completely turned off before opening the switch element;
After the upper half bridge is closed, the lower half bridge is opened after a delay;
After the lower half bridge is closed, the upper half bridge is opened after a delay;
In this way, it will not conduct at the same time, so as to avoid the power component burning; Dead time control in the usual SCM equipped with PWM have such a function, the following will be further introduced.
Compared with PWM, the dead time is at the time of PWM output, the upper and lower tubes will not have output, of course, the waveform output will be interrupted, and the dead time generally accounts for only a few percent of the cycle. But when the duty cycle of PWM wave itself is small, the spare part is larger than the dead time, so the dead time will affect the output ripple, but it should not play a decisive role.
In addition, if the dead time setting is too small, but the upper and lower tubes are still conducting at the same time, because the conduction time is very short, the current does not become large enough to burn down the system, it will lead to serious heating of switch components at this time, so it is particularly important to choose the appropriate dead time, which is too large or too small.
For the parameters in the data book, please refer to the data book of irf540 of NXP. The gate switching time is shown below;
: gate opening delay time
: gate turn off delay time
: Gate rise time
: Gate down time
The following is a data manual of IGBT;
How to calculate the reasonable dead time? The gate rise and fall time is usually much smaller than the delay time, so they can not be considered here. The dead time is satisfied;
: maximum turn off delay time;
: minimum opening delay time;
: maximum delay time of driving signal transmission;
: minimum delay time of driving signal transmission;
Among them and as mentioned above can be found in the data manual of components; And are generally given by the driver manufacturer;
If it is the IO driver of MCU, the rise time and fall time of IO need to be considered. In addition, the optocoupler is usually added for isolation. The switch delay of optocoupler also needs to be considered here.
STM32 is configured with dead time. The Tim advanced timer of STM32 supports complementary PWM waveform generation. At the same time, it supports the configuration of inserting dead time and braking.
Look directly at register timx in the reference manual_ Bdtr, which is the register to configure braking and dead time;
You can see that the dead time DT is determined by * * UTG [7:0] *. What’s the other question here? At timx_ The register of CR1 can be known by timx_ CKD decision of CR1 register;
If 00 is configured here, the frequency is the same as that of the internal timer, which is 8m;
Combined with the code to do a calculation; The system frequency is 72m. The following is the configuration of time base unit;
#definePWM_ FREQ（（u16）16000）//inHz（N.b.：patterntypeiscenteraligned）#definePWM_ PRSC（（u8）0）#definePWM_ PERIOD（（u16）（CKTIM/（u32）（2*PWM_ FREQ*（PWM_ PRSC+1））））
TIM_ TimeBaseStructInit（&TIM1_ TimeBaseStructure）;/* TimeBaseconfiguration*/TIM1_ TimeBaseStructure.TIM_ Prescaler=0x0; TIM1_ TimeBaseStructure.TIM_ CounterMode=TIM_ CounterMode_ CenterAligned1; TIM1_ TimeBaseStructure.TIM_ Period=PWM_ PERIOD; TIM1_ TimeBaseStructure.TIM_ ClockDivision=TIM_ CKD_ DIV2;
The frequency of PWM is 16K. Note that the PWM here is in central alignment mode, so the configured clock frequency is 32K;
When braking and dead time are below, bdtr register is configured, so here’s CK_ The int is 32m
#defineCKTIM（（u32）72000000uL）/*Siliconrunningat72MHzResolution：1Hz*/#defineDEADTIME_ NS（（u16）500）//innsec; rangeis［0.。. 3500］#defineDEADTIME（u16）（（unsignedlonglong）CKTIM/2\*（unsignedlonglong）DEADTIME_ NS/1000000000uL）
TIM1_ BDTRInitStructure.TIM_ OSSRState=TIM_ OSSRState_ Enable; TIM1_ BDTRInitStructure.TIM_ OSSIState=TIM_ OSSIState_ Enable; TIM1_ BDTRInitStructure.TIM_ LOCKLevel=TIM_ LOCKLevel_ 1; TIM1_ BDTRInitStructure.TIM_ DeadTime=DEADTIME; TIM1_ BDTRInitStructure.TIM_ Break=TIM_ Break_ Disable; TIM1_ BDTRInitStructure.TIM_ BreakPolarity=TIM_ BreakPolarity_ High; TIM1_ BDTRInitStructure.TIM_ AutomaticOutput=TIM_ AutomaticOutput_ Disable;
For example, if TDTs = 31ns (32mhz), the possible dead time is 0 to 3970ns, if the step time is 31ns; 4 000 us to 8 US, if the step time is 62 ns; 8 us to 16 US, if the step time is 250 ns; 16us to 32us, if the step time is 500ns;
If you need to configure the dead time of 1000ns and the system frequency of 72000000hz, you need to configure the value of the register as;
Write directly in the form of macro definition;