You are on page 1of 6

Food Living Outside Play Technology Workshop

Arduino-based Switching Voltage Regulators


by hanlin_y on August 2, 2014

Table of Contents

Arduino-based Switching Voltage Regulators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Intro: Arduino-based Switching Voltage Regulators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

Step 1: Material required . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

Step 2: Boost Converter circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Step 3: Buck Converter Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Step 4: Non-inverting Buck-Boost Converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Step 5: Inverting Buck-Boost Converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Step 6: Boost and Buck Converter sketch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Advertisements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

http://www.instructables.com/id/Arduino-based-Switching-Voltage-Regulators/
Author:hanlin_y
I'm a high functioning autistic who graduated in Electronics Technician Common Core and Food Technology at BCIT. I enjoying learning new stuff and
working on electronic projects.

Intro: Arduino-based Switching Voltage Regulators


DC to DC converters are used to efficiently convert DC voltages. They have a conversion efficiency of up to 95% making them useful for LED strips, bike lights, battery
chargers and solar powered devices. A voltage converter requires a PWM source such as a microcontroller. Although you could use specialty ICs I used the Arduino
because it is commonly used on Instructables and six converter outputs are possible. You can write your own code to the Arduino as well. In this Instructable I will show
you how to use the Arduino-based boost (step-up), buck (step-down) and buck-boost (step-up or step-down) converters.

Image Notes
1. Boost converter with six outputs powering LED strings from 12V.

Step 1: Material required


PWM source

1 - Arduino

Boost Converter (per output)

2 - 150 ohm resistors


2 - 1k resistos
1 - 10k resistor
1 - 10k potentiometer
1 - 10M resistor
1 - 2.2nF capacitor
1 - 10uF capacitor
1 - 2A 100uH inductor
1 - 2A schottky diode
1 - 4.7V zener diode
1 - N-channel power MOSFET (eg. IRFZ44N)

Buck Converter (per circuit)

1 - 10 ohm resistor
2 - 150 ohm resistors
1 - 1k resistor
1 - 4.7k resistor
1 - 10k potentiometes
2 - 10M resistors
2 - 10uF capacitors
1 - 2A 100uH inductor
1 - 2A schottky diode
1 - 4.7V zener diode
1 - P-channel power MOSFET (eg. IRF9540N)
1 - N-channel small signal MOSFET (eg. 2N7000)
1 - NPN transistor (eg. 2N3904)
1 - PNP transistor(eg. 2N3906)

Non-Inverting Buck-Boost converter (per circuit)


1 - 10 ohm resistor
3 - 150 ohm resistors
2 - 1k resistors
1 - 4.7k resistor
3 - 10M resistors
1 - 10k potentiometer
1 - 2.2nF capacitor
2 - 10uF capacitors
http://www.instructables.com/id/Arduino-based-Switching-Voltage-Regulators/
2 - 2A schottky diodes
1 - 4.7V zener diodes
1 - NPN transistor
1 - PNP transistor
1 - N-channel small signal MOSFET
1 - P-channel power MOSFET
1 - N-channel power MOSFET
1 - 2A 100uH inductor

Inverting Buck-Boost converter (per circuit)

1 - 10 ohm resistor
1 - 1k resistor
1 - 4.7k resistor
2 - 100k resistors
2 - 10M resistors
2 - 150 ohm resistors
1 - 10k potentiometer
2 - 10uF capacitors
1 - 2A 100uH inductor
1 - 2A schottky diode
1 - 4.7V zener diode
1 - NPN transistor
1 - PNP transistor
1 - N-channel small signal MOSFET
1 - P-channel power MOSFET
1 - low voltage op-amp (eg. LM358N)

Step 2: Boost Converter circuit


In boost converters the output voltage is higher than the input voltage. The Arduino maintains the output voltage by monitoring it and adjusting the duty cycle based on it.
The frequency is 62.5 kHz. If the output voltage falls below or rises above its desired value the duty cycle increases or decreases.The higher the MOSFET's on time the
more the voltage is stepped up. The feedback voltage is maintained around 500mV. The outputs can be adjusted with the potentiometers.

The converter circuits have protection features. When first powered it starts at 0% to minimize the inrush current. The zener diodes at the analog inputs are used for
overvoltage protection. They ensure that the feedback voltage does not exceed their breakdown voltage of 4.7V. The RC snubber reduces the ringing at the drains of the
MOSFETs. In this circuit R13 prevents you from setting the voltage too high. The maximum voltage to use depends on the breakdown voltage of the schottky diode, the
Vdss value of the MOSFET and the voltage tolerated by your load. The formula R13=Vref/((Vmax-Vref)/(R11+R12)) calculates the value of R1 that should be used. The
same formula can also be used for the other converters with resistors' numbers substituted.

Efficiency
Load: 1.70W, Input: 11.9V@150mA, Output: 17.0V@100mA, Efficiency: 95.1%
Load: 15.3W, Input: 10.3V@1.66A, Output: 21.9V@700mA, Efficiency: 89.5%

Step 3: Buck Converter Circuit


In buck converters the output voltage is lower than the input voltage. Unlike the boost converter this one as well as the inverting buck-boost converter uses a P-channel
MOSFET for its switch. This means a NOT gate is needed to drive it at 12V and 0V which cannot be done by the Arduino. The transistor will be permanently on if driven
by the Arduino's pins. The NOT gate also allows the same sketch to be used. The lower the MOSFET's on time the more the voltage is stepped down.

