|
|
@ -41,15 +41,18 @@ HPP272 m_H2o2Sensor_HPP272; // H2O2传感器 |
|
|
|
int32_t m_h2o2sensor_detectId = -1; |
|
|
|
#endif
|
|
|
|
|
|
|
|
static void onAdcCaptureThreadId(void const* argument) { |
|
|
|
static void onAdcCaptureThreadId(void const* argument) { Hardware::ins().onAdcCaptureThread(); } |
|
|
|
static void onH2O2CaptureThreadId(void const* argument) { Hardware::ins().onH2O2CaptureThread(); } |
|
|
|
|
|
|
|
void Hardware::onAdcCaptureThread() { |
|
|
|
while (1) { |
|
|
|
osDelay(30); |
|
|
|
m_Heater_electricCurrentAdc.updateAdcValToCache(); |
|
|
|
m_Heater_temperatureAdc.updateAdcValToCache(); |
|
|
|
heater_read_temperature_data(); // 为了调试打印方便
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
static void onH2O2CaptureThreadId(void const* argument) { |
|
|
|
void Hardware::onH2O2CaptureThread() { |
|
|
|
while (1) { |
|
|
|
osDelay(1000); |
|
|
|
|
|
|
@ -77,16 +80,16 @@ void Hardware::init() { |
|
|
|
m_Heater_ctrlGpio.initAsOutput(PC6, kxs_gpio_nopull, true, false); |
|
|
|
m_Heater_safeCtrlGpio.initAsOutput(PC7, kxs_gpio_nopull, true, false); |
|
|
|
// m_Heater_electricCurrentAdc.initialize(&hadc1, ADC_CHANNEL_0); //暂时注释掉,板子少了一个ADC,该ADC用于H2O2浓度
|
|
|
|
m_Heater_temperatureAdc.initialize(&hadc1, ADC_CHANNEL_1); // PA0
|
|
|
|
m_Heater_temperatureAdc.initialize("HeaterTemp", &hadc1, ADC_CHANNEL_1); // PA1
|
|
|
|
|
|
|
|
osDelay(2000); // 等待传感器上电
|
|
|
|
|
|
|
|
#ifdef H2O2_SENSOR_TYPE_HMP110
|
|
|
|
|
|
|
|
ZASSERT(huart2.Init.BaudRate == 19200); |
|
|
|
ZASSERT(huart2.Init.StopBits == UART_STOPBITS_2); |
|
|
|
m_H2o2Sensor_ModbusBlockHost.initialize(&huart2); |
|
|
|
m_H2o2Sensor_H2O2Adc.initialize(&hadc1, ADC_CHANNEL_10); //
|
|
|
|
ZASSERT(huart3.Init.BaudRate == 19200); |
|
|
|
ZASSERT(huart3.Init.StopBits == UART_STOPBITS_2); |
|
|
|
m_H2o2Sensor_ModbusBlockHost.initialize(&huart3); |
|
|
|
m_H2o2Sensor_H2O2Adc.initialize("H2O2", &hadc1, ADC_CHANNEL_0); //
|
|
|
|
m_H2o2Sensor_HMP110.init(&m_H2o2Sensor_ModbusBlockHost); |
|
|
|
|
|
|
|
if (m_H2o2Sensor_HMP110.ping(1)) { |
|
|
@ -167,7 +170,10 @@ int32_t Hardware::heater_read_temperature_data() { |
|
|
|
// float ppm = (ma - 4) / (20 - 4) * 2000;
|
|
|
|
int32_t adcv = m_Heater_temperatureAdc.getCacheVal(); |
|
|
|
int32_t ma = (adcv / 4095.0 * 3.3 * 1000) / 150.0; |
|
|
|
int32_t temp = (ma - 4) / (20 - 4) * (3000 - 0) + 0; |
|
|
|
// int32_t temp = (ma - 4) / (20 - 4) * (3000 - 0) + 0;
|
|
|
|
int32_t temp = (ma - 4) / (20 - 4) * (2500 - 0) + 0; |
|
|
|
|
|
|
|
// ZLOGI(TAG, "tadcv: %d ma:%d temp %d", adcv, ma, temp);
|
|
|
|
return temp; // C*10
|
|
|
|
} |
|
|
|
|
|
|
@ -217,8 +223,9 @@ int32_t Hardware::h2o2_sensor_read_sub_ic_reg(int32_t add, uint16_t* val, size_t |
|
|
|
} |
|
|
|
int32_t Hardware::h2o2_sensor_data(report_h2o2_data_t* readdata) { |
|
|
|
#ifdef H2O2_SENSOR_TYPE_HMP110
|
|
|
|
int32_t ecode = m_H2o2Sensor_HMP110.read_cache_errorcode(); |
|
|
|
int32_t h2o2adcVal = m_H2o2Sensor_H2O2Adc.getCacheVal(); |
|
|
|
int32_t ecode = m_H2o2Sensor_HMP110.read_cache_errorcode(); |
|
|
|
int32_t h2o2adcVal = m_H2o2Sensor_H2O2Adc.getCacheVal(); |
|
|
|
|
|
|
|
HMP110::hmp110_sensordata_t sensordata; |
|
|
|
m_H2o2Sensor_HMP110.read_cache_sensor_data(&sensordata); |
|
|
|
|
|
|
@ -234,6 +241,8 @@ int32_t Hardware::h2o2_sensor_data(report_h2o2_data_t* readdata) { |
|
|
|
readdata->temp = sensordata.temp; |
|
|
|
readdata->saturation = 0; |
|
|
|
|
|
|
|
// ZLOGI(TAG, "h2o2 adc:%d ma:%d ppm:%d", h2o2adcVal, h2o2ma, h2o2ppm);
|
|
|
|
|
|
|
|
ZLOGI(TAG, "ecode: %d ppm:%d, rh:%d, temp:%d, df_ptemp:%d, ah:%d, mr:%d, wbt:%d, eh:%d", //
|
|
|
|
ecode, //
|
|
|
|
h2o2ppm, //
|
|
|
|