一个用于计算BQ24133芯片参数的java程序

纯记事本,java环境直接运行就行。从下一行开始复制即可。

import javax.print.DocFlavor.STRING;

public class test { // 这里的test是文件名,在java中,文件名要和类名一致

    public static double get_v_div(double v, double r1, double r2) {

        // vcc->R1->R2->GND

        return v * r2 / (r1 + r2);

    }

    public static double get_I_precharge(double V_iset) {

        double R_SR = 10.0 / 1000.0;

        return V_iset / (200.0 * R_SR);

    }

    public static double get_I_CHG(double V_iset) {

        double R_SR = 10.0 / 1000.0;

        return V_iset / (20.0 * R_SR);

    }

    public static double get_I_DPM(double v) {

        double R_AC = 20.0 / 1000.0;

        return v / (20.0 * R_AC);

    }

    public static double get_I_term(double v) {

        double R_AC = 20.0 / 1000.0;

        return v / (200.0 * R_AC);

    }

    public static double get_V_ISET(double R1, double R2) {

        double V_ref = 3.3;

        return get_v_div(V_ref, R1, R2);

    }

    public static double get_V_acset(double R1, double R2) {

        // vcc->R1->R2->GND

        double V_ref = 3.3;

        return get_v_div(V_ref, R1, R2);

    }

    public static void cal_V_ovpset() {

        System.out.println("****************process of v_ovpset*************");

        double V_in = 15.0;

        double V_in_max = 17.0;

        double V_in_min = 13.0;

        double R1, R2;

        String my_str;

        R1 = 100.0;

        R2 = 0.001;

        int cnt = 0;

        do {

            if (get_v_div(V_in_max, R1, R2) > 1.6) {

                break;

            }

            R2 += 1.0;

            if (cnt++ > 10000)

                break;

        } while (true);

        /*********************** */

        my_str = String.format("V_ovpset: R1=%fK,\tR2 should less than %fK", R1, R2);

        System.out.println(my_str);

        R2 = 0.001;

        cnt = 0;

        do {

            if (get_v_div(V_in_min, R1, R2) > 0.5) {

                break;

            }

            R2 += 0.1;

            if (cnt++ > 10000)

                break;

        } while (true);

        my_str = String.format("V_ovpset: R1=%fK,\tR2 should greater than %fK", R1, R2);

        System.out.println(my_str);

        /********************** */

        R2 = 0.001;

        cnt = 0;

        do {

            if (get_v_div(V_in, R1, R2) > 1.6) {

                break;

            }

            R2 += 0.1;

            if (cnt++ > 10000)

                break;

        } while (true);

        my_str = String.format("V_ovpset: R1=%fK,\tR2 should less than %fK", R1, R2);

        System.out.println(my_str);

        R2 = 0.001;

        cnt = 0;

        do {

            if (get_v_div(V_in, R1, R2) > 0.5) {

                break;

            }

            R2 += 0.1;

            if (cnt++ > 10000)

                break;

        } while (true);

        my_str = String.format("V_ovpset: R1=%fK,\tR2 should greater than %fK", R1, R2);

        System.out.println(my_str);

        return;

    }

    public static void cal_I_chg() {

        System.out.println("****************process of v_iset*************");

        int cnt;

        double R1, R2;

        String my_str;

        cnt = 0;

        R1 = 100.0;

        R2 = 0.001;

        do {

            if (get_I_CHG(get_V_ISET(R1, R2)) > 1.0) {

                break;

            }

            R2 += 1.0;

            if (cnt++ > 10000)

                break;

        } while (true);

        my_str = String.format("V_ISET to bat: R1=%fK,\tR2 should less than %fK, for a small AMP= %f", R1, R2, 10.);

        System.out.println(my_str);

        return;

    }

