基于DSP的死区效应补偿方法

合集下载

DSP28335生成SPWM方法及死区设计

DSP28335生成SPWM方法及死区设计

1、不对称规则采样法不对称规则采样法采用在每个载波周期采样两次,即在三角波的顶点位置采样,又在三角波的底点位置采样,这样形成的阶梯波与正弦波的逼近程度会大大提高,比对称规则采样法的精度要高。

不对称规则采样法生成SPWM 的原理图如下图示:t12Tcasin tωδ'δ'δδ+At Bt ABdU t根据上图所示和三角形定理,得到如下关系式:'1sin /22AC a t T ωδ+=1sin /22B C a t T ωδ+=进一步可得:'(1sin )4C A T a t ωδ+=(1sin )4CB T a t ωδ+=式中:t A 为在三角波的正峰值对正弦信号波的采样时刻,t B 为在三角波的负峰值对正弦信号波的采样时刻;δ'+δ是A 相开通时刻脉冲宽度;Tc 为三角波载波周期;a 为载波和调制波的调制比。

因此可得A 相开通时刻的脉冲宽度:'(2sin sin )4C A B T a t a t ωωδδ+++=考虑到PWM 的1/4周期对称,t A 和t B 时刻可用下面表达式表示:(1/4)2/A t k N ωπ=+(3/4)2/A t k N ωπ=+式中:k=0,1,2,....N-1,N 为调制波采样的数目。

由以上关系式,以DSP28335中的ePWM1模块为例,计算出比较寄存器EPwm1Regs.CMPx 的值为:'EPwm1Regs.CMPx=EPwm1Regs.TBPRD-()/2s T δδ+进一步整理:EPwm1Regs.CMPx=EPwm1Regs.TBPRD(0.5-0.25(sin sin ))A B a t a t ωω+通过以上推导,在已知载波和调制波频率及调制比的情况下,就可以计算出SPWM 正弦表,根据查表法生成相应的SPWM 波形。

同时根据上式,分别超前和滞后1200可以得出B 相和C 相的关系式。

一种补偿PWM逆变器死区效应的新方法 (1)

一种补偿PWM逆变器死区效应的新方法 (1)

流而损坏器件,因此必须插入死区。死区时间 Td 的 插入是通过延迟一个 Td 长的时间给予开通信号, 在 Td 内,两个功率管都停止导通,由于是感应负 载,故输出电流 io 通过续流二极管 VD1 和 VD2 进 行流通,至于哪一个导通,则取决于 io 的方向。当 io<0 时,表示电流由电机流向逆变器,VD1 导通;反 之,当 io>0 时,表示电流由逆变器流入电机,VD2 导 通。尽管逆变器的 Td 很小,仅占开关周期 Ts 的百 分之几,单个脉冲不足以影响系统性能,但连续考
! " 即:
av
Ud,q
[k]=ed,q (k)+
L T
ref
meas
Id,q [k]- Id,q [k]
(2)
根据式(1)和式(2)预测电流控制对于 d,q 每相
的控制方程可简写为:
uk+1=
Ll T
(ik+1*-
ik)+e!k
(3)
式中 Ll—— —电机的总漏电感 T—— —采样周期 uk+1—— —第 k+1 时刻的期望电压
带积分反馈预测电流控制算法的 ia 波形。图 5 表明, 所提算法对逆变器死区效应的补偿效果很好。
值接近零,则当 io 下降到零后,由于二极管承受了反
压,阻止了 io 的反向流动,在死区的剩余时间内,io 将
保持为零,桥臂的 uo 也为零。由此可见,在零电流箝
位 现 象 发 生 时 ,uo
也存在着波形畸
变。图 3 示出因死
区导致的零电流
图 3 死区导致的零电流箝位现象 箝位现象。
3 死区效应补偿
=uk+1 =uk+2
*- 0- 2U *+2U dt

dt T
- 2U
dt T

死区补偿 电机 控制算法

死区补偿 电机 控制算法

死区补偿电机控制算法
死区补偿是电机控制算法中的一个重要概念,它通常用于直流
电机和步进电机的控制中。

在电机控制中,由于电机的特性和控制
器的工作方式,可能会出现死区现象,即当输入信号处于某个范围
内时,电机并不会作出相应的响应。

为了解决这一问题,工程师们
开发了死区补偿算法。

死区补偿算法的主要作用是在控制信号接近零点时引入一个补
偿值,以确保即使在死区范围内,电机也能够做出相应的响应。


样可以提高电机的控制精度和稳定性,减小控制误差,提高系统的
性能。

在实际应用中,死区补偿算法可以通过多种方式实现,比如在
控制器中添加一个死区补偿模块,或者在控制信号中加入一个补偿
项来实现。

同时,工程师们也会根据具体的电机特性和控制要求来
选择合适的死区补偿算法,比如基于模型的控制方法、PID控制方
法等。

另外,死区补偿算法的设计也需要考虑到实际工程应用中的一
些因素,比如控制器的计算能力、响应速度、系统稳定性等。

因此,
在实际应用中,工程师们需要综合考虑各种因素来设计和优化死区补偿算法,以实现最佳的控制效果。

总的来说,死区补偿是电机控制算法中的重要内容,它可以有效解决死区现象带来的控制问题,提高电机系统的性能和稳定性。

在实际应用中,工程师们需要根据具体的控制要求和系统特性来选择合适的死区补偿算法,并进行相应的优化和调整,以实现最佳的控制效果。

DSP死区补偿的一种方法

DSP死区补偿的一种方法

