纯记事本,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");
}
}