This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BQ24725A: BQ24725A charge squance is not working

Part Number: BQ24725A

Tool/software:

I have been working on the BQ24725A for a while but there is a problem.

It works unstable, sometimes it works in some unknown cases, sometimes not.

So I need to check if the software configuration is good and if there is any other requirement for its charging to work.

Could you please check if the following configurations are suitable and inform me if another scenario or something else is needed?

(Parameters not set are default)

   bq24725a_init(&bq24725a, BQ24725A_ADDRESS);

    bq24725a_read_charge_option_register(&bq24725a);
    bq24725a_read_charge_voltage_register(&bq24725a);
    bq24725a_read_charge_current_register(&bq24725a);
    bq24725a_read_input_current_register(&bq24725a);

    bq24725a.registers.charge_current_register.bits.dachg0 = 0; //1024 -> 128 ma
    bq24725a.registers.charge_current_register.bits.dachg1 = 0;
    bq24725a.registers.charge_current_register.bits.dachg2 = 0;
    bq24725a.registers.charge_current_register.bits.dachg3 = 0; //default
    bq24725a.registers.charge_current_register.bits.dachg4 = 0;
    bq24725a.registers.charge_current_register.bits.dachg5 = 1; //2048mA
    bq24725a.registers.charge_current_register.bits.dachg6 = 0;

    bq24725a.registers.charge_voltage_register.bits.dacv_0 = 0;
    bq24725a.registers.charge_voltage_register.bits.dacv_1 = 0;
    bq24725a.registers.charge_voltage_register.bits.dacv_2 = 0;
    bq24725a.registers.charge_voltage_register.bits.dacv_3 = 0;
    bq24725a.registers.charge_voltage_register.bits.dacv_4 = 0;
    bq24725a.registers.charge_voltage_register.bits.dacv_5 = 0;
    bq24725a.registers.charge_voltage_register.bits.dacv_6 = 0;
    bq24725a.registers.charge_voltage_register.bits.dacv_7 = 0;
    bq24725a.registers.charge_voltage_register.bits.dacv_8 = 1; //4096mA
    bq24725a.registers.charge_voltage_register.bits.dacv_9 = 1; //8192mA
    bq24725a.registers.charge_voltage_register.bits.dacv_10 = 0;

    bq24725a.registers.input_current_register.bits.daciin_0 = 0;
    bq24725a.registers.input_current_register.bits.daciin_1 = 0;
    bq24725a.registers.input_current_register.bits.daciin_2 = 0; // 512 - default
    bq24725a.registers.input_current_register.bits.daciin_3 = 0;
    bq24725a.registers.input_current_register.bits.daciin_4 = 0;
    bq24725a.registers.input_current_register.bits.daciin_5 = 1; //4096mA

    bq24725a.registers.charge_options_register.bits.acoc_threshold_adjust = 0b10; // 1 -> 0
    bq24725a.registers.charge_options_register.bits.fault_hi_comparator_threshold_adjust = 0;
    bq24725a.registers.charge_options_register.bits.emi_sw_freq_adjust = 1; // 0-> 1
    bq24725a.registers.charge_options_register.bits.emi_sw_freq_enable = 1; // 0 -> 1
    bq24725a.registers.charge_options_register.bits.watchdog_timer_adjust = 0; // 1 -> 0
    bq24725a.registers.charge_options_register.bits.charge_inhibit = 0; // 1 -> 0

    bq24725a_write_charge_option_register(&bq24725a);
    bq24725a_write_charge_voltage_register(&bq24725a);
    bq24725a_write_charge_current_register(&bq24725a);
    bq24725a_write_input_current_register(&bq24725a);

Fatih YAZMAN

