THE CIRCUIT COMPONENTS IS USED HERE CAN HANDLE UP TO 400V DC AND 1000W.
COMPONENTS ARE USED HERE
- IGBT – 25N120
- DIODES – RHRP30120
- IGBT DRIVER – TLP350
- FEED BACK BY RESISTOR NETWORK
- ATMEGA328 AT 31KHz PWM
PROGRAM
//feed back by 180k and 21.5k
//adc value —389 FOR 230V dc (1.89)
int outputtvolt=230, adcvalue=389;
int dutyratio=160,pwmpin=3;
void setup()
{
setPwmFrequency(pwmpin, 1);
analogWrite(pwmpin,dutyratio);
Serial.begin(9600);delay(10);
Serial.println(“BOOST CONVERTER 48V”);
}
void loop()
{
int a=analogRead(0);delay(100);
//a=a*.20;
a=(a*outputtvolt)/adcvalue;
Serial.println(a);delay(1);
/*
if(a>80) ////case 1 –output is open state, ie no load
{
dutyratio=0;
}
else */
if(a>50) ////case 2 –output is more voltage than requried
{
dutyratio=dutyratio-1;
if(dutyratio<1)dutyratio=0;
analogWrite(pwmpin,dutyratio);
}
else if (a<10) ////case 3–input is open state, ie no battery or solar
{
dutyratio=160;
analogWrite(pwmpin,dutyratio);
}
/*
else if (a<35) ////case 4–input power is very low , ie battery or solar just connected
{
dutyratio=dutyratio+10;
if(dutyratio>220)dutyratio=220;
analogWrite(pwmpin,dutyratio);
}
*/
else if (a<45) ////case 5 –output is less voltage than requried
{
dutyratio=dutyratio+1;
if(dutyratio>220)dutyratio=220;
analogWrite(pwmpin,dutyratio);
}
}
void setPwmFrequency(int pin, int divisor) {
byte mode;
if(pin == 5 || pin == 6 || pin == 9 || pin == 10) {
switch(divisor) {
case 1: mode = 0x01; break;
case 8: mode = 0x02; break;
case 64: mode = 0x03; break;
case 256: mode = 0x04; break;
case 1024: mode = 0x05; break;
default: return;
}
if(pin == 5 || pin == 6) {
TCCR0B = TCCR0B & 0b11111000 | mode;
} else {
TCCR1B = TCCR1B & 0b11111000 | mode;
}
} else if(pin == 3 || pin == 11) {
switch(divisor) {
case 1: mode = 0x01; break;
case 8: mode = 0x02; break;
case 32: mode = 0x03; break;
case 64: mode = 0x04; break;
case 128: mode = 0x05; break;
case 256: mode = 0x06; break;
case 1024: mode = 0x7; break;
default: return;
}
TCCR2B = TCCR2B & 0b11111000 | mode;
}
}
/**
* Divides a given PWM pin frequency by a divisor.
*
* The resulting frequency is equal to the base frequency divided by
* the given divisor:
* – Base frequencies:
* o The base frequency for pins 3, 9, 10, and 11 is 31250 Hz.
* o The base frequency for pins 5 and 6 is 62500 Hz.
* – Divisors:
* o The divisors available on pins 5, 6, 9 and 10 are: 1, 8, 64,
* 256, and 1024.
* o The divisors available on pins 3 and 11 are: 1, 8, 32, 64,
* 128, 256, and 1024.
*
* PWM frequencies are tied together in pairs of pins. If one in a
* pair is changed, the other is also changed to match:
* – Pins 5 and 6 are paired on timer0
* – Pins 9 and 10 are paired on timer1
* – Pins 3 and 11 are paired on timer2
*
* Note that this function will have side effects on anything else
* that uses timers:
* – Changes on pins 3, 5, 6, or 11 may cause the delay() and
* millis() functions to stop working. Other timing-related
* functions may also be affected.
* – Changes on pins 9 or 10 will cause the Servo library to function
* incorrectly.
*
* Thanks to macegr of the Arduino forums for his documentation of the
* PWM frequency divisors. His post can be viewed at:
* http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235060559/0#4
*
*/