Efficiency
Load: 5.09W, Input: 460mA@11.5V, Output: 11.3V@450mA, Efficiency: 96.1%
Load: 2.00W, Input: 11.8V@200mA, Output: 4.42V@453mA, Efficiency: 84.7%

http://www.instructables.com/id/Arduino-based-Switching-Voltage-Regulators/
Image Notes
1. Buck converter

Step 4: Non-inverting Buck-Boost Converter


In non-inverting buck-boost converters the output voltage is positive and may be higher or lower than the input's voltage. The buck and boost converters were cascaded
to step-down or step-up as necessary. At any given time only one of the converters is active. When the Arduino powers up it soft starts in buck mode. If the output voltage
is below its desired value and its duty cycle is 100% it switches over to boost mode with the gate of Q2 low. If the output is above its desired value and its duty cycle is
0% it switches back to buck mode with gate of Q3 low. You can set it to buck instead of buck-boost mode if you prevent the buck stage's duty cycle from reaching 100%.
Since this circuit uses two switches a different sketch is needed.

Efficiency

Load: 3.15W, Input: 340mA@11.6V, Output: 630mA@5.00V, Efficiency: 79.9%


Load: 3.94W, Input: 370mA@11.6V, Output: 368mA@10.7V Efficiency: 91.7%
Load: 2.53W, Input: 260mA@11.7V, Output: 143mA@17.7V Efficiency: 83.2%
Load: 9.23W, Input: 1.06A@10.9V, Output: 446mA@20.7V, Efficiency: 79.9%

Image Notes
1. Non-inverting buck-boost converter

Step 5: Inverting Buck-Boost Converter


In inverting buck-boost converters the output is negative and may be higher or lower in magnitude than the input voltage. Since the 500mV feedback is negative and the
Arduino's ADC pins cannot read negative voltages the op-amp inverts it to a positive value. The higher the MOSFET's on time the higher the output voltage. Based on my
measurements this circuit is relatively inefficient. The transistor was hot at heavier loads which may be caused by its resistance. This circuit uses the one switch sketch.

Efficiency
Load: 5.28W, Input: 11.3V@670mA, Output: 18.9V@280mA, Efficiency: 69.7%
Load: 7.49W, Input: 10.8V@1.1A, Output: 19.7V@380mA, Efficiency: 62.7%

Image Notes
1. Inverting buck-boost converter

http://www.instructables.com/id/Arduino-based-Switching-Voltage-Regulators/
Image Notes
1. 3W LEDs as a load

Step 6: Boost and Buck Converter sketch


The two sketches were written for the Arduino Uno. To adapt it for other chips such as the ATtiny you can refer to their datasheets. The sketch "one_stage_converter" is
for the buck, boost, and inverting buck-boost converter. The sketch "two_stage_converter" if for the non-inverting buck-boost converter. Any of the PWM pins 6, 5, 9, 10,
11, and 3 can be used for the one-stage converters, allowing six outputs. For the two-stage converter each output must use the same timer with the OCRxA pins for the
buck stage and the OCRxB pins for the boost stage, allowing three outputs. Since the prescaler for timer 0 is changed the millis() and delay() functions will be 64 times
faster and their values will need to be 64 times larger. I have enabled only one output. You may re-enable the other outputs by uncommenting them in the setup()
function.

In the sketches you can adjust timer 1's PWM frequency, the feedback voltage, and the maximum duty cycles for each output with the following:

TIMER_TOP_1 - sets timer 1's output frequency. f=16MHz/TIMER_TOP_1


desiredFeedbackVoltage - sets the feedback voltage between 0 and 1100mV
MAX_DUTY_nx - sets the maximum duty cycles (One-stage converter only)
MAX_BUCK_DUTY_n - sets the maximum duty cycle for the buck stages (Two-stage converter only)
MAX_BOOST_DUTY_n - sets the maximum duty cycle for the boost stages (Two-stage converter only)

A higher frequency allows smaller inductances to be used. This allows higher current ratings because when inductors are in parallel they have a higher current rating and
a lower combined inductance. Only timer 1's frequency can be changed with two outputs available. To change it for the other timers refer to the datasheet. You can use
the following calculator for selecting the inductors and other parts: https://learn.adafruit.com/diy-boost-calc/the-cal....

. TFor boo

File Downloads

two_stage_converter.ino (5 KB)
[NOTE: When saving, if you see .tmp as the file ext, rename it to 'two_stage_converter.ino']

one_stage_converter.ino (3 KB)
[NOTE: When saving, if you see .tmp as the file ext, rename it to 'one_stage_converter.ino']

http://www.instructables.com/id/Arduino-based-Switching-Voltage-Regulators/
Related Instructables

5V stabilised
Universal High- supply for USB
Power LED hub by Make an Easy Mintyboost on
Driver with 3D- Button Wireless the Cheap! by
Altoid Tin neelandan High Power LED
printable Case by nomuse blrplt1 Driver Circuits
Emergency /
by ledartist Camping Light by dan
by kc8hps

Advertisements

Comments
1 comments Add Comment

seamster says: Aug 19, 2014. 10:46 AM REPLY


Cool! Great project and documentation. Thank you for sharing this!

http://www.instructables.com/id/Arduino-based-Switching-Voltage-Regulators/

You might also like