全局修改了电压换算单位

This commit is contained in:
stark1898y 2025-06-20 20:35:34 +08:00
parent 69c9ae25c3
commit 9631dfefc3
6 changed files with 18 additions and 16 deletions

View File

@ -168,13 +168,13 @@ void Preheat_Timer_Callback(void *parameter)
uint16_t Get_Stable_Reading(uint8_t cnt, uint32_t timeout_ms) uint16_t Get_Stable_Reading(uint8_t cnt, uint32_t timeout_ms)
{ {
uint32_t start = rt_tick_get(); uint32_t start = rt_tick_get();
uint16_t last = Get_Gas_VoltageAdcInt1000x(); uint16_t last = Get_Gas_VoltageInt1000x();
uint16_t current; uint16_t current;
uint8_t stable_count = 0; uint8_t stable_count = 0;
while ((rt_tick_get() - start) < timeout_ms) while ((rt_tick_get() - start) < timeout_ms)
{ {
current = Get_Gas_VoltageAdcInt1000x(); current = Get_Gas_VoltageInt1000x();
uint16_t diff = fabs(current - last); // 差值 uint16_t diff = fabs(current - last); // 差值
if (diff < STABLE_THRESHOLD) if (diff < STABLE_THRESHOLD)
@ -199,7 +199,7 @@ int APP_Calibration_Handle(void)
{ {
uint16_t gas_calibration_voltage = 0; uint16_t gas_calibration_voltage = 0;
uint8_t calibration_buf[2] = {0}; uint8_t calibration_buf[2] = {0};
// if (Get_Gas_VoltageAdcInt1000x() > 400 && Get_Gas_VoltageAdcInt1000x() < 900) // if (Get_Gas_VoltageInt1000x() > 400 && Get_Gas_VoltageInt1000x() < 900)
// { // {
// LED_OFF(r); // LED_OFF(r);
// LED_OFF(g); // LED_OFF(g);
@ -207,7 +207,7 @@ int APP_Calibration_Handle(void)
// LOG_D("传感器故障"); // LOG_D("传感器故障");
// return 0; // return 0;
// } // }
if (Get_Gas_VoltageAdcInt1000x() > (MQ_VOLTAGE_ALARM_DEFAULT - 1500) && Get_Gas_VoltageAdcInt1000x() < (MQ_VOLTAGE_ALARM_DEFAULT + 1000)) if (Get_Gas_VoltageInt1000x() > (MQ_VOLTAGE_ALARM_DEFAULT - 1000) && Get_Gas_VoltageInt1000x() < (MQ_VOLTAGE_ALARM_DEFAULT + 1000))
{ {
LOG_D("标定开始"); LOG_D("标定开始");
LED_OFF(g); LED_OFF(g);
@ -227,13 +227,14 @@ int APP_Calibration_Handle(void)
#if 1 #if 1
uint8_t i = 0; uint8_t i = 0;
uint16_t gas_buf[20] = {0}; uint16_t gas_buf[20] = {0};
rt_memset(gas_buf, 0, sizeof(gas_buf));
// 采集10s的ADC值 // 采集10s的ADC值
for (i = 0; i < 10; i++) for (i = 0; i < 10; i++)
{ {
gas_buf[i] = Get_Gas_VoltageInt1000x(); gas_buf[i] = Get_Gas_VoltageInt1000x();
if ((gas_buf[i] == 0) || (gas_buf[i] >= 0xfff)) if ((gas_buf[i] == 0) || (gas_buf[i] >= 5000)) // (3.3*1.784*1000)
{ {
Send_Laser_Alarm_Event(kNotCalibratedEvent);
return 0; return 0;
} }
rt_thread_mdelay(500); rt_thread_mdelay(500);
@ -454,7 +455,7 @@ int main(void)
{ {
SysControl.last_status = SysControl.status; SysControl.last_status = SysControl.status;
SysControl.status = kNormalDetectionEvents; SysControl.status = kNormalDetectionEvents;
rt_uint16_t voltage = Get_Gas_VoltageAdcInt1000x(); rt_uint16_t voltage = Get_Gas_VoltageInt1000x();
if (Sensor_device.detection_flag == kSensorAlarm) if (Sensor_device.detection_flag == kSensorAlarm)
{ {
if ((voltage > Sensor_device.alarm_value) && (voltage < MQ_VOLTAGE_HIGH_LIMIT)) if ((voltage > Sensor_device.alarm_value) && (voltage < MQ_VOLTAGE_HIGH_LIMIT))

View File

@ -57,7 +57,7 @@ extern uint16_t adc_buffer[ADC_BUFFER_SIZE];
int BSP_ADC_Init(void); int BSP_ADC_Init(void);
float Get_ADC_Average(TeAdcIndex index); uint16_t Get_ADC_Average(TeAdcIndex index);
float Get_ADC_Voltage(TeAdcIndex index); float Get_ADC_Voltage(TeAdcIndex index);

View File

@ -43,10 +43,10 @@
#define MQ_VOLTAGE_RATIO (1.74F) #define MQ_VOLTAGE_RATIO (1.74F)
// adc voltage 1000x // adc voltage 1000x
#define MQ_VOLTAGE_HIGH_LIMIT (4095U) #define MQ_VOLTAGE_HIGH_LIMIT (4500U)
#define MQ_VOLTAGE_LOW_LIMIT (100U) #define MQ_VOLTAGE_LOW_LIMIT (100U)
#define MQ_VOLTAGE_ALARM_DEFAULT (uint16_t)(2500U) #define MQ_VOLTAGE_ALARM_DEFAULT (uint16_t)(3650U)
// 甲烷 5 VOL% = 50,000 ppm = 100 LEL; 1 LEL = 500 ppm // 甲烷 5 VOL% = 50,000 ppm = 100 LEL; 1 LEL = 500 ppm
// 丙烷 2.2 VOL% = 22,000 ppm = 100 %LEL; 1 LEL = 220 ppm; 8 LEL = 1760 ppm; 10 LEL = 2200 ppm; // 丙烷 2.2 VOL% = 22,000 ppm = 100 %LEL; 1 LEL = 220 ppm; 8 LEL = 1760 ppm; 10 LEL = 2200 ppm;

View File

@ -154,16 +154,16 @@ INIT_PREV_EXPORT(BSP_ADC_Init);
* @param {TeAdcIndex} index * @param {TeAdcIndex} index
* @return {*} * @return {*}
*/ */
float Get_ADC_Average(TeAdcIndex index) uint16_t Get_ADC_Average(TeAdcIndex index)
{ {
uint32_t sum = 0; uint32_t sum = 0;
float average = 0; uint16_t average = 0;
for (uint8_t i = index; i < ADC_BUFFER_SIZE; i += NUM_OF_CHANNEL) for (uint8_t i = index; i < ADC_BUFFER_SIZE; i += NUM_OF_CHANNEL)
{ {
sum += _Get_ConversionVal(adc_buffer[i]); sum += _Get_ConversionVal(adc_buffer[i]);
} }
average = sum / ADC_TIMES; average = (uint16_t)(sum / ADC_TIMES);
return average; return average;
} }

View File

@ -351,7 +351,7 @@ int BSP_Ml307_Update (struct Ml307_Ops *ops, rt_uint8_t device_type, rt_uint8_t
ops->body->hw = (rt_uint8_t)Flash_Get_SysCfg (kHwVerId); ops->body->hw = (rt_uint8_t)Flash_Get_SysCfg (kHwVerId);
ops->body->sw = (rt_uint8_t)Flash_Get_SysCfg (kSwVerId); ops->body->sw = (rt_uint8_t)Flash_Get_SysCfg (kSwVerId);
rt_memcpy (ops->body->imei, &ml307, sizeof (ml307_sys_info)); // 直接赋值结构体数据 rt_memcpy (ops->body->imei, &ml307, sizeof (ml307_sys_info)); // 直接赋值结构体数据
ops->body->gas_voltage = Get_Gas_VoltageAdcInt1000x(); ops->body->gas_voltage = Get_Gas_VoltageInt1000x();
ops->body->product_work_temperature = 0x32; ops->body->product_work_temperature = 0x32;
ops->body->work_duration = work_duration; ops->body->work_duration = work_duration;
ops->body->device_status = device_state_flag; ops->body->device_status = device_state_flag;

View File

@ -39,7 +39,8 @@ TsSensor_t Sensor_device;
uint16_t Get_Gas_VoltageInt1000x(void) uint16_t Get_Gas_VoltageInt1000x(void)
{ {
uint16_t voltage = (Get_ADC_Average(kGasAdc) * 3.3 / 4096) * MQ_VOLTAGE_RATIO * 1000;
uint16_t voltage = Get_ADC_Voltage(kGasAdc) * MQ_VOLTAGE_RATIO * 1000;
LOG_D("Get_Gas_VoltageInt1000x = %04d", voltage); LOG_D("Get_Gas_VoltageInt1000x = %04d", voltage);
return voltage; return voltage;
} }
@ -189,7 +190,7 @@ static void Sensor_detection_thread_entry(void *param)
if(calibration_flag == 1) if(calibration_flag == 1)
break; break;
rt_thread_mdelay(1000); rt_thread_mdelay(1000);
Get_Gas_VoltageAdcInt1000x(); Get_Gas_VoltageInt1000x();
} }
rt_uint16_t alarm_value = Flash_Get_SysCfg(kAlarmLValueId); // 获取系统报警阈值; rt_uint16_t alarm_value = Flash_Get_SysCfg(kAlarmLValueId); // 获取系统报警阈值;