1.传感器原理:
MP-2 烟雾检测气体传感器采用多层厚膜制造工艺,在微型 Al2O3
陶瓷基片的两面分别制作加热器和金属氧化物半导体气敏层,封装
在金属壳体内。当环境空气中有被检测气体存在时传感器电导率发
生变化,该气体的浓度越高,传感器的电导率就越高。采用简单的
电路即可将这种电导率的变化转换为与气体浓度对应的输出信号
MP-2技术手册
2.技术参数:
3.测试电路:
4.测试敏感特性曲线
6.思路:
根据测试电路和敏感特性曲线可以看MP-2类似于铂电阻,内部的电阻阻值会随浓度变化,串联负载电阻对地产生一个电压,而且这个电压曲线是非线性的。所以要根据这个曲线进行曲线拟合得到一个拟合公式,来计算真实的烟雾浓度。
在线曲线拟合
把采集的的电压带入到这个多项式中得到的y就是当前的浓度。
提示:如果想提高精度,输入的参数越多拟合的越准
6.验证
- 原理图
2.代码
void adc1_thread_main(void *parameter)
{
while(1)
{
/* 滤波5次 */
for(rt_uint8_t i = 0;i < 5;i++)
{
adc_read();
h2s_vol += h2s_a;
yw_vol += yw_b;
co_vol += co_c;
o2_vol += o2_d;
rt_thread_mdelay(100);
}
/* 换算 */
h2s_vol = h2s_vol / 5;
yw_vol = yw_vol / 5;
co_vol = co_vol / 5;
o2_vol = o2_vol / 5;
/* 计算浓度 */
yw_ppm_count(yw_vol);
oc_ppm_count(co_vol);
h2s_ppm_count(h2s_vol);
o2_ppm_count(o2_vol);
rt_kprintf("********换行*******\n");
h2s_vol = yw_vol = co_vol = o2_vol = 0;
rt_thread_mdelay(500);
}
}
/* 烟雾浓度换算 */
static rt_uint16_t yw_ppm_count(double x)
{
double a =0 ,b = 0,c = 0,d = 0;
double ax =0 ,bx = 0,cx = 0,dx = 0;
double y;
a = x * x * x * x * x;
b = x * x * x * x;
c = x * x * x;
d = x * x ;
ax = 0.0001923 * a;
bx = 0.006017 * b;
cx = 0.07267 * c;
dx = 0.425 * d;
y = ax - bx + cx - dx + (1.267 * x) + 1.209;
y = y * 1000;
rt_kprintf("yw_y = %dppm\n",(int)y);
return (rt_uint16_t)y;
}
3.打印结果