aCompensatingthe dead time of thevoltage inverterswith the ADMCF32XANF32X-50Table of Contents SUMMARY (3)1DEAD TIME EFFECTS AND THEIR COMPENSATION (3)2IMPLEMENTATION OF THE FEED FORWARD DEAD TIME COMPENSATION..5 2.1Using the dt_comp routines (5)2.2Using the dt_comp routine (6)2.3The program code (7)3EXAMPLE: TESTING THE VALIDITY OF THE FEED FORWARD DEAD TIME COMPENSATION (7)3.1The construction of an inverter (7)3.2The software program used to test the feed forward dead time compensation (8)3.3The main include file: main.h (11)3.4The program offset.dsp and its header offset.h (11)3.5Experimental results (14)4REFERENCES (16)SummaryDue to the finite switching time, in order to prevent the appearance of short circuits, the power devices of an inverter must be commanded introducing a delay between their active times. This delay, called dead time because in this period no power device is active, introduces small voltage errors, which are sufficient to produce distorted motor currents, oscillations of the motor torque and therefore even the motor controllability may be lost [1].This paper presents one method to compensate the effects of the dead time, the experimental hardware on which this method was tested and the assembly program associated with it.1 Dead Time effects and their compensationConsider a voltage inverter with a motor connected at its output terminals (Figure 1).VdFigure 1: Voltage source inverterThe effects of the dead time may be examined by considering only the first phase of the inverter. On thisv presented in Figure 2a. The signals used to phase it is desired to obtain the reference PWM signal *1command the power devices are assumed to be active HIGH, which means that when they are HIGH, the power devices conduct (Figures 2b and 2c). These are the type of signals the DSP motor controllers ADMCF32X use. The output signal obtained at the motor terminal depends on the sense of the current flowing in this phase:In the case of the current flowing from inverter to the motor (assumed positive sense), when T2 conducts,v is 0. During the dead time period, when both the phase terminal is linked to the GND and the voltage1power devices are turned OFF, the current continues to flow into the motor using the reverse recovery v will continue to be 0. When the upper power device T1 conducts, the phase terminal is diode D2, so1connected to d V and 1v is equal to d V . During the second half cycle, the phenomenon repeats itself symmetrically. The final behaviour of 1v is presented in Figure 2d. It may be observed that the average value of 1v is less than the reference value by an amount determined by the dead time:d sV T DT v v ⋅−=*11 (1)*1v 1T 2T 0 11≥s i whenv 0 11<s i whenv a)b)c)d)e)dV dV Figure 2: The influence of the dead time over the output phase voltageIn the case of the current flowing from the motor to the inverter, when T2 conducts, the phase terminal is linked to the GND and the voltage 1v is 0. During the dead time period, the current continues to flow from the motor using the reverse recovery diode D1, so 1v will become equal to d V . When the upper power device T1 conducts, the phase terminal is connected to d V and 1v will continue to be equal to d V . During the second half, the phenomenon repeats itself symmetrically. The final behaviour of 1v is presented inFigure 2e. It may be observed that the average value of 1v is greater than the reference value by an amount determined by the dead time:d s V T DT v v ⋅+=*11(2)Equations (1) and (2) provide the first method to compensate for the dead time: the feed-forward compensation. In relation of the current sense, the inverter phase will be commanded with a referencevoltage **1v such that the voltage 1v at the inverter terminal will become equal with the reference voltage *1v :d sV T DT v v ⋅+=*1**1when 0≥i (3)d s V T DT v v ⋅−=*1**1when 0<i .These expressions mean that when the phase current is positive, the duty cycle *1T correspondent to *1v has to be increased by the dead time and when the phase current is negative, the duty cycle has to be decreased by the dead time. The only drawback of this method appears when the current changes its sign,because this moment cannot be foreseen. It is easily seen that when the sign is not correctly applied, an error of two times the dead time is introduced.Another method to compensate the dead time is the following: The actual inverter voltages are measuredon every phase. The compensation is done adding to the reference phase voltage *1v a term proportional to the voltage error on that phase:)]()([)1()1(1*1*1**1k v k v K k v k v −⋅++=+(4)where:-)1(**1+k v is the voltage which will be commanded on the first inverter phase;-)1(*1+k v is the reference voltage which would have been commanded if the dead time compensation had not been considered;-K is the gain of the compensator, usually less than or equal to 1;-)(*1k v is the reference voltage which would have been commanded during the previous PWM cycle if the dead time compensation had not been considered;-)(1k v is the inverter phase voltage measured during the previous PWM cycle.The drawback of this method is that all the inverter phase voltages have to be measured. It is possible to measure only two inverter phases if the PWM modulation is space vector type or sinusoidal.2 Implementation of the feed forward dead time compensation2.1 Using the dt_comp routinesThe routines are developed as an easy-to-use library, which has to be linked to the user’s application. The library consists of two files. The file “dt_comp.dsp” contains the assembly code of the subroutines. Theblock has to be compiled and then linked to an application. The user has to include the header file dt_comp.h, which provides the function-like calls to the subroutines. The example file in Section 3 will demonstrate the usage of all the routines.Operation UsageCompute On-times compensating the dead timeDeadTime_Comp (StatorCurrent_struct, Dutycycles_struct)Table 1 Implemented routineThe input vector StatorCurrents_struct consists of three elements, the three inverter phase currents.Because their sum is always zero, only two of them need to be measured. They have to be scaled because the DSP uses fixed point formats. The scaling factor is max 2I ⋅, where max I represents the maximum current which may be placed at the input pin of the A/D converter. The 2 factor is used to prevent overflows when the currents are used in arithmetical operations.The vector Dutycycles_struct is an input and also an output: It represents the duty cycles for each phase,previously computed by the PWM modulator. After the compensation, they represent the duty cycles effectively commanded to the inverter. Their values have to be between 0 and PWMTM, the number which controls the PWM switching frequency.DeadTime_comp represents a macro, which must be introduced into the program code if the dead time compensation is desired. The format of inputs and outputs are explained in more detail in the next section.The routines do not require any configuration constants from the main include-file “main.h” that comes with every application note. For more information about the general structure of the application notes and including libraries into user applications refer to the Library Documentation File. Section 2.2 shows an example of usage of this library. In the following sections each routine is explained in detail with the relevant segments of code which is found in either “dt_comp.h” or “dt_comp.dsp”. For more information see the comments in those files.2.2 Using the dt_comp routineThe macro listed in the Table 1 is based on a subroutine called DeadTime_Comp _. It is described in detail in the next section. The following table gives an overview of what DSP registers are used in this macro:Table2. DSP core registers used in the macro1^vector stands for ‘address of vector’.2 N/A: The output values are stored in the output vector in the Data memory. No DSP core register is used.This macro has to be placed in the main program after the PWM reference duty cycles are computed, but prior to the program that saves them into the duty cycle registers PWMCHA, PWMCHB, PWMCHC.2.3 The program codeThe following code contained in the file dt_comp.dsp describes the routine DeadTime_Comp _mentioned in the previous section.The routine is organised as a loop managed by the loop counter cntr. At each iteration, one phase current from the buffer StatorCurrents_struct is tested and the compensation is done function of its sign. In the end, the new duty cycle number is tested to ensure it is positive and less than the maximum admissible value, PWMTM. The last instruction saves the number back into the buffer Dutycycles_struct.DeadTime_Comp_:AY0 = DM(PWMDT); { dead time normalized }AY1 = dm(PWMTM);CNTR = 3;do dead_loop until ce;ax0 = DM(I1, M1); { ax0 = Isk, k=1,2,3 }mr1 = DM(I2, M3); { load Ta, Tb, Tc }AR = MR1 + AY0;none = pass ax0; {chek sign of the currents }IF LT AR = MR1 - AY0;none = pass AR;if lt AR = PASS 0; { no negative values admitted}af = AR - AY1;if gt ar = pass ay1; { protection against overflows}dead_loop:DM(I2, M2) = ar;rts;3 Example: Testing the validity of the feed forward dead timecompensation3.1 The construction of the inverterThe proposed compensation method was implemented on the ADMCF328 Processor Board mounted on an ADMC Connector Board . As inverter power part an evaluation platform produced by International Rectifier, IRPT2056D Driver-Plus Board was used. It is a three phase 230VAC 3HP board and it integrates all the processing components needed for a 3 HP motor drive. It is equipped with an IRPT2056A IGBT power module and an IR2133J driver. A PWM isolation board linked the Connector Board to the Power Board. This board produces an electric isolation between the digital part and the inverter power part and also inverts the signals used to drive the power devices (74HC240). This inversion is necessary because the signals used by the driver IR2133J are active LOW and the PWM outputs of the ADMCF328 are active HIGH. The inverter is driving an induction motor with the following characteristics: .13HP, 230V, 60Hz, 1725rpm, produced by Baldor . Because the power part is supplied with 110V, the maximum frequency the motor may be run in the constant torque regime is:cf 321106032230⋅=⋅Hz f c 7.2823060110=⋅=Because the compensation needs the value of the inverter phase currents, two of them were sensed using current transducers HA 10-NP produced by LEM. They are capable to measure up to 20A and this value is used to scale down the measured values: A I 20max =. Also, an operational amplifier LM348 is used to obtain the signal into the range of A/D converter of ADMCF328: 0.3V ÷3.5V. On the ADMCF328Processor Board there are 5KHz filters that have an anti-aliasing role.A block structure of the inverter is presented in Figure 3.Figure 3. Inverter Block structure3.2 The software program used to test the feed forward dead time compensation The purpose of this program is to demonstrate the improvement offered by the feed forward dead time compensation. It reads two motor currents, commands the motor to run at 14Hz, half of the cut frequency c f and compensates for the dead time.The file main.dsp contains the root program. The batch file build.bat compiles every file of the project,links them together and builds the executable file main.exe . It may be applied either within DOS prompt or clicking on it from Windows Explorer. Main.exe may be run on the Motion Control Debugger.A brief description of the program will be given in the following:Start of code - declaring start location in the flash memory sector 2. Because the Boot From Flash Bit is set, the program counter will jump at 0x2200 after a reset and will begin execution from this point..MODULE/RAM/SEG=USERFLASH1/ABS=0x2200 Main_Program;Next, the general systems constants and PWM configuration constants (main.h – see the next section) are included. Also included are the PWM library 2, the DAC interface 3 and the space vector modulation 4 module definitions. The header file offset.h declares some macros used to measure the offset introduced by the current transducers and selfcal.h declares the macros used to calibrate the ADMCF328 A/D converter.{**************************************************************************************** Include General System Parameters and Libraries *2see AN331-03: Three-Phase Sine-Wave Generation using the PWM Unit of the ADMC3313see AN331-06: Using the Serial Digital to Analog Converter of the ADMC Connector Board 4 see AN331-17: Implementing Space Vector Modulation with the ADMC331***************************************************************************************} #include <main.h>;#include <aux_dac.h>;#include <adcF32X.h>;#include <pwmF32X.h>;#include <refframe.h>;#include <svpwm.h>;#include <trigono.h>;#include <mathfun.h>;#include <ir_reset.h>; { Application Specific Module}#include <dt_comp.h>;#include <offset.h>;#include <autocalx.h>;#include <macro.h>;#include <Flash_CT.h>;Constants used in this program{*************************************************************************************** * Constants Defined in the Module * ***************************************************************************************} .CONST CUT_FREQ = 28; {the cutting frequency of the tested motor} .CONST Delta = 32768*2*CUT_FREQ/PWM_freq; {the increment of the angle}.CONST TwoPiOverThree= 0xffff / 3; { Hex equivalent of 2pi/3 }.CONST ALLOFF = 0x3F; { Used to disable IGBTies into PWMSEG }.CONST Half_PWMTM = 1000*Cry_clock/PWM_freq/2;Here is where all the vectors for the program are declared. The buffer represents the three stator currents. The PWM duty cycles are stored in the buffer Dutycycles_struct. It may be observed the .INIT directives are no more used because the assembly program is saved in the flash memory. It has to be done an assembly program to initialise the variables in the data memory. First the macro InitDataMemory writes 0 in every cell of the memory segment available to the user USER_DM and then the macro InitDM_Variables initialises the variables that are not equal to 0.{*************************************************************************************** * Local Variables Defined in this Module * ***************************************************************************************} .VAR/DM/RAM/SEG=USER_DM Theta; { Current angle }.VAR/DM/RAM/SEG=USER_DM Vdq_ref[2]; { rotor ref.frame }.VAR/DM/RAM/CIRC/SEG=USER_DM Valphabeta_ref[2];{ alphabeta frame }.VAR/RAM/DM/SEG=USER_DM OnTime_struct[1*4];.VAR/RAM/DM/SEG=USER_DM Dutycycles_struct[1*3];.VAR/DM/RAM/SEG=USER_DM VrefA; { Voltage demands }.VAR/DM/RAM/SEG=USER_DM VrefB;.VAR/DM/RAM/SEG=USER_DM VrefC;.VAR/DM/RAM/SEG=USER_DM StatorCurrents_struct[1*3]; { stator currents }.VAR/DM/RAM/SEG=USER_DM Is1Offset[1];.VAR/DM/RAM/SEG=USER_DM Is2Offset[1];.VAR/DM/RAM/SEG=USER_DM TestVar1[1];.VAR/DM/RAM/SEG=USER_DM TestVar2[1];When the program begins, the wait states for the external memory are initialised with 0 because the flash memory is configured as external memory and the PWM output signals are disabled. Then, the following tasks are done: the management of the Boot-From-Flash Bit, the initialisation of the data memory, the power module is reset and the PWM block is set up to generate interrupts every 100µsec (see main.h in the next section). The auxiliary PWM outputs are initialised because after some filtering they may be used as D/A converters and then there is unmasked the IRQ2 interrupt (the interrupt which manages the peripheral interrupts on ADMCF328). The main loop just waits for interrupts.{********************************************************************************************} { Start of program code } {********************************************************************************************} Startup:DIS M_MODE, DIS AR_SAT;ar=dm(SYSCNTL);ay0=0xFF80;{Zero PM wait states}ar=ar and ay0;dm(SYSCNTL)=ar;ar=dm(MEMWAIT);ar=ar and 0x8000; {Zero DM wait states}dm(MEMWAIT)=ar;Write_DM(PWMSEG, ALLOFF); { the IGBTies are disabled }FLASH_erase_PIO(6); { Select PIO6 as clearing PIO Remember that sport1 is }{ muxed with the PIO-lines If the bit is high Clear }{ Memory and Boot from Flash bit }{the data memory locations has to be initialized when the program is run only in the flash memory}InitDataMemory; {the data memory is initialized with 0, flash_ct.h} InitDM_Variables; {every variable is initialized, main.h}IR_reset_PIOx; { Reset PowIRTrain Module using PIO4}PWM_Init(PWMSYNC_ISR, PWMTRIP_ISR);Write_AUXDAC_Init; { Initialize the AUX0,1 as DAC outputs}IFC = 0x80; { Clear any pending IRQ2 inter.}ay0 = 0x200; { unmask irq2 interrupts.}ar = IMASK;ar = ar or ay0;IMASK = ar; { IRQ2 ints fully enabled here}ADC_Init; { ADC Counter will Operate at the DSP CLKOUT Frequency } AutoCal_INIT; { Initialize the Auto Calibration Routine }Offset_Init; { offset.h }Main: { Wait for interrupt to occur}jump Main;During the PWM_SYNC interrupt there are executed some routines which determine the internal offset of the A/D converter1, the external offsets introduced by the current transducers and the measurement of the currents. The successive routines generate three PWM signals of 14Hz obtained applying a continuous space vector modulation2. The dead time compensation is placed at the end of this block. Finally, the signals that will be provided to the D/A converter are computed.{********************************************************************************************} { PWM Interrupt Service Routine}{********************************************************************************************} PWMSYNC_ISR:ENA SEC_REG;Auto_Calibrate;OffsetDetermination(ADC1, ADC2, Is1Offset, Is2Offset); { offset.h }ReadCurrents(Is1Offset, Is2Offset, StatorCurrents_struct, ADC1, ADC2); { offset.h } ar = DM (AD_IN );mr = 0; {Clear mr }mr1 = dm(Theta); {Preload Theta }my0 = Delta;mr = mr + ar*my0 (SS); {Compute new angle & store}dm(Theta) = mr1;DM(Vdq_ref )= ar; {Set constant Vdq reference (AD_IN,0)}ar = pass 0;DM(Vdq_ref+1)= ar;refframe_Set_DAG_registers_for_transformations;refframe_Forward_Park_angle(Vdq_ref,Valphabeta_ref,mr1);{generate Vreference in alpha-beta frame }SVPWM_Calc_Ontimes(Valphabeta_ref, OnTime_struct); { use SVPWM routines } SVPWM_Calc_Dutycycles(OnTime_struct, Dutycycles_struct);DeadTime_Comp(StatorCurrents_struct, Dutycycles_struct);SVPWM_Update_DutyCycles(Dutycycles_struct);{********************************************************************************************} { Use the Write_AUXPWM macro to plot on AUXDAC for debugging }{********************************************************************************************} AX0 = dm(Dutycycles_struct);AY0 = Half_PWMTM;1 See ANF32X-05: ADC-system on the ADMCF32X.2 See ANF32X-17: Implementing Space Vector Modulation with ADMCF32XAR = AX0 - AY0;MY0 = 0x4189; {2/PWMTM=2/1000*2^15/2^7*2^15}MR = AR * MY0 (SS);SR = ASHIFT MR1 BY 7 (HI);SR = SR OR LSHIFT MR0 BY 7 (LO);dm(TestVar1) = SR1;Write_AUXPWM(AUXCH0,TestVar1);MR1 = dm(StatorCurrents_struct);SR = ASHIFT MR1 BY 4 (HI); {2*Imax/2.5A=16=2^4}dm(TestVar2) = SR1;Write_AUXPWM(AUXCH1,TestVar2);RTI;3.3 The main include file: main.hThis file contains the definitions of ADMCF32X constants, general-purpose macros, the configuration parameters of the system and library routines. It should be included in every application. For more information refer to the Library Documentation File.This file is mostly self-explaining. As already mentioned, the dt_comp library does not require any configuration parameters. The following table presents the parameters used to initialise the PWM block .It may be emphasized the dead time period set at 6µsec, a large value for the power devices used on the IRPT2056D.{ Library: PWM block }{ file : PWMF32X.dsp }{ Application Note: Usage of the ADMCF32X Pulse Width Modulation Bloc }.CONST PWM_freq = 10000;{Desired PWM switching frequency [Hz] }.CONST PWM_deadtime = 6000; {Desired deadtime [nsec]}.CONST PWM_minpulse = 1000; {Desired minimal pulse time [nsec] }.CONST PWM_syncpulse = 1540; {Desired sync pulse time [nsec] } There is also declared a macro InitDM_Variables which initialises the variables that are not equal to 0.{*************************************************************************************** * Type: Macro * * Call: Initialize the variables with values that are not equal with 0 * * -it has the role the .INIT declarations had in the other DSPies with only RAM * * Inputs :None * * Ouputs :None * * Modified:AR * ***************************************************************************************} .MACRO InitDM_Variables;Write_DM(AD_IN, 0x3A0A); {initialize AD_IN with 0.906/2 }.ENDMACRO;3.4 The program offset.dsp and its header offset.hThe current transducers introduce an offset that has to be evaluated, otherwise the sign of the currents would be determined with large errors. These errors would definitely compromise the dead time compensation. For this reason, at the beginning of the program, for a certain number of PWM cycles (in this particular case 128, but may be more or less depending of the system) the A/D channels corresponding to the two phase currents, V1 and V2 are measured. The average of all measurements constitutes the offset of that current. Of course, this procedure may be applied to every channel, if the signal is zero at the beginning of the program.The header file offset.h contains the macros that are used during this process. Generally, they call subroutines presented in the file offset.dsp.This file begins declaring the variables OffsetCounter, TempOffset1 and TempOffset2 used in these routines.{*************************************************************************************** * Global Variables Defined in this Module * ***************************************************************************************} .VAR/DM/RAM/SEG=USER_DM OffsetCounter[1];.GLOBAL OffsetCounter;.VAR/DM/RAM/CIRC/SEG=USER_DM TempOffset1[2];.GLOBAL TempOffset1;.VAR/DM/RAM/CIRC/SEG=USER_DM TempOffset2[2];.GLOBAL TempOffset2;The subroutine Offset_Init_ initialises the variables used to evaluate the offsets of the current transducers. OffsetCounter is set to 128 because the offsets are considered the average of 128 measurements.{************************************************************************************** Type: Routine ** Call: Call Offset_Init_; ** This subroutine initializes the variables initializes variables used to ** evaluate the offsets of the current sensors ** Inputs : None ** Ouputs :None ** Modified: AR ***************************************************************************************}Offset_Init_:AR = Offset_Average;dm(OffsetCounter) = AR;AR = 0x0;dm(TempOffset1) = AR;dm(TempOffset1+1) = AR;dm(TempOffset2) = AR;dm(TempOffset2+1) = AR;rts;The subroutine EvaluateIs_offset_ computes the average of the measurements of a particular A/D channel.{*************************************************************************************** * Type: Routine * * Call: Call EvaluateIs_offset_; * * This subroutine computes the average of the measurements of one A/D channel * * Inputs : AR = the lecture of the A/D channel * * I1 = placed at the begining of the buffer which is averaged * * M1 = 0, L1 = 0 * * Ouputs :None * * Modified:AY1, AY0, AR, SR, AX0 * ***************************************************************************************} EvaluateIs_offset_:AY1 = dm(I1, M1);AY0 = dm(I1, M1);AR = 0x4000 - AR;SR = ASHIFT AR BY -7 (HI);AR = SR0 + AY0;AX0 = AR, AR = SR1 + AY1 + C;dm(I1, M1) = AR;dm(I1, M1) = AX0;RTS;buffers and then calls the subroutine Offset_Init_ from offset.dsp.{*************************************************************************************** * Type: Macro * * Call: Offset_Init; * * This macro initializes variables used to evaluate the offsets of the current sensors * * Input: none * * Output: none * * Modified: AR * ***************************************************************************************} .MACRO Offset_Init;CALL Offset_Init_;.ENDMACRO;The macro EvaluateIs_offset reads one A/D channel and computes the average offset of that channel calling the subroutine EvaluateIs_offset_.{*************************************************************************************** * Type: Macro ** Call: EvaluateIs_offset; * * Routine to compute the offset of one phase * * Input: %0=the targeted AD channel * * %1=the offset structure dedicated to the phase * * %1=most significant word * * %1+1=less significant word * * Output: Current Offset structure * * Modified: * ***************************************************************************************} .MACRO EvaluateIs_offset(%0, %1);ADC_Read(%0);I1 = ^%1;M1 = 1;L1 = %%1;CALL EvaluateIs_offset_;.ENDMACRO;The macro OffsetDetermination computes the offsets of the both A/D channels that measure the phase currents.{*************************************************************************************** * Type: Macro * * Call: OffsetDetermination * * Routine to compute the offsets introduced by the current sensors * * Input: %0=ADC1 * * %1=ADC2 * * %2=Is1Offset * * %3=Is2Offset * * Output: Current Offsets structure * * Modified: * ***************************************************************************************} .MACRO OffsetDetermination(%0, %1, %2, %3);AY0 = dm(OffsetCounter);AR = AY0 - 1;IF LT JUMP SaveOffsets;dm(OffsetCounter) = AR;EvaluateIs_offset(%0, TempOffset1);EvaluateIs_offset(%1, TempOffset2);RTI;SaveOffsets:AF = AR + 1;IF NE JUMP ExitOffsetDet;dm(OffsetCounter) = AR;AR = dm(TempOffset1);dm(%2) = AR;AR = dm(TempOffset2);dm(%3) = AR;ExitOffsetDet:.ENDMACRO;The macro ReadCurrents reads the two phase currents, corrects them with the offset and finally computes the third phase current. It may be noted that the output of the A/D converter is always a positive number. Because of the presence of an inverting operational amplifier in the hardware, in order to obtain values between –1/2 and +1/22I⋅) the outputs of the A/D converter have to be offset by 1/2 (in fixed point the currents are scaled by max(0x4000).{*************************************************************************************** * Type: Macro * * Call: ReadCurrents; * * This macro reads ADC1(Is1), ADC2(Is2) and then evaluates Is1, Is2 and Is3 * * Input: %0 = offset of the first phase current * * %1 = offset of the second phase current * * %2 = the buffer of the 3 phase currents * * %3 = ADC1 * * %4 = ADC2 * * Output: none * * Modified: AY0, AR, MY0, MR, SR ,AF * ***************************************************************************************} .MACRO ReadCurrents(%0, %1, %2, %3, %4);ADC_Read(%3); { read Is1/Imax }。

基于PID控制的逆变器死区效应补偿新方法

基于PID控制的逆变器死区效应补偿新方法
CU  ̄ re nt
目前 , P WM 逆 变 器 已被 广 泛 应 用 于 交 流 调速 、 有源 滤波 和动 态 电压 支 撑 等领 域 J 。在 P WM 逆
载 电流 中 的谐 波 含 量 在 线 调 整 死 区 补 偿 电压 的 幅 值, 但 是其 设置 的控 制 目标 中忽 略 了死 区效 应 所 造
中图分类号 :T M 4 6 4 文献标识码 :A 文章编号 : 1 0 0 2— 1 6 6 3 ( 2 0 1 3 ) 0 6— 0 5 5 8— 0 4
Co mp e n s a i t o n me t h o d f o r d e a d - ime t e fe c t o f i n v e r t e r s b a s e d o n P I D c o n t r o l
HUANG L i n g. P I We i c a i
( B e r i n g E l e c t r i c P o w e r C o mp a n y , B e i j i n g 1 0 0 0 3 1 , C h i n a )
Ab s t r a c t : S i n c e t h e v o l t a g e a mp l i t u d e i s h a r d t o a c q u i r e c a u s e d b y t h e n o n — i d e a l c h a r a c t e r i s t i c s o f S P W M i n v e r t e r i n d e a d — t i me e f e c t c o mp e n s a t i o n, t h i s p a p e r p r o p o s e s a n e w c o mp e n s a t i o n me t h o d b a s e d o n P I D c o n t r o l , a me t h o d wh i c h d e t e r mi n e s , w i t h t h e k n o wn l o a d p a r a me t e r s , t h e e f e c t i v e v a l u e o f c o mma n d c u r r e n t a s c o n t r o l t a r g e t a c c o r d —

死区对逆变性能的影响及其补偿方法

死区对逆变性能的影响及其补偿方法

死区对逆变性能的影响及其补偿方法代伟;龙英文;宋芳;章伟【摘要】Basing on analyzing the dead-time effect on single-phase SPWM inverter's output waveform charac-teristics,a new control scheme was proposed to improve dead zone effect.Through adopting DC bus voltage feed-forward compensation measures to adjust wave shape at real time, the third harmonic component in the output voltage was reduced effectively and the dead-time effect on the inverter performance was improved to a greater extent through combined with current feedback pulse adjustment and repetitive control.The relevant experiments on a laboratory-made inverter show that, the said methods can effectively improve the voltage waveform distortion and reduce the output voltage harmonic content.%在分析死区时间对单相SPWM逆变输出波形特性影响的基础上,提出一种新的方案来改善死区效应.通过采用直流母线电压前馈补偿的措施来实时调整载波形状,可以有效降低输出电压的三次谐波,同时结合电流反馈脉冲调整和重复控制来更大程度地改善死区对逆变性能的影响.在实验室自制的逆变器中进行了相关实验,结果表明:所提方法可以有效改善电压的波形畸变,降低输出电压的谐波含量.【期刊名称】《化工自动化及仪表》【年(卷),期】2018(045)004【总页数】5页(P294-297,311)【关键词】死区时间;补偿;重复控制;直流母线电压;前馈补偿【作者】代伟;龙英文;宋芳;章伟【作者单位】上海工程技术大学机械工程学院;上海工程技术大学机器人智能控制及功能化设计实验室;上海工程技术大学机器人智能控制及功能化设计实验室;上海工程技术大学机器人智能控制及功能化设计实验室;上海工程技术大学机器人智能控制及功能化设计实验室【正文语种】中文【中图分类】TM464逆变系统是新能源发电过程中最重要的部分,它的作用是将直流电转换为一般设备需要的交流电[1]。

一种基于DSP控制器的死区补偿方法

一种基于DSP控制器的死区补偿方法
( ac agH n n nvri , ac ag3 03 , hn ) N nhn a#ogU i sy N nhn 3 0 4 C ia e t
Ab ta t W i h mp c f d a —i n y h e id s o u p tv l g n a n e tr s se c n ie e o h sr c : t t e i a t o e d t h me a d f w e ld o e n o t u ot e i n i v r y t m o sd r d. n t e l a e
维普资讯
第4 2卷 第 6期
20 0 8年 6 月
电 力 电 子 技 术
P we e to c o rElcr nis
V .2,No6 14 .
Jn ,0 8 ue2 0

种基于 DS P控制器的死区补偿方法
伍 家驹 ,李 学勇 , 谢 波 ,彭登峰
1 引 言 桥式 P WM功率变换器 中,为防 = [ 同桥臂 开关器
件直通 , 需要在其 互补驱 动信 号 中设置死 区 . 同时 但 会导致输 出 电压基波 幅值 降低 并产 生低次谐波 等
情 况相 反。虽 然死 区宽度很 小 ,但 由于 开关 频率较 高 , 累积效应 也足 以使输 出波形 发生 畸变 。 其
ve o tg a e t n, o b e F ui rt n fr su e o a ay e t eo t u o tg f ig e p a efe u n y d u ld iw fi e r l ci d u l o r a s m i s d t n lz h up t l e o sn l — h s q e c — o be n s o e r o v a a r

全数字伺服系统中死区效应的补偿方法

全数字伺服系统中死区效应的补偿方法

全数字伺服系统中死区效应的补偿方法浙江大学 电力电子国家专业实验室 胡庆波 吕征宇关键词: 伺服系统、电压型逆变器、死区效应、谐波电流、DSP目前,在伺服控制系统中,通常采用三相电压型逆变器来驱动伺服电机。

桥式电路中为避免同一桥臂开关器件的直通现象, 必须插入死区时间。

死区时间和开关器件的非理想特性往往会造成输出电压、电流的畸变,从而造成电机转矩的脉动,影响系统工作性能。

因此,必须对电压型逆变器中的死区效应进行补偿。

文献[1-4]对三相逆变器的死区效应进行了补偿。

其中文献[1]采用平均值理论,计算出一个工作周期中的误差电压并直接补偿在参考电压上,文中忽略了开关器件的非理想特性,仅仅对死区时间造成的误差电压进行了补偿,该方法简单易行,但补偿精度较低;文献[2]在对死区时间和开关器件的非理想特性造成的死区效应进行补偿的同时,提出了一种补偿时间的离线测量方法。

该方法把开关器件的电气特性与其工作电流看成线性的关系,并且要求系统对电流有很好的控制特性;文献[3]针对空间矢量调制提出了只对其中一相电压进行补偿的方法,但没有考虑开关器件的导通压降,并且在整个逆变输出周期中,其补偿时间为一常数。

文献[4]提出了死区时间的一种离线测量方法,根据工作电流的范围预先测出补偿时间,然后分段进行补偿,该方法与前文几种补偿方法相比,可以通过电流的大小来调节补偿时间,但在一定的电流范围内补偿时间仍然是一常数。

对于逆变器的死区补偿,主要取决于两个方面,一是补偿时间的确定;二是负载电流方向的检测。

本文将对两者加以介绍。

综合上文提到的文献,其补偿时间在整个逆变输出周期皆为定值,但是在实际电路中,补偿时间往往会根据电路工作点的不同而变化。

另外,在直流侧电压较高的前提下,由开关器件的导通压降造成的畸变可以近似忽略,但在蓄电池作为直流侧输入时,其工作电压较低,此时由开关管导通压降带来的输出电压畸变较大,应加以考虑。

综合以上几点,本文提出一种死区时间的实时计算方法,即在一个逆变输出周期中,通过占空比的变化相应的调整补偿时间。

一种DSP控制的高频逆变器死区时间补偿方法

一种DSP控制的高频逆变器死区时间补偿方法

波形畸变 , 要在零点附近给同桥臂上 、 下 两 个 开 关 器 件 都 送 驱 动 信 号 及 并 加 入 正 常 的死 区时 间进 行 防止 直 通 保 护 。 因为 该 方 法 只是 在 原 驱 动 信 号 的基 础 上 加 以补 偿 ,给 无 电流 流 过 器 件 仍 然 送 驱动 信 号 ,所 以 不会 导 致 逆 变器 在 零 区域 中 出现 输 出波 形 畸
在 传 统 的逆 变 电路 中 ,为 了 避 免 同 一 桥 臂 上下 开 关 器 件 直 通, 必 须 设 置 适 当的 死 区 时 间 , 死 区时 间 会 使 输 出 电 压 的 幅 值 和 相 位 有 一 定 的误 差 , 虽然 在 单 个 周 期 的误 差 电压 并 不 明显 , 但 随 开 关 频 率 的提 高 , 累 积 的误 差 电压 将 导 致 严 重 的 电压 波 形 畸变 、 基 频 电压 下 降 和 产 生 高 次 谐 波 [ 1 ] 。因 此 死 区时 间是 高频 逆 变 器
变 现象 。 1 基于 D S P的 死 区 时 间产 生 方 法 和 补偿 原 理
又 会 造 成 输 出 信 号 波形 失 真 , 变流 效 率 严 重 降 低 I 2 ] 。不合 理 的死 区时 间 设 置 ,不但 会 使 逆 变 器 产 生 过 高 的涌 浪 电压 甚 至 导 致 器
件损坏 , 而且 还 会 使 系 统 的 动 态 响 应 变 差 , 所 以高 频 逆 变 电路 一 定 需 要 对 死 区时 间 进行 一 定 的补 偿 。 根 据 各 种 补 偿 方 法 的特 点 可 将 其 分 为 两 大类 :

1 . 1 D S P产 生 P WM 方 波 的原 理 T MS 3 2 0 L F 2 4 0 7 A为工业控制领域 广泛应用 的 D S P芯片 ,

基于数字信号处理器的异步电机控制系统的死区补偿

基于数字信号处理器的异步电机控制系统的死区补偿
控制与应用技术
E 醐强
电 札 与桩 制 应 闭 21,7(1 003 1 )
基 于数 字 信 号 处 理 器 的异 步 电机 控 制 系统 的 死 区补 偿
圣立 明, 毕淑娥 , 何 强
( 南理 工大 学 电力 学院 , 东 广 州 5 6 0 华 广 1 4) 0
摘 要: 针对 异步 电动 机 矢量 控 制 系 统 中 电压 型 三 相 逆 变 器 的 死 区 效 应 , 合 空 间 矢 量 图 , 出 了 一 种 结 提
避 免直接 电流采 样 带来 的问题 , 节 约成 本 。最 且
后 , 于 T S 2 F 8 2数 字 信 号 处 理 器 ( it 基 M 30 2 1 Dg a il Sga Poes g S ) i l r si ,D P 系统 硬 件 平 台加 上 位 P n c n C
管子 均关断 。但 南 丁电 机为感 性负 载 , 电流 不 会
根据 电流矢量所在的扇 区判断 电流极性 的夕 区补偿方 法 , 匕 陔 法通 过软 件实现 且不 需要 任何硬 件。结合
T S 2 F 82D P芯 片 实现 补 偿 箅 法 , 在 33k 异 步 电 机 矢量 控 制 系统 中验 证r该 算 法 的有 效 性 。 M 30 ' 1 S 2 并 . W
机 中的 L b i aV e w及 C N U B通信 模 块 作 为调 试 A .S
窗 口 , 3 3k 的 电机上 进行 了验证 。 在 . W
l 死 区效 应 的分 析
本文 根 据 空 间 矢 量 脉 宽 调 制 ( p c et S ae V c r o
Ke r y wo ds:d ad-i e c e tm om pe a in;s cor;a ync o us mot r ns to et s hr no o

全数字伺服系统中死区效应的补偿方法

全数字伺服系统中死区效应的补偿方法

全数字伺服系统中死区效应的补偿方法浙江大学 电力电子国家专业实验室 胡庆波 吕征宇关键词: 伺服系统、电压型逆变器、死区效应、谐波电流、DSP目前,在伺服控制系统中,通常采用三相电压型逆变器来驱动伺服电机。

桥式电路中为避免同一桥臂开关器件的直通现象, 必须插入死区时间。

死区时间和开关器件的非理想特性往往会造成输出电压、电流的畸变,从而造成电机转矩的脉动,影响系统工作性能。

因此,必须对电压型逆变器中的死区效应进行补偿。

文献[1-4]对三相逆变器的死区效应进行了补偿。

其中文献[1]采用平均值理论,计算出一个工作周期中的误差电压并直接补偿在参考电压上,文中忽略了开关器件的非理想特性,仅仅对死区时间造成的误差电压进行了补偿,该方法简单易行,但补偿精度较低;文献[2]在对死区时间和开关器件的非理想特性造成的死区效应进行补偿的同时,提出了一种补偿时间的离线测量方法。

该方法把开关器件的电气特性与其工作电流看成线性的关系,并且要求系统对电流有很好的控制特性;文献[3]针对空间矢量调制提出了只对其中一相电压进行补偿的方法,但没有考虑开关器件的导通压降,并且在整个逆变输出周期中,其补偿时间为一常数。

文献[4]提出了死区时间的一种离线测量方法,根据工作电流的范围预先测出补偿时间,然后分段进行补偿,该方法与前文几种补偿方法相比,可以通过电流的大小来调节补偿时间,但在一定的电流范围内补偿时间仍然是一常数。

对于逆变器的死区补偿,主要取决于两个方面,一是补偿时间的确定;二是负载电流方向的检测。

本文将对两者加以介绍。

综合上文提到的文献,其补偿时间在整个逆变输出周期皆为定值,但是在实际电路中,补偿时间往往会根据电路工作点的不同而变化。

另外,在直流侧电压较高的前提下,由开关器件的导通压降造成的畸变可以近似忽略,但在蓄电池作为直流侧输入时,其工作电压较低,此时由开关管导通压降带来的输出电压畸变较大,应加以考虑。

综合以上几点,本文提出一种死区时间的实时计算方法,即在一个逆变输出周期中,通过占空比的变化相应的调整补偿时间。

基于重复控制的SPWM逆变电源死区效应补偿技术_段善旭概要

基于重复控制的SPWM逆变电源死区效应补偿技术_段善旭概要

第 19 卷第 2 期段善旭等基于重复控制的 SPWM 逆变电源死区效应补偿技术57 f o =1.7kHz 。

本文采用 TI 公司提供的 TMS320F240 型 DSP 芯片来实现逆变器的重复控制算法,开关器件为 200A/1200V 的 IPM 器件,其死区时间为 3.2 µs 。

图7 给出了逆变器不带死区补偿和带死区补偿时,在额定感性负载的实验波形。

不带死区补偿时,逆变器在空载、额定阻性负载、额定感性负载情况下的输出电压波形 THD 分别为: 4.09%、 5.44%和 5.61%;而带死区补偿后的输出电压波形THD 分别为 2.27%、 3.19%和 2.22%。

显而易见,重复控制器对死区效应的补偿效果十分显著,极大地减小了波形的 THD 值。

图7 Fig.7 感性负载时实验波形Applicat., 1987, 23(5: 881 ~ 886 3 Leggate D , Kerkman R J. Pulse-based dead-time compensator for PWM voltage inverters. IEEE Transactions on Industrial Electronics, 1997, 44(2: 191 ~ 197 4 Dodson R C, Evans P D, Tabatabaei Yazdi H,et al. Compensation for dead time degradation of PWM inverter waveforms. IEE Proc. B, 1990, 137(2: 73 ~ 81 5 Sukegawa T, Kamiyama K, et al. Fully digital vectorcontrolled PWM VSI-fed AC drives with an inverter dead-time compensation strategy. IEEE Transactions on Industry Applications, 1991, 27(3: 552 ~ 559 6 Seung-Gi Jeong, Min-Ho Park. Theanalysis and compensation of dead-time effects in PWM inverters. IEEE Transactions on Industrial Electronic, 1991,38(2: 108 ~ 114 Experimental waveforms of inverter with rated load 5 结论本文对 SPWM 逆变电源的死区效应进行了较为详细的分析,并提出了一种用于逆变器死区补偿的重复控制方案,采用输出电压瞬时值反馈并由DSP 芯片 TMS320F240 实现。

一种基于DSP控制器的死区补偿方法

一种基于DSP控制器的死区补偿方法

一种基于DSP控制器的死区补偿方法
伍家驹;李学勇;谢波;彭登峰
【期刊名称】《电力电子技术》
【年(卷),期】2008(42)6
【摘要】考虑逆变系统中死区及续流对输出电压的影响,利用傅立叶变换,从正弦脉宽调制(Sinusoidal Pulse WidthModulation,简称SPWM)波积分区间角度出发,对单相全桥倍频三电平逆变桥的输出电压进行了定量分析,研究了一种基于DSP控制器的死区补偿方法.仿真与试验均验证了数学分析的正确性.该方法简单实用,达到了补偿效果.
【总页数】3页(P66-68)
【作者】伍家驹;李学勇;谢波;彭登峰
【作者单位】南昌航空大学,江西,南昌,330034;南昌航空大学,江西,南昌,330034;南昌航空大学,江西,南昌,330034;南昌航空大学,江西,南昌,330034
【正文语种】中文
【中图分类】TM571
【相关文献】
1.基于DSP控制器的一种死区补偿策略 [J], 姜向龙;尹泉;赵金;万淑芸
2.一种基于电机模型预测的三电平死区补偿方法 [J], 田凯;金雪峰;张策;牛松森;高盛
3.一种基于电流预测的电压型逆变器死区补偿方法 [J], 金雪峰;田凯;张策;张挺;王欢
4.一种新的基于二阶神经网络的执行器死区补偿方法 [J], 张婧;刘金玲;谭晶
5.一种基于桥臂电流预测的死区补偿方法 [J], 焦京海
因版权原因,仅展示原文概要,查看原文内容请购买。

死区补偿

死区补偿

1 引言目前,小功率通用或专用变频器以及交流变频家电产品大多采用典型的交-直-交电压型逆变器(vsi)结构,逆变实现一般采用双极性pwm 调制技术,即在同一逆变桥臂上、下2个开关管施加互补的触发信号。

由于开关管自身的特性:开通和关断都需要一定的时间,且关断时间比开通时间要长。

因此,若按照理想的触发信号控制开关管的开通和关断,就可能导致同一桥臂的2个开关管直通而损坏开关器件。

为了防止这种直通现象的发生,必须在它们开通和关断之间插入一定延时的时间,这个延时时间就称为死区。

死区时间内2个开关管都处于关断状态,负载电流通过反并联二极管续流,负载电压不受开关管控制,由此造成负载电压波形发生畸变,逆变器的平均输出电压降低,并产生与死区时间以及调制比成正比的3,5,7,…次谐波分量,进而影响到电动机的输入电流和运行质量。

当逆变器工作在低输出频率、开关频率较高和负载感性很弱时这种影响相当严重[1,2]。

为此,需要对死区的影响进行补偿,以提高变频器的输出性能和改善电动机的运行工况。

常用的补偿方法有电流反馈型和电压反馈型,也有单边补偿与双边补偿、纯硬件补偿与硬件软件结合补偿等具体手段,但其工作原理相似,都是产生一个与死区引起的误差波形反向的波形,以抵消死区的作用[3,10]。

motorola公司推出的电动机专用控制芯片mr16内部集成了专门的死区补偿硬件电路,只需要简单的外围电流极性检测和简单的软件编程就可以实现可靠的死区补偿[11]。

2 死区补偿原理分析2.1死区对输出电压的影响在理想情况下,功率开关管开通和关断都是瞬时完成,不存在开通和关断时间,因而也就不存在死区时间。

但实际情况是功率开关管并非理想开关,而且关断时间比开通时间要长。

为了使功率开关管工作安全,在其开通之前插入死区td,即让该桥臂的2个开关管在td时间内都处于关断状态。

由于死区时间td的存在,使得功率开关管的导通时间缩短,引起pwm脉冲宽度和电位的丢失,进而影响到逆变器输出的平均电压。

什么是DSP里的PWM“死区”?PWM相关概念讲解

什么是DSP里的PWM“死区”?PWM相关概念讲解

什么是DSP里的PWM“死区”?PWM相关概念讲解PWM是脉宽调制,在电力电子中,最常用的就是整流和逆变。

这就需要用到整流桥和逆变桥。

对三相电来说,就需要三个桥臂。

以两电平为例,每个桥臂上有两个电力电子器件,比如IGBT。

这两个IGBT 不能同时导通,否则就会出现短路的情况。

因此,设计带死区的PWM波可以防止上下两个器件同时导通。

也就是说,当一个器件导通后关闭,再经过一段死区,这时才能让另一个导通。

什么是死区?通常,大功率电机、变频器等,末端都是由大功率管、IGBT等元件组成的H桥或3相桥。

每个桥的上半桥和下半桥是是绝对不能同时导通的,但高速的PWM驱动信号在达到功率元件的控制极时,往往会由于各种各样的原因产生延迟的效果,造成某个半桥元件在应该关断时没有关断,造成功率元件烧毁。

死区就是在上半桥关断后,延迟一段时间再打开下半桥或在下半桥关断后,延迟一段时间再打开上半桥,从而避免功率元件烧毁。

这段延迟时间就是死区。

(就是上、下半桥的元件都是关断的)死区时间控制在通常的低端单片机所配备的PWM中是没有的。

死区时间是PWM输出时,为了使H桥或半H桥的上下管不会因为开关速度问题发生同时导通而设置的一个保护时段,所以在这个时间,上下管都不会有输出,当然会使波形输出中断,死区时间一般只占百分之几的周期。

但是PWM波本身占空比小时,空出的部分要比死区还大,所以死区会影响输出的纹波,但应该不是起到决定性作用的。

DSP里的PWM死区在整流逆变的过程中,同一相的上下桥不能同时导通,否则电源会短路,理论上DSP产生的PWM是不会同时通,但器件的原因PWM 不可能是瞬时电平跳变的,总是梯形下降的,这样会可能使上下桥直通,为此,设一个极短的时间,上下桥都关闭,再选择性开通,避免了上下桥直通,实际控制中死区会导致控制性能变差。

PWM的上下桥臂的三极管是不能同时导通的。

如果同时导通就会是电源两端短路。

所以,两路触发信号要在一段时间内都是使三极管断开的。

死区补偿总结

死区补偿总结

死区补偿技术清华大学电机系 缪学进1 引言微处理和电力电子技术的迅速发展,极大地促进了PWM技术的发展和应用,各种PWM 交流传动技术在工农业生产、国防和日常生活中得到了广泛的应用。

我们知道,任何固态的电子开关器件都具有一定的固有开通和关断时间。

对于确定的开关器件,固有开通和关断时间内输出信号是不可控制的。

三相桥式逆变器系统中,同一桥臂上的两个开关器件工作于互补状态。

由于一般开关器件的开通时间小于关断时间,因此,如果将互补的控制信号加到同一桥臂上两个开关器件的控制极上,那么这两个开关器件将会发生“直通”,其后果非常严重。

所以目前的逆变器系统广泛采用时间延迟的控制技术即将理想的PWM控制信号上升沿或下降沿延迟一段时间,在这段时间内输出信号是不可控的,这就是死区时间[1]。

死区的存在使逆变器不能完全精确复现控制信号的波形,输出电压产生幅值和相位的误差。

由于死区的作用,每一个调制周期内引起的微小畸变经积累后,必然会使逆变器的输出电流波形产生畸变,它不但会降低基波幅值,而且会产生低次谐波,直接影响电动机在低速下的运行性能。

过去为了消除死区的影响,通常采用硬件和软件相结合的解决方案,但硬件补偿方法存在着检测精度差、滞后以及实现困难等问题。

微处理器在电机控制中的应用使死区补偿变得容易,尤其是TI公司的专为电机控制设计的2000系列处理器(如TMS320F240、TMS320LF2407、TMS320F2812等)在芯片内部集成了专门的硬件电路进行死区补偿,减少了电压误差,可以获得满意的效果。

2 死区效应分析三相电压型逆变器的基本构成如图 1 所示,与电流型逆变器相比,电压型逆变器可以提高逆变器的开关频率,有利于快速控制和抑制逆变器噪声,并且输出阻抗小,适合于交流电机调速控制。

为了防止逆变器区桥臂的上下功率开关发生直通,在上下功率开关改变状态时必须插入死区时间,即先将已开通的功率管关断,插入一定的死区延时,再开通另一个处于关断状态的功率管。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第27卷第6期增刊2006年6月
仪器仪表学报
Chinese Jour na l of Scientific I nstr ument
Vol.27No.6
June.2006
基于DSP的死区效应补偿方法
姜瑜杨振强
(大连理工大学电气工程与应用电子技术系大连116023)
摘要分析了死区产生的机理和死区对输出电压、电流的影响,提出一种基于TMS320LF2407型DSP可编程死区控制功能和传感器特性的新型死区补偿方法。

该方法软硬件相结合,有效改善了死区时间引起的电流畸变,且实时性高、计算量小,并通过实验验证了该死区补偿方法的有效性。

关键词数字信号处理器传感器死区补偿
Dead2time compensation method based on DSP
Jiang Yu Yang Zhenqiang (Electr ical and Electr onics E ngineer ing Dep ar tment,Dal ian U niver sity of T echnology,Da lia n116023,China)
Abstract The dead2time compensat ion mechanism and dead2time effect on current and volt age are analyzed.A dead2time compensat ion met hod on base of the programmable dead2t ime control funct ion of TMS320LF2407and charact er of sensor is proposed,which realizes t he combinat ion of the soft ware and hardware,corrects current dist ort ion and proved to be effect ive by t he experiment.
Key words DSP sensor dead2time compensat ion
1引言
近年来国内外学者对死区的补偿进行了大量的研究,提出了许多补偿方案,如运用硬件补偿器根据电流极性测量电压改变的大小对死区进行反馈补偿;直接检测电流过零点进行补偿,或预测电流过零点;基于转子磁场定向的补偿对三相输出电流进行坐标变换,计算电流矢量角进行角度区间的判断来补偿。

但是这些方法都需要较大的硬件成本或者复杂的算法,多数更侧重理论研究。

本文分析了死区产生的机理和死区对电压、电流的影响,结合DSP的可编程死区控制功能和传感器特性提出了一中软硬件结合补偿的方法,并通过实验验证了该补偿方法的有效性。

2死区效应分析
由于电机为感性负载,因此在死区时间里电机电流通过续流二极管续流,造成实际输出电压U和理想输出电压U*之间就存在着误差电压$U=U2U*,其宽度等于死区时间T d。

由于在死区时间内,产生的电压误差完全由电流的方向决定,因而通过相电流方向的检测,增加控制电压变化的相应开关器件的开通时间,即可弥补死区造成的电位丢失。

因此,当某相电流为正时,应当补偿上桥臂功率开关器件的开通时间;反之,当电流为负时,应当补偿下桥臂功率开关器件的开通时间。

t h(t)=T
2
+TM
2
sin(X0t+H)(1)
t h(t)=T
2
+TM
2
sin(X0t+H)-sgn(i)T d(2)式中:t h(t)为PWM信号高电平时间,T为PWM周期,M为调制系数,sgn(i)为电流极性,T d为死区时间。

式(1)为未加入死区时的功率器件导通时间,式
(2)为未加入死区后的功率器件导通时间,比较二者可
以发现,死区引起的干扰信号是与电流同步并近似为方波的信号,那么在此基础上进行反调制即可抵消死区引起的干扰,反调制的方法即在式(2)中增加与电流同步并与干扰信号极性相反的方波信号(如式(3)所示)。

因此该死区补偿方法实现的关键就是如何检测
874 仪 器 仪 表 学 报第27卷
电流的极性。

t h (t)=
T 2+TM 2
sin(X 0t+H )-sgn(i)T d +sgn(i)T d (3)
3 死区补偿的实现
本文使用TBC25A05型电流互感器和施密特触发器构成电流检测电路来检测相电流过零点。

触发器由OP07加正反馈构成。

电流互感器对相电流进行采样,取样电阻R101两端的输出电压经T 型滤波后连接至OP07输入端。

当相电流由电流互感器流出时,OP07的反向输入值大于正向输入值,触发器输出低电平;当相电流换向后(为流入电流互感器方向),OP07的反向输入值小于正向输入值,触发器输出高电平。

触发器输出与DSP 的A/D 转换通道相连,根据过零点检测结果可以方便、准确的用软件实现死区补偿。

当DSP 的A/D 转换通道检测到电平的上升沿时,记录下此时刻的角度H ,在[H ,H +P ]区间(H <1800
)或[H ,2P ]+[0,H 2P ]区间(H >1800)对导通器件进行加补偿,在其他区间对导通器件进行减补偿。

在本文的补偿方法中只对一相相电流使用电流过零点检测电路进行检测,其他两相相电流则用软件方法在每个周期查表进行补偿,不但降低了硬件成本,也避免了三相采样电路之间的干扰,同时DSP 芯片的强大功能也使得补偿过程简单、准确。

4 结束语
将本文的死区补偿方法应用到交流异步电机控制系统中,取得了较好的效果。

设定死区时间T d =6L s,采样频率选为10H z 。

对比图1和图2可以看出,经过
补偿后的相电流波形有了明显的改善。

图1 10H z
补偿前的电流波形
图2 10H z 补偿后的电流波形
参考文献
[1] 刘和平.TM S320LF240@DSP 结构、原理及应用
[M].北京:北京航空航天大学出版社,2002.[2] 陈伯时,陈敏逊.交流调速系统[M].北京:机械工业
出版社,1998.
[3] 孙向东.一种新颖的死区补偿时间测量方法[J].中国
电机学报,2003,23(2):1032107.
[4] Atta inanese C,Tomasso G.Pr edictive compensation
of dead 2time effects in VSI feeding induction motor s [J].IEEE T rans.on I ndustr y Applications,2001,37(3):8562863.
[5] 陈硕,薛昭武.电压型P WM 逆变器输出误差分析及其
补偿[J].电工技术学报,2001,16(2):51255.
[6] 陈国呈.PWM 变频调速及软开关电力变换技术[M].
北京:机械工业出版社,2002.。

相关文档
最新文档