    public static void cal_I_dpm() {

        System.out.println("****************process of i_acset*************");

        int cnt;

        double R1, R2;

        String my_str;

        cnt = 0;

        R1 = 100.0;

        R2 = 0.001;

        do {

            if (get_I_DPM(get_V_acset(R1, R2)) > 1.1) {

                break;

            }

            R2 += 1.0;

            if (cnt++ > 10000)

                break;

        } while (true);

        my_str = String.format("V_ACSET from adapter: R1=%fK,\tR2 should less than %fK ,the AMP= %f ", R1, R2, 1.1);

        System.out.println(my_str);

        return;

    }

    public static double get_Rt1(double R_t2, double R_THcold, double V_LTF) {

        double R_t1;

        R_t1 = 1.0 / V_LTF - 1.0;

        R_t1 /= 1.0 / R_t2 + 1.0 / R_THcold;

        return R_t1;

    }

    public static double get_Rt2(double R_THcold, double R_THhot, double V_LTF, double V_TCO) {

        double R_t2;

        R_t2 = R_THcold * R_THhot * (1.0 / V_LTF - 1.0 / V_TCO);

        R_t2 /= R_THhot * (1.0 / V_TCO - 1) - R_THcold * (1.0 / V_LTF - 1);

        return R_t2;

    }

    public static void cal_ntc() {

        System.out.println("****************process of ntc*************");

        double t1, t2;

        double B, Rt[], R;

        int id;

        double V_REF = 3.3;

        double V_LTF = 73.5 / 100;// * V_REF;

        double V_HTF = 47.2 / 100;// * V_REF;

        double V_TCO = 44.7 / 100;// * V_REF;

        double R_THcold;

        double R_THhot;

        double R_t1, R_t2;

        String my_str;

        Rt = new double[150];

        t2 = 273.15 + 25;

        R = 10000.0;

        B = 3987;

        t1 = 0 + 273.15;

        id = 0;

        do {

            Rt[id] = R * Math.exp(B * (1.0 / t1 - 1.0 / t2));

            // my_str = String.format("%f\t%f", t1 - 273.15, Rt[id]);

            // System.out.println(my_str);

            t1 += 1;

            if (++id >= 150)

                break;

        } while (true);

        /*****************************/

        R_THcold = Rt[0] / 1000;

        R_THhot = Rt[60] / 1000;

        my_str = String.format(" R_THcold=%fK,\tR_THhot=%fK", R_THcold, R_THhot);

        System.out.println(my_str);

        R_t2 = get_Rt2(R_THcold, R_THhot, V_LTF, V_TCO);

        R_t1 = get_Rt1(R_t2, R_THcold, V_LTF);

        my_str = String.format(" Rt1=%fK,\tRt2=%fK", R_t1, R_t2);

        System.out.println(my_str);

        /***************************************** */

        R_THhot = 4.911;

        my_str = String.format(" R_THcold=%fK,\tR_THhot=%fK", R_THcold, R_THhot);

        System.out.println(my_str);

        R_t2 = get_Rt2(R_THcold, R_THhot, V_LTF, V_TCO);

        R_t1 = get_Rt1(R_t2, R_THcold, V_LTF);

        my_str = String.format(" Rt1=%fK,\tRt2=%fK", R_t1, R_t2);

        System.out.println(my_str);

        R_THcold = 27.28;

        my_str = String.format(" R_THcold=%fK,\tR_THhot=%fK", R_THcold, R_THhot);

        System.out.println(my_str);

        R_t2 = get_Rt2(R_THcold, R_THhot, V_LTF, V_TCO);

        R_t1 = get_Rt1(R_t2, R_THcold, V_LTF);

        my_str = String.format(" Rt1=%fK,\tRt2=%fK", R_t1, R_t2);

        System.out.println(my_str);

        return;

    }

    public static void main(String[] args) {

        System.out.println("*******************************************");

        System.out.println("***************hello world******************");

        System.out.println("this process is going to calculating the parameter of the bq24133");

        System.out.println("***************writen by xtx****************");

        System.out.println("***************the language used is java****************");

        System.out.println("***************date: 2024-11-18****************");

        System.out.println("");

        System.out.println("***************start working****************");

        cal_V_ovpset();

        cal_I_chg();

        cal_I_dpm();

        cal_ntc();

        System.out.println("the process finished");

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值