Re: batteriopladning firmware spænding mode problem

  • Thread starter chanchal.chauhan
  • Start date
C

chanchal.chauhan

Guest
Hej,

Jeg bruger PIC 18F1330 microcontroller til min batteriopladning ansøgning.
Her er jeg kontrollerende Batteri strøm i CC mode & Batterispænding i CV-tilstand i lukket kredsløb.
Men her i CV-mode mit batteri nuværende & Pulse er varierende.

Nedenfor er nærmere oplysninger om min kode.

# include <htc.h>

void osc_init ();
void delay (unsigned int k);
void adc_init ();
void read_volt ();
void read_current ();
void pwm_init ();
lang Multiplication16bit (int Mutiplicand, int Multiplier);

const unsigned int ref_voltage = 2867; / / 14.0v
const unsigned int ref_voltage1 = 2847; / / 13.9V
const unsigned int ref_current = 1332; / / 6.5Amps
unsigned int duty_cycle = 9.280, duty_cycle1 = 960;
void main ()
(
lang vinde, gain2;
unsigned int gain1, gain3;
TRISB = 0b00000000;
TRISA = 0b01010011;
osc_init (); / / 16MHz indre ocillator
adc_init (); / / ADC init
while (1)
(
read_volt (); / / Vs
gevinst = Multiplication16bit (adc_voltage, 666);
gevinst = vinde * 5;
gain1 = få>> 10; / / Batterispænding
read_current ();// Is
gain2 = Multiplication16bit (adc_current, 360);
gain2 = gain2 * 5;
gain3 = gain2>> 10; / / Batteri nuværende
if (gain1> = ref_voltage) / /
(
flag = 1;
if (gain1 == ref_voltage)
(
duty_cycle;
duty_cycle1;
)
anden
(
duty_cycle; / / Gåned
- duty_cycle1;
)
)
else / / CC Mode
(
if (gain3> = ref_current)
(
flag = 0;
if (gain3 == ref_current)
(
duty_cycle;
duty_cycle1;
)
anden
(
duty_cycle; / / Gåned
- duty_cycle1;
)
)
anden
(
if (flag == 1)
(
duty_cycle;
duty_cycle1;
if (gain1 <ref_voltage1) / / ref_voltage1
(
- duty_cycle;
duty_cycle1;
)
)
anden
(
- duty_cycle;
duty_cycle1;
)
)
)

if (duty_cycle> = 9728)
(
duty_cycle = 9.728;
duty_cycle1 = 512 / / 480
)
if (duty_cycle <= 6400)
(
duty_cycle = 6.400; / / 6.399
duty_cycle1 = 3.840;
)
pwm_init (); / / PWM initilisation
)
)

