Hello, im trying to build a buck boost converter based of the classick buck converter circuit with the arduino providing the switching frequency.
In my case i am using the arduino nano to generate a switching frequency of 50khz, although i have reached up to 100khz so that is an option aswell.
The buck converter works, converting 12v to 60v however as soon as a load is applied to the output of the buck boost comverter, the voltage drops down to around 35v!
Can anyone with some knowledge of buck converters explain to my why this is caused? Is there a solution to increase the maximum possible load?
A few things i have thought of
diode losses
(such a large loss seems a bit extreme for this?)
bad power mosfet? Tried changing to a few others, still getting voltage drops
duty cycle? Tried changing it around, less duty cycle draws less idle current, higher percentage duty cycle draws more idle current, mosfet is hotter.
"The buck converter works, converting 12v to 60v " Hint: A buck converter bucks the voltage down to something less than its input. A boost converter does the opposite it boosts the voltage above its input voltage. A SEPIC converter is a combination of both a buck and boost so it will control the output voltage anywhere within its input range, above or below the input voltage. Your current on the input will be the ratio of the voltage plus the inefficiencies. So a boost with a load of 1A at 50V from a 10V supply will require 5A+ at the input.
You didn't say what the load current is but as gilshultz says, the energy has to come from the input side and if you are boosting the voltage, you need more current into the boost circuit.
i.e. You are boosting voltage and cutting current...
Low voltage in and higher voltage out.
High current in and lower current out.
In buck mode it works the opposite and you can get more current-out than you feed-in (at lower voltage out).
That's only true for switchmode regulators. A linear regulator only steps-down and you can't get more current-out than you feed-in. Linear regulators are not as efficient and they tend to get hot (or hotter).
Power (wattage) = Voltage X Current.
And the energy has to be stored in the inductor and capacitor.
Normally, the duty cycle is controlled by feedback to maintain/control the voltage.
The feedback loop has to be quite responsive to control a boost converter and this is best realised using an analog circuit. Using a microcontroller to read an analog voltage, convert it to a digital representation then use that to adjust the duty cycle of a timer is rather heavy weight.
Here is a very simple but effective boost converter using a 555 timer IC. I've tested such a circuit up to about 350 volts. As for the layout, it is best to keep the feedback circuit away from the inductor. 50 - 555 Circuits
I was testing some Buck Converter cct's this week and then saw an advert for a 9A 300W Buck converter .. at that price I order 5 will receive it today.
I do not understand how you are going to get 90V out of a buck converter with 12V in. If it were a boost or SEPIC converter that would make sense to me.
hello, thanks for all the replies. Heres some updates and a bit more info i probably should of added:
(Edit: sorry i keep mixing up buck and buck-boost converter) 60v from a (buck-boost) converter is perfectly possible, already have one tl494 based 12v to 60v stepup however i need two step-ups and im a little tight on budget right now
this leads me on to what the load is going to be, im going to be powering a +-60v amplifier which will be drawing about 500w, im doing this by using two isolated 12v 30A smps power supplies going into two separate boost converters. This means each boost converter will be handling 250w.
So far i have moved onto a new circuit that sends feedback to the Arduino nano. the nano changes the duty cycle based on the voltage feedback (of course run through a voltage divider)
int potentiometer = A0; //The input from the potentiometer is A0
int feedback = A1; //The feedback input is A1
int PWM = 3; //Digital pin D3 por PWM signal
int pwm = 250; //Initial value of PWM width
void setup() {
Serial.begin(9600);
pinMode(potentiometer, INPUT);
pinMode(feedback, INPUT);
pinMode(PWM, OUTPUT);
TCCR2B = TCCR2B & B11111000 | B00000001; // pin 3 and 11 PWM frequency of 31372.55 Hz
}
void loop() {
float voltage = 500; //We read the value of the potentiometer, which is the desired value
float output = analogRead(feedback); //We read the feedback, which is the real value
//If the desired value is HIGHER than the real value, we increase PWM width
if (voltage > output)
{
Serial.println("trying to increase output voltage. pwm: " + String(pwm));
pwm = pwm-1;
pwm = constrain(pwm, 1, 254);
delay(90);
}
//If the desired value is LOWER than the real value, we decreaase PWM width
if (voltage < output)
{
Serial.println("trying to decrease output voltage. pwm: " + String(pwm));
pwm = pwm+1;
pwm = constrain(pwm, 1, 254);
delay(90);
}
analogWrite(PWM,pwm); //Finally, we create the PWM signal
}
on 500 ohm load, the buck-boost converters output jumps up to 120v, the arduino attempts to pull the voltage back down by increasing the duty cycle to around ~90%, however it struggles to pull it back to 60v
on no load arduino is managing to hold the buck boost converter at 60v, however it is very unstable, as expected of a microcontroller
the mosfet im using /SVF7N65F is getting pretty hot, can anyone recommend me a better switching mosfet? i have lots of large transistors around from old power supplies, would a transistor be more effective e.g 2sc2625 NPN
note I am not using a potentiometer, the potentiometers value is pre-set to 500 on the float "voltage"
I would rather not buy buck boost converter boards as personally it would be nice to try and make one especially with all the parts i have hanging around