AN967 Bidirectional VF Control of Single and 3-Phase Induction Motors Using the PIC16F72 Author: Padmaraja Yedamale Microchip Technology Inc. INTRODUCTION Single-phase induction motors are extensively used in appliances and industrial controls. The Permanent Split Capacitor (PSC) single-phase induction motor is the simplest and most widely used motor of this type. The classification, construction and working principle of single-phase induction motors are explained in detail in the application note “AC Induction Motor Fundamentals” (AN887) available from Microchip. For VF theory and basic operations, refer to AN887 mentioned above, and “Speed Control of 3-Phase Induction Motor Using PIC18 Microcontrollers” (AN843). By design, PSC motors are unidirectional, which means they are designed to rotate in one direction. By adding either extra windings, and external relays and switches, or by using gear mechanisms, the direction of rotation can be changed. In this application note we will discuss in detail, how to control the speed of a PSC motor in both directions using a PIC16F72 microcontroller and power electronics. The PIC16F72 microcontroller was chosen because it is one of the simplest and low-cost general purpose microcontrollers Microchip has in its portfolio. Even though it does not have the PWMs in hardware to drive complementary PWM outputs with dead band inserted, all PWMs are generated in firmware using timers and output to general purpose output pins. The motor is energized with a single-phase AC power supply, with a capacitor connected in series with the start winding (also called an auxiliary winding) as shown in Figure 1. The value of the capacitor is chosen so that the total impedance on the auxiliary winding produces sufficient phase shift in current to generate a rotating magnetic field in the air gap. Typically, the current flowing through the start winding leads the current flowing through the main winding by 90 degrees. By adding a microcontroller-based control circuit to the motor, the voltage across the main winding and start winding can be maintained at 90 degrees to each other. The other advantage is that the starting capacitor can be removed from the circuit, thus reducing the total system cost. FIGURE 1: ELECTRICAL EQUIVELANT CIRCUIT OF A PSC MOTOR VMAIN L AC Main Winding Squirrel Cage Rotor N Starting Winding VSTART A multiphase inverter can be used to drive the motor. Two methods are discussed in the next section. THEORY OF OPERATION A PSC motor is usually a 2-phase asymmetrically wound motor. The main winding is designed to take the load current. The current flowing through the start winding is much less than the main winding. Therefore, the start winding will have a different electrical characteristic compared to the main winding. In order to produce the Magnetomotive Force (MMF) produced by the start winding very near to the main winding, the start winding has additional turns, higher resistance, and reduced current flowing through it. This makes the motor windings asymmetrical. © 2005 Microchip Technology Inc. DS00967A-page 1 AN967 DRIVE TOPOLOGY The control circuit requires four PWMs with two complementary pairs with sufficient dead band between the complementary outputs. PWM0-PWM1 and PWM2-PWM3 are the PWM pairs with dead band. The PIC16F72 does not have PWMs designed in the hardware to output the way we need. Therefore, the PWMs should be generated in firmware and output to the port pins. Using PWMs, the DC bus is synthesized to give two sine voltages at 90 degrees out of phase with varying amplitude and varying frequency according to the VF profile. If the voltage applied to the main winding lags the start winding by 90 degrees, the motor runs in one (i.e., forward) direction. To reverse the direction of rotation, the voltage supplied to the main winding should lead the voltage supplied to the start winding. Using an H-Bridge Inverter The first approach is relatively easy as far as the power circuit and control circuit are concerned. On the input side, a voltage doubler is used and on the output side an H-bridge, or 2-phase inverter, is used as shown in Figure 2. One end of the main and start windings are connected to each half bridge and the other ends are connected together to the neutral point of the AC power supply, which also serves as the center point for the voltage doubler. Figure 3 and Figure 4 show the main and start winding voltages in forward and reverse respectively. FIGURE 2: PSC DRIVE WITH AN H-BRIDGE PWM1 L PWM3 PWM3 Vm N PWM2 Gate Driver AC PIC16F72 PWM1 VMAIN VSTART Vm + - π /2 Start Winding PWM0 PWM0 DS00967A-page 2 Main Winding PWM2 © 2005 Microchip Technology Inc. AN967 FIGURE 3: MOTOR RUNNING IN FORWARD DIRECTION 150.00 VMAIN = Sin(ωt) % Phase Voltage 100.00 50.00 VMAIN 0.00 0 50 100 150 200 250 300 350 400 VSTART -50.00 -100.00 VSTART = Sin(ωt+π/2) -150.00 Phase Angle FIGURE 4: MOTOR RUNNING IN REVERSE DIRECTION 150.00 VMAIN = Sin(ωt) % Phase Voltage 100.00 50.00 VMAIN 0.00 0 50 100 150 200 250 300 350 400 VSTART -50.00 -100.00 VSTART = Sin(ωt-π/2) -150.00 Phase Angle © 2005 Microchip Technology Inc. DS00967A-page 3 AN967 This method of controlling a PSC type motor has a few disadvantages. • Because the main winding and start windings have different electric characteristics, the current flowing through each switch is unbalanced. Over time, this may lead to premature breakdown of switching devices in the inverter. • The common point of the windings is directly connected to the neutral power supply. This may increase the switching signal coming into the mains power supply and increase the noise emitted onto the line. This also may limit the EMI level of the product, violating certain design goals and regulations. • The effective DC voltage handled is high due to the input voltage doubler circuit. • Lastly, the cost of the voltage doubler circuit itself is high because of two large power capacitors. With this drive topology, control becomes more efficient; however, the control algorithm becomes more complex. The voltages Va, Vb and Vc should be controlled to achieve the phase difference between the effective voltages across the main and start windings to have a 90 degree phase shift to each other. The turn ratio of the start winding to the main winding is defined by: EQUATION 1: V MAIN α = --------------------V START where α is the turn ratio, and VMAIN and VSTART are the effective voltage across the main winding and the start winding. A better solution to minimize these problems would be to use a 3-phase inverter bridge, as discussed in the next section. In order to have equal voltage stress on all devices, thus improving the device utilization and provide the maximum possible output voltage for a given DC bus voltage, all three inverter phase voltages are kept at the same amplitude as follows: Using a 3-Phase Inverter Bridge EQUATION 2: The input section is replaced with a standard diode bridge rectifier. The output section has a 3-phase inverter bridge. The main difference from the previous scheme is the way the motor windings are connected to the inverter. One end of the main winding and start windings are connected to one half bridge each. The other ends are tied together and connected to the third half bridge, as shown in Figure 5. Refer to Appendix B: “Schematics” for the schematics that reference the PIC16F72 with a 3-phase inverter bridge. FIGURE 5: | Va | = | Vb | = | Vc | = | V1 | The effective voltage across the main and start winding is given as: EQUATION 3: VMAIN = Va – Vc VSTART = Vb – Vc The voltages are shown in the phasor diagram in Figure 6. CONTROLLING A PSC MOTOR WITH A 3-PHASE INVERTER BRIDGE PWM1 PWM3 PWM5 PWM5 PWM3 PWM4 PWM2 Gate Driver AC PIC16F72 PWM1 Main Winding Va Vb Vc Start Winding PWM0 PWM0 DS00967A-page 4 PWM2 PWM4 © 2005 Microchip Technology Inc. AN967 FIGURE 6: VOLTAGE PHASOR DIAGRAM Because the turn ratio remains constant for a given motor, α can be a compile time option. With this, θ and V1 can be precomputed for a given motor. This simplifies the run time calculation. Based on the phase angle, phase voltages Va, Vb and Vc can be calculated as: ~ Vc ~ ~ ~ VSTART = Vb – Vc V1 αV ζ EQUATION 6: V V dc V a = V1 × cos ( ωt ) + --------2 θ V1 ~ Vb ~ ~ ~ VMAIN = Va – Vc V1 V dc V b = – V1 × cos ( ωt ) + --------2 ~ Va V dc V c = V1 × cos ( ωt ± θ ) + --------2 As seen in the phasor diagram in Figure 6, the voltages across phase A and phase B are out of phase, and the phase difference between phase A and phase C is θ degrees. By applying basic trigonometry, θ can be calculated by: Vdc is the DC bus voltage, and ωt is the angular velocity of the electrical cycle. The direction of rotation can be easily controlled by adding or subtracting θ in the Vc calculation. EQUATION 4: Angle θ = 180° – 2 tan-1 (α). Figure 7 shows the phase voltages Va, Vb and Vc, and Figure 8 shows the effective voltages across the main winding (VMAIN) and the start winding (VSTART). By applying the Pythagorean Theorem, the voltage vector V1 can be calculated as: Figure 8 also shows that the effective phase difference between the voltages is 90 degrees and the effective voltage ratio is α. EQUATION 5: ( 1 + α2 ) V1 = V × -----------------------2 FIGURE 7: PHASE VOLTAGES Va, Vb and Vd 100 80 60 % Phase voltage 40 20 Va Vb 0 0 50 100 150 200 250 300 350 400 Vc -20 -40 -60 -80 -100 Phase angle © 2005 Microchip Technology Inc. DS00967A-page 5 AN967 FIGURE 8: VOLTAGE ACROSS MAIN WINDING (VMAIN) AND START WINDING (VSTART) 150 % Phase Voltage 100 50 VMAIN 0 0 50 100 150 200 250 300 350 400 VSTART -50 -100 -150 Phase Angle DS00967A-page 6 © 2005 Microchip Technology Inc. AN967 IMPLEMENTATION USING THE PIC16F72 After five instruction cycles, the complementary PWM is turned ON. This gives a dead time of 1 μs when the microcontroller is running at 20 MHz. When the count reaches 624, all outputs are turned OFF. A new PWM cycle starts after 10 instruction cycles. In order to control a 3-phase inverter bridge, we need three PWM pairs with complementary outputs. In addition, each complementary pair of PWMs needs dead time in between any OFF and ON switch events to avoid a DC bus short circuit. The PIC16F72 does not have these features in the hardware. However, this can be easily implemented using a general purpose timer and six output pins as shown in Figure 9. In the source code provided with this application note (see Appendix A: “Source Code”), instead of comparing the Timer1 values corresponding to the duty cycle values, a relative count is calculated with respect to the previous PWM duty cycle. This count is subtracted from 0xFF (Timer1 is configured as an 8-bit timer) and loaded to the Timer1 register. When the Timer1 value overflows, in Timer1 overflow ISR, the corresponding Odd PWM is turned OFF and the corresponding Even PWM is turned ON after five instruction cycles. This is done for all three pairs of PWM. Refer to the flowcharts in Figure 10 through Figure 11 for more details. Generating Software PWMs The scheme shown here gives a fixed PWM frequency of approximately 7.9 kHz. Timer1 (1:4 prescale) is counted up from 00 to 634. At the beginning of the cycle (when Timer1 = 00), the PWMs controlling the upper switches (i.e., PWM1, PWM3 and PWM5) are turned ON. Based on the individual PWM duty cycle, the corresponding PWM output is turned OFF. FIGURE 9: PWM SOFTWARE IMPLEMENTATION 624 634 Timer 1 counting UP from 00 to 634 00 PWM period = 634 for ~8 kHz PWM frequency @ 20 MHz FOSC PWM 1/3/5 ON PWM 3 OFF PWM 1 OFF PWM 0 ON Dead Time Note: PWM 5 OFF PWM 2 ON Dead Time PWM 1/3/5 ON PWM 4 ON Dead Time PWM 0/2/4 OFF Dead Time The PWMs are numbered with respect to Figure 5. © 2005 Microchip Technology Inc. DS00967A-page 7 AN967 FIGURE 10: MAIN LOOP MAIN_LOOP Start No Is S1 pressed? Yes Initialize PORTB – Fault and toggle switch interface PORTC – PWMs Copy Sine table values to RAM locations Initialize ADC to read Motor current and Potentiometer Initialize Timer0, Timer1, Interrupts and Sine table offsets No Timer0 rollover? Yes Update PWM duty cycles (A) (UPDATE_PWM_DUTYCYCLES) Prioritize PWM duty cycles (B) (PRIORITIZE_PWMS) Calculate new speed Set ADC ‘GO’ bit Is ADC Yes result ready? C AD_CONV_COMPLETE No DS00967A-page 8 © 2005 Microchip Technology Inc. AN967 FIGURE 10: MAIN LOOP (CONTINUED) PRIORITIZE_PWMS UPDATE_PWM_DUTYCYCLES B A Read value pointed by TABLE_OFFSET1 from the Sine table (corresponds to PWM1/0 pair) No PWM1/0 duty cycle = Sine (TABLE_OFFFSET1) x NEW_FREQ Is PWM3< PWM1? Yes Interchange PWM1 and PWM3 duty cycles Read value pointed by TABLE_OFFSET2 from the Sine table (corresponds to PWM3/2 pair) PWM3/2 duty cycle = Sine (TABLE_OFFFSET2) x NEW_FREQ No Read value pointed by TABLE_OFFSET3 from the Sine table (corresponds to PWM5/4 pair) Is PWM5< PWM3? Yes Interchange PWM3 and PWM5 duty cycles PWM5/4 duty cycle = Sine (TABLE_OFFSET3) x NEW_FREQ No Return Is PWM3< PWM1? Yes Interchange PWM1 and PWM3 duty cycles Return AD_CONV_COMPLETE C NEW_FREQ = ADRES MOTOR_CURRENT = ADRES HEATSINK_TEMP = ADRES Set limit on NEW_FREQ 0x30 < NEW_FREQ < 0xD0 No Motor current > MAX_MOTOR_CURRENT? No HS Temp> MAX_HEATSINK_TEMP? Set ADC mux to read motor current (for next cycle) Yes Set OVER_CURRENT flag Set OVER_TEMPERATURE flag Return © 2005 Microchip Technology Inc. DS00967A-page 9 AN967 FIGURE 11: INTERRUPT SERVICE ROUTINES (ISR) ISR_INT CHECK_FAULT Context Save: WREG and STATUS Yes Timer1 ISR? INT OVER_CURRENT_COUNT (OC_COUNT) = OVER_CURRENT_COUNT - 1 T1 TIMER1_OVERFLOW No No Is OC_COUNT = 0? Yes Timer0 ISR? T0 Yes TIMER0_OVERFLOW STOP_MOTOR No x Yes INT ISR? INT CHECK_FAULT TIMER0_OVERFLOW No Restore: WREG and STATUS T0 x Timer0 = Count for NEW_FREQ RETFIE Reset overcurrent filter count x TIMER1_OVERFLOW T1 Lowest PWM Duty Cycle Turn Off Odd Channel w/least PWM Duty Cycle value 5 Cycles Delay (Dead Time = 1 μS) Highest PWM Duty Cycle Medium PWM Duty Cycle New PWM Duty Cycle Turn Off Odd Channel w/medium PWM Duty Cycle value Turn Off Odd Channel w/highest PWM Duty Cycle value Turn Off All 6 Channels 5 Cycles Delay (Dead Time = 1 μS) 5 Cycles Delay (Dead Time = 1 μS) 5 Cycles Delay (Dead Time = 1 μS) Turn ON All Odd PWM Channels (1, 3 and 5) Turn ON Complementary Channel Turn ON Complementary Channel Turn ON Complementary Channel Timer1 = Medium Duty Cycle – Lowest Duty Cycle Timer1 = Highest Duty Cycle – Medium Duty Cycle Timer1 = End of PWM Cycle – Highest Duty Cycle Timer1 = Lowest Duty Cycle x DS00967A-page 10 © 2005 Microchip Technology Inc. AN967 Initialization • PORTC<0:5> are initialized to output PWMs. • Timer1 is initialized with 8-bit operation and 1:4 prescale. • A/D channels are initialized to read frequency reference (AN0), motor current (AN1) and heatsink temperature (AN2). - Frequency reference is read using a potentiometer connected to A/D Channel 0. - Motor current is read using a shunt resistor in the DC return path. The voltage corresponding to the motor current is amplified and connected to A/D channel 1. • Timer0 is used for setting the motor frequency based on the potentiometer setting. On every Timer0 overflow, new PWM duty cycles are advanced by 10 electrical degrees on the Sine table. • The Sine table is loaded into RAM • Timer0 overflow, Timer1 overflow and INT interrupts are enabled. Main Routine These tasks are done in the MAIN_LOOP routine: • New PWM duty cycle is calculated by the subroutine UPDATE_PWM_DUTYCYCLES Three pointers pointing to three different values on the Sine table corresponding to the phase difference between Va, Vb and Vc. The sine table is drawn to maximum duty cycle available when the sine value reaches 90 degrees. Every value is scaled down based on the frequency input to follow a linear VF profile. • PWM duty cycle sorting is handled by the subroutine PRIORITIZE_PWMS PWM duty cycles calculated earlier are sorted in ascending order, so that the duty cycle with minimum ON time can be addressed first and PWM with maximum duty cycle last. Corresponding Flags are set to indicate which PWM duty cycle corresponds to which PWM output. © 2005 Microchip Technology Inc. • Timer0 reload value is calculated by the subroutine TIMER0_OVERFLOW Timer0 is used for setting the motor frequency. The Timer0 reload value is calculated based on three factors: first is the frequency reference input from the potentiometer, second is the number of sine table values, and third is the MCU operating frequency. • Polling for the ADC result is handled by the subroutine AD_CONV_COMPLETE ADC conversion is poled in the main routine. Alternatively, frequency reference (AN0), motor current (AN1) and heatsink temperature (AN2) are selected and converted. Interrupt Service Routines (ISRs) • Timer1 ISR: In the first three Timer1 overflow ISRs, the corresponding Odd PWM output is turned off in each ISR. The complementary output is turned on after a dead time of five cycles (1 μs). In the fourth Timer1 overflow ISR, the PWM cycle is restarted. All PWMs are turned OFF and the timer is loaded with the value corresponding to the lowest duty cycle value. This is repeated for each PWM cycle. • Timer0 ISR: A flag is set to indicate that the Sine output should advance by 10 degrees on the Sine table. The Timer0 registers are reloaded with the value corresponding to the motor frequency reference. • INT ISR: The INT pin is used to interface hardware overcurrent fault. Motor current is compared with a fixed voltage reference using an op amp comparator. Each time the motor current exceeds the reference, in INT ISR a count (0C_COUNT) is decremented. If the count reaches zero in one Timer0 cycle, then the motor is stopped and overcurrent is indicated. This count is reset in every Timer0 ISR. DS00967A-page 11 AN967 Controlling a 3-Phase Induction Motor The DC bus is modulated with these PWMs to give three Sine voltage outputs with 120 degrees phase shift to each other as shown in Figure 12. This can be done by changing the offset pointers on the Sine table. Firmware needs to be recompiled and the part should be reprogrammed. To reverse the motor direction, the PWM loaded to two of the phases should be interchanged. The advantage of the drive topology shown in Figure 5 is the same hardware can be used to control the speed of a 3-phase induction motor. In order to control a 3-phase induction motor with a Variable Frequency (VF) technique, three pairs of complementary PWMs with dead band are required. FIGURE 12: PHASE VOLTAGE FOR 3-PHASE INDUCTION MOTOR CONTROL 150 Sin(ωt) Sin(ωt+120) Sin(ωt+240) % Phase Voltage 100 50 Sin(wt) 0 Sin(wt+120) 0 50 100 150 200 250 300 350 400 Sin(wt+240) -50 -100 -150 Phase Angle PIC16F72 LIMITATIONS CONTROL USING A PIC18F2431/4431 Using the PIC16F72 for control has the following limitations: The PIC18FXX31 MCUs have a state-of-the-art Power Control PWM (PCPWM) module on-chip. This module can provide three pairs of complementary PWMs with programmable dead band. Programming is greatly simplified using PIC18FXX31 devices, because it reduces the task of generating the software PWMs, which takes most of the processor resource on a PIC16F72. The source code included with this application note (see Appendix A: “Source Code”) also includes single-phase VF control using the PIC18F2431. • MIPS: Generating a software PWM takes significant processing power. This limits any other application that may be required to run on the same MCU. • PWM Frequency Range: The PWM frequency range is limited and requires firmware changes. The safe PWM frequency range is from 6 kHz to 10 kHz with an operating frequency of 20 MHz. The PWM cycle may have an error up to ±5%. The resolution is also limited between 6 to 8 bits. In addition to this, generating PWM outputs in firmware uses the on-chip Timer, program and data memory. DS00967A-page 12 To learn more about using PIC18FXX31 microcontrollers for different types of motor controls, refer to application notes AN899, Brushless DC Motor Control Using PIC18FXX31 Microcontrollers (DS00899) and AN900, Controlling 3-Phase AC Induction Motors Using the PIC18F4431 (DS00900) available from Microchip. © 2005 Microchip Technology Inc. AN967 CONCLUSION APPENDIX A: Microcontroller-based control for a PSC motor makes the system easy to implement and have control over the motor in two directions. Implementing the algorithm using a 3-phase inverter bridge gives flexibility and efficiency of control. In addition, a 3phase induction motor can be controlled using the same hardware by making minor modifications to the firmware. The PIC16F72 is a popular low cost general purpose microcontroller from Microchip, that can be used to implement the control algorithm. To a great extent, PIC18FXX31 devices can provide flexibility in implementing motor control algorithms. The complete source code is available for download as a single archive file from the Microchip corporate web site at: © 2005 Microchip Technology Inc. SOURCE CODE www.microchip.com DS00967A-page 13 DC- R6 C11 + R9 15K 0.0 R10 2 3 1 2 3 4 100 R11 IR2153-DIP8 8 7 6 5 1EMU06 D2 VB HO VS LO 1N4148 VCC RT CT COM 220 pF C3 22 pF 10K D1 U3 FREF CCW CW 2 +5V R1 0.1 μF C2 1 S1 4 +5V C12 R5 2K 470K, 0.5W 4.7 μF, 25V 0.1 μF C10 Power Supply DC+ PIC Interface ® 3 1 DS00967A-page 14 Y1 22 R7 20 MHz 2K R3 1 IRFR420A C6 0.1 μF C4 22 pF FREF MOTOR TEMP C1 0.1 μF RA3 RA4 RA5 RA0 RA1 RA2 RC0 RC1 RC2 RC3 RC4 RC5 RC6 RC7 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 L1 11 12 13 14 15 16 17 18 21 22 23 24 25 26 27 28 TL431-T092 D4 2 3 1 R12 2K7 + C7 1 R4 4 3 IN 3 S2 + C8 1 2 C9 0.1 μF +5V 10K R2 +5V 10 μF, 25V OUT U2 LM340T -5.0V 0.1 μF C5 10K SW1 100 μF, 25V +15V PWM0 PWM1 PWM2 PWM3 PWM4 PWM5 FAULTA SW1 560 μH, 0.5A R8 11K PIC16F72 D3 1EMU06 Q1 8 VSS 19 VSS 10 OSC2 9 OSC1 2 3 4 5 6 7 1 MCLR 20 VDD 2 FIGURE B-1: 3 APPENDIX B: 2 COM +5V AN967 SCHEMATICS PIC® INTERFACE AND POWER SUPPLY (SHEET 1 OF 2) © 2005 Microchip Technology Inc. © 2005 Microchip Technology Inc. 4 3 2 1 Motor Connector J2 EARTH M3 M2 M1 R22 AUX TEMP PSC MOTOR MAIN 300 R20 0.05R/3W DC- C18 33 pF 4.7 nF C19 1K R16 1 C21 RV1 EARTH J1 91K 2 + 1 U5:A C14 0.1 μF 3 R24 NTC F1 1K R15 AC INPUT MCP6002 0.01 μF 270 VAC R18 10K R19 3 2- +5V 8 4 4 AC2 1 AC1 D5 DC- 3 + - C17 33 pF IMOTOR 2 R13 2K4 R21 5K 5 + 6 - + C20 470 μF 250V DC+ +5V R17 MCP5002 1M U5:B 7 R14 300 FAULTA FIGURE B-2: IRAMS10UP60A C13 10 μF 16V VB3 1 M3 VS3 2 NC 3 C15 10 μF 16V VB2 4 VS2 M2 5 NC 10 μF 16V C16 6 VB1 7 VS1 M1 8 NC 9 DC+ V+ 10 NC 11 DC12 DC13 DC14 H1 PWM1 15 H2 PWM3 16 H3 PWM5 17 L1 PWM0 18 L2 PWM2 19 PWM4 L3 20 ITRIP 21 VCC +15V 22 R23 VSS 23 4.3K U4 AN967 POWER SECTIONS AND MOTOR CURRENT MEASUREMENT (SHEET 2 OF 2) DS00967A-page 15 AN967 NOTES: DS00967A-page 16 © 2005 Microchip Technology Inc. Note the following details of the code protection feature on Microchip devices: • Microchip products meet the specification contained in their particular Microchip Data Sheet. • Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the intended manner and under normal conditions. • There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data Sheets. Most likely, the person doing so is engaged in theft of intellectual property. • Microchip is willing to work with the customer who is concerned about the integrity of their code. • Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not mean that we are guaranteeing the product as “unbreakable.” Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act. Information contained in this publication regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip’s products as critical components in life support systems is not authorized except with express written approval by Microchip. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights. Trademarks The Microchip name and logo, the Microchip logo, Accuron, dsPIC, KEELOQ, microID, MPLAB, PIC, PICmicro, PICSTART, PRO MATE, PowerSmart, rfPIC, and SmartShunt are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. AmpLab, FilterLab, Migratable Memory, MXDEV, MXLAB, PICMASTER, SEEVAL, SmartSensor and The Embedded Control Solutions Company are registered trademarks of Microchip Technology Incorporated in the U.S.A. Analog-for-the-Digital Age, Application Maestro, dsPICDEM, dsPICDEM.net, dsPICworks, ECAN, ECONOMONITOR, FanSense, FlexROM, fuzzyLAB, In-Circuit Serial Programming, ICSP, ICEPIC, MPASM, MPLIB, MPLINK, MPSIM, PICkit, PICDEM, PICDEM.net, PICLAB, PICtail, PowerCal, PowerInfo, PowerMate, PowerTool, rfLAB, rfPICDEM, Select Mode, Smart Serial, SmartTel and Total Endurance are trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. SQTP is a service mark of Microchip Technology Incorporated in the U.S.A. All other trademarks mentioned herein are property of their respective companies. © 2005, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved. Printed on recycled paper. Microchip received ISO/TS-16949:2002 quality system certification for its worldwide headquarters, design and wafer fabrication facilities in Chandler and Tempe, Arizona and Mountain View, California in October 2003. The Company’s quality system processes and procedures are for its PICmicro® 8-bit MCUs, KEELOQ® code hopping devices, Serial EEPROMs, microperipherals, nonvolatile memory and analog products. In addition, Microchip’s quality system for the design and manufacture of development systems is ISO 9001:2000 certified. © 2005 Microchip Technology Inc. DS00967A-page 17 Worldwide Sales and Service AMERICAS ASIA/PACIFIC ASIA/PACIFIC EUROPE Corporate Office 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7200 Fax: 480-792-7277 Technical Support: http://support.microchip.com Web Address: www.microchip.com Australia - Sydney Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 India - Bangalore Tel: 91-80-2229-0061 Fax: 91-80-2229-0062 China - Beijing Tel: 86-10-8528-2100 Fax: 86-10-8528-2104 India - New Delhi Tel: 91-11-5160-8631 Fax: 91-11-5160-8632 Austria - Weis Tel: 43-7242-2244-399 Fax: 43-7242-2244-393 Denmark - Ballerup Tel: 45-4450-2828 Fax: 45-4485-2829 China - Chengdu Tel: 86-28-8676-6200 Fax: 86-28-8676-6599 Japan - Kanagawa Tel: 81-45-471- 6166 Fax: 81-45-471-6122 France - Massy Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 China - Fuzhou Tel: 86-591-8750-3506 Fax: 86-591-8750-3521 Korea - Seoul Tel: 82-2-554-7200 Fax: 82-2-558-5932 or 82-2-558-5934 Germany - Ismaning Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 Atlanta Alpharetta, GA Tel: 770-640-0034 Fax: 770-640-0307 Boston Westford, MA Tel: 978-692-3848 Fax: 978-692-3821 Chicago Itasca, IL Tel: 630-285-0071 Fax: 630-285-0075 Dallas Addison, TX Tel: 972-818-7423 Fax: 972-818-2924 Detroit Farmington Hills, MI Tel: 248-538-2250 Fax: 248-538-2260 Kokomo Kokomo, IN Tel: 765-864-8360 Fax: 765-864-8387 China - Hong Kong SAR Tel: 852-2401-1200 Fax: 852-2401-3431 China - Shanghai Tel: 86-21-5407-5533 Fax: 86-21-5407-5066 China - Shenyang Tel: 86-24-2334-2829 Fax: 86-24-2334-2393 China - Shenzhen Tel: 86-755-8203-2660 Fax: 86-755-8203-1760 China - Shunde Tel: 86-757-2839-5507 Fax: 86-757-2839-5571 Singapore Tel: 65-6334-8870 Fax: 65-6334-8850 Taiwan - Kaohsiung Tel: 886-7-536-4818 Fax: 886-7-536-4803 Taiwan - Taipei Tel: 886-2-2500-6610 Fax: 886-2-2508-0102 Italy - Milan Tel: 39-0331-742611 Fax: 39-0331-466781 Netherlands - Drunen Tel: 31-416-690399 Fax: 31-416-690340 England - Berkshire Tel: 44-118-921-5869 Fax: 44-118-921-5820 Taiwan - Hsinchu Tel: 886-3-572-9526 Fax: 886-3-572-6459 China - Qingdao Tel: 86-532-502-7355 Fax: 86-532-502-7205 Los Angeles Mission Viejo, CA Tel: 949-462-9523 Fax: 949-462-9608 San Jose Mountain View, CA Tel: 650-215-1444 Fax: 650-961-0286 Toronto Mississauga, Ontario, Canada Tel: 905-673-0699 Fax: 905-673-6509 10/20/04 DS00967A-page 18 © 2005 Microchip Technology Inc.