全局修改了电压换算单位
This commit is contained in:
parent
69c9ae25c3
commit
9631dfefc3
|
@ -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))
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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); // 获取系统报警阈值;
|
||||||
|
|
Loading…
Reference in New Issue