居家必备神器——甲醛检测仪

2017-09-085万
精华项目
AI 快速预览详细 收起
本文介绍了如何DIY一款便携式甲醛检测仪,主要配件包括HCHO甲醛传感器和DFRduino UNO R3主控板。通过简单的电路连接和编程,可以实现对室内甲醛浓度的精确测量。屏幕采用Gravity I2C LCD1602彩色背光液晶屏,通过不同颜色显示甲醛浓度的不同程度。适用于家庭、办公室、汽车等多种环境,帮助用户了解并改善室内空气质量。
甲醛是一种无色,有强烈刺激性气味的气体。易溶于水、醇和醚。甲醛在常温下是气态,通常以水溶液形式出现,经常吸入少量甲醛,会引起慢性中毒,出现头痛、乏力、心悸、失眠以及植物神经紊乱等疾病。而在我们生活的环境中应该可以说是随处可见甲醛,比如室内装修所用的合成板材、家具、还有装饰材料。前段时间哥哥家的新房刚刚装修不久。因为用来当婚房,所以想要急着住进去,于是在家里到处都能看见除甲醛的东西,前两天还在网上购了一个甲醛检测仪呢。
目前,市场上甲醛检测仪的种类也是多种多样,就比如在某宝上,就有半导体传感器测甲醛、利用电阻丝发热测甲醛、还有常见的试验纸。虽然价格便宜,但是所测数据不稳定,误差范围过大(误差范围在±20%)。后面我自己DIY了一个便携式甲醛检测仪,这样以后就可以随时检测自己所处环境的甲醛浓度了。
主要配件
此款甲醛传感器是电化学传感器。它可以将甲醛气体的浓度转换为微弱的电流信号。这样就可以通过电流电压变换电路将微弱的电流信号转换为可以测量的稳定的电压信号,增强了电信号的稳定性。另外它与Arduino兼容,可以精确的测量空气中的甲醛浓度,相比其他甲醛检测仪,它可以抑制干扰气体,而且稳定性和分辨率都较高。其使用寿命长达2年。
HCHO甲醛传感器在接口上采用简单的Gravity接口、宽输入电压、支持模拟电压或者串口输出。另外结合IOT技术,让全自动测量并统计不同地点的空气质量成为了可能。
主控板我采用兼容Arduino UNODFRduino UNO R3。相比之下,DFRduinoUNO R3的性价比更高。
其他配件
总配件图
电路连线图1-DAC模式
将传感器上的开关拨至DAC一端。接线图如上所示。
实物接线图1
注意:DAC模式中,测量精度会受主控器ADC的位数、参考电压精度的影响,因此请使用高精度的电源给主控器供电,或者直接使用主控器的内部参考电压。而且主控器的ADC至少是10位
【电路接线图2-UART模式
将传感器上的开关拨至UART一端。接线图如上所示。
实物接线图2
以上两种模式,我推荐使用UART模式,因为在此模式下,可以获得更高的精度。
效果图
屏幕采用的是Gravity I2CLCD1602彩色背光液晶屏,共有1600万种颜色组合。为了体现液晶屏的高大上,我一共选用了四种颜色(绿、黄、红、紫)来区分甲醛浓度的不同程度。
当甲醛浓度在安全范围内(则居室空气中甲醛浓度低于0.08mg/m3 或者0.06ppm),屏幕显示的为绿色。
当甲醛浓度超过安全范围(0.06ppm<空气中的甲醛浓度<0.2ppm),屏幕显示的为黄色。这个时候就要注意需要放置一些祛除甲醛的东西了
当甲醛浓度严重超标(0.2ppm<空气中的甲醛浓度<4ppm),屏幕显示的为红色。这类的房间最好还是给它空置半年再说入住的话,这甲醛实在是太厉害了。

当甲醛浓度>4ppm(此款甲醛传感器检测的最大范围为5ppm),这已经达到报表的程度了,这时屏幕会红色紫色交替闪烁。

场景
21世纪,我们接触的很多,身边有害的、有益的东西也是同等存在。在健康方面我们必须要重视起来,这样才能做到“生命,随年月流去,随白发老去。”所以我们所处的很多环境都需要检测甲醛浓度。比如:书柜、汽车内室、会议室、特别是刚装修的房子等环境里。
书柜
汽车内
居家必备神器——甲醛检测仪图1
会议室
置物架
窗台
办公室
居家必备神器——甲醛检测仪图2
现在不仅以上这些地方需要检测甲醛,公共场所民用建筑室内、建筑材料、家具等的甲醛含量也需要检测。由于甲醛含量超量的话,将对人体健康造成很大的影响。具有民用价值的甲醛检测仪也受到了人们的高度重视。既要满足生活需要,也要方便携带。针对目前的现状,此次设计遵守体积小,质量轻,性价比高的原则。其中外壳的3D文件以附件的形式放于文末,欢迎感兴趣的小伙伴下载。
【程序1-DAC模式】
  1. #define SensorAnalogPin A2  //this pin read the analog voltage from the HCHO sensor
  2. #define VREF  5.0   //voltage on AREF pin
  3. #include "DFRobot_RGBLCD.h"
  4. DFRobot_RGBLCD lcd(16, 2);
  5. void setup()
  6. {
  7.     Serial.begin(9600);
  8.     lcd.init();
  9.     lcd.setRGB(0, 0,255);
  10.     lcd.setCursor(1, 0 );
  11.     lcd.print("HCHO:");
  12. }
  13. void loop()
  14. {  
  15.     Serial.print(analogReadPPM());
  16.     Serial.println("ppm");
  17.     delay(1000);
  18.     lcd.setCursor(6,1);
  19.       lcd.print(analogReadPPM());
  20.      lcd.print("ppm");
  21.      lcd.setCursor(6,0);
  22.      lcd.print(analogReadPPM()*1.34);//  Unit conversion :1ppm = 1.34 mg/m3  
  23.      lcd.print("mg/m3");
  24.      if(analogReadPPM()<0.06)
  25.      {
  26.      lcd.setRGB(0, 255, 0);
  27.      }
  28.      else if(analogReadPPM()<0.2)
  29.     {
  30.       lcd.setRGB(250, 128, 10);
  31.     }
  32.     else if(analogReadPPM()<4)
  33.     {
  34.        lcd.setRGB(255, 0, 0);
  35.     }
  36.     else
  37.     {
  38.      
  39.           lcd.setRGB(255, 0, 0);
  40.           delay(250);
  41.            lcd.setRGB(0, 0, 0);
  42.          
  43.     }
  44.     delay(100);
  45. }
  46. float analogReadPPM()
  47. {
  48.    float analogVoltage = analogRead(SensorAnalogPin) / 1024.0 * VREF;
  49.    float ppm = 3.125 * analogVoltage - 1.25;  //linear relationship(0.4V for 0 ppm and 2V for 5ppm)
  50.    if(ppm<0)  ppm=0;
  51.    else if(ppm>5)  ppm = 5;
  52.    return ppm;
  53. }[/mw_shl_code]
  54. </font></div><div align="left"><font face="宋体">【程序2-UART模式】</font></div><div align="left"><font face="宋体">[mw_shl_code=cpp,true]
  55. #include <Wire.h>
  56. #include <DFRobotHCHOSensor.h>
  57. #include <SoftwareSerial.h>
  58. #include "DFRobot_RGBLCD.h"
  59. DFRobot_RGBLCD lcd(16, 2);
  60. #define SensorSerialPin  10  //this pin read the uart signal from the HCHO sensor
  61. SoftwareSerial sensorSerial(SensorSerialPin,SensorSerialPin);
  62. DFRobotHCHOSensor hchoSensor(&sensorSerial);
  63. void setup()
  64. {  
  65.     sensorSerial.begin(9600); //the baudrate of HCHO is 9600
  66.     sensorSerial.listen();
  67.     Serial.begin(9600);
  68.     lcd.init();
  69.     lcd.setRGB(0, 0,255);
  70.     lcd.setCursor(1, 0 );
  71.     lcd.print("HCHO:");
  72.       lcd.setCursor(1, 1 );
  73. }
  74. void loop()
  75. {
  76.   
  77.     if(hchoSensor.available()>0)  
  78.     {
  79.       // delay(1000);
  80.       Serial.print(hchoSensor.uartReadPPM());
  81.       Serial.println("ppm");
  82.       lcd.setCursor(6,1);
  83.       lcd.print(hchoSensor.uartReadPPM());
  84.      lcd.print("ppm");
  85.      lcd.setCursor(6,0);
  86.      lcd.print(hchoSensor.uartReadPPM()*1.34);  //Unit conversion :1ppm = 1.34 mg/m3
  87.      lcd.print("mg/m3");
  88.      if(hchoSensor.uartReadPPM()<0.06)
  89.      {
  90.      lcd.setRGB(0, 255, 0);
  91.      }
  92.      else if(hchoSensor.uartReadPPM()<0.2)
  93.     {
  94.       lcd.setRGB(250, 128, 10);
  95.     }
  96.     else if(hchoSensor.uartReadPPM()<4)
  97.     {
  98.        lcd.setRGB(255, 0, 0);
  99.     }
  100.     else
  101.     {
  102.      
  103.           lcd.setRGB(255, 0, 0);
  104.           delay(500);
  105.            lcd.setRGB(255, 0, 255);
  106.          
  107.     }
  108.    
  109.       delay(100);
  110.       
  111.     }
  112. }
