AN893 Low-Cost Bidirectional Brushed DC Motor Control Using PIC16F684 Author: Note: Mike Rylee Microchip Technology Inc. This application note uses a Graphical User Interface (GUI) which may no longer work with new operating systems. This application note remains online for reference purposes only. It is being provided for those interested in brushed DC motor control on 8-bit devices. Users may write their own GUIs or investigate Microchip tools such as the Data Monitor and Control Interface (DMCI) and Real Time Data Monitoring (RTDM). The contents of this application note and related files are available in the current form. For any new designs, please refer to www.microchip.com/motor. INTRODUCTION This application note describes how to use the Enhanced, Capture, Compare, PWM (ECCP) on PIC16F684 for bidirectional, brushed DC (BDC) motor control. Low-cost BDC motor control can be used in applications such as intelligent toys, small appliances and power tools. PIC16F684 takes Microchip’s mid-range family of products to the next level with its new ECCP peripheral. The ECCP peripheral builds on the technology of the CCP module with added features such as four PWM channels for easy bidirectional motor control through the hardware. This application note focuses on full-bridge configuration using the ECCP in PWM mode. The ECCP allows easy interfacing to a full-bridge configuration for bidirectional BDC motor control. This application note describes the following: • • • • • Calculating ECCP PWM Parameters Initializing the ECCP in Full-Bridge PWM mode Bidirectional BDC Motor Control Sensorless Motor Control Feedback Example Application Note: CALCULATING ECCP PWM PARAMETERS The PWM frequency, duty cycle and resolution need to be calculated when working with the ECCP in PWM mode. Frequency Selecting a PWM frequency for the motor control application affects the sound of the motor and the power transistor’s switching speed. The human ear can detect frequencies ranging from 20 Hz to 20 kHz. In this application note, the PWM for motor control operates at 4 kHz.This results in less noise than even lower PWM frequencies, such as 1 kHz. If the application bandwidth can support higher frequencies (especially those above the range of typical human hearing), the motor will produce less audible noise. If too much audible noise is heard, the PWM frequency should be increased. The PWM period and frequency can be calculated using Equations A-1 and A-2. Duty Cycle Changing the PWM duty cycle will change the average voltage across the motor, which in turn changes the motor’s speed. The PWM duty cycle is calculated by using Equation A-3. The average voltage across the BDC motor is calculated using Equation A-4. Resolution The PWM duty cycle resolution determines the amount of precision with which the duty cycle can be changed. For example, a 10-bit resolution allows 1024 possible values for the duty cycle, where an 8-bit resolution only allows 256 values. The PWM frequency, the PIC16F684 oscillator frequency and Timer2 prescaler all affect the resolution value. The maximum resolution is ten bits. The PWM duty cycle resolution is calculated by using Equation A-5. All equations referenced in this application note can be found in Appendix A. 2003-2014 Microchip Technology Inc. DS00000893B-page 1 AN893 INITIALIZING THE ECCP IN FULL-BRIDGE PWM MODE When initializing the ECCP in Full-Bridge PWM mode, four registers need to be initialized: PR2 The PR2 register affects the PWM frequency/period. The value to use for the PR2 register is calculated using Equation A-6. CCPR1L:CCP1CON<5:4> The PWM duty cycle has a full resolution of ten bits. Since all registers on PIC16F684 are 8 bits wide, the ten bits are spread over two registers. CCPR1L contains the upper eight bits and CCP1CON<5:4> contains the lower two bits. The 10-bit value for CCPR1L:CCP1CON<5:4> is calculated using Equation A-7. CCP1CON In addition to storing the lower two bits of the 10-bit PWM duty cycle, CCP1CON is used to set up the ECCP in PWM mode using bits CCP1CON<3:0>. It can also change the motor direction using bits CCP1CON<7:6>. When setting up the ECCP in PWM mode, there are four possible configurations. These configurations accommodate H-bridges with MOSFETS that are active-high, active-low or a combination of both active-high and active-low. Motor direction can be changed in hardware by configuring bits CCP1CON<7:6> to be ‘01’ for forward or ‘11’ for reverse. The PIC16F684 ECCP hardware switches channels for activating and modulating the appropriate MOSFET drivers in the H-bridge. T2CON The T2CON register is used for setting up the Timer2 prescaler and turning on Timer2. The Timer2 prescaler is contained in bits T2CON<1:0> and is used in determining the PWM frequency, duty cycle and resolution. Timer2 must be turned on by setting bit T2CON<2> before the PWM signal starts. An algorithm that calculates the Timer2 prescaler and PR2 values for PWM frequencies is shown in Figure B-1. DS00000893B-page 2 2003-2014 Microchip Technology Inc. AN893 BIDIRECTIONAL BDC MOTOR CONTROL The ECCP makes changing the motor direction easy by configuring CCP1CON<7:6> to be ‘01’ for forward (Figure 1) or ‘11’ for reverse (Figure 2). FIGURE 1: FULL-BRIDGE FORWARD CURRENT FLOW DIAGRAM V+ PIC16F684 P1A P1B Logic ‘1’ FET Driver QC QA Logic ‘0’ BDC I FET Driver P1C FET Driver Logic ‘0’ FET Driver QD QB P1D CCP1CON<3:0> = 1100 CCP1CON<7:6> = 01 FIGURE 2: FULL-BRIDGE REVERSE CURRENT FLOW DIAGRAM V+ PIC16F684 P1A Logic ‘0’ FET Driver I FET Driver P1D FET Driver BDC P1B P1C QC QA Logic ‘1’ QB FET Driver QD Logic ‘0’ CCP1CON<3:0> = 1100 CCP1CON<7:6> = 11 2003-2014 Microchip Technology Inc. DS00000893B-page 3 AN893 LOW COST SENSORLESS MOTOR CONTROL FEEDBACK Sensorless Current Measurement Low-cost current measurements can be performed by using a current sensing resistor between the MOSFETS and ground (see Figure 4). To select a value appropriate for the resistance, consider the maximum amount of current allowed to flow through the resistor and the maximum amount of power dissipation. Sensorless RPM Measurement Low-cost RPM measurement can be performed with a BDC motor by measuring the back EMF voltage from the motor (see Figure 3). The BDC RPM is directly proportional to the back EMF voltage. Since a BDC motor can be modeled as an inductive load, the voltage across the motor is equivalent to the inductance multiplied by dI/dt. In this application, a 12V, 9600 max RPM BDC motor was used. To measure the back EMF voltage, turn off the modulated FET. This will cause the current to flow in the opposite direction. After initially shutting off the FET, dI/dt must stabilize before taking the measurement. In order to use the PIC® microcontroller A/D converter, the measured voltage must be between 0V and VDD. Since the back EMF voltage can be between 0V-12V, a voltage divider circuit is used to scale the back EMF voltage between 0V and VDD. Using Microchip’s MSP6S26 Programmable Gain Amplifier (PGA), a gain of 1 is used for buffering the scaled voltage that is being measured by the PIC16F684 A/D channel (see Equation A-8 for calculating RPM). FIGURE 3: In this application, a 0.1 ohm, 1W current sensing resistor was used with a maximum current of 3A. When 3A flow through the resistor, the ideal power dissipated in the resistor is 0.9W (see Equation A-9) and the voltage across the resistor is 0.3V (see Equation A-10). In order to get the most resolution from the 10-bit A/D converter, the voltage across the resistor at 3A must be amplified as close as possible to the PIC16F684 VDD, which is 5V in this application. Using Microchip’s MSP6S26 PGA, a gain of 16 will ideally give 4.8V, at the maximum 3A specified current (see Equation A-11). A gain of 16 gives a 9.94-bit A/D resolution for measuring current (see Equations A-12 and A-13). The current through the resistor can then be computed using Equations A-14, A-15 and A-16. Since a PWM signal is used to drive the BDC motor, the H-bridge circuit only draws current during the high pulse-width of the PWM period. To obtain a current measurement, the voltage across the current sensing resistor is sampled over a PWM period. A sampling and averaging algorithm of taking measurements over multiple PWM periods is shown in Figure B-2. FULL-BRIDGE FORWARD CONFIGURATION WITH BACK EMF MEASUREMENT V+ PIC16F684 P1A Logic ‘1’ FET Driver QC QA FET Driver I P1B Logic ‘0’ VBACKEMF BDC FET Driver P1C P1D FET Driver Logic ‘0’ QB QD Logic ‘0’ CCP1CON<3:0> = 1100 CCP1CON<7:6> = 01 DS00000893B-page 4 2003-2014 Microchip Technology Inc. AN893 FIGURE 4: FULL-BRIDGE FORWARD WITH CURRENT-SENSING RESISTOR V+ PIC16F684 P1A Logic ‘1’ FET Driver QC QA FET Driver I P1B BDC Logic ‘0’ FET Driver P1C FET Driver Logic ‘0’ QD VACTUAL 0.1 Current Sensing Resistor QB P1D CCP1CON<3:0> = 1100 CCP1CON<7:6> = 01 EXAMPLE APPLICATION This example application demonstrates a low-cost BDC motor control system using the ECCP configured in Full-Bridge PWM mode (see Figure 5). The user interface allows the user to easily configure a BDC motor with PIC16F684, adjust the PWM frequency and FIGURE 5: duty cycle, change the PIC16F684 internal oscillator frequency in real-time, and view RPM and current measurements. This application source code was written using the HI-TECH C® compiler, MPLAB® IDE, and the Microsoft Visual C++® 6.0 development platform. MECHATRONICS BLOCK DIAGRAM Windows® GUI PIC16F684 Sensorless RPM and Current Measurements BDC Motor Physical Process 2003-2014 Microchip Technology Inc. DS00000893B-page 5 AN893 Firmware Software The example firmware is responsible for many operations: The Windows® user interface provides the user a friendly environment for interfacing the BDC motor. The user interface allows the user to adjust the PWM frequency, duty cycle, motor direction and internal oscillator frequency. The user interface also displays the PWM frequency, duty cycle, resolution, RPM and current. The PC software is the host and sends commands to the PIC16F684 using RS-232. The Windows user interface source code can also be downloaded from www.microchip.com. The Windows user interface example is shown in Figure 6. • • • • • • • Initializing the PIC16F684 Sending bit-banged SPI commands to the PGA Receiving commands from the PC Modifying the PWM frequency and duty cycle Changing the motor’s direction Changing the internal oscillator frequency Taking A/D converter measurements for RPM and current The PIC16F684 firmware implements a bit-banged RS-232 USART running at 9600 bps. See Appendix C for the RS-232 serial protocol used in this application note. The C source code can be downloaded from www.microchip.com. See Figure B-3 for the main program flow. FIGURE 6: WINDOWS® USER INTERFACE SCREEN Hardware The hardware used in this application note contains three major sections: • Power stage for motor control • Communication for RS-232 • Measurement for RPM and current The power stage consists of a full H-bridge used for bidirectional BDC motor control. PIC16F684 uses RC2-RC5 as the four ECCP pins that interface with the full H-bridge circuit. The communication section consists of an RS-232 serial communication configuration. PIC16F684 uses RA5 for sending and receiving RS-232 data. DS00000893B-page 6 The measurement section consists of Microchip’s MSC6S26 multi-channel PGA and a voltage divider circuit for scaling the back EMF voltage, as discussed in Section “Sensorless RPM Measurement”. PIC16F684 communicates to the PGA via a 3-wire bit-banged SPI interface. The CS pin is connected to RA1. The SCK pin is connected to RA2. The SI pin is connected to RC0. The VREF pin is connected to GND. The RA0 pin is used as an analog input for measuring RPM and current. The RA0 pin is connected to the VOUT pin on the PGA. Channel 0 on the PGA is used for RPM measurements. Channel 1 on the PGA is used for current measurements. See Figure D-1 for the schematic diagram of the hardware. 2003-2014 Microchip Technology Inc. AN893 CONCLUSION PIC16F684 is well suited for low-cost bidirectional BDC motor control. This application note demonstrates how easy it is to calculate the necessary parameters for using the ECCP in PWM mode, to initialize the necessary ECCP registers, use the ECCP for bidirectional BDC motor control and implement sensorless RPM and current measurements. This application note concludes by showing a full application implementation using PC Windows software, PIC16F684 firmware and motor control hardware. REFERENCES 1. 2. 3. PIC16F684 14-Pin, Flash-Based 8-Bit CMOS Microcontrollers with nanoWatt Technology Data Sheet (DS41202): www.microchip.com/PIC16F684 MCP6S21/2/6/8 Single-Ended, Rail-to-Rail I/O, Low Gain PGA Data Sheet (DS21117): www.microchip.com/MCP6S26 MPLAB® IDE: www.microchip.com/archives 2003-2014 Microchip Technology Inc. DS00000893B-page 7 AN893 APPENDIX A:EQUATIONS EQUATION A-1: PWM FREQUENCY (HZ) 1 Frequency = -----------------Period EQUATION A-2: PWM PERIOD (SECONDS) Period = PR2 + 1 4 T OSC TMR2Prescaler EQUATION A-3: DUTY CYCLE (SECONDS) DC = CCPR1L:CCP1CON<5:4> T OSC TMR2Prescaler EQUATION A-4: VOLTAGE ACROSS BDC MOTOR (VOLTS) DC V BDC = V DD ------------------ Period EQUATION A-5: RESOLUTION (BITS) F OSC log ------------------------------------------------------------------------ FPWM TMR2Prescaler Resolution = -------------------------------------------------------------------------------------log 2 EQUATION A-6: PR2 Period PR2 = ----------------------------------------------------------------------- – 1 4 T OSC TMR2Prescaler EQUATION A-7: CCPR1L:CCP1CON<5:4> DC CCPR1L:CCP1CON<5:4> = -------------------------------------------------------------T OSC TMR2Prescaler EQUATION A-8: RPM ADRESH:ADRESL RPM = 1 – ------------------------------------------------ RPM MAX 1024 DS00000893B-page 8 2003-2014 Microchip Technology Inc. AN893 EQUATION A-9: POWER (W) 2 2 P = I MAX R = 3 0.1 = 0.9W EQUATION A-10: MAXIMUM VOLTAGE ACROSS RESISTOR (VOLTS) V NOMINALMAX = I MAX R = 3 0.1 = 0.3V EQUATION A-11: MAXIMUM VOLTAGE AFTER AMPLIFICATION (VOLTS) V GAINMAX = V NOMINALMAX Gain = 0.3 16 = 4.8V EQUATION A-12: BITS OF RESOLUTION 2 EQUATION A-13: X V GAINMAX = --------------------------- 1024 , where X is bits of resolution V DD BITS OF RESOLUTION SOLVED FOR X GAINMAX 4.8 V --------------------------- 1024 log ------- 1024 V DD 5.0 X = log --------------------------------------------------- = --------------------------------------- = 9.94 bits log 2 log 2 EQUATION A-14: GAIN VOLTAGE MEASURED (VOLTS) ADRESH:ADRESL V GAIN = ------------------------------------------------ V GAINMAX X 2 EQUATION A-15: ACTUAL VOLTAGE ACROSS RESISTOR (VOLTS) V GAIN V ACTUAL = ---------------Gain EQUATION A-16: CURRENT THROUGH RESISTOR (VOLTS) V ACTUAL I = ----------------------R 2003-2014 Microchip Technology Inc. DS00000893B-page 9 AN893 APPENDIX B: FIGURE B-1: FLOWCHARTS CALCULATING TIMER2 PRESCALER AND PR2 ALGORITHM GIVEN A PWM FREQUENCY Start i=0 PR2 = 1000 Prescaler = 1 Is PR2 > 255? No Done Yes Is Prescaler > 16? No Prescaler = 2i Yes Is Prescaler > 16? Yes Calculate PR2 Equation A-6 No i=i+2 Legend: PR2 = unsigned int. Prescaler = unsigned char. i = unsigned char. DS00000893B-page 10 2003-2014 Microchip Technology Inc. AN893 FIGURE B-2: PWM SAMPLING AND AVERAGING ALGORITHM FIGURE B-3: MAIN ROUTINE Start Start Initialize PIC16F684 Measure PWM Period All samples taken? Yes Average Samples Is command received? No Yes No Done Synchronize on PWM High-Edge Is command valid? No Yes Process Command Delay Start A/D Conversion Is A/D conversion complete? Send Response No Yes Log Sample Increment Delay 2003-2014 Microchip Technology Inc. DS00000893B-page 11 AN893 APPENDIX C: RS-232 SERIAL COMMUNICATIONS PROTOCOL Since one-wire communication is being implemented, the command sent from the PC to PIC16F684 will be echoed back. An example of this can be seen on the firmware version box in the Windows GUI. The firmware version box contains (f)[F1.0]. The PC command sent is (f). The PIC16F684 firmware response is [F1.0]. The general form of the command and response are described below as well as the commands implemented in the example application. C.1 General Form PC Command: <command start><command><data> <command end> Ex: (f). C.2 Example Application Command Set PR2 Command: Loads data into the PR2 register. PC Command: (aAF) PIC16F684 Response: [A] CCPR1L Command: Loads data into the CCPR1L register. PC Command: (b1F) PIC16F684 Response: [B] CCP1CON<5:4> CCP1CON<5:4>. Command: Loads data into PC Command: (c3) PIC16F684 Response: [C] Timer2 Prescaler Command: Loads data into T2CON<1:0>. PC Command: (d0) PIC16F684 Response: <response start><response><data><response end> Ex: [F1.0] PIC16F684 Response: [D] FOSC Command: Loads data into OSCCON<6:4>. PC Command: (e6) PIC16F684 Response: [E] Note 1: The <command> is lower case. 2: The <response> is the upper case of the <command>. 3: If there is no <data> to be sent, the <command end> can be the next character sent. 4: All <data> is sent in Hex format. 5: All <data> is sent Most Significant Byte first. 6: Invalid commands are ignored and responded with a [?]. 7: Invalid <command start> is ignored and not responded to. 8: Commands and responses are currently set to ten characters each, this can be adjusted in the source code on both the Windows software and PIC16F684 firmware. DS00000893B-page 12 FW Command: Requests the PIC16F684 firmware version. PC Command: (f) PIC16F684 Response: [F1.0] Motor Control CCP1CON<7:6>. Command: Loads data into PC Command: (g3) PIC16F684 Response: [G] RPM Measurement Command: Requests a RPM measurement. PC Command: (h) PIC16F684 Response: [H3FF] Current Measurement Current measurement. Command: Requests a PC Command: (i) PIC16F684 Response: [I2BC] 2003-2014 Microchip Technology Inc. AN893 APPENDIX D: HARDWARE SCHEMATIC PIC16F684 FIGURE D-1: SCHEMATICS 2003-2014 Microchip Technology Inc. DS00000893B-page 13 AN893 FIGURE D-2: BDC MOTOR CONTROL SCHEMATIC DS00000893B-page 14 2003-2014 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 devices in life support and/or safety applications is entirely at the buyer’s risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights. Trademarks The Microchip name and logo, the Microchip logo, dsPIC, FlashFlex, KEELOQ, KEELOQ logo, MPLAB, mTouch, PIC, PICmicro, PICSTART, PIC32 logo, rfPIC, SST, SST Logo, SuperFlash and UNI/O are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. FilterLab, Hampshire, HI-TECH C, Linear Active Thermistor, MTP, SEEVAL and The Embedded Control Solutions Company are registered trademarks of Microchip Technology Incorporated in the U.S.A. Silicon Storage Technology is a registered trademark of Microchip Technology Inc. in other countries. Analog-for-the-Digital Age, Application Maestro, BodyCom, chipKIT, chipKIT logo, CodeGuard, dsPICDEM, dsPICDEM.net, dsPICworks, dsSPEAK, ECAN, ECONOMONITOR, FanSense, HI-TIDE, In-Circuit Serial Programming, ICSP, Mindi, MiWi, MPASM, MPF, MPLAB Certified logo, MPLIB, MPLINK, Omniscient Code Generation, PICC, PICC-18, PICDEM, PICDEM.net, PICkit, PICtail, REAL ICE, rfLAB, Select Mode, SQI, Serial Quad I/O, Total Endurance, TSHARC, UniWinDriver, WiperLock, ZENA and Z-Scale 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. GestIC and ULPP are registered trademarks of Microchip Technology Germany II GmbH & Co. KG, a subsidiary of Microchip Technology Inc., in other countries. All other trademarks mentioned herein are property of their respective companies. © 2003-2014, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved. Printed on recycled paper. QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV == ISO/TS 16949 == 2003-2014 Microchip Technology Inc. ISBN: 978-1-63276-321-1 Microchip received ISO/TS-16949:2009 certification for its worldwide headquarters, design and wafer fabrication facilities in Chandler and Tempe, Arizona; Gresham, Oregon and design centers in California and India. The Company’s quality system processes and procedures are for its PIC® MCUs and dsPIC® DSCs, 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. DS00000893B-page 15 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://www.microchip.com/ support Web Address: www.microchip.com Asia Pacific Office Suites 3707-14, 37th Floor Tower 6, The Gateway Harbour City, Kowloon Hong Kong Tel: 852-2943-5100 Fax: 852-2401-3431 India - Bangalore Tel: 91-80-3090-4444 Fax: 91-80-3090-4123 Austria - Wels Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 Denmark - Copenhagen Tel: 45-4450-2828 Fax: 45-4485-2829 Atlanta Duluth, GA Tel: 678-957-9614 Fax: 678-957-1455 Austin, TX Tel: 512-257-3370 Boston Westborough, MA Tel: 774-760-0087 Fax: 774-760-0088 Chicago Itasca, IL Tel: 630-285-0071 Fax: 630-285-0075 Cleveland Independence, OH Tel: 216-447-0464 Fax: 216-447-0643 Dallas Addison, TX Tel: 972-818-7423 Fax: 972-818-2924 Detroit Novi, MI Tel: 248-848-4000 Houston, TX Tel: 281-894-5983 Indianapolis Noblesville, IN Tel: 317-773-8323 Fax: 317-773-5453 Los Angeles Mission Viejo, CA Tel: 949-462-9523 Fax: 949-462-9608 New York, NY Tel: 631-435-6000 San Jose, CA Tel: 408-735-9110 Canada - Toronto Tel: 905-673-0699 Fax: 905-673-6509 DS00000893B-page 16 Australia - Sydney Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 China - Beijing Tel: 86-10-8569-7000 Fax: 86-10-8528-2104 China - Chengdu Tel: 86-28-8665-5511 Fax: 86-28-8665-7889 China - Chongqing Tel: 86-23-8980-9588 Fax: 86-23-8980-9500 China - Hangzhou Tel: 86-571-8792-8115 Fax: 86-571-8792-8116 China - Hong Kong SAR Tel: 852-2943-5100 Fax: 852-2401-3431 China - Nanjing Tel: 86-25-8473-2460 Fax: 86-25-8473-2470 China - Qingdao Tel: 86-532-8502-7355 Fax: 86-532-8502-7205 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-8864-2200 Fax: 86-755-8203-1760 China - Wuhan Tel: 86-27-5980-5300 Fax: 86-27-5980-5118 China - Xian Tel: 86-29-8833-7252 Fax: 86-29-8833-7256 India - New Delhi Tel: 91-11-4160-8631 Fax: 91-11-4160-8632 France - Paris Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 India - Pune Tel: 91-20-3019-1500 Japan - Osaka Tel: 81-6-6152-7160 Fax: 81-6-6152-9310 Germany - Dusseldorf Tel: 49-2129-3766400 Germany - Munich Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 Japan - Tokyo Tel: 81-3-6880- 3770 Fax: 81-3-6880-3771 Germany - Pforzheim Tel: 49-7231-424750 Korea - Daegu Tel: 82-53-744-4301 Fax: 82-53-744-4302 Italy - Milan Tel: 39-0331-742611 Fax: 39-0331-466781 Korea - Seoul Tel: 82-2-554-7200 Fax: 82-2-558-5932 or 82-2-558-5934 Italy - Venice Tel: 39-049-7625286 Malaysia - Kuala Lumpur Tel: 60-3-6201-9857 Fax: 60-3-6201-9859 Netherlands - Drunen Tel: 31-416-690399 Fax: 31-416-690340 Malaysia - Penang Tel: 60-4-227-8870 Fax: 60-4-227-4068 Poland - Warsaw Tel: 48-22-3325737 Philippines - Manila Tel: 63-2-634-9065 Fax: 63-2-634-9069 Singapore Tel: 65-6334-8870 Fax: 65-6334-8850 Taiwan - Hsin Chu Tel: 886-3-5778-366 Fax: 886-3-5770-955 Spain - Madrid Tel: 34-91-708-08-90 Fax: 34-91-708-08-91 Sweden - Stockholm Tel: 46-8-5090-4654 UK - Wokingham Tel: 44-118-921-5800 Fax: 44-118-921-5820 Taiwan - Kaohsiung Tel: 886-7-213-7830 Taiwan - Taipei Tel: 886-2-2508-8600 Fax: 886-2-2508-0102 Thailand - Bangkok Tel: 66-2-694-1351 Fax: 66-2-694-1350 China - Xiamen Tel: 86-592-2388138 Fax: 86-592-2388130 China - Zhuhai Tel: 86-756-3210040 Fax: 86-756-3210049 03/25/14 2003-2014 Microchip Technology Inc.