public static long cal_inv(double temperature, double RW = 100, string METHOD = "poly3", double R1 = 10, double R2 = 10, double R3 = 10) { double rx; if (METHOD == "linear") { rx = LINEAR.caly(temperature) / 1000; } else { rx = POLY3.caly(temperature) / 1000; } double v_rxr1 = VREF_R * R1 / (rx + R1); double v_r2r3 = VREF_R * R3 / (R2 + R3); double ad_input = ((double)10 / 3 + 1 / RW * 200 / 3) * (v_r2r3 - v_rxr1); if (ad_input >= AD_MAX) { ad_input = AD_MAX; } else if (ad_input <= 0) { ad_input = 0; } long ret = (long)Math.Round((ad_input / VREF_AD) * AD_MAX); return(ret); }
public static long cal_inv_by_pts(double temperature, List <double> para, string METHOD = "poly3", double R1 = 10) { double rx; if (METHOD == "linear") { rx = LINEAR.caly(temperature) / 1000; } else { rx = POLY3.caly(temperature) / 1000; } double v_rxr1 = VREF_R * R1 / (rx + R1); long ret = (long)(para[0] + para[1] * v_rxr1); return(ret); }