Thank you.

  • Hello Fatih,

    I have a few questions:

    Are you using an EVM or do you have your own board?

    Can you explain more on /how the charger is unstable? What is not stable?

    Best Regards,

    Christian.

  • Hi Christian,

    I am using a special board that we developed ourselves, I have attached the schematic of the BMS below.

    We have about 30 boards, some of them charge the battery well but some of them do not charge the battery, sometimes the boards that work do not work.

    Another problem is that if we do not connect a battery to the panel, the system never works with ac supply. It always chooses the battery as the supply source. But we see that the BMS detects ac supply in the "AC Adapter Indicator" regulator

    We tried to use the learning mode but after discharging the battery it would not charge.

    We don't know where the problem is and where we should focus.

    I don't know what else I can say, please feel free to ask any questions. I'm here to provide more details.

    In addition we use 3S battery pack.

    Thank you, Best Regards,

    Fatih.

  • Hello Fatih,

    What is the adpater voltage, does the adapter voltage change?

    What is the system load?

    Another problem is that if we do not connect a battery to the panel, the system never works with ac supply. It always chooses the battery as the supply source. But we see that the BMS detects ac supply in the "AC Adapter Indicator" regulator

    What the voltage on VCC when this occurs?

    Best Regards,

    Christian

  • Hello,

    We divided the circuits into two categories, the ones we think work “Circuit type 3” the ones we think don't work “Circuit type 1”

  • Hello Fatih,

    Can you confirm the charger does not fall under one of these conditions on the non-working board:

    Best Regards,

    Christian

  • Hello Christian,

    We apologize for the late reply, we checked all hardware requirements, all checked and there are no errors. The good news is that we were able to charge the battery by changing the configuration. The problem was probably caused by excessive current from the input and charging current.

    The ongoing problems are as follows:

    1. Bms does not supply the system only when AC adapter is connected.
    2. If there is no AC adapter in the system, the initializations are not as I wrote when the first power is applied. (I check all registers after writing) To solve this problem, I used the following code to reinit the bms when the “ac adapter indicated” register status changes.

    bq24725a_read_charge_option_register(&bq24725a);
    
    if ((ac_adapter_in == 0) && (bq24725a.registers.charge_options_register.bits.ac_adapter_in == 1)) {
       bms_init();
    }
    
    
    
    __delay_ms(1000);
    
    ac_adapter_in = bq24725a.registers.charge_options_register.bits.ac_adapter_in;
            
            

    And my new configuration is as follows

        bq24725a_init(&bq24725a, BQ24725A_ADDRESS);
    
        bq24725a_read_charge_option_register(&bq24725a);
        bq24725a_read_charge_voltage_register(&bq24725a);
        bq24725a_read_charge_current_register(&bq24725a);
        bq24725a_read_input_current_register(&bq24725a);
    
        bq24725a.registers.charge_current_register.bits.dachg0 = 0; //64 ma
        bq24725a.registers.charge_current_register.bits.dachg1 = 0; //128
        bq24725a.registers.charge_current_register.bits.dachg2 = 0; //256ma
        bq24725a.registers.charge_current_register.bits.dachg3 = 1; //512
        bq24725a.registers.charge_current_register.bits.dachg4 = 0; //1024
        bq24725a.registers.charge_current_register.bits.dachg5 = 0; //2048mA
        bq24725a.registers.charge_current_register.bits.dachg6 = 0;
    
        bq24725a.registers.charge_voltage_register.bits.dacv_0 = 0;
        bq24725a.registers.charge_voltage_register.bits.dacv_1 = 0;
        bq24725a.registers.charge_voltage_register.bits.dacv_2 = 0;
        bq24725a.registers.charge_voltage_register.bits.dacv_3 = 0;
        bq24725a.registers.charge_voltage_register.bits.dacv_4 = 0;
        bq24725a.registers.charge_voltage_register.bits.dacv_5 = 0;
        bq24725a.registers.charge_voltage_register.bits.dacv_6 = 0;
        bq24725a.registers.charge_voltage_register.bits.dacv_7 = 0;
        bq24725a.registers.charge_voltage_register.bits.dacv_8 = 1; //4096mA
        bq24725a.registers.charge_voltage_register.bits.dacv_9 = 1; //8192mA
        bq24725a.registers.charge_voltage_register.bits.dacv_10 = 0;
    
        bq24725a.registers.input_current_register.bits.daciin_0 = 0;
        bq24725a.registers.input_current_register.bits.daciin_1 = 0;
        bq24725a.registers.input_current_register.bits.daciin_2 = 0; // 512 - default
        bq24725a.registers.input_current_register.bits.daciin_3 = 1; //1024
        bq24725a.registers.input_current_register.bits.daciin_4 = 0;
        bq24725a.registers.input_current_register.bits.daciin_5 = 0; //4096mA
    
        bq24725a.registers.charge_options_register.bits.acoc_threshold_adjust = 0; // 1 -> 0
        bq24725a.registers.charge_options_register.bits.fault_hi_comparator_threshold_adjust = 0;
        bq24725a.registers.charge_options_register.bits.fault_low_comparator_threshold_adjust = 1;
        bq24725a.registers.charge_options_register.bits.emi_sw_freq_adjust = 0; // 0-> 1
        bq24725a.registers.charge_options_register.bits.emi_sw_freq_enable = 0; // 0 -> 1
        bq24725a.registers.charge_options_register.bits.watchdog_timer_adjust = 0; // 1 -> 0
        bq24725a.registers.charge_options_register.bits.charge_inhibit = 0; // 1 -> 0
        bq24725a.registers.charge_options_register.bits.learn_enable = 0;
    
        bq24725a_write_charge_option_register(&bq24725a);
        bq24725a_write_charge_voltage_register(&bq24725a);
        bq24725a_write_charge_current_register(&bq24725a);
        bq24725a_write_input_current_register(&bq24725a);


    Can you please help us to solve this problem?

  • Hello Fatih,

    I'm still confused. I have a few more questions:

    What is the system load?

    1. Bms does not supply the system only when AC adapter is connected.

    I'm confused on what this means. The AC adpater is not able to supply power to the system? Are the ACFETS damaged?

    Best Regards,

    Christian.

  • Hello

    "1. Bms does not supply the system only when AC adapter is connected."

    I meant that the system is not powered by ac when the battery is not connected to the system.

    No, the ACFETs are not damaged, they charge the battery. I received a question from a colleague, can I forward it?

    Hello,
    In a new project, I used the BQ24725A IC. When reviewing the datasheet, I noticed references to the Programmable Battery Depletion Threshold and the Battery Learn Function (mentioned in the "1. Features" article 5). To protect the battery, I don't want it to fully discharge. However, in my experiments, I couldn't manage to protect the battery.
    The datasheet frequently refers to the Charge Options register [12:11] and the Learn function. But these two bits(Depletion Comparator Treshold Adjust) only work together with the Learn function. The Learn function only sets the Learn Enable bit to 0 when the discharge rate is reached. With the Learn bit set to 0, I can't create any scenario to prevent my battery from fully discharging.
    Even if I use a digital EN signal to disconnect the battery power path from Vcc, the battery continues to discharge. As a result, the battery is completely drained, and when the AC adapter voltage returns, the circuit does not charge the battery again because the battery is no longer present in the circuit. Do you know a way to prevent the battery from fully discharging, by using the Learn function or through another method? Or how can I provide to charge the battery by AC when the battery died

    Best Wishes

  • Hello Fatih,

    Hello,
    In a new project, I used the BQ24725A IC. When reviewing the datasheet, I noticed references to the Programmable Battery Depletion Threshold and the Battery Learn Function (mentioned in the "1. Features" article 5). To protect the battery, I don't want it to fully discharge. However, in my experiments, I couldn't manage to protect the battery.
    The datasheet frequently refers to the Charge Options register [12:11] and the Learn function. But these two bits(Depletion Comparator Treshold Adjust) only work together with the Learn function. The Learn function only sets the Learn Enable bit to 0 when the discharge rate is reached. With the Learn bit set to 0, I can't create any scenario to prevent my battery from fully discharging.
    Even if I use a digital EN signal to disconnect the battery power path from Vcc, the battery continues to discharge. As a result, the battery is completely drained, and when the AC adapter voltage returns, the circuit does not charge the battery again because the battery is no longer present in the circuit. Do you know a way to prevent the battery from fully discharging, by using the Learn function or through another method? Or how can I provide to charge the battery by AC when the battery died

    Will you post this as a new question, so we can resolves the first question without confusion.

    What is the system load?

    Please answer this question. What is the voltage/current that the load is pulling?

    Best Regards,

    Christian

  • Hello, I'm sorry for the late answer. 

    The system load is designed for a 3S battery which is about 12V with a minimum 40mA and maximum of 220mA. 

    Best regards 

  • Hello Fatih,

    The system load is designed for a 3S battery which is about 12V with a minimum 40mA and maximum of 220mA. 

    VIN=18V

    V_BATT=3s 12V battery.

    V_BMS=??, What does V_BMS equal? what is the voltage/current that it is trying to pull?

    Best Regards,

    Christian.

  • Hello Christian,

    We have built the example circuit as seen in the photo. Our Vin corresponds to your Vadapter, and our Vbms corresponds to Vsystem.

    Our adapter voltage is the output of an AC-DC regulator, ranging between 17.80-18.30V after the initial moment.

    When there is no Vadapter present in the circuit, Vsys equals Vbat. Therefore, we mentioned that Vsys is the voltage of the 3S battery when you asked about it.

    When adapter voltage is applied to our circuit, Vsys becomes 16.3V. The current we draw varies depending on the operation of the circuit, ranging from a minimum of 40mA to a maximum of 220mA.

    Could you please clarify exactly what you mean by "voltage/current"? Are you referring to the ohm value or something else?

    Best regards,

  • Hello Mehmet,

    Thank you for the clarification,

    Our adapter voltage is the output of an AC-DC regulator, ranging between 17.80-18.30V after the initial moment.

    I see no obvious issue with your schemetic that would cause the adpater to drop from 18V to 1V at the system output. Have you tried using a different adpater, such as a power supply, to confirm thet it's not an issue with the adapter?

    Best Regards,

    Christian.