复制代码
作者联系方式-QQ:1078883988 (添加时,备注DF社区+项目名称)

甲醛检测仪3D打印文件和三维图.rar

923.34 KB, 下载次数: 15127

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(28)
JOVI
JOVI
学习学习
贺h
贺h
很实用,很厉害
KkQ1VrB7W776
KkQ1VrB7W776
成本高呀,几百块
三春牛-创客
三春牛-创客
好好好好好
三春牛-创客
三春牛-创客
6666666666
三春牛-创客
三春牛-创客
谢谢分享!
三春牛-创客
三春牛-创客
不错不错
leo诺
leo诺
为什么我的Gravity: I2C LCD1602 RGB彩色背光液晶屏一直都只显示一行黑方块QAQ
天堂向左
天堂向左
已经做好了,主要问题是3D打印图纸里靠近甲醛传感器那一边的上盖,卡屏幕面板的那个腿长了,3D打印材料很脆不能撇,我直接撇断了,索性把撇断的部分加工打磨了一下再用502粘回去,效果不错;螺丝孔拿自攻螺丝把眼打大一点就可以,打印出来的眼子是M2的孔,不是M3的,上图。

成品效果

绿色是用默认图纸打印出来的本来有的部分,照片是我处理完后的效果。

淘宝上找的3D打印店打出来

组装中
小神码
小神码
家里刚装修好,可以试一下啊
车神
车神
我想问下买了之后有视频教程吗,小白一个想搞一下
zerotwox
zerotwox
不错不错,做一个试试
zerotwox
zerotwox
想要想拥有
zerotwox
zerotwox
想要想拥有
zerotwox
zerotwox
顶一下顶一下
zerotwox
zerotwox
很好玩的样子
pATAq
pATAq
没钱下载你的附件,有一个问题哈,这个进气开口在哪边的,另外这种相当于是扩散式,要较泵吸式不准。另外,请问你这个安全范围是依据的哪个文件,我看到的一般要求是小于0.1mg/m3
川山甲的壳
川山甲的壳
作者
回复pATAq
就中间白色部分是采集数据的。UART的模式测量精度要高些。
猫茶
猫茶
做了一下这个项目,外壳有些小问题,需要后期再次打磨,螺丝孔也没设计好,得重画图纸。
碧海
碧海
赞,真想赶快自己做出来一个
gdsdxc
gdsdxc
谢谢了。