Arduino开发实例-DIY酒精浓度检测计

DIY酒精浓度检测计

在本文中,将详细介绍如何创建一个简单的酒精检测器。 它可以在各种应用领域中使用。市场上有许多先进的酒精传感器,价格合理,但我们在这里使用一些基本的微控制器来制作这个项目,如 Arduino、LED、蜂鸣器和 MQ3 酒精传感器。

1、MQ-3传感器介绍

MQ-3传感器包含一个加热元件,可以加热一层导电材料,当烟雾或酒精的气味接触到 MQ-3 传感器时,它的电阻会发生变化。因此,我们会不断测量这种电阻的变化值。

在这里插入图片描述

引脚 说明
VCC 电源输入
GND 接地
D0 数字输出
A0 模拟输出

本次使用的MQ-3传感器模块提供数字和模拟输出。 两者的区别很简单。 在数字输出中,高或低(即 1 或 0)被传输到微控制器,但模拟信号中从 0 到 1023 的宽范围值被传输到微控制器,这些数值表示可以用于传感器检测的酒精浓度值。

在传感器模块中,还使用 LM393来放大可检测范围内的电压信号。 此外,LM393放大器IC还具有用于有效放大的电压比较器。 我们可以借助传感器中给出的电位器来调整放大量。

MQ-3传感器的规格如下:

工作电压 5伏
负载电阻 200KΩ
加热器电阻 33Ω±5%
加热消耗 <800MW
感应电阻 1MΩ– 8MΩ
浓度范围 25 – 500 ppm
预热时间 超过24小时

2、硬件接线图

本次DIY应用的硬件接线图如下:

在这里插入图片描述

序号 MQ-3传感器 Arduino
1 VCC 5V
2 GND GND
3 A0 Pin A0
序号 蜂鸣器 Arduino
1 VCC D8
2 GND GND
序号 LED Arduino
1 Anode (+) D9
2 Cathode (-) GND

3、代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 #define MQ3 A0 // MQ-3传感器引脚
#define Buzzer 8 // 蜂鸣器引脚
#define LED 9 // LED引脚
// 酒精浓度阈值
#define Thres\_Val 120
/\*
<120是清醒的
120-400在喝酒-但在法律限制范围内
> 400醉
\*/
// 酒精浓度值
int value;
void setup() {
// 初始化设备引脚
pinMode(MQ3, INPUT);
pinMode(Buzzer, OUTPUT);
pinMode(LED, OUTPUT);
// 初始化串口
Serial.begin(9600);
}
void loop() {
// 采样传感器数据
value = analogRead(MQ3);
// 串口输出数据
Serial.println(value);
if ( value > Thres_Val ) // 采集数据大于阈值
{
digitalWrite ( LED , HIGH ); // 点亮LED
tone(Buzzer, 1000); // 产生1000Hz的声音
}
else {
digitalWrite(LED, LOW); // 熄灭LED
noTone(Buzzer); // 关闭蜂鸣器
}
delay (500); // 延时500毫秒
}

首先,根据硬件接线图定义设备引脚:

1
2
3
4
#define MQ3 A0 // MQ-3传感器引脚
#define Buzzer 8 // 蜂鸣器引脚
#define LED 9 // LED引脚

接着,定义传感响应阈值:

1
2
3
4
5
6
// 酒精浓度阈值
#define Thres\_Val 460

// 酒精浓度值
int value;

接着,在setup函数中初始化设备:

1
2
3
4
5
6
7
// 初始化设备引脚
pinMode(MQ3, INPUT);
pinMode(Buzzer, OUTPUT);
pinMode(LED, OUTPUT);
// 初始化串口
Serial.begin(9600);

接着,在loop函数中,调用analogRead函数读取传感器当前响应值:

1
2
3
// 采样传感器数据
value = analogRead(MQ3);

在采样到数据之后,采样值与设定的阈值进行比较:

1
2
3
4
5
6
7
8
9
10
if ( value > Thres_Val )   // 采集数据大于阈值
{
digitalWrite ( LED , HIGH ); // 点亮LED
tone(Buzzer, 1000); // 产生1000Hz的声音
}
else {
digitalWrite(LED, LOW); // 熄灭LED
noTone(Buzzer); // 关闭蜂鸣器
}

当采样值比设定阈值大,则点亮LED和播放1000Hz的声音。否则熄灭LED,关闭声音播放。

文章来源: https://iotsmart.blog.csdn.net/article/details/128094969