测控111 毕业论文最终版 - 图文(6)

2020-02-20 23:08

开始 初始化 读取数据

4.5 A/D转换模块程序设计

是否大于阀值 N Y 声光报警 延时 结束 图4-4 报警模块程序流程图

由于STM32单片机自带ADC转换器,所以减少了很多外部硬件电路,但是编程这一块也是非常重要的。在本次编程设计中采用的是DMA模式,只要ADC转换一次,DMA就搬运一次,达到指定的次数后完成一次传输。在本程序中采用的是使能扫描模式并且连续转换,由软件触发ADC转换。采样速率设置为50MHz,选择1通道传输数据。转换后的数据储存在指定的地址。最后对转换后的数据进行处理,找出其最大值和最小值,除去最大值和最小值后计算出平均值。再根据公式算出实际电压值并与阀值进行比较,判断是否报警。AD转换流程如图4-5所示。

第 21 页 共 31页

开始 触发器复位 启动转换 转换是否结束 N Y 触发器复位 读取A/D转换后的数据 结束 图4-5 A/D转换模块流程图

5 系统调试

5.1 各模块调试

5.1.1 传感器测试

根据MQ-3酒精气体传感器的特性,接好电源后,分别测出传感器在洁净空气中和有酒精气体的空气中的输出信号,发现输出信号有变化,并且当传感器与酒精气体源的距离发生变化时,输出信号也会发生变化,由此可以判断传感器是完好的。

5.1.2充电电路测试

TP4054接入5V电源时,通过3引脚给锂电池充电,当测得3引脚电压大于

第 22 页 共 31页

2.9V时,此时的充电电流比较稳定。测得锂电池的输出电压为3.7V,通过KV5033低压差调节器后,输出电压为3.3V。此电压完全能使整个系统正常工作。

5.1.3报警电路测试

首先,检查连线是否正确,排除断路、短路等情况,然后通过编程设置蜂鸣器和LED灯与单片机相连的脚为高或低电平,然后观察蜂鸣器和LED灯的变化。

5.1.4系统整体调试

在对系统整体进行调试时,系统上电后,要先等待大约1分钟左右,目的是要给传感器预热,这样测试的准确度才会更高。当系统上电后,显示屏上会显示Alcometer的字样,以及初始浓度0.000mg/L。并且此时黄色指示灯亮。大约一分钟过后就可以开始测试了,在测试的时候,找了一瓶45度的白酒,将系统的传感器靠近瓶口,此时显示屏上的浓度值会发生变化,大约10秒钟后显示出最终的测量结果,当浓度值大于阀值时,就会进行声光报警。此时蜂鸣器响、红色指示灯亮,黄色指示灯灭。

5.2 调试结果分析

5.2.1测试数据

给整个系统上电后,等待大约一分钟左右,然后找了一瓶45度的白酒,打开瓶盖,然后把系统上的酒精传感器对准瓶口,开始测试数据。表5-1是对45度的白酒进行测试的一组酒精浓度数据,单位是mg/L。

表5-1 检测仪测量的数据

0.544 0.528 0.496 0.507 0.560 0.523 0.517 0.565 0.512 0.523 0.517 0.512 根据表中的数据去掉最大值和最小值算出平均值为0.524 mg/L。

从市面上买了一个精确度为±0.1%F.S的酒精气体传感器,由它测量的浓度值为1.5g/L,这个浓度是指血液中的酒精浓度(BAC),它与呼气酒精浓度(BrAC)的关系为:BAC=BrAC×2200。所以由标准仪器测量的呼气酒精浓度为BrAC=0.682mg/L。

因此可以算出整个设计的相对误差为:g=(0.682-0.524)/0.682=0.2

由于整个设计设定的阀值酒精浓度为0.24mg/L,转化为电压为1.41V,所以只要传感器的输出电压大于1.41V,即所测的酒精浓度超过0.24mg/L时,蜂鸣器就会报警。

5.2.2误差分析

以上测试数据是对45度白酒测量12次的结果,测量结果精度较高,精度达到0.001mg/L。该酒精浓度检测仪存在一些误差,该误差主要由以下几方面造成。

1) 传感器在工作时会受到温度、湿度的影响,若在恶劣的环境中工作,传

第 23 页 共 31页

感器所占的误差比例会更大。

2) 在测量的过程中,传感器与酒精源的距离也会给测量结果带来误差,距离酒精源越近,酒精的浓度越大。

3)酒精检测仪在运行过程中,单片机会受到软件的控制,从而产生软件延时误差。

