static bool initialized = false;
static double co2_zp_volt = -1;
-static double slope_value = -1;
+static double slope_value = 10000;
void co2_sensor_close(void)
{
static inline double __value_to_volt(unsigned int value)
{
- return (double)value
- * (double)(CO2_SENSOR_REF_VOLTAGE / CO2_SENSOR_VALUE_MAX)
- / CO2_SENSOR_VOLTAGE_GAIN;
+ return (double)value * CO2_SENSOR_REF_VOLTAGE / CO2_SENSOR_VALUE_MAX / CO2_SENSOR_VOLTAGE_GAIN;
}
static double __calc_slope(double zp_volt, double sec_volt, double x_axis_diff)
double sec_volt = -1;
double x_axis_diff = -1;
- retv_if(zero_point_v <= second_point_v, -1);
+ retvm_if(zero_point_v <= second_point_v, -1, "%u - %u", zero_point_v, second_point_v);
retv_if(second_point_ppm <= 400, -1);
co2_zp_volt = __value_to_volt(zero_point_v);
sec_volt = __value_to_volt(second_point_v);
- x_axis_diff = log400 - log(second_point_ppm);
-
+ x_axis_diff = log400 - log10(second_point_ppm);
slope_value = __calc_slope(co2_zp_volt, sec_volt, x_axis_diff);
return 0;
/* Example */
#ifdef USE_EXAMPLE_CODE
- if (slope_value < 0)
+ if (slope_value > 0)
co2_sensor_set_calibration_values(CO2_SENSOR_DEFAULT_VALUE_ZP,
- CO2_SENSOR_DEFAULT_VALUE_1000, 1000);
+ 1000, CO2_SENSOR_DEFAULT_VALUE_1000);
if (voltage >= co2_zp_volt)
return 400;
ppm = pow(10, (voltage - co2_zp_volt)/slope_value + log400);
+// if (ppm > 10000)
+// ppm = 10000;
#endif
return (unsigned int)ppm;