【arduino传感器个人学习笔记】pulsesensor传感器和MQ-2烟雾传感器
PulseSensor 脉搏传感器介绍
基本参数
- 供电电压:3.3~5V
- 检测信号类型:光反射信号(PPG)
- 输出信号类型:模拟信号
- 输出信号大小:0~VCC
- 电流大小:~4ma(5v 下)
功能原理
PulseSensor 是一款用于脉搏心率测量的光电反射式模拟传感器。将其佩戴于手指、耳垂等处,利用人体组织在血管搏动时造成透光率不同来进行脉搏测量。传感器对光电信号进行滤波、放大,最终输出模拟电压值。单片机通过将采集到的模拟信号值转换为数字信号,再通过简单计算就可以得到心率数值。
传感器只有三个引脚,分别为信号输出 S 脚 、电源正极 VCC 以及电源负极 GND,供电电压为 3.3V - 5V,可通过杜邦线与开发板连接。上电后, 传感器会不断从 S 脚输出采集到的电压模拟值。需要注意的是,印有心形的一面才是与手指接触面,在测量时要避免接触布满元件的另一面,否则会影响信号准确性。
核心操作 —— 识别一个脉搏信号
IBI和BPM
心率,指的是一分钟内的心跳次数,得到心率最笨的方法就是计时一分钟后数有多少次脉搏。但这样的话每次测心率都要等上个一分钟才有一次结果,效率极低。另外一种方法是,测量相邻两次脉搏的时间间隔,再用一分钟除以这个间隔得出心率。这样的好处是可以实时计算脉搏,效率高。
IBI: 相邻两次脉搏的时间间隔,单位:s。
BPM:心率,一分钟内的心跳次数。即
BPM = 6000 / IBI
无论是采用计数法还是计时法,只有能识别出一个脉搏,才能数出一分钟内脉搏数或者计算两个相邻脉搏之间的时间间隔。那怎么从采集的电压波形数据判断是不是一个有效的脉搏呢?显然,可以通过检测波峰来识别脉搏。最简单粗暴的方法是设定一个阈值,当读取到的信号值大于此阈值时便认为检测一个脉搏。
下载以上链接文件,用arduino打开里面的PulseSensorAmped_Arduino_1.5.0.ino文件,即可与plusesensor配套使用。
注意事项:
- 避免手指触碰传感器背面
- 传感器与手指之间不要施加过大压力,否则会阻碍血液流动而读不到脉搏信号
- 传感器与手指之间的接触要保持稳定,按压力度的轻微变化都会影响电压值
MQ-2烟雾传感器
产品参数
- 具有输出调节电位器:顺时针调节大,逆时针调节小。
- 传感器类型:模拟
- 快速响应和高灵敏度
- 简单电路板
- 5V供电
- 尺寸:36.4x26.6mm
功能原理
MQ-2型烟雾传感器属于二氧化锡半导体气敏材料,属于表面离子式N型半导体。处于200~300摄氏度时,二氧化锡吸附空气中的氧,形成氧的负离子吸附,使半导体中的电子密度减少,从而使其电阻值增加。当与烟雾接触时,如果晶粒间界处的势垒收到烟雾的调至而变化,就会引起表面导电率的变化。利用这一点就可以获得这种烟雾存在的信息,烟雾的浓度越大,导电率越大,输出电阻越低,则输出的模拟信号就越大。传感器有四个引脚,其中两个可以只接一个虚拟引脚或者两个接数字和虚拟引脚 、另外两个接电源正极 VCC 以及电源负极 GND
样例代码
///Arduino Sample Code
#define Sensor_AO A0
void setup()
{
Serial.begin(9600); //Set serial baud rate to 9600 bps
}
void loop()
{
int val;
val=analogRead(0);//Read Gas value from analog 0
Serial.println(val,DEC);//Print the value to serial port
delay(100);
}
或
#define Sensor_DO 2
#define Sensor_AO A0
unsigned int sensorValue = 0;
void setup()
{
pinMode(Sensor_DO, INPUT);
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(Sensor_AO);
Serial.print("Sensor AD Value = ");
Serial.println(sensorValue);
if (digitalRead(Sensor_DO) == LOW)
{
Serial.println("Alarm!");
}
delay(1000);
}
本文地址:https://blog.csdn.net/qq_46041038/article/details/107935512