4) 在使用的过程中,若锂电池的供电电压不稳定,会直接影响传感器的输出,从而产生误差。

5.3 调试中的问题及解决方案

1)整个硬件模块不能正常供电

最初选择的低压差调节器的型号是AMS1117,它是一款正电压输出低压差的三端线性稳压芯片,主要是利用它将锂电池的输出电压降至3.3V来给整个系统供电。虽然在一些资料上看到它可以将输出电压调节为3.3V,但是在实际调试过程中发现ASM1117的输出电压比我们想要的3.3V要小得多,所以整个系统不能正常工作。于是就把低压差调节器换成了KV5033芯片,KV5033的输出电压刚好能达到我们想要的3.3V电压。而且它能够稳定的输出3.3V电压来给整个系统供电。换成KV5033低压差调节器后系统就能正常供电了。

2)传感器输出信号不正常

调试传感器模块时,在最初调试的过程中,我是在系统刚一开始供电就开始调试,结果发现传感器的输出信号变化不正常,与预期的结果不一样,但是过几分钟后调试就正常了,刚开始一直以为是电路哪里有问题,但是找了很久都没有找到问题所在,后来再去查看MQ-3传感器的使用手册的时候发现,MQ-3传感器在使用之前要先预热5分钟,才能使它的精度达到最高,误差最小。

3)蜂鸣器不报警

调试声光报警模块的时候,当整个系统正常运行时,发现酒精浓度值超过阀值时只有指示灯亮,蜂鸣器不响,就去检查电路,觉得电路没问题,就以为是程序报警模块写错了,又去检查程序,检查过后还是没有发现问题所在。我在这一部分浪费了不少时间,还是没结果。后来找同学帮忙看一看才发现是一个非常小的问题,由于自己的粗心把与蜂鸣器相连的三极管接反了。

4)LED指示灯指示不正确

在最后的调试中,感觉程序和硬件都做好了,但是就是有一个指示灯该亮的时候不亮,后来才发现是程序中的输出引脚与硬件中的对不上,更改过来后运行就正常了。

5)传感器的输出结果与电位器的分压比较结果指示不正常

为了方便后期软件编程过程中的调试,在最初的硬件设计过程中,本来是想

第 24 页 共 31页

将传感器的输出信号与电位器的分压(设置成阀值)作比较,通过一个LED指示灯来指示比较结果。传感器输出信号接入比较器的正向端,电位器的分压接入比较器的负向端,预期的结果是当传感器的输出信号大于电位器分压(即正向端电压大于负向端电压)时,比较器输出为低电平,LED指示灯亮,否则LED指示灯不亮。但是在调试过程中发现比较器的输出端很难达到一个能让LED指示灯亮的低电平,即使LED指示灯亮了,肉眼也很难分辨出来。调试了很久也没找出问题在哪里,后来考虑到这个模块对硬件的整体设计和功能没有什么影响,于是决定把这个模块取消了,现在在产品成品上还遗留着那个电位器。

6)酒精浓度换算误差较大

根据图2-4气敏元件灵敏度特性曲线来查找酒精传感器的输出电压与酒精浓度的关系,最初为了计算方便,就把酒精传感器在纯净空气中的电压与在酒精气体中输出电压的比值与酒精浓度看成是成正比的关系,根据这种关系来换算酒精浓度值,后来发现误差太大。就去查找原因,通过查找MQ-3酒精传感器的使用手册发现,并不是根据上述的关系来换算的,酒精传感器在纯净空气中的电压值与在酒精气体中输出的值电压的比值与酒精浓度并不是成正比的。而是如式5-1这样的一种关系:

alcometer = (V0/Vs-1.12)/(-0.101)-1.1 (5-1)

根据这种关系换算出来的酒精浓度值与实际值更接近。但是受环境温度和湿度的影响,还是存在一些误差。

6结论

综上所述,基于STM32的便携式酒精气体浓度检测仪的设计与实现,软、硬件的设计和调试都已完成,所有性能及功能基本已达到了设计指标的要求。硬件电路的设计结构简单,准确度较高,声光报警模块均工作正常。软件的编程设计过程中,采用的是分模块设计,各个子程序之间互不影响,大大的简化了整个编程过程,这样还有益于后期的调试和升级。该酒精浓度检测系统不仅可以用于检测空气中的酒精含量,对人身安全起保护作用,而且也可以用于其他需要进行酒精浓度检测的环境中。

第 25 页 共 31页


测控111 毕业论文最终版 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:ERP实际操作题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: