AN1138

AN1138
A Digital Constant Current Power LED Driver
Author:
Stephen Bowling
Microchip Technology Inc.
INTRODUCTION
This document describes a power LED driver solution
using the PIC12HV615 microcontroller (MCU). The
PIC12HV615 is an 8-pin MCU with many integrated
analog features. The LED driver circuit is a buck (stepdown) solution and the circuit presented here can
operate from most any input voltage source as long as
it exceeds the forward voltage of the LEDs to be driven.
A proportional-integral (PI) controller algorithm is used
to regulate the LED current to a constant value. The PI
controller is executed at a rate of 976 Hz, leaving plenty
of CPU time available for other tasks. Although this
sample rate would provide inadequate control
response for most power supply applications, it works
well for LED applications because the LED presents a
constant load to the power stage. Therefore, the
controller does not need to make frequent adjustments.
The LED current is sampled using a resistor in series
with the source of the MOSFET in the buck circuit and
amplified using a single op amp. The LED current is
sampled using one of the available ADC inputs on the
PIC12HV615. The Enhanced Capture Compare PWM
(ECCP) module of the MCU is used in PWM mode to
drive the buck circuit. Since the MCU has an internal
voltage regulator and 8 MHz oscillator, very few
external components are required to complete the
circuit.
CIRCUIT DESCRIPTION
A detailed schematic of the circuit is provided in
Figure B-1. A buck topology is used with the LED load
referenced to the input voltage rail. The buck topology
allows the LED to be in series with the inductor at all
times and limit the current ripple. Therefore, an output
capacitor is not required as it would be for a voltage
regulator circuit. However, an output capacitor is shown
in the schematic and can optionally be used to lower
the required value of the inductor.
In order to select an inductor value for the buck circuit,
we need to know some basic operating parameters.
For calculation purposes, we will assume that the
circuit will drive a single 1W power LED. The typical
© 2007 Microchip Technology Inc.
drive current for this type of LED would be 350 mA and
a typical forward voltage would be 3.5V. Secondly, we
will assume that the circuit input voltage is 12V.
The inductor value will be chosen to allow a maximum
current ripple of +/- 20%. The eye will not be able to
perceive this current ripple since the switching
frequency is much faster than can be detected.
Considering this fact, you might be tempted to further
increase the allowable current ripple to reduce the
inductor value. However, the +/- 20% limit is a rule of
thumb to minimize efficiency losses in the LED. You will
want to check the LED manufacturer’s data sheet to
verify the maximum peak current.
The switching frequency of the buck regulator is
chosen to be 125 kHz. This frequency was chosen
based on the selected operating frequency of the MCU
and the resulting control resolution that can be
obtained from the hardware PWM module.
When
operated from the internal 8 MHz RC oscillator, the
ECCP module can provide 6 bits (64 steps) of duty
cycle resolution at 125 kHz. If this control resolution is
not sufficient, the PWM frequency can be lowered or
the MCU can be operated with an external oscillator
circuit to provide a higher operating frequency.
A summary of the operating parameters used for
design calculations is provided in Table 1 below.
TABLE 1:
BUCK REGULATOR
OPERATING PARAMETERS
Parameter
Value
Input Voltage, VIN
12V
LED Forward Voltage, Vf
3.5V
LED Current, If
0.35A
Current Ripple, ΔI
+/- 20%
Switching Frequency, fsw
125 kHz
EQUATION 1:
INDUCTOR VALUE
( V in – V f )
Vf
L = ----------------------- • t on = ----- • t off
ΔI
ΔI
EQUATION 2:
INDUCTOR CHARGE TIME
Vf
1
t on = ------ • ------f sw V in
DS01138A-page 1
AN1138
The inductor value, L, can be calculated using
Equation 1 and Equation 2. The inductor value should
be at least 128 μH to achieve the desired current
maximum current ripple. A standard inductor value of
150 μH was chosen for the design based on this
calculation.
A 0.56 ohm sensing resistor is used to measure the
LED current. The sense resistor is placed in series with
the source of the power MOSFET. The resistor value
was chosen to provide low-power dissipation, but this
value also provides a very low output voltage at typical
operating currents.
A single op amp is used in a non-inverting amplifier
configuration to increase the current feedback signal
amplitude. A larger resistor could be used to eliminate
the gain stage, but this would result in significant power
dissipation. More important, the resistor power
dissipation would reduce the overall efficiency of the
LED driver.
The feedback components of the op amp are selected
to provide a gain of 11. This gain value will provide a
nominal feedback voltage of 2V at 350 mA drive current
and 4V at 700 mA drive current.
Because of the location of the sense resistor in the
circuit, the current feedback signal is present only when
the MOSFET is turned on and charging the inductor.
Since the feedback signal is discontinuous, a simple
peak hold circuit using a Shottky diode is used at the
output of the current sense amplifier. The component
values of the peak hold circuit are chosen to provide a
low pass filter with a very low cutoff frequency, which
averages the current feedback signal. To ensure that
the current can be properly regulated using the
software PI controller, the cutoff frequency is chosen to
be 1/10th the value of the current sample rate.
The Enhanced Capture Compare PWM (ECCP)
module on the PIC12HV615 is used to control the buck
regulator MOSFET. The output of the current sense
amplifier and peak hold circuit is connected to input
AN0 of the PIC12HV615 ADC.
A dropping resistor is used between the input voltage
rail of the circuit delivered by J1 and the VDD pin of the
PIC12HV615. This resistor must be sized to provide
the operating current for the internal shunt regulator,
plus the expected operating current of the device.
Refer to the PIC12HV615 (DS41302) data sheet to
determine the value of this resistor.
Connector J2 allows the PIC12HV615 device to be
programmed using a MPLAB® ICD 2 or PICkit™ 2
device programmer. Jumpers J3 and J4 must be
removed during device programming. (See schematic
diagram, Figure B-1.)
DS01138A-page 2
SOFTWARE DESCRIPTION
The CCS PICC™ C compiler was used to develop the
source code for this application. The PICC C compiler
has a variety of built-in library functions that allow the
user to rapidly configure the I/O pins and peripherals of
the MCU.
The Setup() function configures Timer2, the ECCP
module, and the ADC. The Timer2 module is used
along with the ECCP module to produce a PWM signal.
Timer2 also provides software interrupts that schedule
ADC conversions and calculation of the PI control
algorithm.
The Timer2 output postscaler is used to reduce the
frequency of interrupts to the CPU. With the 1:16
postscaler option the interrupt frequency is 7812 Hz. A
count variable, Count1msec, is incremented each
time a Timer2 interrupt occurs. An ADC conversion is
performed and the PI algorithm is executed after every
eight Timer2 interrupts. The PI calculation period is
1.025 msec, or 976 Hz. The ADC conversion and PI
calculation is scheduled by setting a flag bit,
Event1msec, in the ISR. The flag is responded to in
the main software loop to avoid consuming time in the
ISR.
A typedef is used to create a data type for the PI data
structure. A pointer to the data structure is passed to
the actual PI function. This implementation allows
multiple control loops to be created and called in the
application, if desired. The data structure contains all
the variables associated with a particular control loop.
The PICC C compiler defines the long data type as a
16-bit integer and the int data type as an 8-bit integer.
Most values in the PI data structure are declared as
long values to provide adequate calculation resolution.
The gain values and output limit can be declared as
8-bit values to conserve RAM space.
EXAMPLE 1:
CODE EXAMPLE
typedef struct {
unsigned char
unsigned char
unsigned char
signed long
signed long
signed long
signed long
signed long
int1
} tPIParams;
Kp;
Ki;
OutMax;
Setpoint;
Feedback;
Error;
Integral;
Output;
Saturated;
© 2007 Microchip Technology Inc.
AN1138
The equations required to execute a PI controller are
shown in Equation 3. In this control system, the ADC
conversion provides the amount of measured LED
current. The PI controller calculates an error based on
this measured feedback value and the chosen
operating current. The PI controller output is then used
to set the duty cycle for the buck converter. The
operation and behavior of the PI controller is described
in further detail below.
EQUATION 3:
PI CONTROLLER
Error = Setpoint – Feedback
Integral = Integral + Error
PROPORTIONAL
TERM
INTEGRAL
TERM
K P • Error + K I • Integral
Output = -----------------------------------------------------------------K
First an error term is calculated. This is simply the
difference between the desired system output value
(Setpoint) and the actual output value (Feedback). In
this current regulator application, the ADC will provide
a sample value corresponding to the actual output
current and a setpoint value will be initialized that
represents the desired output current.
If the error term is small enough, then no further
calculations are performed. This error windowing
function saves a significant amount of CPU bandwidth.
Often, little or no change of the PWM duty cycle is
required once the power LED reaches a steady state
operating point.
The proportional term of the controller multiplies the
calculated error by a gain value. The proportional term
provides a system response that is proportional to the
amount of error. If the output current is very near the
desired value, the proportional term of the controller will
provide very little response to correct the error. If the
output current is much greater or much less than the
desired output value, then the proportional term of the
controller will produce a very big response to correct
the large error.
The integral part of the controller comes to the rescue
and provides an output response that keeps the system
at the desired setpoint under steady state conditions.
The integral part of the PI controller works by adding
the calculated error to a running sum each time the PI
controller is executed. This sum, or integrated error, is
multiplied by a gain coefficient to produce the integral
response of the controller. Dynamically, this causes a
small system error to accumulate over time and
produce a larger response. Therefore, the integral part
of the controller will correct small steady state errors.
As the error converges to zero, the integral term will
converge to a value that produces the correct control
response to keep the system at the desired setpoint. As
stated earlier, the proportional output of the controller
will produce little or no response when the error is close
to zero. So, it is the integral term that maintains the DC
response that keeps the system operating at the
desired setpoint.
The error is not added to the integral term under two
conditions. First, the error will not be added if the PI
controller output has reached its maximum or minimum
allowable value. In this application, the minimum output
duty cycle is 0 and the maximum is a duty cycle near
100%. If a maximum or minimum duty cycle limit has
been reached, the output of the PI controller is
restricted to that value and a flag is set to indicate that
the controller is in a saturation condition. The saturation
check avoids a condition known as “integral windup”. If
the integral term is allowed to accumulate when the
controller is saturated, then very erratic results will
occur when the controller comes out of saturation.
Secondly, the error value is not added to the integral
term when the integral value has reached a limit of
+/- 32000. This limit check keeps the integral variable
within the limits of a 16-bit signed integer and avoids
the use of extra RAM locations.
As shown in the formulas provided in Equation 3, the
output calculation for the controller divides the
proportional and integral terms by a constant K. K is an
integer value that sets the overall gain of the controller
and also sets the resolution of the Kp and Ki gain
values. This constant allows fractional gains to be
utilized.
The PI controller can be tuned experimentally by
finding the maximum Kp value that can be used without
oscillations. The output of the ECCP module or the
output of the current sensing circuit is observed as Kp
is adjusted to confirm that no oscillations are present.
The Ki gain value is set to 0 at this time, so the current
output will not increase to the desired setpoint.
The goal is to reduce the error to zero and the PI control
algorithm cannot do this with just a proportional term.
With only proportional control, the output of the PI
controller equation will be zero when the error is zero!
© 2007 Microchip Technology Inc.
DS01138A-page 3
AN1138
Once a suitable for Kp has been found, Ki can be slowly
increased to find a value that will make the system error
decrease to 0. Usually, the Ki value is set to a value
much less than the value of Kp. When Ki is too small,
the system will take longer to reach the desired
setpoint. When Ki is too big, the system will overcorrect and oscillations will occur.
GOING FURTHER...
CONCLUSION
This application note has shown how a PIC12HV615
MCU can be used to implement a digital current control
loop for power LEDs. The integrated peripherals of the
PIC12HV615 allow a low-cost implementation with
room for additional features. These features include
dimming of the LED, temperature regulation, and
communication functions.
This application note presents only the digital current
control software required for the LED. At a minimum,
the PIC12HV615 must monitor the LED current. In
addition, other signals can be monitored depending on
the application requirements. The schematic shown in
Figure B-1 has extra MCU inputs available that could
be used to monitor the input bus voltage, a temperature
sensor, or a push-button. In particular, it might be
desirable to monitor the temperature of the power LED
with a temperature sensor. The digital control loop can
then automatically reduce the current drive level to
protect the lifetime of the power LED.
In particular, it might be desirable to monitor the
temperature of the power LED with a temperature
sensor. LEDs have very long lifetimes, but only if the
temperature is kept within limits. It is not always
possible to ensure that the mechanical installation of
the LED will provide enough heat sinking to keep the
LED temperature within specifications.
With electronic thermal management, the LED drive
current can be reduced if the maximum LED
temperature is exceeded. Therefore, the LED lighting
system will always produce the maximum amount of
light allowed by the mechanical installation and the
lifetime of the LED will be maximized.
HARDWARE RESOURCES
This application uses 633 of the 1024 available
instruction words in the Flash program memory.
Dynamically, the application uses up to 44 bytes of the
64 bytes available.
DS01138A-page 4
© 2007 Microchip Technology Inc.
AN1138
Software License Agreement
The software supplied herewith by Microchip Technology Incorporated (the “Company”) is intended and supplied to you, the
Company’s customer, for use solely and exclusively with products manufactured by the Company.
The software is owned by the Company and/or its supplier, and is protected under applicable copyright laws. All rights are reserved.
Any use in violation of the foregoing restrictions may subject the user to criminal sanctions under applicable laws, as well as to civil
liability for the breach of the terms and conditions of this license.
THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR
STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE
FOR SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
APPENDIX A:
SOURCE CODE
#include <12F615.h>
#include "pi.h"
#fuses INTRC_IO,NOPROTECT
#fuses IOSC8,MCLR,BROWNOUT_NOSL,NOWDT
#fuses PUT,BROWNOUT
#device ADC = 10
// ADC library will return 10-bit ADC result
// Variable declarations
tPIParams
Current;
// Data Structure for PI controller. See pi.h
int
int1
// Software count for scheduling PI calculation
// Flag to indicate time for PI calculation
Count1msec;
Event1msec;
//Function Prototypes
void Setup(void);
//--------------------------------------------------------------------// The Timer2 ISR will be invoked at a 7.8 kHz rate with Fosc = 8MHz.
// A count variable is incremented in the ISR and a flag is set every
// 16 counts that will trigger the PI calculations. The PI controller
// is therefore executed at 7.8kHz/8 = 976 Hz.
//--------------------------------------------------------------------#INT_TIMER2
void timer2_isr()
{
Count++;
if(Count == 8)
{
Count1msec = 0;
Event1msec = 1;
}
}
© 2007 Microchip Technology Inc.
DS01138A-page 5
AN1138
//--------------------------------------------------------------------// The device code begins here. After the peripherals and variables
// are initialized, the StartPI flag is polled in an endless loop.
//--------------------------------------------------------------------void main()
{
// Setup peripheral functions
Setup();
// Setup gains and initial values for the PI controller
// Note: The value of Current.Setpoint will depend on the
// gain of the current feedback circuit.
Current.Kp = 35;
Current.Ki = 2;
Current.OutMax = 50;
Current.Setpoint = 100;
Current.Feedback = 0;
Current.Integral = 0;
while(1)
{
// Poll for flag
if(Event1msec)
{
// Read ADC to get current feedback value. The present
// sample is averaged with the previous sample.
Current.Feedback += read_adc();
Current.Feedback /= 2;
// Calculate the PI controller using variables in the
// 'Current' data structure.
CalcPI(&Current);
// Write the calculated PWM duty cycle to the CCP module.
set_pwm1_duty(Current.Output);
// Clear the flag
Event1msec = 0;
}
}
}
//--------------------------------------------------------------------void Setup(void)
{
set_tris_a(0xfb);
// GP2 is output for PWM
setup_ccp1(CCP_PWM);
// Enable CCP module for PWM
set_pwm1_duty(0);
// Set initial PWM duty cycle
setup_timer_2(T2_DIV_BY_1,0x0f,16);// Enable TMR2 with /16 postcaler
//
//
//
//
Note: AN0, AN1, and AN3 are enabled as analog inputs. Although
not required, the AN1 and AN3 inputs can be used to monitor
parameters such as temperature, bus voltage, or LED forward
voltage.
setup_adc_ports(sAN0 | sAN1 | sAN3);// AN0,AN1,AN3 analog inputs
setup_adc(ADC_CLOCK_INTERNAL);
// enable ADC - internal clk
set_adc_channel(0);
// input channel AN0
enable_interrupts(INT_TIMER2);
enable_interrupts(GLOBAL);
// Enable timer interrupts
// Enable CPU interrupts
}
DS01138A-page 6
© 2007 Microchip Technology Inc.
AN1138
void CalcPI(tPIParams *PIdata)
{
PIdata->Error = PIdata->Setpoint - PIdata->Feedback;
// Deadband -- If the magnitude of the error is 2 or less,
// then don't calculate the PI routine at all. This saves
// processor time and avoids oscillation problems.
if((PIdata->Error > 2) || (PIdata->Error < -2))
{
// If the PI controller is saturated, then don't do any
// accumulation of the integral.
if(PIdata->Saturated == 0)
{
// Do some boundary checking on the integral value
// to avoid overflow. If the integral value is near
// the limits, then we won't do the accumulation.
if(PIData->Error > 0)
{
if(PIData->Integral < 32000)
PIdata->Integral += PIdata->Error;
}
else
{
if(PIData->Integral > -32000)
PIdata->Integral += PIdata->Error;
}
}
// Now, calculate the actual PI function here.
PIdata->Output = (PIdata->Error * PIData->Kp \
+ PIdata->Integral * PIdata->Ki)/256;
// Perform boundary checks on the PI controller output. If the
// output limits are exceeded, then set output to the limit
// and set flag.
if(PIdata->Output > PIdata->OutMax)
{
PIdata->Saturated = 1;
PIdata->Output = PIdata->OutMax;
}
else if(PIdata->Output < 0)
{
PIdata->Saturated = 1;
PIdata->Output = 0;
}
else PIdata->Saturated = 0;
}
}
© 2007 Microchip Technology Inc.
DS01138A-page 7
1
ICSP™
NC 6
2
VDD
3
VSS
4
PDAT
PCLK 5
MCLR/VPP
J2
R11
10k
Vfb
Ifb
VDD
0.1μ
GND
Current
Feedback
Ifb
J3
Ifb
Vfb
4.7k
C1
8
7
6
5
1k
R10
C6
VDD
U1
1
VSS
VDD
2 GP5
GP0
3 GP4
GP1
4
GP3
GP2
PIC12HV615
0.1
D1
1
C4
SD101AWS
2
R9
R6
10k
VDD
R1
C2
200
10μ
R7
-
+
MCP601
U2
4.7k
R5
0
R3
15k
R4
10MQ060
0.56
J4
1k
Vfb
L1
NF
150μ
Vbus
IRRL024Z
Vbus
50p
R8
D2
Q1
Rsense
J1
0.1μ
DS01138A-page 8
VDD
LED+
LED-
FIGURE B-1:
C7
APPENDIX B:
C5
Voltage
Feedback
(optional)
AN1138
LED DRIVER DEMO SCHEMATIC
SCHEMATIC
© 2007 Microchip Technology Inc.
C3
1k
15k
0.1μ
R2
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, Accuron,
dsPIC, KEELOQ, KEELOQ logo, microID, MPLAB, PIC,
PICmicro, PICSTART, PRO MATE, rfPIC and SmartShunt are
registered trademarks of Microchip Technology Incorporated
in the U.S.A. and other countries.
AmpLab, FilterLab, Linear Active Thermistor, Migratable
Memory, MXDEV, MXLAB, 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, CodeGuard,
dsPICDEM, dsPICDEM.net, dsPICworks, dsSPEAK, ECAN,
ECONOMONITOR, FanSense, FlexROM, fuzzyLAB,
In-Circuit Serial Programming, ICSP, ICEPIC, Mindi, MiWi,
MPASM, MPLAB Certified logo, MPLIB, MPLINK, PICkit,
PICDEM, PICDEM.net, PICLAB, PICtail, PowerCal,
PowerInfo, PowerMate, PowerTool, REAL ICE, rfLAB, Select
Mode, Smart Serial, SmartTel, Total Endurance, UNI/O,
WiperLock and ZENA 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.
© 2007, Microchip Technology Incorporated, Printed in the
U.S.A., All Rights Reserved.
Printed on recycled paper.
Microchip received ISO/TS-16949:2002 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.
© 2007 Microchip Technology Inc.
DS01138A-page 9
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
Asia Pacific Office
Suites 3707-14, 37th Floor
Tower 6, The Gateway
Harbour City, Kowloon
Hong Kong
Tel: 852-2401-1200
Fax: 852-2401-3431
India - Bangalore
Tel: 91-80-4182-8400
Fax: 91-80-4182-8422
India - New Delhi
Tel: 91-11-4160-8631
Fax: 91-11-4160-8632
Austria - Wels
Tel: 43-7242-2244-39
Fax: 43-7242-2244-393
Denmark - Copenhagen
Tel: 45-4450-2828
Fax: 45-4485-2829
India - Pune
Tel: 91-20-2566-1512
Fax: 91-20-2566-1513
France - Paris
Tel: 33-1-69-53-63-20
Fax: 33-1-69-30-90-79
Japan - Yokohama
Tel: 81-45-471- 6166
Fax: 81-45-471-6122
Germany - Munich
Tel: 49-89-627-144-0
Fax: 49-89-627-144-44
Atlanta
Duluth, GA
Tel: 678-957-9614
Fax: 678-957-1455
Boston
Westborough, MA
Tel: 774-760-0087
Fax: 774-760-0088
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
Los Angeles
Mission Viejo, CA
Tel: 949-462-9523
Fax: 949-462-9608
Santa Clara
Santa Clara, CA
Tel: 408-961-6444
Fax: 408-961-6445
Toronto
Mississauga, Ontario,
Canada
Tel: 905-673-0699
Fax: 905-673-6509
Australia - Sydney
Tel: 61-2-9868-6733
Fax: 61-2-9868-6755
China - Beijing
Tel: 86-10-8528-2100
Fax: 86-10-8528-2104
China - Chengdu
Tel: 86-28-8665-5511
Fax: 86-28-8665-7889
Korea - Daegu
Tel: 82-53-744-4301
Fax: 82-53-744-4302
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
China - Hong Kong SAR
Tel: 852-2401-1200
Fax: 852-2401-3431
Malaysia - Kuala Lumpur
Tel: 60-3-6201-9857
Fax: 60-3-6201-9859
China - Nanjing
Tel: 86-25-8473-2460
Fax: 86-25-8473-2470
Malaysia - Penang
Tel: 60-4-227-8870
Fax: 60-4-227-4068
China - Qingdao
Tel: 86-532-8502-7355
Fax: 86-532-8502-7205
Philippines - Manila
Tel: 63-2-634-9065
Fax: 63-2-634-9069
China - Shanghai
Tel: 86-21-5407-5533
Fax: 86-21-5407-5066
Singapore
Tel: 65-6334-8870
Fax: 65-6334-8850
China - Shenyang
Tel: 86-24-2334-2829
Fax: 86-24-2334-2393
Taiwan - Hsin Chu
Tel: 886-3-572-9526
Fax: 886-3-572-6459
China - Shenzhen
Tel: 86-755-8203-2660
Fax: 86-755-8203-1760
Taiwan - Kaohsiung
Tel: 886-7-536-4818
Fax: 886-7-536-4803
China - Shunde
Tel: 86-757-2839-5507
Fax: 86-757-2839-5571
Taiwan - Taipei
Tel: 886-2-2500-6610
Fax: 886-2-2508-0102
China - Wuhan
Tel: 86-27-5980-5300
Fax: 86-27-5980-5118
Thailand - Bangkok
Tel: 66-2-694-1351
Fax: 66-2-694-1350
Italy - Milan
Tel: 39-0331-742611
Fax: 39-0331-466781
Netherlands - Drunen
Tel: 31-416-690399
Fax: 31-416-690340
Spain - Madrid
Tel: 34-91-708-08-90
Fax: 34-91-708-08-91
UK - Wokingham
Tel: 44-118-921-5869
Fax: 44-118-921-5820
China - Xian
Tel: 86-29-8833-7252
Fax: 86-29-8833-7256
10/05/07
DS01138A-page 10
© 2007 Microchip Technology Inc.