In one of the previous tutorials, closed loop buck converter SMPS with fixed output voltage was designed. In this series, following SMPS circuits are designed –
1. Boost Converters –
a) Open Loop Boost Converter
b) Closed Loop Boost Converter
c) Open Loop Boost Converter with Adjustable Output
d) Closed Loop Boost Converter with Adjustable Output
2. Buck Converters –
a) Open Loop Buck Converter
b) Closed Loop Buck Converter
c) Open Loop Buck Converter with Adjustable Output
d) Closed Loop Buck Converter with Adjustable Output
3. Buck-Boost Converters
a) Open Loop Inverting Buck – Boost Converter
b) Open Loop Inverting Buck – Boost Converter with Adjustable Output
4. Flyback Converter
5. Push-Pull Converter
The closed loop buck converter designed in the previous tutorial though had a constant and regulated voltage at the output but it could not be varied. For a stable output that Buck converter had an error detection circuit. The error detection was done by adding a feedback circuit which continuously checks the error in the output voltage and provided a regulated voltage at the output. For making the output of the circuit adjustable, it must be drawn through a variable resistor. This closed loop buck converter not only had a feedback circuit, its output is also adjustable.
Contrary to Linear Regulators which step down the DC voltage by dissipating the heat, Buck Converters step down the DC voltage through switching regulators and also step up the output current. According to the law of power conservation, input power must be equal to output power.
Pin = Pout
Vin*Iin = Vout*Iout
So in the buck converter as the input voltage (Vin) is greater than output voltage (Vout), so the input current (Iin) is always less than the output current (Iout). The switching regulators provide more efficiency up to 90% if the SMPS is designed properly.
A Buck Converter can be designed in two ways –
Open loop buck converter – In open loop buck converter, there is no feedback from output to input contrary to the closed loop which has a feedback circuit. So, the output of an open loop buck converter is not regulated.
Closed loop buck converter – In closed loop buck converter, there is a feedback from the output to the input. So, the output of a closed loop buck converter is regulated.
There are certain design parameters involved in the designing of the buck converter. It is important to understand these design parameters. Any buck converter can operate in either of the two possible modes of operation. These modes of operation are as follow –
Continuous Conduction Mode (CCM)- In CCM, the current in the inductor is continuous in the entire cycle of the switching period. So a regulated voltage at the output is obtained but the output is regulated only if the current is drawn within the limits of CCM.
Discontinuous Conduction Mode (DCM)- In this mode, the current in the inductor is pulsating and it becomes zero for a part of switching time. So a regulated voltage is not received in DCM. But, the voltage can be regulated by connecting a feedback circuit from output to input.
In this tutorial, a non-isolated buck converter is designed which means the input and output share the same ground. The buck converter designed in this project will step down 12V DC to 5V DC with a tolerance limit of +/-0.5 V. The output voltage will be adjustable between 5V and 9V. Once the circuit is designed and assembled, the value of the output voltage and current will be observed using a multimeter. These values will indicate the efficiency of the buck converter designed in the project.
Components Required –
Fig.1 : List of Components required for Adjustable Closed Loop Buck Converter
Block Diagram –
Fig. 2: Block Diagram of Adjustable Closed Loop Buck Converter
Circuit Connections –
In this project, a closed loop buck converter operating in DCM mode is designed and the component values as per the DCM standard equations are calculated for the desired output.
The buck converter has the following circuit blocks –
1. DC source –
A 12V Battery is used as the input power source in the circuit.
2. Oscillator and Switching Mechanism –
For switching purpose a transistor and a diode are used as switching components.
The switching components has to operate on a specific frequency. This frequency is generated through an oscillator circuit. In this project, Arduino UNO is used to generate a PWM signal which provides the required frequency. Any other Arduino Board like Arduino Mega can also be used. In fact any microcontroller or microcontroller board which can output PWM can be used in the circuit. Arduino is chosen as it is the most popular prototyping board and can be easily programmed. Due to large community support, it is easy to learn and work on Arduino. The PWM signal is a train of the pulse which is used to turn ON and OFF the MOSFET. The MOSFET is used as the switching transistor in the circuit.
For switching purpose, a transistor and a diode are used as a switching components For the selection of the transistor, MOSFET is chosen as FETs are known for their fast switching speed and low RDS (ON) (drain to source resistance in ON state). In this configuration, the MOSFET is connected in high-side configuration. As in high side, the N-channel MOSFET requires a Bootstrap Circuitry or a Gate Driver IC for its triggering, this makes the driver more complicated. A P-channel MOSFET (shown as Q1 in the circuit diagram) is used in the circuit as it does not require a Gate Driver in its high side but it has high Rds (On) as compared to N-MOS. This results in more power loss. The MOSFET used in the circuit has its threshold voltage around 10V to 12V.
The switching time of the MOSFET and diode should be less than the rise and fall time of the PWM wave. The diode should offer low voltage drop in forward bias and the RDS (ON)of the MOSFET should be low. Always a gate to source resistance should be used to avoid any unwanted triggering of the MOSFET by external noise. It also helps in fast turning OFF the MOSFET by discharging its parasitic capacitance. A low value of the resistor (10E to 500E) can be used at the gate of MOSFET. This will solve the problem of ringing (parasitic oscillations) and inrush current in the MOSFET. The voltage level of the PWM signal should be greater than the threshold voltage of the MOSFET. So that the MOSFET can be turned ON fully with minimum RDS (ON ) .
The MOSFET cannot be triggered by the microcontroller as the microcontroller can generate a 5V PWM signal only. Therefore an additional IC IR2110 is used in the circuit to generate a PWM signal of 12V and the input to the IR2110 is provided by the microcontroller. IR2110 is a high and low side driver. It is a high speed (operational at high frequency) power MOSFET and IGBT driver with independent high and low side referenced output channels. The floating channels can operate up to 500V or 600 V. The IC is 3.3V logic compatible that is why it can be used with any microcontroller. The IC comes in a 14 Lead PDIP package. IR2110 has the following pin configuration –
Fig. 3: Table listing pin configuration of IR2110 IC
Another switching component used in the circuit is a diode. The switching time of the diode should be less than the rise and fall time of the PWM wave. The Arduino board generates a PWM wave having rise time 110ns and fall time of 90ns. The forward voltage drop of the diode should also be very low otherwise it will dissipate power which will further reduce the efficiency of the circuit. The diode should offer low voltage drop in forward bias and the RDS (ON)of the MOSFET should be low. So in this experiment, a BY399 diode is selected which suits best to the circuit design.
Before generating the PWM signal the switching frequency for the circuit needs to be decided. For this buck converter, a switching frequency of 20kHz is selected which will work fine for this converter design.
The duty cycle of the generated PWM signal is another important consideration as it will decide the active state of the MOSFET. The duty cycle can be calculated as follows –
Duty Cycle, D% = (Vout/Vin)*100
Desired output voltage, Vout = 5V
Input voltage, Vin = 12V
By putting all the values,
D% = 40% (approx.)
For generating 20 kHz PWM signal with 40% duty cycle, the Arduino board is programmed. The Arduino sketch required for generating the desired PWM output is attached in the tutorial. It can be downloaded and burnt to an Arduino board for use.
The higher is the frequency selected for switching components, the higher are the switching losses. This decreases the efficiency of the SMPS. But high switching frequency reduces the size of the energy storage element and improves the transient response of the output.
3. Energy Storage Element –
An inductor is used for storing the electrical energy in the form of magnetic field. So the inductor acts like an Energy Storage Element. An inductor of 500 uH value is used in the circuit. For an inductor, a transformer’s secondary or primary coil, relay coil or any standard inductor can be used which has the desired inductance value. The inductor current rating should be greater than the inductor ripple current so that the desired current at the output can be obtained.
4. Output Filtering Element –
As a filtering element, a capacitor (shown as C1 in the circuit diagram) is used at the output of the circuit. In normal operation of Buck converter circuit, the transistor Q1 turns ON and OFF according to the frequency of the oscillator circuit. This generates a train of the pulse at the inductor L1 and capacitor C1 as well as transistor Q1. As the capacitor is connected with inductor in both negative and positive cycle of the PWM signal. This makes an LC filter which filters the train of the pulse to produce a smooth DC at the output. The value of the capacitor can be calculated by using following equation of DCM –
Cmin >= (Iout(max)*(1-(Iout(max)/DIL))2)/Fs*DVo
Where,
Cmin = Minimum value of capacitor
Maximum output current limit forregulated output voltage, Iout(max)= 100mA
Switching Frequency, Fs = 20kHz
Considering Output Ripple Voltage, DVo = 100mV
DIL=Inductor Ripple Current/ Inductor Peak Current
Now for calculating unknown term DIL, following standard equation of DCM can be used –
DIL = ((Vin – Vout)*Ton)/(L)
As the capacitor value is inversely proportional to the output voltage, therefore, the value of capacitor for minimum output voltage i.e 5V should be calculated. So,
Desired output voltage, Vout = 5V
Input voltage, Vin = 12V
Ton = Active or ON time of MOSFET is given by
D = Ton/Ts
Ton = D*Ts
Where,
Switching Time, Ts = 50us ……..(since Ts = 1/fs)
Duty cycle, D= 0.4
Ton = (0.4*50*10-6)
Ton = 20us
Now by putting all the values,
DIL = ((12 – 5)*20*10-6)/(500*10-6)
DIL= 280mA
Now on putting all the values in capacitance equation,
Cmin >= (0.1*(1-(0.1/0.28))2)/(20*103*0.1)
Cmin >= 20uF (approx)
As it is the minimum value of capacitor required, so in the circuit a capacitor of standard value is used which can be easily available, so, capacitor of 47uF is taken.
The value of the capacitor should be greater than or equivalent to the calculated value. So that it is able to provide the desired current and voltage at the output. The capacitor used in the circuit must be of higher voltage rating than the output voltage. Otherwise, the capacitor will start leaking the current due to the excess voltage at its plates and will burst out. It is important that all the capacitors should be discharged before working on a DC power supply application. For this, the capacitors should be shorted with a screwdriver wearing insulated gloves.
5. Feedback circuit –
In the previous tutorial, it was seen that without any feedback circuit a high voltage at the output was received when there was no load connected. When any load at the output was connected then the output voltage dropped below the desired output voltage. so there was a need to regulate the output voltage by connecting a feedback circuit.
So in this circuit, a feedback is provided from the output terminal to the input terminal which regulates the output voltage even when no load is present at the output. The Feedback circuit has to calculate the error in the voltage and then the microcontroller automatically adjust the output voltage as per the desired voltage. This adjustment of the error voltage is managed by the Arduino sketch running on the board.
For providing feedback, a resistor ladder is used at the output(as shown in the circuit diagram). For calculating the value of resistor network, the maximum output voltage of the circuit in open loop must be known when no load is connected to the output. That will be the desired output voltage which should feed from the resistor divider network to the analog pin of the controller (as shown in circuit diagram). The output voltage should be equal to 5.2V as microcontroller provides the 5.2V as a reference voltage. The value of resistor network can be calculated as follows –
Fig. 4: Circuit Diagram of the Feedback Resistor Ladder
As per the resistor divider rule,
Vr= Vo*(R4/R3+R4)
Desired voltage to the analog pin, Vr = 5.2V
Assuming maximum Output voltage of Open Loop Buck Converter without load, Vo = 12V
Let’s assume R4 = 1K now R3 is
5.2= 12*(1000/R3+1000)
R3 = 1.5K (approx.)
So R3 = 1.5K and R4 = 1K
Now the power rating of both the resistance R3 and R4 can be
calculated as follow –
(For R3), P3 = (Vo-Vr)2/(R3)
By putting all the values,
P3 = 30mW (approx.)
(For R4), P4 = (Vr)2/(R4)
By putting all the values,
P4= 27mW (approx.)
The resistors with power rating greater than or equal to the calculated power rating should be used.
6. Output Voltage Adjustment –
For varying the output voltage a potentiometer is used at the output of the circuit (as shown in the circuit diagram). The potentiometer gets powered by the 5V supply of the Arduino board and then the analog pin of microcontroller sense the voltage of the potentiometer. After sensing the voltage, the microcontroller adjusts the duty cycle as per the desired output voltage. So by turning the knob of potentiometer, the output voltage can be varied as per the requirement.
How the circuit works –
Any SMPS has some switching components which turn on and off at high frequency and has some storage component which store the electrical energy while the switching components are in conduction state and discharge the stored energy to the output device while the switching components are in non-conduction state.
A simple Buck Converter consists of the inductor (L1), a diode (D1), a capacitor(C1) and a transistor which acts like a switch. Initially when the switch is open then the current in the circuit is zero. When for the first time the switch is closed then the inductor opposes the change in current and produces an opposing voltage at its terminal. This makes the diode reverse biased. The voltage drop across inductor counteracts the source voltage which results in less voltage at the output. When time elapses the rate of change of current decreases and the voltage drop across the inductor also decreases. In this state, the inductor starts storing energy in the form of magnetic field. The output capacitor is charged throughout the ON state. The stored charged in the capacitor provides the required current to the load in OFF state.
Fig. 5: Circuit Diagram showing ON state of switching Component in Buck Converter
When the switch opens, the input source is disconnected from the circuit and the current starts decreasing and becomes zero. As the inductor has stored energy in the previous cycle, it now acts as an energy source. Hence, the inductor creates a polarity across it. This is opposite in polarity as in the ON state. This makes the diode forward biased and the inductor now provides the current to the load through diode D1. When the stored charge in inductor starts reducing then the output voltage starts falling. Now the capacitor acts as a current source and keeps providing the current to the load until the next cycle i.e. ON state. The overall effect is that at the output a small DC voltage with high output current is obtained as compared to the input.
Fig. 6: Circuit Diagram showing OFF state of switching Component in Buck Converter
In the ON state, the Diode was in blocking Mode (OFF) and the Transistor was ON. In OFF state, the Diode was in conducting mode (ON) and the Transistor was OFF. So, a Buck Converter is having two switches, one is a transistor and another one is the diode. At a time only one of them conducts while other goes in non-conduction state.
This is how any buck converter operates. The buck converter designed in this project is closed i.e. a feedback circuit is added to it. The feedback is provided via a voltage divider network. The output voltage is sensed by the voltage divider resistor ladder and supplied to one of the microcontroller pin. The microcontroller board used in the project is Arduino. The in-built ADC channel of the Arduino converts the detected voltage into a digitized reading. The Arduino is programmed to compare the output voltage with a reference voltage and the difference between the two is the error voltage.
In order to compensate the error voltage, Arduino is programmed to change the duty cycle of the PWM signal controlling the transistor circuit. By changing the duty cycle of the PWM signal, the output voltage is modified to the desired output. As the output is drawn through a variable resistor, the output voltage can be varied within the desired range. The component values are already calculated considering the range of voltage required at the output.
Testing the circuit –
This buck converter has been designed to step down 12V DC to 5V DC.
Fig. 7: Prototype of Closed Loop Buck Converter designed on a breadboard
In this circuit, Input Voltage, Vin = 12V
Practically, Battery Voltage, Vin = 11.8V
On measuring voltage and current values with different loads at the output when duty cycle is set to 40 percent, following observations were taken –
Fig. 8: Table listing output voltage and current from Closed Loop Buck Converter for different loads in Buck Mode
So, it can be observed that a regulated voltage of 5.12 V can be drawn at output for a current of 90 mA when duty cycle is set to 40%.
On measuring voltage and current values with different loads at the output when duty cycle is set to 75 percent, following observations were taken –
Fig. 9: Table listing output voltage and current from Closed Loop Buck Converter for different loads in Boost Mode
So, it can be observed that a regulated voltage of 8.98 V can be drawn at output for a current of 89 mA when duty cycle is set to 75%.
The power efficiency of the circuit at maximum output current of 90 mA and output voltage at 5.12 V can be calculated as follow –
Efficiency % = (Pout/Pin)*100
(Output Power) Pout = Vout*Iout
(Output voltage) Vout = 5.12V
(Output current) Iout = 90mA
Pout = 5.12*0.09
Pout = 460mW (approx.)
(Input Power) Pin = Vin*Iin
(Input voltage) Vin = 11.8V
(Input Current) Iin = 55 mA (measured the input current using ammeter)
Pin = 11.8 *0.060
Pin = 649mW (approx.)
By putting all the values,
Efficiency % = (460/649)*100
Efficiency % = 70% (approx.)
It can be seen that the efficiency of this design is less as the power losses in the circuit are not considered. There are switching and conduction losses of diode and MOSFET, losses in the windings that surround the core, eddy current losses and hysteresis losses in the inductor, capacitor losses due to ESR (equivalent series resistance) and losses due to high Rds(on) of P-MOS.
This is a closed loop buck converter with non-isolated output and operating in DCM mode. It can be used as a low loss current source to drive LEDs or power portable self-powered devices. It can also be used as an interface between battery and components in CPU or notebooks where voltage demand is lower than the battery voltage.
Project Source Code
###
//Program to Code for Buck Converter with Input voltage = 12V and Adjustable and regulated Output voltage from 5V to 9V This code will generate a PWM (Pulse Width Modulation)signal of 20kHz with 50% duty cycle and can adjust the duty cycle as per the desired output voltage. */ #define TOP 799 // Fosc = Fclk/(N*(1+TOP)); Fclk = 16MHz, Fosc = 20kHz #define CMP_VALUE_HALF_DUTY 399 // 50% duty cycle #define FeedbackPin A5 // Adjustable pin of potentiometer at A5 #define Inputpin A4 // feedback pin of Voltage Divider at A4 #define R1plusR2_resistor 2.5 // variable of R1+R2 value #define R1_resistor 1.0 // variable of R1 value #define PWM 9 // PWM(Pulse Width Modulation) wave at pin 9 //// function declaration float Map_Feedback(); // function to map feedback values float Mapping_output_voltage(); //function to map potentiometer values float Mapping_output_voltage(){ // function definition int Input_Read = analogRead(Inputpin); //reading analog voltage from potentiometer and converting it to digital values in between 0 to 1023 float Compare_voltage = (((Input_Read*(1.0)/1024)*4)+5); // mapping the digital value into analog voltage of 5V to 9V return(Compare_voltage); // return the calculated output voltage } float Map_Feedback() { // function definition int Digital_Read = analogRead(FeedbackPin); // reading analog voltage form 0 to 5.2V and converting it to digital values in between 0 to 1023 float ADC_READ = (Digital_Read/1024.0)*5.2; // mapping the digital value into analog voltage of 0 to 5.2V float mapping_result = (ADC_READ*(R1plusR2_resistor/R1_resistor)); // calculating the actual output voltage return(mapping_result); // return the calculated output voltage } void setup() { // put your setup code here, to run once: pinMode(PWM,OUTPUT); // set 9 pin as output pinMode(FeedbackPin,INPUT); // set A5 pin as input pinMode(Inputpin,INPUT); // set A4 pin as input TCCR1A = 0; //reset the register TCCR1B = 0; //reset the register TCNT1 = 0; //reset the register TCCR1A |= (1<<COM1A1); // set output at non inverting mode TCCR1A |= (1<<WGM11); // selecting Fast PWM mode ICR1 = TOP; // setting frequency to 20KHz TCCR1B |= (1<< CS10)|(1<<WGM12)|(1<<WGM13); //Timer Starts OCR1A = CMP_VALUE_HALF_DUTY; // setting PWM of 50% duty cycle delay(1000); // delay for compensating the hardware transient time with software } void loop() { // put your main code here, to run repeatedly: float Compare_voltage_input = Mapping_output_voltage(); //read potentiometer value float actual_output_voltage = Map_Feedback(); // read feedback pin value if(actual_output_voltage > Compare_voltage_input){ //comparing actual output voltage with desired output voltage to find error in voltage OCR1A ++; // if error is positive the duty cycle is increased but it is decreased for } //P-MOSFET as it is triggered by low voltage else if(actual_output_voltage < Compare_voltage_input){ OCR1A --; // if error is negative the duty cycle is increased } }###
Circuit Diagrams
Project Video
Filed Under: Electronic Projects
Filed Under: Electronic Projects
Questions related to this article?
👉Ask and discuss on Electro-Tech-Online.com and EDAboard.com forums.
Tell Us What You Think!!
You must be logged in to post a comment.