60AH Lead Acid Battery charging with micocontroller

Status
Not open for further replies.

chanchal.chauhan

Full Member level 4
Joined
Apr 23, 2009
Messages
216
Helped
5
Reputation
10
Reaction score
1
Trophy points
1,298
Location
Hyderabad, India
Activity points
2,539
Hello Guys,

Please share some ideas regarding battery charging with microcontroller.
We have CC, CV and float mode for charging.
Lets share u all guys views what are you thinking about that?

Any views on h/w or firmware side.

Regards
Chanchal
 

Hi,

In India and Bangladesh, most inverters (linear types) make use of phase angle control for battery charging. Some use microcontrollers to achieve this, while others use operational amplifiers. If you know how to use microcontrollers, then it is not very tough.

The line voltage (220VAC) is cut (phase angle control) and supplied to a 140V transformer tapping. By how much it is cut or at which angle the triac or SCR is fired is varied by a pot, which in turn controls the charging current. At the output, the MOSFETs which operate in push-pull mode in the inverter, now act as rectifiers (internal body diodes used) and the output supplied to the battery.
The line voltage is sensed and the output voltage after phase angle control is kept constant by altering the phase angle and so, constant current charging is implemented.

Battery voltage is sensed and when it reaches approximately 13.5v, charging is terminated or charging current is reduced, depending on the designer's wish.

I have developed a code with ATMEGA16 for a single microcontroller inverter, where the ATMEGA16 controls the entire inverter, including charging. Here I have successfully charged 100AH battery at 14A, with ability to charge at currents in the range of 5A to 25A adjusted by a variable resistor.

Hope this helps.
Tahmid.

Added after 5 minutes:

Hi,
Another approach is using PSM (Pulse Skipping Modulation). Microchip has an application note on how to use this with PICs (I just can't find it right now). Search for that file, and you'll find it. There's also another file, which I can't seem to find right now, it's by Toshiba, where they control a 500W motor using PSM.

Hope this helps.
Tahmid.
 
There is one approach with microcontroller that is by using PWM pulse.
We have to charge Battery @7A until battery voltage reaches to 14.4v after that we have to fixed the voltage 14.4 v until battery current reaches to <2Amps after reaching current less that 2 Amps we have to reduce the battery voltage to 13.6v that is float charging ( self discharging).

Is it correct ?
After that I want to know what method (algorithm) we have to use to do those all steps.

Please think on that approach and let me know what u guys will think.

Any help is greatly appreciative.

Regards
Chanchal
 

Hi,
In such a case, I think it should be like this:
1) Sense battery voltage with ADC and check if it is > 14.3v or not.
2) If not, measure the voltage across the shunt and adjust PWM to that point where voltage across shunt corresponds to ~7A.
3) Continue checking battery voltage.
4) If 14.4V reached, adjust PWM to gain 14.4v charging voltage.
5) Sense Voltage drop across shunt to check amount flowing through to battery.
6) If current < 2A, adjust PWM to gain 13.6v charging voltage.
7) If not continue checking voltage.

I think that should be about it.

Hope this helps.
Tahmid.
 
Yah that is true but I am looking here for logic that means

How can we compensate the PWM pulse w.r.t. current and voltage?


Regards
Chanchal
 

Hi,
Because its a heath generating process, & batterys charge is temp. dependent; you have to sense the batterys temperature too...
K.
 
chanchal.chauhan said:
Yah that is true but I am looking here for logic that means

How can we compensate the PWM pulse w.r.t. current and voltage?


Regards
Chanchal

