DSP CONTROL OF A T H R E E PHASE UPS INVERTER by Kenneth Wicks B.ASc., University of British Columbia, Canada, 1997 A THESIS SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF MASTER OF APPLIED SCIENCE in THE FACULTY OF GRADUATE STUDIES (Department of Electrical and Computer Engineering) We accept this thesis as conforming to the required standard THE UNIVERSITY OF BRITISH COLUMBIA February, 2001 ©KennethWicks, 2001 In presenting t h i s thesis i n p a r t i a l f u l f i l m e n t of the requirements for an advanced degree at the U n i v e r s i t y of B r i t i s h Columbia, I agree that the Library s h a l l make i t f r e e l y a v a i l a b l e for reference and study. I further agree that permission for extensive copying of t h i s thesis for s c h o l a r l y purposes- may be granted by the head of my department or by his or her representatives. I t i s understood that copying or p u b l i c a t i o n of t h i s thesis for f i n a n c i a l gain s h a l l not be allowed without my written permission. Department of ^L^C^tohU f\pXi CQnfWTfc&. £fr&Mfrfc£\Nr'-r The U n i v e r s i t y of B r i t i s h Columbia Vancouver, Canada Date • / 2 0 Q ) A b s t r a c t The demand for three-phase uninterruptible power supplies has increased with the decrease in reliability of power supplied by power utilities. A single three-phase uninterruptible power supply (UPS) can typically supply many loads at a time. A UPS must be able to supply relatively undistorted output line voltages with highly non-linear loads. Many papers have been devoted to introducing new control schemes that can supply these loads effectively. A new control scheme is introduced, in this work, which is implemented with a digital signal processor (DSP). The controller acts in a stationary reference frame as opposed to the commonly used rotating reference frame. Although using a stationary reference frame can create phase errors, the control algorithm is computationally more efficient than using a rotating reference frame. The proposed technique uses two line voltages and the corresponding differential output filter inductor currents for those lines as the control variables. As a result, this technique utilizes fewer sensors compared to techniques using a rotating reference frame. In this work, the plant model is developed and the stability of the controller is analyzed. The controller design is facilitated with the use of a Mathcad workspace, Steady-state simulations and experimental results are presented for a balanced resistive load. Even with relatively slow inner current loops, the performance of the controller is acceptable. Slow current controllers are used because of large noise in the current measurements of the experimental inverter. This work provides the basis to further investigate the feasibility of using the proposed controller to supply non-linear loads. ii T a b l e o f C o n t e n t s ABSTRACT ii LIST OF TABLES v LIST OF FIGURES vi LIST OF ACRONYMS viii ACKNOWLEDGEMENTS ix C H A P T E R 1 : INTRODUCTION 1 1.1 Three Phase UPS Circuit Description 1 1.2 Current Control Techniques 4 1.3 Proposed New Control Technique 8 1 4 Outline of the Thesis 11 C H A P T E R 2: ANALYSIS O F T H E N E W C O N T R O L T E C H N I Q U E 12 2.1 Small Signal Time Averaged Plant Model 12 2.1.1 Unbalanced Loads 17 2.1.2 Floating Filter Capacitor Neutral 18 2.2 Current Control Loop Analysis 18 2.3 Voltage Control Loop Analysis 26 C H A P T E R 3: SIMULATION USING PSIM 31 3.1 Circuit Description 31 3.2 Simulation Results and Discussion 35 C H A P T E R 4: E X P E R I M E N T A L UPS DESIGN 42 4.1 Description of the Power Circuit 42 4.1.1 AC-DC Rectifier Section 42 iii 4.1.2 Three Phase Inverter 44 4.1.3 Gate Driver Circuitry 45 4.1.4 Sensor Circuitry 46 4.2 Introduction to the DSP and its Features 49 4.2.1 DSP Core 50 4.2.2 Analog-to-Digital Unit 51 4.2.3 The PWM Controller 51 4.2.4 Programmable Interrupt Controller 54 4.3 DSP Code 54 4.3.1 Discretization of the Continuous-time Controllers 55 4.3.2 Program Code Description 57 C H A P T E R 5: E X P E R I M E N T A L RESULTS 63 5.1 Output Line Voltages 63 5.2 Effect of Noise on the Generated Line Voltages 67 C H A P T E R 6: CONCLUSIONS 70 6.1 Contributions 70 6.2 Future Work 71 BIBLIOGRAPHY 72 APPENDIX A: GATE DRIVER INTERFACE PCB LAYOUT 75 APPENDIX B: DSP CODE LISTING 76 B.l Modpi.h 76 B.2 Modpi.dsp 78 B.3 Main.dsp 80 iv List of Tables Table 2.1 Results from current controller design 24 Table 2.2 Voltage controller results for Kp = 0.3116, KI2 = 1000, K V = 1500 2 9 Table 4.1 Spreadsheet for inductor design 44 Table 5.1 Measured output voltages for two current controller gains 64 v L i s t o f F i g u r e s Figure 1.1 Power circuit for the UPS 2 Figure 1.2 Voltage controller in D-Q reference frame 5 Figure 1.3 Addition of load current as a feedback signal 6 Figure 1.4 Space vector modulation 7 Figure 1.5 Basic system structure 8 Figure 1.6 Basic system structure with third harmonic injection 10 Figure 1.7 Basic system structure with the addition of load current feedforward 10 Figure 2.1 UPS circuit to be controlled 12 Figure 2.2 Swl is on and Sw2 is off 13 Figure 2.3 Swl is off and Sw2 is on 14 Figure 2.4 Small signal time averaged plant model 17 Figure 2.5 Current control loops showing digital control elements 19 Figure 2.6 Current closed loop block diagram 20 Figure 2.7 Magnitude plot for R = 15fi, K = 0.055, K, = 1000 25 Figure 2.8 Phase plot for R = \5Q, K = 0.055, Kt = 1000 25 Figure 2.9 Voltage control loop block diagram 26 Figure 2.10 Magnitude plot for Kp = 0.3116, Kn = 1000, Kv = ^ 30 Figure 2.11 Phase plot for Kp = 0.3116, Kn = 1000, Kv = ^ 30 Figure 3.1 Power circuit with control connections 32 Figure 3.2 Deadtime insertion block 33 Figure 3.3 Controller block 34 Figure 3.4 Simulated line voltage VAB with the controller and for open loop 36 Figure 3.5 Simulated line voltage VCB with the controller and for open loop 36 Figure 3.6 Simulated duty-cycles for Kp = 0.065 37 v i Figure 3.7 Simulated line voltages for Kp = 0.065 and Kp = 0.055 38 Figure 3.8 Simulated line voltages Vab and Vcb produced with noisy sensors 39 Figure 3.9 Simulated duty-cycles produced with noisy sensors 40 Figure 3.10 Small section of the duty-cycle for phase A 40 Figure 4.1 A C - D C rectifier section 43 Figure 4.2 Isolation transformer and variac 43 Figure 4.3 Gate drive circuitry 47 Figure 4.4 Level-shifting circuit for the current sensor 48 Figure 4.5 Voltage sensor circuit 49 Figure 4.6 Deadtime insertion into duty-cycle for phase A. Signals are active low , ' 53 Figure 4.7 Signal flow diagram for a discretized PI controller 56 Figure 4.8 Signal flow diagram for a discretized modified PI controller 57 Figure 4.9 DSP initialization and infinite loop routine MAIN 58 Figure 4.10 A D C end-pf-conversion interrupt service routine 59 Figure 4.11 PI and modified PI controller routines where: sf = scaling factor 62 Figure 5.1 Measured steady-state output line voltages for K = 0.065, 19 Q load 65 Figure 5.2 Measured steady-state output voltages for no controller, 19 Q load 65 Figure 5.3 Measured output voltage from isolation amplifier 66 Figure 5.4 Measured differential inductor current after level shifting circuit 66 Figure 5.5 Measured duty-cycle for phase A for K = 0.065,19 Q load 68 Figure 5.6 Measured current reference iABref for K = 0.065,19 Q load 68 Figure 5.7 Comparison of current controller proportional gains for a 19 Q load 69 v i i L i s t o f A c r o n y m s A/D. Analog-to-Digital ADC: Analog-to-Digital Converter A L U : Arithmetic and Logic Unit D/A: Digital-to-Analog DSP: Digital Signal Processor ESR: Equivalent Series Resistance IGBT: Insulated Gate Bipolar Transistor M A C : Multiply And accumulate PI: Proportional-Integral PWM: Pulse Width Modulation rms: root mean square UPS: Uninterruptible Power Supply ZOH: Zero Order Hold v i i i A c k n o w l e d g e m e n t s I am deeply indebted to my supervisor, Dr. W.G. Dunford, for his advice on solving the various hardware problems that I encountered. I would also like to thank my previous supervisor, Dr. Hua Jin, for his advice and financial support. I feel honoured to work beside many great colleagues in the Power Group at UBC. I especially would like to thank Stephane Bibian, Yingran Duan, Anil Tuladhar, Richard Rivas, and Mazana Lukic for the useful discussions that we have shared. Lastly, but not least, I would like to thank my parents for putting up with me for all these years. ix Chapter 1 Introduction With the increasing threat of power failures today, there is a greater need for uninterruptible power supplies to protect sensitive loads. Typically, a single three-phase uninterruptible power supply (UPS) can supply many single-phase and three-phase loads. The power supply must be able to maintain relatively undistorted output line voltages with non-linear loads. This has been the focus of many papers in approximately the last ten years. In this thesis, a new technique is proposed and analyzed for a balanced resistive load. This provides the basis to further investigate the performance of this technique with unbalanced and non-linear loads. This chapter begins with the general description of a three-phase UPS. Specific component values are also given at this point to facilitate the discussion in this work. Some of the more prevalent current techniques will then be described on a general basis. The new proposed control technique will follow the discussion on the current techniques. Finally, the outline of the thesis will be presented. 1.1 Three Phase UPS Circuit Description The power circuit for a three phase UPS, as shown in Figure 1.1, can be functionally split up into three parts: a dc power source, a bridge circuit composed of six or more "switches", and an output filter stage for each output phase. If isolation is required then a three-phase transformer is connected to the output but this is considered part of the load for this work. The dc power source can be many things. One example is a high voltage battery. This work assumes that the dc source is ideal. The bridge circuit consists of three "legs" of two power semiconductor devices that operate like switches. The choice of the semiconductor device depends on the power required for the load. The output filters are composed of an inductor and a capacitor and will be referred to as an L C filter. The power devices are turned on and off by controlling the gate voltages of the devices. The gating patterns for the switches are determined by using a technique called pulse-width modulation (PWM). The desired voltage waveform for each phase is compared to a high frequency carrier waveform typically with a fixed frequency. A triangular carrier waveform is used for inverter applications. Switching transitions occur when the desired voltage waveform equals the carrier waveform. There are, therefore, two switching transitions per switching period for each inverter leg. The gating pattern for a leg is applied to the switch connected to the positive dc bus rail and the complementary pattern is applied to the switch connected to the negative dc bus. If a deadtime period is required between the on patterns of the two switches, then the switching transitions are modified to include the deadtime. Vdc / 2 V d c / 2 /YYYV Figure 1.1: Power circuit for the UPS 2 Notice that the dc supply is split into two separate supplies. This could be a center tapped filter capacitor. The dc supply does not necessarily have to be split. If the ground is moved to the negative dc bus rail then the generated phase voltages will always be greater that the ground potential. The center tapped supply causes the phase voltages to be centered about the ground potential. In either case the generated line voltages are centered about the ground potential and are identical for both configurations. The L C filter capacitors, as shown in Figure 1.1, are connected to the center tapped dc supply. Typically, the capacitors are not connected to the dc bus. As will be shown in Chapter 2, the connection of the capacitors does not change the small signal time-averaged model of the inverter. This work assumes that the capacitors are connected to the dc bus filter capacitor. The resonant frequency of the output L C filter is typically chosen to be at least one decade below the switching frequency. In this case, the resonant frequency of the filter is approximately 1 kHz which is substantially lower than the switching frequency of 18 kHz. The equivalent series resistance (ESR) of the output filter capacitor is included in the model of the inverter. The ESR of the inductor is typically neglected so it is not included in the model of the inverter. The dc bus voltage and the full load power rating were chosen for convenience. The values for the dc bus voltage Vdc ,the filter inductor L, the output filter capacitor C , and the output filter's ESR Rc used for the analysis of this work are given by: Vdc = 230 V L = 2.53 mH C = \\pF Rc = 0.3 fi 3 The full load power rating is 1 kVA. The nominal output line voltage is 104 V. 1.2 Current Control Techniques Many different techniques are used to control three-phase three wire UPS systems. This section summarizes some of the current techniques available. A paper presented at an IEE colloquium titled "Control of UPS Inverters" [1] has a good summary of the state of the art as of 1994. Three-phase UPS systems are either controlled in a stationary reference frame, such as the proposed controller in this work, or in a rotating (D-Q) reference frame as shown in Figure 1.2 . Most of the control techniques that are developed today use the rotating reference frame. There are two cited major advantages of using the rotating reference frame: the controller operates on dc quantities while the stationary reference frame techniques operate On ac quantities, and the bandwidth requirements are lower for controllers based on the rotating reference frame. Using dc quantities implies that there is no phase error between the input command voltage and the output voltage. A proportional and integrator (PI) type controller will ensure that the error in steady state is zero. Unfortunately, in the stationary reference frame, the controller introduces a phase error between the input and output voltages. There are techniques available that can compensate for the phase error if necessary but they work only for fixed frequency UPS applications [2]. This work assumes that the phase error is acceptable. There are two drawbacks of using the D-Q reference frame: the voltages (and often currents) need to be converted into the D-Q reference frame using the transformation given in Equation 1, and the number of required voltage sensors is greater than the proposed technique since all of the phase voltages need to be measured. The control variables do not need to be transformed into the stationary reference frame thus, computationally, control in the stationary reference frame is more efficient. 4 cos(0) cos(0-^) cos(0 + ^ ) l sin(0) sin(0--^) sin(0 + ^ ) ( 1 ) where: 0 = cot co = speed of the rotating frame [rad/s] (2) The voltages in the D-Q reference frame are given by: K Vq}=T(0)[VA VB Vcf (3 ) In summary, control in a stationary reference frame is computationally more efficient than control in a rotating reference frame since no transformation of the control signals is required but stationary reference frame control produces phase errors between the inputs and the outputs that do not occur using a rotating reference frame with a PI type controller. T(6) Figure 1.2: Voltage Controller in D-Q reference frame For applications where the control for the inner inductor current loop is done in the stationary reference frame, the reference inductor currents need to be converted back into the stationary reference frame. One example of a design utilizing the rotating reference frame for voltage control and the stationary reference frame for current control is given in [3] . 5 The dynamic performance of the controller is increased by measuring and using the load currents. Simple techniques use the load current as a feedforward signal to modify the inductor current reference as shown in Figure 1.3. More elaborate techniques use the load current to predict the load current in the future. The load current could easily be added to the proposed controller in this work. The feedforward signal would not be the line currents but instead the difference in line currents. The addition of a load current feedforward signal will be presented in the next section. Figure 1.3: Addition of load current as a feedforward signal There are two widely used techniques for generating the PWM gating patterns: sinusoidal PWM, and space vector modulation. Many of the control techniques that operate solely in the rotating reference frame use space vector modulation. Space vector modulation utilizes the dc bus voltage better than sinusoidal P W M if a harmonic injection technique is not used for sinusoidal PWM. Sinusoidal PWM generates the gating patterns by comparing the desired voltage waveform to a high frequency carrier waveform as described earlier. A balanced three-phase set of voltages is represented in the stationary reference frame by a space vector Vnf of constant magnitude and rotating with angular speed © as shown in Figure 1.4. The reference frame is split into six sectors by six vectors corresponding to six operating states of the inverter to form a hexagon. Two additional null-states are defined to bring the total number of operating states to eight. As an example, state Vx - (1,0,0) corresponds to switches swl, sw4, and sw6 on 6 and the others off in Figure 1.1. In one switching period, the inverter passes through four operating states including two active states and two null states in a set sequence that replicates Vref. The transition between states is accomplished such that only one inverter leg is switched at a time. The magnitude and argument of Vref determines the times that the inverter is in each state. The two adjacent vectors that form the sector that Vref resides in determines the two active operating states. A more complete description of state space modulation can be found in [4]. V* =(0,1,0) = (1.1,0) P«=<P.U) Pi = 0.0.0) ^ = (0.0.1) ?i = CUU) Figure 1.4: Space vector modulation Controllers for three-phase UPS systems are typically implemented by either a microcontroller or a digital signal processor (DSP). As a result, many of the developed controllers utilize a digital control technique. The techniques range from relatively simple techniques such as deadbeat control [5] to elaborate techniques such as adaptive fuzzy control [6]. Control designers have also proposed sliding-mode controllers [7] and robust controllers [8]. All of these controllers are used to minimize the distortion of the output line voltages with highly non-linear loads. 7 1.3 Proposed New Control Technique The new technique is based on the requirement of undistorted line voltages. It is not necessary to have undistorted phase voltages. In fact, if the third harmonic injection technique is used to increase the available output line voltage for a given dc bus voltage, then the phase voltages are quite distorted. The output load is configured as a three-wire system. This means that the outputs of the inverter are intrinsically coupled together. This is different from the four-wire case where each phase is decoupled due to the neutral wire. Since the output phase voltages are coupled together, the choice for the voltage control variables is the line voltages instead of the phase voltages. As a result, the inner current loops are differences of inductor currents instead of the actual currents. The controller structure is similar to that used by ac- dc and single-phase inverters. An outer voltage control loop provides a current reference for the inner current loop. The output of the inner current loop is the desired duty-cycle. This control structure has been extensively used in industry and is well analyzed [9]. For this application the general structure does not change. The differences lie in the control variables and the model of the plant. It is only necessary to control two line voltages with a common reference phase. For this work the line voltages were chosen to be Vab and Vcb. In this case the reference phase is phase B. The controller has two voltage loops feeding two current loops. The structure of the complete system is given in Figure 1.5 below. Figure 1.5: Basic system structure 8 Notice that the duty cycle for phase B is the negated sum of phase A and C if a third harmonic is not injected. This technique only requires four sensors if Hall-effect type sensors are used for the current measurement since the Hall-effect sensors can measure differential currents. If shunt resistors are used for the current sensors then three shunt resistors are required, one for each phase, since shunt resistors can only measure absolute currents. It was found, in simulation, that if only two currents say i a and ib were measured and i c was derived by setting the sum of the currents to zero, then the results were not so good due to the non^ -zero sum of filter capacitor currents that can occur when the output voltages are not perfectly balanced. The currents do not sum to zero due to the connection of the capacitor neutral to the dc bus. If the capacitors are not tied to the dc bus, then the sum of the inductor currents is zero. In this case, only two of the phase currents need to be measured and the third can be derived from the others. One distinct advantage that this scheme has over many of the other techniques is that it can be implemented in either analog or digital. The controller bandwidth can be improved by using an analog controller if the performance is not satisfactory with a digital controller. If third harmonic injection is required then the modification to the control structure is minimal. The third harmonic is added to the calculated duty-cycles from the current loop controller. The voltage references then are changed to reflect the desired output line voltage magnitudes as shown in Figure 1.6. 9 Figure 1.6: Basic system structure with third harmonic injection The load currents can be used as a feedforward signal to improve the dynamic performance of the controller as described in the previous section. The modification of the controller structure, as shown in Figure 1.7, is minimal. Measuring the load current requires the addition of two extra current sensors. This controller configuration is not studied in this work. Figure 1.7: Basic System structure with the addition of load current feedforward 10 1.4 Outline of the Thesis The next chapter deals with the analysis of the controller in terms of plant modeling and stability analysis for the current control loops and the voltage control loops. Chapter 3 shows the development of a simulation using PSIM. The simulation models the actual implemented system as closely as possible. Simulation results are presented and discussed for some typical cases. The experimental setup is discussed in Chapter 4. The physical details of the power circuit are presented including the design of the filter inductors. The controller is implemented using a digital signal processor (DSP). The DSP used in the setup is described in this chapter indicating the features unique to the chosen processor. The algorithm used for the controller is detailed with the help of flowcharts. Finally, the interface circuitry between the DSP and the power circuit is described. Chapter 5 shows some results obtained with the experimental apparatus. The differences between the simulation and experimental results are discussed. Concluding remarks are made in Chapter 6. The logical continuation of the work associated with the proposed controller is also mentioned in Chapter 6. 11 ) Chapter 2 Analysis of the New Control Technique This chapter presents the analysis of the proposed control technique. Firstly, the small signal time averaged model of the system is derived. This technique has been used extensively to describe the plant of power electronic circuits. Once the plant model is obtained then the coupled inner current loop equations can be derived. The type of controller to be used and suitable controller values are obtained with the use of Bode plots. The coupled outer voltage loop equations are lastly derived. As with the current loops, Bode plots are used to obtain a suitable controller. 2.1 Small Signal Time Averaged Plant Model As described in 1.1, the UPS circuit has the following structure as given by Figure 2:1. V d c / 2 &> Hfe Hfe L JTYY\ S w l Sw3 Sw5 Rc L VYYY\ R A/vVi AAM Rc R L JTYY\ AA/V V d c / 2 Sw2 Sw4 Sw6 Rc Figure 2.1: UPS circuit to be controlled 12 The output load is assumed to be balanced. Furthermore, the load is assumed to be resistive for the analysis. The expressions derived for the rest of this chapter assume these two conditions. For loads which are non-resistive but are balanced, the resistance can be replaced by a general impedance. Unbalanced loads are much more difficult to deal with but the general approach will be mentioned below. Since each phase is identical, it is only necessary to consider one inverter leg at a time. The circuit can not be completely decoupled, however, because the instantaneous sum of the phase voltages is not assumed to be zero. As a result, the neutral voltage, vN, of the load is not at the ground potential. This accounts for the coupled nature of the three wire configuration. If a fourth wire was used to connect the ground of the inverter with the load neutral then each phase can be completely decoupled. Note that the resistance R c is the ESR of the filter capacitor. The other components are considered to be ideal. The deadtime required by the switches is assumed to be zero for the controller analysis. The effect due to the deadtime is a disturbance in the system which must be minimized. If the inverter leg containing switches Swl and Sw2 is considered then two states can be derived. The first state corresponds to Swl is on and Sw2 is off and the other state to Swl is off and Sw2 is on. State 1: V d c / 2 Vx R Vj 1 V W > c R c Figure 2.2: Swl is on and Sw2 is off 13 From the circuit corresponding to statel, two differential equations can be written: Vdc TdiL ... vy =L— (4) 2 x dt ^ C ^ + Z ^ ^ ^ + CO + ^ -A-^^ (5) c dt L R R dt R dt State 2: i L L vx R V N -^-nmr\—^ —I— r^i Vdc/2 (T Rc Figure 2.3: Swl is off and Sw2 is on Equation 5 remains the same for state 2. Equation 6 has the same form and is given by: Vdc T di, vy=L— (6) 2 x dt Now equations 4 and 6 can be time averaged. Equation 5 is the same for both states so it does not need to be time averaged. Equation 4 is multiplied by the duty ratio 14 Sx and Equation 6 is multiplied by 1 - Sx, obtain the time averaged equation given by: The two equations are then added together to _ , Vdc . di, , . SxVdc- — -vx=L-±- (7) Equations 5 and 7 now form the time averaged plant for one phase. A small signal perturbation is then applied to Equations 5 and 7 i.e. sx = sx vx =vx VN = VN h =h Equations 5 and 7 now become: SxVdc-vx=L^- (8) dt ^ c 4 + r L = ^ z ^ + C ( i + ^ . ) ^ - ^ ^ ( 9 ) * dt L R R dt R dt Equations 8 and 9 are almost in a form which is usable for Bode analysis. What remains is to put the equations in the Laplace domain. The differential operators are replaced by the Laplace variable s to obtain the frequency domain equations given by: 8xVdc-vx =SLTL (10) 15 \ (1 + sRcC) = ^ ( 1 + sC(R + RC )) - ^-(1 + sRcC) (11) K K The right most term in Equation 11 is the same for every phase since the load is assumed to be balanced. This coupling term can be replaced by the other terms in another phase to obtain a difference in inductor currents and phase voltages. The x and inductor current designator L in Equations 10 and 11 is replaced by A for phase A and B for phase B to obtain three equations: SAVdc-vA=sLiA (12) 8BVdc-vB=sLiB (13) (fA-7b)(\ + SRCC)=(VA V B \ \ + SC(R + RC)) (14) K Finally vA and vB from Equations 12 and 13 can be substituted into Equation 14 to obtain a relationship between the difference in duty cycles and the difference in inductor currents for phases A and B. ^ s C ( R , R c ) ) ~ s2LC(R + Rc) + s(L + RRcC) + R a Since the load is balanced, the transfer function relating phases C and B is identical to Equation 15. The plant model is now complete. Figure 2:4 shows a block diagram illustrating the model. 16 Vdc(l+sC(R + Rc)) R(\ + sCRc) s*LC(R +Rc)+s(L+RRcC)+R \ \ + sC(R+Rc) Vdc(l + sC(R + Rc)) s2LC(R +RC) +s(L +RRCC) +R Vdc(i + sC(R + Rc)) A k R(\ + sCRc) s3LC(R +RC) +s(L+RRcC) + R \ + sC(R+Rc) Figure 2.4: Small signal time averaged plant model 2.1.1 Unbalanced Loads If the load is not balanced then equation 14 will no longer be valid. Dealing with unbalanced loads is more difficult. A relationship for vN must be found. Since the sum of the currents in the load equals zero, the following relationship relates the phase voltages to the load neutral voltage: V. v„ vr ~ , \ 1 1 N f-T r-J ^7 N \ rr r» ry J (16) ZA, ZB, and Zc are the impedances of phases A, B, and C of the load. vN from Equation 16 can be substituted into Equation 11. Expressions for vA, vB, and v c can also be substituted into Equation 11. These expressions are identical to Equations 12 and 13. The resultant equation relates iA to 8A, 8B, 8C, iB, and ic. There are, therefore, fifteen different transfer functions required to relate iA, iB, and ic to 8A, 8B, and 8C in comparison to the three for the balanced case. The relationship between the phase 17 voltages and inductor currents are similarly more complicated. For this reason the balanced case was studied. The following analysis given in the next two sections for the . inductor current control loops and the voltage control loops is similar for the unbalanced case except that the plant model is more complicated. 2.1.2 Floating Filter Capacitor Neutral The neutral of the filter capacitors, as shown in Figure 2.1, is tied to the dc bus. As mentioned in Chapter 1, the capacitors are typically left floating. When the capacitor neutral, v„, is floating, Equation 4 remains the same and Equation 5 becomes: R c C ^ + i L = ^ ^ + C(l + ^ ) ^ - C ^ - C ^ ^ - (17) c dt L R R dt dt R dt If a small signal perturbation is applied and the differential operators are replaced by the Laplace variable s, then Equation 17 becomes: 7L(\ + SRcC) = ^ (\ + sC(R + Rc))-sCvtt-^-(l + sRcC) (18) K K Equation 18 is almost identical to Equation 11 except for the term sCvn. As with the rightmost term, sCvn is a common term for all of the phases. Equation 14, therefore, still holds true for this case. The plant model, as shown in Figure 2.4, is valid for a floating filter capacitor neutral. 2.2 Current Control Loop Analysis The inner current loops as shown in Figure 1.3 are analyzed in this section. As can be seen in the figure, there are two current control loops each providing a duty-cycle 18 for phase A or C. The duty-cycle for phase B is the negated sum of the duty-cycles from phases A and C. The plant model derived in the previous section combined with the two current loops is shown below in Figure 2.5. Since the controller is implemented in the discrete-time domain and the plant is in the continuous-time domain, analog-to-digital (A/D) and digital-to-analog (D/A) converters need to be used to convert the signals from one domain to the other. The samplers in Figure 2.5 represent the A/D converters and the zero-order hold (ZOH) blocks represent the D/A converters. The blocks after the Z O H blocks, in the figure, represent computational time delays. The computational time delays exists because the calculated duty-cycles can only be updated at certain times during the switching period. For the case of a symmetrical triangular carrier waveform, the duty-cycles can be updated at the beginning of the cycle and at the middle of the cycle. As a result, the smallest possible computational time delay is half the switching period. Figure 2.5: Current Control loops showing digital control elements The controller is designed in the continuous-time domain. The dynamics associated with the D/A converters, and the computation time delays need to be accounted for because they cause phase delays [10]. The A/D converters do not have any 19 dynamics associated with them in the continuous-time domain. Since the discrete-time controller G1 (z) is designed in the continuous-time domain, but is implemented in the discrete-time domain, the controller needs to be converted from the continuous-time domain into the discrete-time domain. The conversion is presented in Chapter 4. The dynamics associated with the Z O H blocks and the computational delay blocks can be lumped with the controllers by block manipulation. The reduced block diagram, as shown in Figure 2.6, is entirely in the continuous-time domain. The transfer function blockG, is given by Equation 15. The transfer blockG2 represents the controller and the dynamics associated with digital control. The transfer function of G 2 is given later in this section. o2 J o2 ) Figure 2.6: Current closed loop block diagram In Figure 2.6, iAB and iCB are the difference in the inductor currents of phases A and B and the difference in inductor currents of phases C and B respectively. Similarly, iABref and iCBref are the reference currents for the corresponding difference in inductor currents. 20 The first step in the current loop controller design is to derive the loop transfer functions of the current closed loop system. This can be accomplished by finding the closed loop transfer functions and putting the resultant expressions in a form that the loop transfer functions can be easily obtained. In general this two input, two output system would have four loop transfer functions - the two direct transfer functions and two cross transfer functions. Since the plant is symmetrical, the two direct transfer functions and the two cross transfer functions are equal. The closed loop transfer functions for the current loop are given by Equation 19 below: i - 2^G2,+ 3GX G 2 . GXG2 n g . ~ 1 + 4 G G , + 3 G 2 G 2 A B n f 1 + 4 G G 2 + 3G,2G2 2 W 1 ' This now should be put in a form so that the two loop equations can be found. If Equation 19 is put into the form then the loop equation is GH. By algebraic manipulation Equation 19 can be written as: 2G,G 2 +3G, 2 G 2 2 G.G 2 1 + 2G,G 2 , * + 4G,G 2 ( 2 0 ) 'AB - >>r r ± i r 2 r 2 A B r e f GG CBref K ' 2GxG2+3GlG2 1+ ° i u * (3G,G2) 1 + 2G,G 2 1 + 4G,G 2 The two loop equations can be now taken directly from Equation 20. The plant is a linear time invariant system. As a result, each loop equation can be analyzed separately for stability margins. By the superposition theorem if both of the loop equations are stable then the entire system is stable. As mentioned above the stability of the closed-loop system was analyzed by using bode plots. It is desired, by common practice, that the phase margin should be at least 45 degrees and the gain margin should be at least 8 dB. 21 The loop unity gain cross-over frequency was chosen based on common practice. It is usually chosen to as high as possible but low enough to minimize the effect of noise. Some discussion on this can found in [11]. The unity gain cross-over frequency should be less than 176th of the switching frequency for the current loops. Since the switching frequency was chosen to be 18 kHz this implies that the unity gain cross-over frequency should be less than 3 kHz. For analog controllers this is easily obtained but for digital controllers using small signal control this is usually not the limiting factor. The limiting factor is due to the zero-order hold and computational delays. There is an unfortunate problem with using small signal control and that is due to the model's dependence on the output load. It is very difficult, theoretically, to have a system which has the above stability margins for the whole range of loads. The range of the loads is typically from no-load to full load. In fact, for light or no loads, it is generally impossible to have a good full load controller bandwidth and be stable at all. The real system is generally found to be stable even though theory would suggest otherwise. If one is overly concerned about the stability for light or no loads then gain scheduling could be an option. This would require the calculation of the rms current in the inductors. This is relatively simple to implement in a digital controller. It can be done with an analog controller but the effort would be considerably higher compared to a digital controller. The analysis does not consider some of the practical limitations of the implementation of the controller. This limitations include finite data word length and quantization error. These issues will addressed in Chapters 3 and 4. The analysis also assumes that the sensor gains are one. In actuality, the sensor gains are far from unity. The sensor gains appear in the feedback paths of Figure 2.6. In order to maintain the same closed-loop transfer functions given in Equation 19, the reference currents are multiplied by the sensor gains and the controller gains are divided by the sensor gains. By adding the sensor gains to the feedback paths, the closed-loop 22 transfer functions remain unchanged. The sensor gains are, therefore, included in the feedback paths. The controller for the current loops was designed with the use of Mathcad. Mathcad was used instead of Matlab because time delays can not be dealt with easily in Matlab. A PI controller was chosen since most controller designs for power electronic plants use PI type structures. The controller was analyzed for a mid range load to guarantee the widest range of the system being very stable with a good full load bandwidth. The bode plots are generated using Mathcad. The current controller was tuned mostly by trial and error. Generally, the proportional gain was first increased until the desired unity gain cross-over frequency was obtained. The integral gain was then increased until the minimum acceptable phase margin is reached. Once the initial controller values are obtained, the controller is fine tuned to give the magnitude and phase responses desirable shapes. The transfer function of the block G2 is given by: Y -— (\ - e M G2=K(\ + ±-)e 2 ^ - ^ (21) The K in Equation 21 is the proportional gain of the PI controller. Kt is the integral gain of the PI controller. The leftmost exponential term represents the computational delay term. T in the equation is the switching period. The rightmost term is the normalized zero order hold term. Note that the computational delay and the zero order hold delay use half of the switching period. The implementation is, therefore, sampling the data at twice the switching frequency and updating the duty-cycles twice per switching period. 23 The bode plots below use the plant parameters specified in Chapter 1. Iloopd represents the loop equation for the direct closed loop transfer function iAB I iABnf. Iloopx represents the loop equation for the cross closed loop transfer function iAB liCBnf. The magnitude bode plot is given by Figure 2.7 and its associated phase plot is given by Figure 2.8. The margins and the unity gain cross-over frequencies for two current controllers is tabulated in Table 2.1. Notice that only the proportional gain is changed in the controller - the integral gain remains the same for both control designs. Phase Margin Gain Margin Cross-over Frequency Iloopd K = 0.055 Kj = 1000 80 degrees 10.8 dB 1750 Hz K = 0.065 Kj =1000 76 degrees 9.2 dB 1970 Hz Iloopx K = 0.055 Kj = 1000 116 degrees 9.8 dB 115 Hz K = 0.065 Kj = 1000 105 degrees 8.6 dB 150 Hz Table 2.1: Results from current controller design Notice that the phase and gain margins for the direct loop transfer function are very conservative. This is due to the less than ideal experimental set-up. Chapters 3 and 5 will discuss the reason for choosing such conservative margins. A better set-up would allow the margins to be smaller and, as a result, the unity cross-over frequency and bandwidth would be higher. The cross loop transfer function unity gain cross-over frequency is quite small for the slower controller but note that, as shown in Figure 2.7, the magnitude response approaches quite close to zero dB at around 850 Hz. For the faster controller, the magnitude response crosses over the 0 dB line at 150 Hz but remains within 2 dB of unity gain until the magnitude approaches 0.12 dB at 920 Hz. Due to plant parameter variations, the unity gain cross-over frequency could be much higher than the listed value in Table 2.1. The lower cross-over frequency indicates that the 24 difference in inductor currents iAB will response more strongly to the direct current reference iABref compared to the cross current reference iCBref. Magnitude (dB) 100 50 I l o o p d I l o o p x -so -100 10 100 f (Hz) 1*10-Figure 2.7: Magnitude plot for R = 15Q, K = 0.055, K, = 1000 1-10 Phase (dee) 300 100 I l o o p d I l o o p x -100 -aoo N N 10 100 f (Hz) rio 1-10 Figure 2.8: Phase plot for R = \5Q,K = 0.055, K, = 1000 25 2.3 Voltage Control Loop Analysis The closed-loop current loops now form the plant for the voltage loop. The dynamics associated with using discrete-time control have already been accounted for in the current controller design since the A/D converters of the voltage loops do not add any additional dynamics in the continuous-time domain. Figure 2.9 shows the structure used to analyze the voltage control loops. Figure 2.9: Voltage control loop block diagram In Figure 2.9, Hx represents the leftmost transfer function relating iAB and iABref given in Equation 19. H2 represents the rightmost transfer function relating iAB and iCBref given in Equation 19. H3 relates the difference in inductor currents with the corresponding line voltage as given in Equation 14. Finally, / / 4 is the voltage loop controller. 26 As with the current loop, the voltage closed loop transfer functions can be found and are shown in Equation 22: _ HxH3H4+Hl2H3H4 -H2H3H4 AB ~ ' l + 2HxH3H4 +H,2HIHI -H\H\H\ H ^ H * -VCBnf (22) 1 + 2H,HM. + H^HlHl -HlHlHl CBref Equation 22 can now be put in a form so that the voltage loop equations can be extracted. After algebraic manipulation, Equation 22 now becomes: HXH 3H 4 + H XH\H2 — H2H y I + #l#3^4 v , A B rr TT jj , TJ2 TJ2TJ2 TJ2TT2TJ2 ABref H2H3H4 \ + 2HxH3H4+Hx2HlHl TJ TT TJ " CBref 1 + 2 3 4 2 . . (~H2H3H4) 1 + 2HXH3H4+H?H32H2 VcBref (23) The unity gain cross-over frequency for the voltage loops should be significantly lower than the unity gain cross-over frequency for the current loops. This will allow the current loop to track the reference current provided by the voltage loop with good accuracy. One consequence of the voltage loop being slower than the current loop is the current loop can be approximated by either a gain block or a first order system. This approximation was typically made when the responses were developed by hand. With 27 the use of software like Mathcad or Matlab the approximation no longer needs to be made. As with the current controllers, the voltage sensor gains are equal to one in Figure 2.9. The gains due to the voltage sensors are handled in the same way as the current sensor gains except that, in this case, the voltage controller gains must also be multiplied by the current sensor gains. The voltage loop controllers are designed with the same iterative method as the current loop controllers. In this case, however, the gain margin with a PI controller was found to be insufficient. A modified PI controller was chosen to increase the gain margin. The modified PI controller has better noise rejection because its magnitude response rolls off at -20 dB/decade for high frequencies while the PI controller has a flat magnitude response for high frequencies. The problem with modified PI controller is that the extra pole required causes more phase delay. For this reason, a modified PI controller was not used for the current loops. Modified PI controllers are typically used when the gain margin obtained by a PI controller is not sufficient or high frequency noise is a problem. The controller block has the following form: HA = KpQ + £±)-±— (24) S 1 + SKy Kp and KJ2 are the proportional gain and integral gain terms respectively as in the PI controller case. \IKV is the corner frequency for the additional pole used to attenuate high frequency noise. The controller values for the current loop shown above were used for the voltage loop Bode analysis. Vloopd represents the loop response for the direct closed loop transfer function VAB IVABref. Vloopx represents the loop response for the cross closed loop transfer function VAB IVCBref. Figure 2.10 shows the magnitude responses for the 28 loop equations and Figure 2.11 shows the corresponding phase plots. Table 2.2 shows the results obtained with the two different current controllers and the same voltage controller. Phase Margin Gain Margin Cross-over Frequency V l o o p d K =0.055 53 degrees 10 dB 600 Hz K = 0.065 52 degrees 10.3 dB 630 Hz Vloopx AT =0.055 infinite 25 dB N/A K =0.065 infinite 26 dB N/A Table 2.2: Voltage Controller Results for Kp =0.3116, Kn =1000, Kv = 7^5-The unity gain cross over frequency has no meaning in the cross loop transfer function because the magnitude plot never crosses the 0 dB axis. As a result, the phase margin is infinite. Notice that the phase and gain margins for the direct loop transfer function are much closer to the recommended values given above. As noted above, the noise immunity is quite good for the voltage loop due to the extra pole of the modified PI controller. This is clearly seen in the magnitude response shown in Figure 2.10. The cross coupling for the voltage loop is very small as indicated by its magnitude response. The effect of the voltage reference VCBref is very small compared to the effect of the direct voltage reference VABref. Most of the coupling in this system comes from the fact that each controller contributes equally to the derivation of the phase B duty-cycle. 29 Phase 200 I 100 Vloopd Vloopx -100r -aooL 100 i (Hz) no 1-10' Figure 2.11: Phase Plot for AT, = 0.3116, Kn = 1000, Ky = _ i 1500 30 Chapter 3 Simulation Using PSIM Chapter 3 details the simulations that were performed to verify the operation of the proposed controller. The actual system was modeled as accurately as possible to help explain the experimental results. The first section of this chapter describes the implementation in PSIM of the modeled circuit. The circuit blocks in PSIM that model the functional blocks of the DSP are also described in this section. The physical structure of the DSP will be discussed in further detail in Chapter 4. Waveforms produced from the simulations and the physical significance of the results are presented in the second section of the chapter. 3.1 Circuit Description The simulated circuit can be split into two functional blocks: the power circuit, as shown in Figure 3.1, and the DSP block as shown in Figures 3.2 and 3.3. The structure of the power block has already been described earlier so its description will not be repeated here. The DSP block can be further split into two sections: the controller block and the deadtime insertion block. The controller block computes the duty cycles for the three phases and delays the generated signals by half of the switching period. The measured variables and the calculated reference voltages are held by zero-order hold blocks. The state of the switches in an inverter leg are controlled by the switches' gate voltages. The deadtime insertion block inserts a 2 us deadtime between the falling edge of one gate signal and the rising edge of the other gate signal. This ensures that the dc bus will not be short-circuited. The. value of the deadtime corresponds to the minimum value specified by the manufacturer of the switches that were used in the experimental setup. 31 ri fe H i f e H ug\ I/YYY\ Controller Deadtime Insertion -i/YYYV. 6 • ^ A A / V - i - A A / v -I—wvJ Figure 3.1: Power Circuit with Control Connections The hardware deadtime insertion block in the DSP modifies the gating signals symmetrically. The same method is used in the deadtime insertion block of the simulation circuit. Details of the hardware deadtime block are included in Chapter 4. The implementation of the PI and modified PI controllers in the simulation is almost identical to their implementation in the DSP. The structures of the discretized controllers are identical but the finite word length of the internal signals in the DSP is not modeled in the simulation. Calculations in the simulation are performed with floating point arithmetic and very high precision. The DSP performs 16-bit arithmetic with a 40-bit accumulator in the multiply and accumulate (MAC) block of the DSP. The finite word 32 length in the DSP cause errors in the calculated duty-cycles which tend to destabilize the controllers Quantization effects are included in the simulation. The largest quantization error is in the duty-cycles. The precision of the duty-cycles is only approximately 9 XA bits. The simulation uses 9 bits of precision for the duty-cycles. The A/D in the DSP has 12 bits of precision. Quantization errors tend to destabilize the controller. The quantization of the duty-cycles is included in the deadtime insertion block as shown in Figure 3.2. The voltage and current sensors are assumed to be ideal i.e. the sensors have infinite bandwidth and no phase distortion. Measurement noise is added to the measured currents and voltages by using a random voltage block from PSIM. Figure 3.3 does not show the addition of measurement noise. The noisy measured signal is held by a ZOH block and then quantized. Figure 3.2: Deadtime Insertion Block 33 34 3.2 Simulation Results and Discussion Results are presented for two cases. In the first case, the measured currents and voltages are noiseless. Noise is added, in the second case, to the measured currents and voltages to study the effect of noise on the generated duty-cycles. A time step of 0.1 p.s was used for all of the simulations. The power circuit in both of the simulations presented in this section start with zero initial conditions and at time t = 0. The results presented, therefore, show the start-up transients produced with the controller. Case 1: No Measurement Noise This case is used to demonstrate the action produced by the controller to the deadtime disturbance. Results obtained with the controller are presented together with open loop results. The results obtained with two different current controller proportional gains and the same voltage controllers are also presented to study the effect of the gain on the output line voltages. The gains for the controllers are given in the previous chapter. The per-phase load is 15 fi. The line voltages and VCB are shown in Figures 3.4 and 3.5. Figure 3.6 shows the generated duty-cycles for the current controller with proportional gain Kp = 0.065. The duty-cycles range from -1 to +1. A duty-cycle of+1 corresponds to the top switch being on for the entire switching period while a duty-cycle of-1 corresponds to the top switch being off for the entire switching period. 35 S2.Vl«(lb V l b Vlb_1 with controller jj j reference Figure 3.4: Simulated line voltage Vab with the controller and for open loop Figure 3.5: Simulated line voltage Vcb with the controller and for open loop 36 S2.dj S2.db S2.dc 0.00 10X10 20.00 30.00 40.00 Time (m*) Figure 3.6: Simulated duty-cycles for Kp = 0.065 Notice that in Figure 3.4 the line voltage Vab generated by the closed loop system is considerably closer to the reference voltage than the line voltage generated by the open loop system. The line voltage Vcb generated by the controller is too high. The waveform for Vcb will be discussed in detail below. The disturbance created by the deadtime has almost been eliminated with the use of the controller. The effect of the deadtime is seen in the waveforms for line voltages produced with open loop. Distortion of the open loop voltage waveforms is due to the deadtime disturbance. The duty-cycles, as seen in Figure 3.6, are also distorted to compensate for the deadtime disturbance. The distortion near the peaks is primarily due to quantization errors not to the controller compensating for deadtime. 37 1 (a) ^ ^ y c b i M ft 1 - -/ f\ \Vab \ (b) \ / (a) Kp = 0.055 \ r i (b) Kp = 0.065 -200.00 0.00 20.00 Timi (ms) Figure 3.7: Simulated line voltages for Kp = 0.065 and Kp = 0.055 As can be seen in Figure 3.7, increasing the current controller proportional gain forces the line voltages to become increasingly more balanced. The line voltages are more balanced because Vcb has decreased in magnitude. The line voltage Vab is almost identical for the two controllers. The magnitude of the line voltage Vcb has become smaller because the phase C voltage is smaller for the higher gain controller. Notice that in Figure 3.6, the duty-cycle for phase C is appreciably higher than the duty-cycles for phases A and B. Since the duty-cycles for phases A and B are almost identical in magnitude, the higher phase C duty-cycle causes Vcb to be larger in magnitude than Vab. This is consistent with the results obtained with the experimental inverter as shown in Chapter 5. 38 Case 2: With Measurement Noise In this case, noise is added to the measured signals. A random number with a peak-to-peak amplitude equal to 10% of the peak amplitude of the measured signal and no offset is added to the measured signal. The faster current controller is used for this case. The per phase load is 15 fi. The generated line voltages and duty-cycles are shown in Figures 3.8 and 3.9 respectively. Figure 3.10 shows a small section of the duty-cycle for phase A. Vab Vob 200.00 Vcb ' " V \ Vab // - \ \ 10.00 20.00 30.00 time (ms) Figure 3.8: Simulated line voltages Vab and Vcb produced with noisy sensors 39 -1.00 0.00 10.00 20.00 Timt (ms) Figure 3.9: Simulated duty-cycles produced with noisy sensors "'if 1 i j h i i ! . .TL. . . -fr Jl 1 : \ -> 12.00 14.00 1800 Tim* (ms) Figure 3.10: Small section of the duty-cycle for phase A 40 The duty-cycles generated in this case are slightly oscillatory. This is clearly seen in the figure showing the small section of the duty cycle for phase A. As a result, the generated line voltages have significant ripples. Notice that the ripples are concentrated near the voltage peaks. The frequency of the oscillations is 2 - 4 kHz. The value of the frequency is important as it is used to justify the oscillations found in the experimental results. Since the noise in the real system is likely coloured with non-zero mean, these simulation results are useful only to study the general effect of noise on the closed loop system. Measurement noise affects the performance of the controller more than the quantization of the duty-cycles. 41 Chapter 4 Experimental UPS Design The experimental UPS design is detailed in this chapter. The chapter is split into three sections. The first section presents the design of the power circuit including the AC-DC rectifier section, three-phase inverter, gate drive circuitry, and sensor circuitry. In the second section, the architectural features of the DSP are presented. Finally, in the last section, the developed DSP program is explained. In a few cases, such as the output filter inductor, only the final design is presented. References are given for the design procedure in these cases. 4.1 Description of the Power Circuit The hardware for the power circuit and the interface between the power circuit ' and the DSP can be split into four functional blocks. Each functional block is detailed separately. 4.1.1 A C - D C Rectifier Section In previous chapters the dc bus has been represented by an ideal dc source. In actuality, the dc bus is produced by rectifying an ac source and filtering the output with a large capacitor as shown in Figure 4.1. As a result, the dc bus has a small ripple. The magnitude of the ripple depends on the capacitance of the capacitor. Typically, the capacitance is chosen to be 2 - 3 ^F per watt of output power. A capacitance that is too small will result in an unacceptability large ripple. A capacitance that is too large could result in the capacitor or the rectifier bridge destructively failing. As the capacitance increases, the available time to charge the capacitor decreases and, as a result, the peak charging current increases. If the peak current becomes too high then either the diode bridge or the capacitor could fail. A three-phase bridge was used instead of a single-phase bridge to increase the available dc bus voltage. 42 2200 uFd= r0^ H2> 10K z b = b > 10K Figure 4.1: AC-DC rectifier section A split dc bus capacitor is required for this application. The resistors across the dc bus capacitor bank have two purposes: to discharge the capacitor bank when the power circuit is turned off, and to balance the positive and negative voltage rails. The three-phase voltage source is supplied by a power utility company. Isolation is provided by a three-phase star-delta transformer. The dc bus magnitude is varied by a three-phase variac. Figure 4.2 shows the configuration of the three-phase supply. 1 2 0 : 2 0 8 o « V a r i a c Figure 4.2: Isolation transformer and variac 43 4.1.2 Three Phase Inverter The component values for the three-phase inverter were given in Chapter 1. Due to the power requirements, insulated gate bipolar transistors (IGBT) are used for the switches. An intelligent power module from Powerex is used for the IGBT bridge. The power module is self-protecting provided that power is supplied to the logic circuits of the module. The logic circuits will be briefly explained in the section on the gate driver circuitry. The use of the power module simplifies the design of the inverter. The IGBT switches in the module are rated for 600 V and 20 A. The part number for the module is PM20CSJ060. The filter inductor was designed with the aid of a simple spreadsheet as shown in Table 4.1. There are many design procedures for inductors. A selection of design procedures is given in [12]. Inductor Design Notes: L 2.533 mH u 125 Permeability Ae 2.888 cm A 2 cross-sectional area Using 2x 77109-A7 cores le 14.3 cm path length from Magnetics Inc. Ipk 9.4 A peak current Bmax 1.05 T peak flux density N 89 turns number of turns U s e s A W G 18 Wire Check 0.00317816 Bpk 0.926351583 T Calculated peak flux density Table 4.1: Spreadsheet for inductor design The inductor is made from a powdered iron core from Magnetics Inc. The cores are stacked together to increase the effective cross-sectional area. The inductor was designed conservatively to ensure that the magnetic core does not saturate. 44 The output filter capacitor is comprised of two 22 up electrolytic capacitors in series. The cathodes of the capacitors are connected together. A single electrolytic capacitor is not suitable because an electrolytic capacitor acts like a short-circuit when a negative voltage is applied to its terminals. As a result, the capacitor can fail if the current is sufficient. When the cathodes of two electrolytic capacitors are connected together, a positive voltage is always seen across one of the capacitors thus the current is limited. Unfortunately, the ESR of the series capacitors is double the ESR of the single capacitor. The load consists of parallel switched wire wound heater resistors connected in a star configuration. Changing the number of parallel star connected resistors varies the load. 4.1.3 Gate Driver Circuitry An electrical isolation barrier is required between the DSP and the IGBT module. Since the module only requires CMOS level voltages and small currents, only the isolation barrier is necessary. The isolation is provided by high-speed optocouplers HCPL 4054 from Hewlett Packard. No separate gate driver integrated chips are required. The gate signal inputs for the IGBT module have high impedances. As a result, the gate signals are susceptible to noise. A good layout is required to minimize the effect of noise. The layout of the circuitry is a modified version of the suggested layout provided by Powerex [13]. The modified layout can be found in Appendix A. Extra inverting Schmitt triggers CD 40106BCN from Motorola are required to eliminate the noise spikes on the gate signals. Testing showed that the IGBT module would not operate properly without the Schmitt triggers. The IGBT module has a separate gate driver for each of the top switches and a single driver circuit for the bottom switches. Each circuit provides a fault output that can be used by the controller to detect a problem with the bridge. In the implementation for 45 this work, the fault outputs were ignored. The module requires active low gate signals. The gate driver circuitry, as shown in Figure 4.3, requires the DSP gate signals to be active low since the Schmitt triggers invert their inputs. The power module requires four isolated +15 Vdc power supplies to provide power for each top switch logic circuitry and the single logic circuitry for the bottom switches. Decoupling capacitors are also used placed near the supply pins of the IGBT module. 4.1.4 Sensor Circuitry The circuits for the sensors include the sensors themselves and the signal conditioning circuits to bring the measured signals within the range of the DSP's A/D inputs. The A/D inputs have a range of +2V to -2V. The differential inductor currents are measured using a Hall-effect transducer LT-25P from LEM Instruments Inc. The difference in inductor currents is obtained by passing the phase B inductor wire through the sensors in the opposite direction than the phase A and C inductor wires. The selected transducer has three current ranges that are selected by the number of turns through the device. In this case, two turns are used to maximize the precision of the measurement while guaranteeing the differential inductor current lies within the measurement range. The gain of the sensor is 0.05. The supply of the sensor is +5 Vdc. The output from the sensor is 2.5 +/- 2.0 V where 2.5 V corresponds to zero current. As a result, the output must be shifted down by 2.5 V to lie within the range of the A/D inputs. Figure 4.4 shows an op-amp circuit that shifts the input appropriately. 46 Vupc Figure 4 . 3 : Gate drive circuitry 4 7 Vin lk -AA/V +5V Voff ^181 LT1009CZ 18k, 0.1% Figure 4.4: Level-shifting circuit for the current sensor LT1009CZ is a precision +2.5V reference from Linear Technology. The line voltages are measured using a precision isolation amplifier AD210 from Analog Devices. Two voltage divisions are made to bring the signal within the range of the A/D input as shown in Figure 4.5. The first division is done by a voltage divider. The second division is due to the amplifier of the sensor. The overall gain of the voltage sensor is 0.01147. The output of the sensor is inverted so the measured value needs to be inverted in the DSP. The isolation amplifier provides +/-15 Vdc reference voltages on the input side of the device. The voltage from phase B is connected to the Icom pin in the input stage of the device. If the reference voltages are connected to phase B via identical resistors, then a line voltage measurement can be made. 48 12 I K Vb<> Out A l l r e s i s tors are 1% Figure 4.5: Voltage sensor circuit The layout of the sensor circuits is critical since the relatively small currents in the DSP side of the isolation barrier are easily affected by noise. As mentioned in Chapter 3, the performance of the controller is strongly affected by the level of the noise in the measured signals. There are no anti-aliasing filters on the inputs of the A/D except for second-order low pass filters with a cut-off frequency of approximately 50 kHz. These filters are located on the development board of the DSP. For this application, the dynamics of the filters can be ignored. Anti-alaising filters are not required because the output LC filters have already filtered the switching waveforms produced by the IGBT bridge. 4.2 Introduction to the DSP and its Features A DSP from Analog Devices Inc. was chosen to implement the digital controller. The ADMC401 DSP is intended for use in motor controllers. As a result, the DSP has hardware dedicated to pulse-width modulation (PWM) generation and deadtime insertion. The user of the DSP can specify the switching frequency, required deadtime, and the 49 duty-cycle for each phase. The DSP automatically generates the six gate signals required for the IGBT bridge. A development kit was used in this work. The kit contains a development board, which includes the peripheral hardware required by the DSP, and a connector board. This section is split into several subsections that match the functional blocks of the DSP. The assembly language of the DSP will be presented in the next section. 4.2.1 DSP Core The ADMC401 is a 26 MIPS (million instructions per second) fixed-point DSP. The arithmetic units of the DSP include a 16-bit arithmetic and logic unit (ALU), single cycle 16-bit X 16-bit multiply and accumulate into a 40-bit accumulator (MAC), and a 32-bit logical and arithmetic shifter. The 40-bit accumulator is of particular interest because many MAC calculations, such as in filtering, can overflow a 32-bit accumulator. The DSP core features two independent data address generators. If data is stored in the program memory space, then this allows access to both the program and data memories for data in a single instruction. The DSP core supports multifunction instructions. One example of a multifunction instruction is a computation with memory read. The multifunction capability of the DSP allows algorithms such as filtering to be processed very quickly. The core has hardware that supports zero overhead looping. Once the number of iterations is set with a single instruction, a block of instructions can be processed many times with no additional overhead. Again this facilitates filtering algorithms since they involve MAC instructions in a loop. 50 In general, the ADMC401 DSP core is very efficient at processing repetitive type algorithms such as filtering. Even though the controller in this work does not require any filtering, the features of the DSP core allow the PI and modified PI algorithms to be completed very efficiently. 4.2.2 Analog-to-Digital Unit The A/D unit of the DSP is very useful for digital controller applications. The A/D unit can process 8 channels of data in under 2 us with 12-bits of precision. The unit has two banks that allow two channels to be simultaneously sampled at a time. The input channels can also be sequentially sampled. The data is processed by a 12-bit pipeline flash analog-to-digital converter (ADC). The A/D unit produces an end-of-conversion interrupt when the data is valid. The start-of-conversion can be coordinated with a PWMSYNC pulse generated in the three-phase timing unit. The inputs to the A/D unit range from OV to +4V. The DSP development board has additional circuitry that shifts the -2V to +2V input from the connectorboard to the OV to +4V range required by the DSP. The output from the A/D unit is a signed fractional number i.e. ranges from -1 to 1. The gain introduced by the A/D unit is, therefore, 0.5. The gains of the LEM sensor and isolated amplifier must be multiplied by the gain of the A/D unit to obtain the total current and voltage sensor gains. 4.2.3 The P W M Controller The PWM controller block of the DSP is comprised of four blocks: a 16-bit three-phase PWM timing unit, output control unit, gate drive unit, and PWM shutdown controller. The three-phase PWM timing unit is the core of the PWM controller. The unit produces three pairs of complimentary gate signals based on the values in four 51 configuration resisters: PWMTM, PWMDT, PWMPD, and PWMSYNCWT. A bit in a fifth register, MODECTRL determines whether the duty-cycles are updated once (single-update mode) or twice (double-update mode) per switching period. The PWMCHA, PWMCHB, and PWMCHC registers control the duty-cycles to be produced. The PWMTM register sets the PWM switching frequency. The value stored in the register equals the number of clock cycles for half of the switching period. For every clock cycle, the duty-cycles are compared to a timer with a period equal to the value in the PWMTM register. If the duty-cycle equals the current timer value then a switching transition occurs. The timer starts with the value in the PWMTM register and starts to count down. When the timer has reached zero, then the timer starts counting up until the value in the PWMTM register is reached. The first switching transition occurs while the timer is counting down and the second while the timer is counting up. The resolution of the duty-cycles is, therefore, limited by the switching frequency. The number of discrete values that the duty-cycles can take in the single-update mode is equal to the value in the PWMTM register while in the double-update mode the number of values is equal to double the value in the register. The duty-cycles are quantized and this leads to errors as mentioned in Chapter 3. The PWMDT register holds half of the value of the deadtime to be inserted into the gating patterns. The deadtime is added to both the high-side and the complimentary low-side gate signals. The deadtime is, therefore, inserted symmetrically into the gating patterns. As a result, the switching transitions are modified due to the addition of the deadtime. Figure 4.6 shows an example of the addition of deadtime for the double-update mode. Pulse-widths are rejected if they are smaller than the value specified in the PWMPD register by the PWM timing unit. 52 AH AL PWM SYNC ,<r- PWMCHA1—— PWMCHA2-2 x PWMDT —* Figure 4.6: Deadtime insertion into duty-cycle for phase A. Signals are active low The PWMSYNC WT register specifies the width of the PWMSYNC pulse that is generated by the three-phase timing unit. This pulse is generated at the switching frequency in the single-update mode and at double the switching frequency for double-update mode. The PWMSYNC pulse is used to synchronize the PWM controller. The signal is also available externally so other devices can be synchronized with the pulse. As mentioned earlier, the PWMSYNC pulse can be used to signal a start-of-conversion for the A/D unit of the DSP. The output control unit is controlled by the PWMSEG register. Setting the appropriate bits of the PWMSEG register can individually enable each pair of gate signals. The register also has bits that enable a crossover feature and enable the control of an electronically commutated motor. These features were not used for this work. The gate drive unit is associated with the PWMGATE register. Two optional features are available with the use of the PWMGATE register: high frequency chopping and switched reluctance mode. Since neither of these features were utilized in this work, the PWMGATE register was not used. The gate drive unit also controls the polarity of 53 the gating patterns with the use of the PWMPOL pin. The voltage level on this external pin determines whether the PWM gating patterns are active low or active high. In this case, the PWM patterns are selected to be active low. The last block of the PWM controller is the PWM shutdown unit. In this work, the unit was disabled to simplify the external hardware to the DSP. The PWM shutdown unit gives an external device the ability to shutdown the PWM controller. 4.2.4 Programmable Interrupt Controller The ADMC401 allows the user to program interrupt service routines for handling peripheral interrupts. The software code presented in the next section is interrupt driven. The three interrupts of interest are the PWM trip, ADC end-of-conversion, and PWMSYNC. Since the PWM shutdown unit was disabled, the PWM trip interrupt does nothing. The ADC end-of-conversion and PWMSYNC interrupts are used by the code to coordinate the calculation and updating of the duty-cycles. Fortunately, Analog Devices has prewritten code for placing user defined interrupt vectors in the interrupt vector table. Interrupts will be discussed in further detail in the next section. 4.3 DSP Code In this section, the software code that implements the proposed controller is presented. The first subsection shows the discretization of the continuous-time PI and modified PI controllers from Chapter 2. In the second subsection, the functions for the discretized controllers and the main interrupt service routine are described. The program flow is also detailed, in the second subsection, with the aid of flowcharts. The complete software code listing can be found in Appendix B. 54 4.3.1 Discretization of the Continuous-time Controllers In Chapter 2, the PI and modified PI controllers were tuned in the continuous-time domain. The actual controllers are implemented in the discrete-time domain. As a result, the continuous-time controllers need to be discretized. There are many techniques available that convert a continuous-time transfer function into a discrete-time transfer function. The bilinear transformation was chosen because Analog Devices has already developed software code for a PI controller using this technique [14]. The bilinear transformation is performed by substituting the right-hand side of Equation 25 into s in the transfer function to be discretized. If a continuous-time PI controller is given by C(s) = U(s)/I(s),then using the transformation yields: 2 z-l (25) s <=> T z + \ U(z) = (26) Equation 26 corresponds to the following difference equation: (27) U(k) = cj(k) + c2I(k -1) + U(k -1) (28) 55 The difference equation given in Equation 27 can be directly implemented in the DSP. A signal flow diagram can also be made from Equation 26 as shown in Figure 4.7. The saturation block is used to avoid integral wind-up. Integral wind-up will be further discussed in the next subsection. U(k) Figure 4.7: Signal flow diagram for a discretized PI controller The above process can be repeated for the modified PI controller. If a continuous-time modified PI controller is given by C2 (s) = U2 (s)/I2 (s), then the z-domain transfer function for C 2 (s) is: Kp (1 + ]-K12T)z2 + Kp (K]2T)z + Kp(- K12T -1) U2 (z) = = 2 12 (z) (l + 2 ^ ) z 2 - 4 ^ z + ( 2 ^ - l ) ( 2 9 ) Equation 29 corresponds to the difference equation: T 4 0-2%) U2 (k) = U2(k-\) + f - U2 (k-2) + 1 + 2^- \ + 2± T T 1 \ + 2± T Y Y T Kp(KI2T 1) ±^f-I2 (k -1) + 2 — 12 (k - 2) 1 + 2^- 1 + 2 ^ T T (30) 56 U2 (k) = kxU2 (*-!) + k2U2 (k-2) + pxI2 (k) + p2I2 (*-!) + p3I2 (k-2) (31) The signal flow diagram for the modified PI controller is shown in Figure 4.8. The saturation block is again used to avoid integral wind-up. Figure 4.8: Signal flow diagram for a discretized modified PI controller 4.3.2 Program Code Description Analog Devices provides numerous software examples, both in the user's manual [15] and in various application notes [16]-[20]. A large amount of code written by Analog Devices was used to reduce the code development time. The ADC end-of-conversion interrupt service routine and modified PI controller routine were the only significant portions of code that were developed. The header file main.h includes the values for the PWM controller timing unit registers. The header file modpi.h and dsp file modpi.dsp implements the modified PI controller. The modpi routine can be called by any program if the header file is added to its include list. This is equivalent to the use of the PI routine developed by Analog Devices. Main.dsp is the main program file. The main program is interrupt driven. As a result, after the DSP is initialised, the DSP enters an infinite loop while waiting for interrupts to occur. The variables and constants used by the ADC end-of-conversion interrupt routine and the routine itself are also included in the main.dsp file. 57 As can be seen by the flowchart in Figure 4.9, the DSP is first initialised and then enters an infinite loop. The various functional blocks of the DSP including the PWM controller unit, A/D unit, and interrupt controller are initialised in a known state. The DSP then waits until an interrupt occurs. Once an interrupt has been detected then the revalent interrupt vector is fetched and executed. Since the vector can only contain four instructions, any large interrupt service routine, such as the ADC end-of-conversion routine, must be located elsewhere in memory and a jump must be made to its location. The ADC end-of-conversion interrupt is used instead of the PWMSYNC interrupt because the ADC end-of-conversion interrupt guarantees that the sampled data is the most current and valid. The PWMSYNC interrupt is generated by the occurrence of the PWMSYNC pulse. The PWMSYNC pulse also is used to signal the start-of-conversion in the A/D unit. Since the conversion time is almost 2 p.s, if the PWMSYNC interrupt is used to process the new duty-cycles, then the most current sampled data will not be used. The PWMSYNC and PWMTRTP interrupts contain no operation (NOP) instructions and then return the control to the main program. Enable interrupts Calibrate A/D unit Figure 4.9: DSP initialisation and infinite loop routine MAIN 58 The ADC end-of-conversion interrupt service routine, as shown in Figure 4.10, performs the necessary calculations required to generate the new duty-cycles based on the sampleddata just converted. Read New Voltage and Current Data Calculate Reference Voltages Vab and Vcb V e r r o r - V r e f - V m e a s u r e d Execute Mod PI Controller Twice lerror = Iref- I m e a s u r e d Execute PI Controller Twice V b = - ( V a + V c ) Update Duty-Cycles Figure 4.10: ADC end-of-conversion interrupt service routine The voltage references are calculated with the use of the sin function provided in the trigono.h include file. The sine of the input variable x is approximated by the following formula: sin(x) = 3.140625*+ 0.02026367*2 -5.325196*3 +0.5446778*4 + 1.800293*5 (32) where x can range from 0 to 0.5 which corresponds to 0 degrees to 90 degrees. 59 The sin function included in trigone h can take an input value from -1 to 1, which corresponds to -180 degrees to 180 degrees. The angle of phase A is used as a reference angle. The reference angle is incremented and stored as a 32-bit value every time the service routine is executed.. The DSP uses signed twosrcomplement arithmetic with fractional binary numbers. As a result, the angle automatically "wraps-around" to -180 degrees when the angle exceeds 180 degrees. Glitches in the reference voltages are avoided with the use of a high precision reference angle and the inherent arithmetic of the DSP. The sin of the reference angle + 30 degrees is multiplied by the peak amplitude of the desired output voltage to obtain the current instantaneous value of the VAB reference voltage. Similarly, the sin of the reference angle + 90 degrees is multiplied by the peak voltage to obtain the VCB reference voltage. The error voltages and currents are saturated to half of their potential range. This can degrade the transient response of the controller. Alternately, the errors can be scaled down by two and the outputs of the controllers scaled up by two with saturation. Both techniques were tried and no difference was notable in the output waveforms. The first, simpler, method was therefore used. The input to the modified PI controller routine is the error voltage. There are three important issues that deal with the implementation of the routine: the scaling of the controller coefficients, coefficient precision, and integral antiwind-up. The controller coefficients must be represented by fractional numbers since the DSP performs arithmetic assuming the input operands are fractional numbers. As a result, the coefficients must be scaled down to lie within -1 and 1 while still maintaining the maximum precision possible. The scaling factor should be a power of two. This allows the final result to be shifted up by the barrel shifter of the DSP. In this case, the largest coefficient is 1.92. A scaling factor of two was used. 60 The coefficients for the input and delayed input terms are quite small. In particular, the coefficient for I2 (k -1) is very small. To maintain a high level of precision in the coefficients, 32-bit numbers are used. Since the coefficients for the delayed output terms are sufficiently large, only 16-bit numbers are used to represent these coefficients. Integral wind-up is a phenomenon that needs to be avoided. Integral wind-up occurs when the output of a controller saturates for a long period of time. If no measures have been taken then the integral of the input error becomes very large. As a result, any change in the input error has no effect on the controller output and the closed-loop controller opens creating an open-loop system. An error input with the opposite sign of the original error has to be present for a long time before the system becomes controllable again. Integral wind-up can be avoided by saturating the integral section of the controller. The saturation is accomplished with the use of the MAC arithmetic unit of the DSP since the new controller output is calculated solely with the MAC unit. After the new scaled down output value is calculated the MAC is checked for overflow. If the final calculation resulted in an overflow, then the MAC is saturated: Similarly, the properly scaled controller output value is saturated if the scaling would result in a value outside the range for fractional numbers. A flowchart, as shown in Figure 4.11, demonstrates how saturation is implemented. The delayed controller output values are stored as 32-bit values. This minimizes the steady-state error of the controller due to finite word length effects. The algorithm for the modified PI controller is very similar to the algorithm developed for the PI controller by Analog Devices. 61 Calculate New Scaled Down Output Value (OV) Yes Saturate OV Yes Z H I Saturate OV Figure 4.11: PI and modified PI controller routines where: sf = scaling factor The input to the PI controller is the error current. The algorithm developed by Analog Devices was used to implement the PI controller. The flowchart in Figure 4.11 also applies to the PI controller routine except the scaling factor is four in this case. The 32-bit version of the algorithm is used to minimize the effects of finite word length. The PI and modified PI controller routines are executed twice. The outputs f the PI controller routines are the new duty-cycles for phases A and C. The duty-cycle for phase B is the negated sum of phases A and C, which is saturated if necessary. The new duty-cycles are now updated but do not come into effect until the next time the PWMSYNC pulse is generated. 62 Chapter 5 Experimental Results In this chapter, the results obtained with the experimental UPS inverter as described in the previous chapter are presented. The experimental results are explained with reference to the simulation results produced with PSIM. As expected, the real system behaves quite closely to the simulated system but there are some differences that can be attributed to inaccuracies in the simulated system. Unless otherwise specified, the controller gains presented in Chapter 2 were used to produce the experimental results. Since two proportional gains for the current controllers were given, a proportional gain is listed for each result. 5.1 Output Line Voltages The steady-state line voltages, as shown in Figures 5.1 and 5:2, are produced with and without the controller. A per-phase load of approximately 19 fi and current controller with a proportional gain K = 0.065 were used to generate the line voltage waveforms. Notice the significant ripples in the waveforms produced with the controller. As demonstrated with the use of a simulation, the ripples are due to noisy sensor measurements. The measured voltage and current data is presented in the next section. The system with the controller generates line voltages which are different by less than 4 Vrms. The line voltages are, therefore, well balanced. The open-loop voltage waveform produced by the actual system for VCB is similar.. in shape but not magnitude to the waveform produced by the simulated system. VAB, however, is different in shape and magnitude from the simulation result. Although the simulation results for open-loop are different from the experimental results, the controlled system produces similar results for the simulation and actual system. 63 The simulation with the controller produces line voltages whose magnitude does not depend on the load. In reality, the load influences the output voltage,magnitude. The average line voltage for a per-phase load of approximately 26 fi is 109 Vrms. When the load is increased to approximately 13 fi, the average line voltage drops to 108 Vrms. The load regulation for a 50 % change in load is 0.9 %. The sensor gains for the voltage loops are different from their nominal gains. The output voltage for VAB was measured to be 111 Vrms for a per-phase 19 fi load. The output of the voltage sensor with this line voltage is 3.18 Vpeak-to-peak. The total gain of the voltage sensor (isolation amplifier and A/D unit) is 0.00506 compared to the nominal gain of 0.00573. The measured gain for the VCB sensor is very close to the gain for the VAB sensor. As a result, the reference voltage peak amplitude was changed to reflect the true gain of the sensors. All of the results presented in this chapter use the adjusted voltage reference. The measured line voltages for two different current controllers are tabulated in Table 5.1. The results are obtained with a per-phase output load of approximately 19 fi. Output Voltages Current Controller Vab Vac Vcb Va Vb V c K = 0.055 105 V 114 V 115 V 60 V 61 V 68 V K = 0.065 107 V 111 V 109 V 62 V 61 V 63 V Table 5.1: Measured output voltages for two current controller gains As expected, the line voltages are better balanced with the faster current controller. Notice that the line voltages for the faster current controller are all within 10% of the nominal line voltage of 104 Vrms. For both of the current controllers, the phase C voltage is larger in magnitude than the phase A and B voltages. The phase C voltage is also larger in magnitude in the simulations. The simulation behaves quite close to the actual circuit for the controlled system case. 64 200 -200 I , . • -• • : 1 0 5 10 15 20 25 tim t (ms) Figure 5.1: Measured steady-state output line voltages for K - 0.065, 19 fi load 200 .200 I 1 : • • •— 1 0 5 10 15 20 25 tim e (m s) Figure 5.2: Measured steady-state output voltages for no controller, 19 fi load 65 1 0 15 tim e (m s) 2 0 2$ Figure 5.3: Measured output voltage from isolation amplifier Figure 5.4: Measured differential inductor current after level shifting circuit 66 5.2 Effect of Noise on the Generated Line Voltages As mentioned previously, the level of noise in the measured signals affects the quality of the generated line voltages. Figure 5.3 shows the measured line voltage VAB at the output of the precision isolation amplifier. The measured difference in inductor currents after the level shifting circuitry is shown in Figure 5.4. Notice that in the current measurement case the level of noise is quite substantial. The noise has a greater effect on the duty-cycles compared to the current references. The duty-cycle for phase A is shown in Figure 5.5 while the current reference is shown in Figure 5.6. The duty-cycle and current reference were measured on a D/A output of the DSP. The current reference has some oscillations but the magnitude of the oscillations is very small. The oscillations in the duty-cycle for phase A are a lot more significant. The second PI controller generates similar oscillations for the duty cycle of phase C. The oscillations generated from the current controllers are larger than those from the voltage controller because the bandwidth of the current controller is higher than that of the voltage controller. The higher bandwidth implies that the current controller reacts more quickly than the voltage controller. As a result, the current controller is more susceptible to noise. The effect of varying the current controller bandwidth can be seen in Figure 5.7. The ripples produced with the slower current controller are smaller than those from the faster controller. This gives evidence that the oscillations produced by a controller increases as its bandwidth increases. 67 0 5 10 15 20 25 tim e (m s) Figure 5.5: Measured duty-cycle for phase A for K = 0.065, 19 fi load 180 0 1 2 3 4 S 6 7 8 tim e (mi) Figure 5.7: Comparison of current controller proportional gains for a 19 Q load 69 Chapter 6 Conclusions A new control strategy for a three-phase UPS is proposed in this work. The inverter is modeled by a small-signal time averaged plant. Bode plots are used to analyze the stability of the controller. Simulation and experimental results verify the operation of the controller with a balanced resistive load. The controller performs quite well even in the presence of substantial measurement noise. A better circuit layout will reduce the noise in the measured signals and, as a result, reduce the ripples generated in the output waveforms. The noise limited the achievable bandwidth of the current controllers. The bandwidth of the current controllers is far from its practical limit. Even with a slow current controller, the line voltages are within 4 Vrms for a per-phase load of 19 Q. The line voltages are also within 10 % of the nominal line voltage. 6.1 Contributions Several contributions have been made in this work. The contributions include: • Proposed a new control strategy that uses two line voltages and corresponding differences in inductor currents for those lines as control variables for a three-phase UPS. The controller can be implemented either as an analog or digital controller. For this work, a digital controller is implemented since digital controllers are typically used in this application. • Analyzed the stability of the proposed controller for a balanced resistive load. The analysis includes the phase lag introduced by using digital control. 70 • Verified the operation of the controller both in simulation and with an experimental inverter. 6.2 Future Work This work is the first step in determining the feasibility of using the proposed controller for a three-wire UPS. There are three significant issues that need to be addressed: 1) The stability under severely unbalanced loads must be investigated. Even though most three-wire UPS systems are balanced, under transient conditions the load may be become unbalanced. The controller must remain stable under these conditions. 2) The transient response of the controller needs to be investigated. The transient response was hot investigated in this work because the controller is far from optimal due to measurement noise. 3) The response of the controller to non-linear loads must also be investigated. Most of the work on three-phase UPS systems is directed towards obtaining undistorted line voltages with non-linear loads. Most likely, control based on a small signal averaged time-averaged model is too slow. The control strategy can still be used but the plant will likely need to be modeled in another way. This can lead to techniques such as inductor current prediction for large signal models. 71 B i b l i o g r a p h y [1] C D . Manning, "Control of UPS Inverters" in LEE Colloquium on Uninterruptible Power supplies, pp. 3/1 - 3/5, 1994 [2] A. Sugimoto, S Morimoto, M Yano, "A High Performance Control Method of a Voltage Type P W M Converter" in LEEE PESC Conf. Rec, pp 360-368, 1988 [3] A. Tripathi, S. B. Dewan, "Modeling and Design of a Novel Voltage Control System for Three Phase Fixed Frequency Static Power Supplies" in LEEE Conf. Rec. of the Thirtieth IAS Annual Meeting, IAS'95, vol. 3, pp. 2641-2648, 1995 [4] Analog Devices Inc., "Implementing Space Vector Modulation with the ADMC401" in Application Note AN401-17, 1999 [5] Jun-Seok Cho, Seung-Yo Lee, Hyung-Soo Mok, Gyu-Ha Choe, "Analysis and Design of Modified Deadbeat Controller for 3-Phase Uninterruptible Power Supply" in LEEE 1999 International Conference on Power Electronics and Drive Systems, PEDS'99, pp. 1003-1009, 1999 [6] Feng-Yih Hsu, Li-Chen Fu, "Adaptive Fuzzy Control for Uninterruptible Power Supply with Three-Phase P W M Inverter" in Proceedings of the 1996 Asian Fuzzy Systems Symposium, Soft Computing in Intelligent Systems and Information Processing, pp 199-193, 1996 [7] L . K. Wong, Frank H. F. Leung, Peter K. S. Tarn, "Control of P W M Inverter using a Discrete-time Sliding Mode Controller" in LEEE 1999 International Conference on Power Electronics and Drive Systems, PEDS'99, pp. 947-950, 1999 72 [8] Youichi Ito, Shoichi Kawauchi, "Microprocessor-Based Robust Digital Control for UPS with Three-Phase PWM Inverter" in IEEE Transactions on Power Electronics, vol.10, No. 2, pp. 196- 204, 1995 [9] H. Jin, Switched Mode Power Supply Design, Course Notes for ELEC 558, University of British Columbia, 1998 [10] K. Ogata, Discrete-Time Control Systems, 2nd Edition, Prentice Hall, 1995 [11] Lloyd Dixon, " Average Current Mode Control of Switching Power Supplies" in Applications Handbook, pp. 3-356 - 3-369, Unitrode Corporation, 1997 [12] N. Mohan, T. M. Undeland, W. P. Robbins, Power Electronics - Converters, Applications and Design, Wiley, 1995 [13] Powerex Inc., "Using Intelligent Power Modules" in Application Note 6, pp. A-81 - A - l l l , 1998 [14] Analog Devices Inc., "Implementing PI Controllers with the ADMC401" in Application Note AN401-13, 2000 [ 15] Analog Devices Inc., ADSP-2100 Family User'sManual, 3rd Edition, 1995 [16] Analog Devices Inc., "Generation of Three-Phase Sine-Wave PWM Patterns on the ADMC401" in Application Note AN401-3, 1999 [17] Analog Devices Inc., " Double Update Mode of PWM Generation Unit of the ADMC401" in Application Note AN401 -2, 1999 [18] Analog Devices Inc., "Basic Trigonometric Subroutines for the ADMC401" in Application Note AN401 -10, 1999 73 [19] Analog Devices Inc., "ADC-system on the ADMC401" in Application Note AN401-5, 1999 [20] Analog Devices Inc., "Three-Phase PWM Generation Unit of the ADMC401" Application Note AN401 -1, 1999 74 Appendix A Gate Driver Interface PCB Layout Scale: 1.74:1 75 Appendix B DSP Code Listing B . l M o d p i . h ^*************************************************************************************** * Library: Implements a modified PI controller in double precision * * Fi l e : pimod.h * * Description: pimod include f i l e * Purpose : Declare library routines and macros for Modified PI controller * * Author : KW * Version : 1.0 * * Date : July 2000 ' .* * Modification History: November 2000 * * * * ECE * * UBC ' * ***************************************************************************************) * * *. Constants that need to be defined in main.h: * * * * None ***************************************************************************************} *************************************************************************************** * Other Libraries Required by this Module: * * * * None * ***************************************************************************************} #ifndef PIMOD_INCLUDED #define PIMOD_INCLUDED [*************************************************************************************** * Routines Defined in this Module ' * ***************************************************************************************} .EXTERNAL PIM0D32_Control_; {*************************************************************************************** * Global Variables Defined in this Module * ***************************************************************************************} { None } 76 {*************************************************************************************** * Type: Macro * * Call: Init_PIMOD32(Delay_line, Initial_value, Initial_value); * Sets the i n i t i a l value of the integrator (resets PI i f Initial_value i s zero) + * Inputs : %0 : Delay line buffer * * %1, %2 : I n i t i a l values of integrator in 1.15 (dreg [not ar] or constant) * * • * * Outputs : None * * • * * Modified: ar, 13, M3, L3 * ***************************************************************************************) .MACRO Init_PIMOD32(%0, %1, %2) ; 13 = *%0; L3 = %%0; M3 = 1; ar = pass 0; DM(I3,M3) = ar; DM(I3,M3) =. ar; DM(I3,M3) = ar; DM(I3,M3) = ar; ar = %1; DM(I3,M3) = ar; ar = %2; DM(I3,M3) = ar; .ENDMACRO; * Type: Macro * * * Call: PIMOD32(Delay_line, Coefficients); * * * * Calculates the current output of the modified PI from the input error * * The integrator consists of 32 bits * * * Inputs : %0: Delay line buffer * %1: Coefficient buffer * ar: Input error value in 1.15 format * * Ouputs : s r l : Output value in 1.15 format * Modified: mxO, mxl, myO, mr, axO, ayO, ar, se, sr, 13, M3, L3, 17, M7, L7, 12, L2, M2 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * .MACRO PIMOD32(%0, %1); 13 = A%0; L3 = %%0; M3 = 1; 77 17 = A%1; L7 = %%1; M7 = 1; 12 = A%0; L2 = %%0; M2 = 2; CALL PIMOD32_Control_; .ENDMACRO; #endif B .2 Modpi.dsp . MODULE/RAM/S EG=US ER_PM1 PImod_controller; ^***************************************************************************** ********** * * * Library: Implements a modified PI controller in double precision * * * * F i l e : pimod.dsp * * Description: pimod Code File * * Purpose : Library Routines for Modified PI controller * * Author : KW * * Version . : 1.0 * * Date : July 2000 * * Modification History: November 2000 * * Added 32 b i t coeff for Ik, Ik+1, and Ik+2 * * ECE * * UBC * ***************************************************************************************) #include <main.h>; j + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Calculate Configuration Register Contents from Parameters ***************} { None } ,*************************************************************************************** i * * Constants Defined in the Module *********************************************************** { None } ,*************************************************************************************** i * * Routines Defined in this Module * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ) 78 .ENTRY PIMOD32_Control_; j * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Global Variables Defined in this Module * *************************************** ************* ***********************************} { None } j * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Local Variables Defined in this Module ' . • ' * ***************************************************************************************} { None } r * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Type: Routine * * Call: c a l l PIMOD32_Control_; * * Implements a double precision Modified PI controller * * * * * * * * * * * * * Inputs 13, 12.: pointers to Delay line buffer M3: M2: Outputs L3, L2 : length of Delay line buffer 17: pointer to Coefficient buffer M7: 1 L7: length of Coefficient buffer ar: Input.error value in 1.15 format s r l : Output value in 1.15 format * Modified: mxO, mxl, myO, myl, mr, axO, ayO„ ar, se, sr, 13, 17, 12 * • * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * PIM0D32_Coritrol_: mxO = DM(I2,M2); {Dummy Read) s r l = ar; * * * • * * * * * * * * * * * * * * * '* * • mxO = DM(I3,M3), myO = PM(I7,M7) f mr = mxO * myO (SU) , mxO = DM(I3,M3), myO = PM(I7,M7) r mr = mr + mxO * myO (SU) , myO = PM(I7,M7) r mr = mr + s r l * myO (SU), mxO = DM(I3,M3), myO = PM(I7,M7) 9 mr = mr + mxO * myO (US),. mxO = DM(I3,M3), myl = PM(I7,M7) r mr = mr + mxO * myl (US) , mxl- = DM(I3,M3); mrO = mrl; mrl = mr2; DM(I2,M2) = mxO; mr *= mr + mxl * myO (SS), mr = mr + mxO * myl (SS) , mxO = DM(I3,M3), myO = PM(I7,M7); mxl = DM(I3,M3), myl = PM(I7,M7); 79 DM(I2,M2) = mxO; mr = mr + mxl * myO (SS),. mxO = DM(I3,M3), myO = PM(I7,M7); mr = mr + mxO * myl (SS); mr = mr + s r l * myO (SS) ; i f MV SAT mr; DM(I2,M3) = mxO; DM(I2,M2) = s r l ; SE = EXP mrl (HI) ; axO = SE; ayO = OxOOOl; ar= axO + ayO; i f GT JUMP PIMODSAT; sr = ASHIFT mrl by 1 (HI); sr = sr OR LSHIFT mrO by 1 (LO) ; DM(I2,M2) = srO; DM(I2,M3) = s r l ; rts; PIMODSAT: astat=0x40; i f MV SAT mr; DM(I2,M2) = mrO; DM(I2,M3) = mrl; srl=mrl; rts; •ENDMOD; B.3 Main.dsp .MODULE/RAM/SEG=USER_PMl/ABS=0x60 Main_Test; j * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Application: Coupled dual loop PI controller for three phase inverter * * * * F i l e : Main.dsp * * * * Description: main program f i l e * * Purpose : * * * •Author : KCW * * Version : 1.0 * * Date : October 2000 * * Modification History: November 2000 * * * * EECE UBC * ********************************************** 80 * Include General System Parameters and Libraries . * *************************************************************************************** j #include <main.h>; #include <pwm401.h>; #include <adc401.h>; #include <trigono.h>; #include <dac401.h>; #include .<pi.h>; #include <pimod.h>; ^*** *********************************************************************************** * * Constants Defined in the Module * ***************************************************************************************} .CONST Incr_LSW .CONST Incr_MSW .CONST PiOverSix •CONST PiOverTwo = 0x3A07 ; = 0x006D ; = 0x1555; = 0x4000; { Angle increment } { 32 bit value } { Hex equivalent of pi/,6 } > ( Hex equivalent of pi/2 } {*************************************************************************************** * Global Routines Defined in this Module ( .Entry ) * ***************************************************************************************} { None } [*************************************************************************************** * Global Variables Defined in this Module ( .Global ) . * **************************** * * *********************************************************} { None } {*************************************************************************************** * Local Variables Defined in this Module * ***************************************************************************************\ .VAR/DM/RAM/SEG=USER_DM1 scale; . INIT scale : 0x60CA; { Desired voltage amplitude (0-1) } . VAR/DM/RAM/SEG=USER_DM1 VrefA; . VAR/DM/RAM/S EG=US ER_DM1 VrefB; . VAR/DM/RAM/SEG=USER_DM1 VrefC; .INIT VrefA : 0x0000; .INIT VrefB : 0x0000; . INIT VrefC : 0x0000; { Voltage demands . VAR/DM/RAM/S EG=US ER_DM1 Theta_LSW; .INIT Theta_LSW : 0x0000; •VAR/DM/RAM/SEG=USER_DM1 Theta_MSW; .INIT Theta MSW : 0x0000; .VAR/DM/RAM/SEG=USER DM1 Vab; 81 . VAR/DM/RAM/S EG=US ER_DM1 Vcb; .VAR/DM/RAM/SEG=USER_DM1 lab; •VAR/DM/RAM/SEG=USER_DM1 Icb; •INIT Vab : 0x0000; •INIT Vcb : 0x0000; .INIT lab : 0x0000; . INIT Icb : 0x0000; .VAR/DM/RAM/SEG=USER_DM1 VrefAB; •VAR/DM/RAM/SEG=USER_DM1 VrefCB; •VAR/DM/RAM/SEG=USER_DM1 IrefAB; •VAR/DM/RAM/SEG=USER_DM1 IrefCB; .INIT VrefAB : 0x0000; .INIT VrefCB : 0x0000; .INIT IrefAB : 0x0000; .INIT IrefCB : 0x0000; ,VAR/RAM/PM/CIRC/SEG=USER_PM1 PI_VCoef32[8]; •INIT PI_VCoef32: 0x715000, 0xDC5B00, 0x6B0B00, 0xC29D00, 0x7D6300, OxFDFOOO, OxOOOEOO, 0x021E00 ; {cL, dL, eL, a, b, cH, dH, eH } .VAR/RAM/DM/CIRC/SEG=USER_DM1 PI_VAB_Delay32[6] ; { Uk_L, Uk+1_L, Uk_M, Uk+1_M, Ik, Ik+1} •INIT PI_VAB_Delay32: 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000; • VAR/RAM/DM/CIRC/SEG=USER_DM1 PI_VCB_Delay32[6] ; { Uk_L, Uk+1_L, Uk_M, Uk+1_M, Ik, Ik+1) •INIT PI_VCB_Delay32: 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000; #define PI_ISF32 2 { n } .VAR/RAM/PM/CIRC/SEG=USER_PM1 PI_ICoef32[2]; .INIT PI_ICoef32: 0xADF500, 0x545B00; { AO, Al } .VAR/RAM/DM/CIRC/SEG=USER_DM1 PI_IAB_Delay32[3] ; { Ik, Uk_M, Uk_L} .INIT PI_IAB_Delay32: 0x0000, 0x0000, 0x0000; .VAR/RAM/DM/CIRC/SEG=USER_DM1 PI_ICB_Delay32[3] ; { Ik, Uk_M, . Uk_L) .INIT PI_ICB_Delay32: 0x0000, 0x0000, 0x0000; I**************************************************************************************) { Start of program code ( i**************************************************************************************\ Startup: PWM_Init(PWMSYNC_ISR, PWMTRIP_ISR); Set_Bit_DM(MODECTRL, 6); {Set into Double Update Mode} Set_InterruptVector(ADC_INT_ADDR, ADC_INT); { Vector for ADC_INT int } IFC = 0x80; { Clear any pending IRQ2 inter.} ayO = 0x200; { unmask irq2 interrupts. } ar = IMASK; ar = ar or ayO; IMASK = ar; { IRQ2 ints f u l l y enabled here } ADC_Init; { Calibrates the ADC block. This calibration requires { values from the ADC and so the PWMSYNC must be } 82 { running when i t is called. Here a l l the offset are } { stored. { Thus, ADC_init is..placed after IRQ2 is enabled } INIT_PIMOD32(PI_VAB_Delay32, 0x0000, 0x0000); { reset mod PI } INIT_PIMOD32(PI_VCB_Delay32, 0x0000, 0x0000); { reset mod PI ) INIT_PI32(PI_IAB_Delay32, 0x0000); { reset PI ) INIT_PI32(PI_ICB_Delay32, 0x0000); { reset PI ) DAC_Init; MAIN: { Wait for interrupt to occur } NOP; NOP; JUMP MAIN; RTS; [**************************************************************************************} { PWM Interrupt Service Routine } ^ *********************************************** ***************************************} PWMSYNC_ISR: nop; r t i ; {**************************************************************************************} { ADC End-of-conversion Service Routine } (**************************************************************************************) ADC_INT: Set_DAG_registers_for_trigonometric; DAC_Pause; { Required only when II, Ml or LI is used ) { Read in measured line voltages and inductor currents ) ADC_Read(ADC0, Offset_0to3); { Use ADC converter on ADCM401 ) ar = -ar; dm(Vab) = ar; ADC_Read(ADC4, Offset_4to7) ; ar = -ar; dm(Vcb) = ar; ADC_Read(ADC1, Offset_0to3); dm(Iab) = ar; ADC_Read(ADC5, Offset_4to7); dm(Icb) = ar; { Calculate current line voltage references ) axO = dm(thetaLSW); , 83 ayO = Incr_LSW; ar = axO + ayO; dm(theta_LSW) = ar; axO = dm(theta_MSW); ayO = Incr_MSW; ar = axO + ayO + C; dm(theta_MSW) = ar; axO = ar; ayO = PiOverSix; ar = axO + ayO; Sin(ar); myO = dm(scale); mr = ar*myO (SS); dm (VrefAB) = mrl; axO = dm(theta_MSW); ayO = PiOverTwo; ar= axO + ayO; Sin(ar); myO =dm(scale); mr = ar*myO (SS); dm(VrefCB) = mrl; axO = dm(VrefAB); ayO = dm(Vab); ena AR_SAT; ar = axO - ayO; dis AR_SAT; dm(Verror) = ar; Pimod32(PI_VAB_Delay32, PI_VCoef32) ; dm(IrefAB) = s r l ; axO = dm(VrefCB); ayO = dm(Vcb); ena AR_SAT; ar = axO - ayO; dis AR_SAT; Pimod32(PI_VCB_Delay32, PI_VCoef32) ; dm(IrefCB) = s r l ; { Do inner current loop calculations axO = DM(IrefAB); ayO = DM(lab); ena AR_SAT; ar = axO - ayO; dis AR_SAT; Pi32(PI_IAB_Delay32, PI_ICoef32, PI_ISF32) dm(VrefA) = s r l ; axO = DM(IrefCB); ayO = DM(Icb); 84 ena AR_SAT; ar = axO - ayO; dis ARJ3AT; Pi32(PI_ICB_Delay32, PI_ICoef32, PI_ISF32); dm(VrefC) = s r l ; axO = dm{Vref A); ar = -axO; axO = ar; ayO = dm(VrefC) ; ena AR_SAT; ar = axO - ayO; dis AR_SAT; dm(VrefB) = ar; { Update PWM duty cycle registers ) axO = DM(VrefA); axl = DM(VrefB); ayO = DM(VrefC); PWM_update_demanded_Voltage(axO,axl, ayO) ; ******************************} { PLOT on the DAC |**************** **************************} myO = dm(Irefab); DAC_Update; DAC_Put(4, myO); RTI; * * * * * * * * * A * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * } { PWM Trip Interrupt Service Routine * * * * * * * * * * * * PWMTRIP_ISR: nop; r t i ; .ENDMOD; 85
- Library Home /
- Search Collections /
- Open Collections /
- Browse Collections /
- UBC Theses and Dissertations /
- DSP control of a three phase UPS inverter
Open Collections
UBC Theses and Dissertations
Featured Collection
UBC Theses and Dissertations
DSP control of a three phase UPS inverter Wicks, Kenneth 2001
pdf
Page Metadata
Item Metadata
Title | DSP control of a three phase UPS inverter |
Creator |
Wicks, Kenneth |
Date Issued | 2001 |
Description | The demand for three-phase uninterruptible power supplies has increased with the decrease in reliability of power supplied by power utilities. A single three-phase uninterruptible power supply (UPS) can typically supply many loads at a time. A UPS must be able to supply relatively undistorted output line voltages with highly non-linear loads. Many papers have been devoted to introducing new control schemes that can supply these loads effectively. A new control scheme is introduced, in this work, which is implemented with a digital signal processor (DSP). The controller acts in a stationary reference frame as opposed to the commonly used rotating reference frame. Although using a stationary reference frame can create phase errors, the control algorithm is computationally more efficient than using a rotating reference frame. The proposed technique uses two line voltages and the corresponding differential output filter inductor currents for those lines as the control variables. As a result, this technique utilizes fewer sensors compared to techniques using a rotating reference frame. In this work, the plant model is developed and the stability of the controller is analyzed. The controller design is facilitated with the use of a Mathcad workspace, Steady-state simulations and experimental results are presented for a balanced resistive load. Even with relatively slow inner current loops, the performance of the controller is acceptable. Slow current controllers are used because of large noise in the current measurements of the experimental inverter. This work provides the basis to further investigate the feasibility of using the proposed controller to supply non-linear loads. |
Extent | 3873347 bytes |
Genre |
Thesis/Dissertation |
Type |
Text |
FileFormat | application/pdf |
Language | eng |
Date Available | 2009-07-29 |
Provider | Vancouver : University of British Columbia Library |
Rights | For non-commercial purposes only, such as research, private study and education. Additional conditions apply, see Terms of Use https://open.library.ubc.ca/terms_of_use. |
DOI | 10.14288/1.0064879 |
URI | http://hdl.handle.net/2429/11496 |
Degree |
Master of Applied Science - MASc |
Program |
Electrical and Computer Engineering |
Affiliation |
Applied Science, Faculty of Electrical and Computer Engineering, Department of |
Degree Grantor | University of British Columbia |
GraduationDate | 2001-05 |
Campus |
UBCV |
Scholarly Level | Graduate |
AggregatedSourceRepository | DSpace |
Download
- Media
- 831-ubc_2001-0136.pdf [ 3.69MB ]
- Metadata
- JSON: 831-1.0064879.json
- JSON-LD: 831-1.0064879-ld.json
- RDF/XML (Pretty): 831-1.0064879-rdf.xml
- RDF/JSON: 831-1.0064879-rdf.json
- Turtle: 831-1.0064879-turtle.txt
- N-Triples: 831-1.0064879-rdf-ntriples.txt
- Original Record: 831-1.0064879-source.json
- Full Text
- 831-1.0064879-fulltext.txt
- Citation
- 831-1.0064879.ris
Full Text
Cite
Citation Scheme:
Usage Statistics
Share
Embed
Customize your widget with the following options, then copy and paste the code below into the HTML
of your page to embed this item in your website.
<div id="ubcOpenCollectionsWidgetDisplay">
<script id="ubcOpenCollectionsWidget"
src="{[{embed.src}]}"
data-item="{[{embed.item}]}"
data-collection="{[{embed.collection}]}"
data-metadata="{[{embed.showMetadata}]}"
data-width="{[{embed.width}]}"
async >
</script>
</div>
Our image viewer uses the IIIF 2.0 standard.
To load this item in other compatible viewers, use this url:
https://iiif.library.ubc.ca/presentation/dsp.831.1-0064879/manifest