void adc_init ()
(
ADCON1 = 0b00001100;
ADCON2 = 0b10001010; / / Tacq = 1.2usec
ADCON0 = 0b00000000;

)
void read_volt ()
(
i = 0;
for (i = 0; i <16; i ) / / Gennemsnitsberegnings 16 gange
(
ADCON1 = 0b00001100;
ADCON2 = 0b10001010; / / Tacq = 1.2usec
ADCON0 = 0b00000000; / / AN0 spænding
Adon = 1;
GODONE = 1;
while (GODONE) continue;
/ / GODONE = 0;
ADIF = 0;
adc_voltage = 0;
adc_voltage = (ADRESH <<

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

ADRESL;
result_temp = adc_voltage result_temp;
)
adc_voltage = result_temp/16;
result_temp = 0;

)
void read_current ()
(
i = 0;
for (i = 0; i <16; i ) / / Gennemsnitsberegnings 16 gange
(
ADCON1 = 0b00001100;
ADCON2 = 0b10001010; / / Tacq = 1.2usec
ADCON0 = 0b00000100; / / AN1 nuværende
Adon = 1;
GODONE = 1;
while (GODONE) continue;
ADIF = 0;
adc_current = 0;
adc_current = (ADRESH <<

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" />

ADRESL;
result_temp1 = adc_current result_temp1;
)
adc_current = result_temp1/16;
result_temp1 = 0;
/ / Flag = 1;
)Enhver hjælp er meget anerkendende.

Hilsen
ChanchalLagt efter 2 minutter:chanchal.chauhan skrev:

Hej,Jeg bruger PIC 18F1330 microcontroller til min batteriopladning ansøgning.

Her er jeg kontrollerende Batteri strøm i CC mode & Batterispænding i CV-tilstand i lukket kredsløb.

Men her i CV-mode mit batteri nuværende & Pulse er varierende.Nedenfor er nærmere oplysninger om min kode.# include <htc.h>void osc_init ();

void delay (unsigned int k);

void adc_init ();

void read_volt ();

void read_current ();

void pwm_init ();

lang Multiplication16bit (int Mutiplicand, int Multiplier);const unsigned int ref_voltage = 2867; / / 14.0v

const unsigned int ref_voltage1 = 2847; / / 13.9V

const unsigned int ref_current = 1332; / / 6.5Amps

unsigned int duty_cycle = 9.280, duty_cycle1 = 960;

void main ()

(

lang vinde, gain2;

unsigned int gain1, gain3;

TRISB = 0b00000000;

TRISA = 0b01010011;

osc_init (); / / 16MHz indre ocillator

adc_init (); / / ADC init

while (1)

(

read_volt (); / / Vs

gevinst = Multiplication16bit (adc_voltage, 666);

gevinst = vinde * 5;

gain1 = få>> 10; / / Batterispænding

read_current ();// Is

gain2 = Multiplication16bit (adc_current, 360);

gain2 = gain2 * 5;

gain3 = gain2>> 10; / / Batteri nuværende

if (gain1> = ref_voltage) / /

(

flag = 1;

if (gain1 == ref_voltage)

(

duty_cycle;

duty_cycle1;

)

anden

(

duty_cycle; / / Gåned

- duty_cycle1;

)

)

else / / CC Mode

(

if (gain3> = ref_current)

(

flag = 0;

if (gain3 == ref_current)

(

duty_cycle;

duty_cycle1;

)

anden

(

duty_cycle; / / Gåned

- duty_cycle1;

)

)

anden

(

if (flag == 1)

(

duty_cycle;

duty_cycle1;

if (gain1 <ref_voltage1) / / ref_voltage1

(

- duty_cycle;

duty_cycle1;

)

)

anden

(

- duty_cycle;

duty_cycle1;

)

)

)if (duty_cycle> = 9728)

(

duty_cycle = 9.728;

duty_cycle1 = 512 / / 480

)

if (duty_cycle <= 6400)

(

duty_cycle = 6.400; / / 6.399

duty_cycle1 = 3.840;

)

pwm_init (); / / PWM initilisation

)

)void adc_init ()

(

ADCON1 = 0b00001100;

ADCON2 = 0b10001010; / / Tacq = 1.2usec

ADCON0 = 0b00000000;)

void read_volt ()

(

i = 0;

for (i = 0; i <16; i ) / / Gennemsnitsberegnings 16 gange

(

ADCON1 = 0b00001100;

ADCON2 = 0b10001010; / / Tacq = 1.2usec

ADCON0 = 0b00000000; / / AN0 spænding

Adon = 1;

GODONE = 1;

while (GODONE) continue;

/ / GODONE = 0;

ADIF = 0;

adc_voltage = 0;

adc_voltage = (ADRESH <<
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" /> ADRESL;

result_temp = adc_voltage result_temp;

)

adc_voltage = result_temp/16;

result_temp = 0;)

void read_current ()

(

i = 0;

for (i = 0; i <16; i ) / / Gennemsnitsberegnings 16 gange

(

ADCON1 = 0b00001100;

ADCON2 = 0b10001010; / / Tacq = 1.2usec

ADCON0 = 0b00000100; / / AN1 nuværende

Adon = 1;

GODONE = 1;

while (GODONE) continue;

ADIF = 0;

adc_current = 0;

adc_current = (ADRESH <<
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kølig" border="0" /> ADRESL;

result_temp1 = adc_current result_temp1;

)

adc_current = result_temp1/16;

result_temp1 = 0;

/ / Flag = 1;

)Enhver hjælp er meget anerkendende.Hilsen

Chanchal
 

Welcome to EDABoard.com

Sponsor

Back
Top