Hi,
For either AVR or PIC, you can use the internal hardware PWM module. We can have a 0.1R shunt (for example's sake). So, when I = 2A, V = IR = 2*.1 = 0.2V = (0.2/5)*1024 = 40 as read by the ADC.
We can have a timebase of 30kHz with varying duty cycle.
There will be feedback from the charging voltage so that uC can sense using ADC. Then, eg, let's say battery voltage HAS reached 14.4v, so now, uC will check if ADC reading from shunt is > or < 40. If > 40, the duty cycle will be reduced (using either OCRxx (in AVR) or CCPRxL (in PIC) ).

I hope I have made myself clear.

Hope this helps.
Tahmid.

Added after 4 minutes:

karesz said:
Hi,
Because its a heath generating process, & batterys charge is temp. dependent; you have to sense the batterys temperature too...
K.

We can have an LM35 or similar sensor placed close to the battery, and sense, when the temperature rises above some x'C, the duty cycle, in turn the charging voltage, will reduce.

Hope this helps.
Tahmid.

Added after 4 minutes:

sijincool said:
tahmid could u pls tell me were can i find reference for Pulse skipping modulation

You might try this:
ww1.microchip.com/downloads/en/AppNotes/00216a.pdf

Hope this helps.
Tahmid.
 
I read some where about PID algorithm to control the voltage and current of battery in closed loop. I am thinking on that aspect.

Hope its more clear.

That to be PID loop on the firmware of microcontroller.

How can we implement PID algorithm?

Is it more complicated to implement ?

How to tune PID algorithm?

How to select the Proportional, Differential and integral gain?

For temperature point of view if we used heat shink near to MOSFET and diodes it will solve the problem. Hope I am correct.

Please think on that aspects and shares u all guys view point.

Regards
Chanchal

Added after 5 minutes:

hi sijincool,

Could u please explain more details about what problem u face on watchdog timer.

Are you used microcontroller over there?

How u have done?

Regards
Chanchal
 

chanchal.chauhan said:
...For temperature point of view if we used heat shink near to MOSFET and diodes it will solve the problem. Hope I am correct. ..
Hi,
NO_sorry, you are falsh with that!
What here interesting is: are the cell temperatures & not some parts selfheating/temp. in your circuit!
As Tahmid wrote too: "We can have an LM35 or similar sensor placed close to the battery, " is your solution...
K.
 
chanchal what i made was a simple batterry charger.

a microcontroller to monitor the battery ststus and to take the actions required.

i got a problem with the electromagnetic intrerference from the large transformer core.

that is pic gets hangs on long run.

then only i added a WDT to the program now it works fine.
 
Which h/w is best suitable for battery charging with UC?

I mean there will be some topology like Buck, Boost, Flyback, Full bridge etc.

which is better for my battery charging application?

Please if u have any query for that let me know.


Regards
Chanchal
 

Thanks for your response.

Any other point which i have to know is which topologies are suitable for battery charging ?

Regards
Chanchal
 

Hi,
I think you should use Half-Bridge to step down from high voltage DC (rectified AC line) to low voltage DC. From this low voltage DC, I think you should use buck topology to control charging voltage.
Or, you could use a linear transformer and phase control or pulse skipping modulation for output voltage control. Phase control or pulse skipping can either be done on the primary side OR the secondary side. I think secondary side control will give you more precision control.

Hope this helps.
Tahmid.
 
Hi,
Since this is SMPS, there will be noise. But, it is upto the designer to remove this by using appropriate filters, LC filters especially.
As of audible noise, there is no problem with that.

Hope this helps.
Tahmid.
 
Hi there,

I am working on a battery-charging algorithm driven by a dsPIC30F3011 16-bit controller. The algorithm is a constant current /constant voltage (CC/CV). Assuming the battery voltage is initially at 10.4 V, it has to be charged to 13.9 V since I am using a lead acid battery. The charging period is called the bulk stage where it charges to 13.9 V and remains there for 1 hour, which is the absorption stage. The battery charging is removed at the start of the absorption stage and at the end of 1 hour, the voltage on the battery dips to 13.7 V which is the float stage.

The current behaves as follows: During initial stag, when V=10.4 V, current is zero. then it rises and attains max. value during bulk stage. at the beginning of the absorption stage, the current starts dropping and attains a constant low during float stage.

How do I implement this as a program? Could you help me oout with an algorithm? How do I configure the timers and ADCs and how many such modules do I use?

Any suggestions from you would be appreciated.

Regards

kautilya
 

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…