全局修改了电压换算单位

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)
{
uint32_t start = rt_tick_get();
uint16_t last = Get_Gas_VoltageAdcInt1000x();
uint16_t last = Get_Gas_VoltageInt1000x();
uint16_t current;
uint8_t stable_count = 0;
while ((rt_tick_get() - start) < timeout_ms)
{
current = Get_Gas_VoltageAdcInt1000x();
current = Get_Gas_VoltageInt1000x();
uint16_t diff = fabs(current - last); // 差值
if (diff < STABLE_THRESHOLD)
@ -199,7 +199,7 @@ int APP_Calibration_Handle(void)
{
uint16_t gas_calibration_voltage = 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(g);
@ -207,7 +207,7 @@ int APP_Calibration_Handle(void)
// LOG_D("传感器故障");
// 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("标定开始");
LED_OFF(g);
@ -227,13 +227,14 @@ int APP_Calibration_Handle(void)
#if 1
uint8_t i = 0;
uint16_t gas_buf[20] = {0};
rt_memset(gas_buf, 0, sizeof(gas_buf));
// 采集10s的ADC值
for (i = 0; i < 10; i++)
{
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;
}
rt_thread_mdelay(500);
@ -454,7 +455,7 @@ int main(void)
{
SysControl.last_status = SysControl.status;
SysControl.status = kNormalDetectionEvents;
rt_uint16_t voltage = Get_Gas_VoltageAdcInt1000x();
rt_uint16_t voltage = Get_Gas_VoltageInt1000x();
if (Sensor_device.detection_flag == kSensorAlarm)
{
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);
float Get_ADC_Average(TeAdcIndex index);
uint16_t Get_ADC_Average(TeAdcIndex index);
float Get_ADC_Voltage(TeAdcIndex index);

View File

@ -43,10 +43,10 @@
#define MQ_VOLTAGE_RATIO (1.74F)
// adc voltage 1000x
#define MQ_VOLTAGE_HIGH_LIMIT (4095U)
#define MQ_VOLTAGE_HIGH_LIMIT (4500U)
#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
// 丙烷 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
* @return {*}
*/
float Get_ADC_Average(TeAdcIndex index)
uint16_t Get_ADC_Average(TeAdcIndex index)
{
uint32_t sum = 0;
float average = 0;
uint16_t average = 0;
for (uint8_t i = index; i < ADC_BUFFER_SIZE; i += NUM_OF_CHANNEL)
{
sum += _Get_ConversionVal(adc_buffer[i]);
}
average = sum / ADC_TIMES;
average = (uint16_t)(sum / ADC_TIMES);
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->sw = (rt_uint8_t)Flash_Get_SysCfg (kSwVerId);
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->work_duration = work_duration;
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 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);
return voltage;
}
@ -189,7 +190,7 @@ static void Sensor_detection_thread_entry(void *param)
if(calibration_flag == 1)
break;
rt_thread_mdelay(1000);
Get_Gas_VoltageAdcInt1000x();
Get_Gas_VoltageInt1000x();
}
rt_uint16_t alarm_value = Flash_Get_SysCfg(kAlarmLValueId); // 获取系统报警阈值;