Tuesday, November 13, 2012

35W Solar Charge Controller

Hello Everyone!!!!!!!!!!

This project is focused and contributed to all the students all over the world who face serious power failure issues. Hence, we have great news for all the students around the world facing great power failures. 

RnD Labs have designed a 35W Solar Charge Controller to be integrated with online inverters of 300VA capacity running with single 12V Battery and one 35W Standard Solar Panel. This 300VA UPS will light up one table lamp and one table fan of total capacity 65W for 4 hours. Generally, we have 2 hours power(E.B.) minimum in the night and that should allow children/students to get up early morning 4am and study well. 

The Charge specifications are 12V, 3A capacity, enough to charge a battery for UPS Systems. Thus, giving a suitable time of power backup during failures.

Few technical details and as generous as always we have provided the Schematic and the Program. Please feel free to copy, copy-left ©

(Note: The copyleft symbol may not be supported in Internet Explorer)

Functionally this Charge Controller does:

1. Generally keep the battery on full voltage condition. 
2. Prevent the battery from over-charging. 
3. Prevent the battery from supplying power to solar panels during nights.   

Electrical Specifications:
Battery Voltage: 12V DC
Charge Voltage: 13.7 V DC
Charge current: 3A 


The prototype is under construction and once the construction is fully completed, we shall upload the tested working development board and pictures.
 

 Downloads:

Schematic: Click Here(PDF)
Main Program: Click Here(main.c)

Complete Program:

#include<htc.h>
#define _XTAL_FREQ 8000000

__CONFIG(FOSC_INTOSCIO & WDTE_OFF & PWRTE_OFF & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF );


#define Battery PORTAbits.RA2
#define Switch PORTCbits.RC2
#define Voltage_level 0x00            //Set the threshold value here

unsigned int adc_value,adc_value1,adc_value2=0;


void main()
{
OSCCON=0b01110101;            //Setting internal oscillator in 8MHz
CMCON0=0x00;                //Disable the comparators

ANSEL=0b00000100;            //Set RA2 as Analog
TRISA=0b00000100;            //Set RA2 as input
TRISC=0b00000000;            //Set port C as output

ADCON1=0b00100000;            //select analog clock as FOSC/32
ADCON0=0b10001000;            //Select analog input channel as RA2

while(1)
    {
    ADON=1;                    //Start ADC
    __delay_us(100);        //Wait for acquisition time
    GO_nDONE=1;                //Start conversion
    while(GO_nDONE);        //wait until conversion to be done
    ADON=0;                    //Stop ADC

    adc_value1=ADRESL;                      //Read Lower 8bit registers
    adc_value2=(ADRESH<<8);                 //Read the higher 2 bits and shift it in to 8th and 9th position using shift function
    adc_value=adc_value2|adc_value1;        //OR both after reading to make a 10bit value
       
    if(adc_value>=Voltage_level)            //Compare with the voltage level and switch On/OFF the charging
    Switch=1;
    else
    Switch=0;


    }


}

No comments:

Post a Comment