「雕爷学编程」Arduino动手做(37)——MQ-3酒精传感器
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试做实验,不管成功与否,都会记录下来---小小的进步或是搞不定的问题,希望能够抛砖引玉。
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验三十七:MQ-3酒精乙醇传感器模块
MQ-3气体传感器
所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在酒精蒸汽时,传感器的电导率随空气中酒精气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。 MQ-3气体传感器对酒精的灵敏度高,可以抵抗汽油、烟雾、水蒸气的干扰。这种传感器可检测多种浓度酒精气氛,是一款适合多种应用的特种传感器。
工作原理
MQ-3属于表面电阻控制型酒精气体浓度气敏传感器,其敏感材料是活性很高的金属氧化物半导体,最常用的如SnO2(二氧化锡)。当N型半导体的表面,在高温下遇到离解能力较小(易失去电子)的还原性气体时,气体分子中的电子将向MQ3气敏电阻表面转移,使气敏电阻中的自由电子浓度增加,电阻率降低,电阻减小。半导体式传感器是利用一些金属氧化物半导体材料,在一定温度下,电导率随着环境气体成份的变化而变化的原理制造的,MQ-3酒精传感器就是其中一种,它是利用二氧化锡在高温下遇到酒精气体时,电阻会急剧减小的原理制造的。
MQ-3可应用于家庭、工厂、商业场所的气体泄漏监测装置,防火,安全探测系统。气体泄漏报警器.气体检漏仪。高灵敏度、快速响应恢复、优异的稳定性、长寿命、驱动电路简单、电信号输出强。
模块优点
可有效用于酒精、乙醇等气体的检测。寿命长、成本低廉,适用于民用气体的检测,高质量的半导体传感器也可满足工业检测的需求。
模块缺点
需要预热,稳定性较差,受环境温度、湿度等因素影响较大;每一种传感器的选择性都不是唯一的,输出参数也不能确定,不宜应用于计量准确要求的场所。
MQ-3酒精乙醇传感器模块(半导体式表面电阻控制型)
规格参数
1. 探测范围:10~1000ppm酒精
2. 特征气体:125ppm酒精
3. 加热电压:5±0.2V(AC·DC)
4. 回路电压:≤24V DC
5. 负载电阻:可调
6. 清洁空气中电压:≤1.5V
7. 灵敏度:Rin air/Rin typical gas≥5
8. 响应时间:≤10S
9. 恢复时间:≤30S
10.元件功耗:≤0.9W
11.主要芯片:LM393、MQ-3气体传感器
12.使用寿命:5年
模块电原理图
电气性能
主要芯片:LM393、MQ-3气体传感器
输入电压:DC5V 功耗(电流):150mA
DO输出:TTL数字量0和1(0.1和5V)
AO输出:0.1-0.3V(相对无污染),最高浓度电压4V左右
特别提醒:传感器通电后,需要预热20S左右,测量的数据才稳定,传感器发热属于正常现象,因为内部有电热丝,如果烫手就不正常了。
模块特色
1、采用优质双面板设计,具有电源指示和TTL信号输出指示
2、具有DO开关信号(TTL)输出和AO模拟信号输出
3、TTL输出有效信号为低电平。(当输出低电平时信号灯亮,可直接接单片机或继电器模块)
4、模拟量输出电压,浓度越高电压越高
5、对酒精检测有较好的灵敏度
6、有四个螺丝孔便于定位
7、产品外形尺寸:32(L)*20(W)*22(H)
8、具有长期的使用寿命和可靠的稳定性
9、快速的响应恢复特性
10、用于机动车驾驶人员及其他严禁酒后作业人员的现场检测,也用于其他场所乙醇蒸汽的检测,探测酒精范围:探测范围 10~ 1000ppm。
模块接口定义(以实物为准)
1. AO: 传感器模拟量输出
2. DO: 数字量输出(比较器输出)
3. GND: 接地
4. VCC: 电源输入,范围: 3V-24V
非常简单的一个测试程序,读读串口数据,看看实验波形
/* 【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真) 实验三十七:MQ-3酒精乙醇传感器模块(半导体式表面电阻控制型) */ void setup() { Serial.begin(9600); pinMode(A0, INPUT); } void loop() { Serial.println(analogRead(A0)); delay(200); }
预热之后的串口数据,大概在250前后
而后,串口输出的数字一直下降,大概十分钟前后,稳定在75左右
实验用的是居家75%的消毒酒精
这模块确实对酒精很敏感,最高升到800多
拧紧酒精瓶盖后,数据有个缓慢的下降过程
把酒精撒到地上一点,也能检测到,数据幅度小很多
一个检测酒精浓度的可视化报警程序,目前稳态数据在68
检测到超标酒精浓度(大于400),报警灯亮
/* 【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真) 实验三十七:MQ-3酒精乙醇传感器模块(半导体式表面电阻控制型)之二 */ int Buzzer = 8; // 定义数字口8 为Buzzer (蜂鸣器) void setup() { pinMode(Buzzer, OUTPUT); // 定义数字口8 为输出模式 Serial.begin(9600); } void loop() { int val; val = analogRead(A0); Serial.println(val, DEC); while (val < 400) { digitalWrite(Buzzer, LOW); //蜂鸣器不响 val = analogRead(A0); Serial.println(val, DEC); } digitalWrite(Buzzer, HIGH); // 蜂鸣器响 }
/* 【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真) 实验三十七:MQ-3酒精乙醇传感器模块(半导体式表面电阻控制型)之三 */ const int gasSensor = 0; void setup() { Serial.begin(9600); // sets the serial port to 9600 } void loop() { float voltage; voltage = getVoltage(gasSensor); Serial.println(voltage); delay(1000); } float getVoltage(int pin) { return (analogRead(pin) * 0.004882814); // This equation converts the 0 to 1023 value that analogRead() // returns, into a 0.0 to 5.0 value that is the true voltage // being read at that pin. }