一、Pulsesensor
基本定义
PulseSensor 是一款用于脉搏心率测量的光电反射式模拟传感器。
工作原理
佩戴在手指、耳垂等处,利用人体组织在血管搏动时造成透光率不同来进行脉搏测量。传感器对光电信号进行滤波、放大,最终输出模拟电压值。单片机通过将采集到的模拟信号值转换为数字信号,再通过简单计算就可以得到心率数值。方法简单、佩戴方便、可靠性高等特点。
接口
S →脉搏信号输出(要接单片机AD接口)
+→5v(或3,3v)电源输入
— →GND地
与Arduino链接
有线连接
无线连接
程序主要变量说明
输出说明:
输出方式:串口输出数据
数据格式:ASCII码,
波特率:115200(数据量较大原因)
三种数据:
以“S” 为前缀的,表示脉搏波数据(脉象图的数值化表示)
以“B”为前缀的,表示BPM数值(心率值)
以“Q" 为前缀的,表示IBI数值(相邻两个心跳之间的时间)
这三种数据通过串口发送给上位机Processing软件,就会在窗口中显示出来。
S数据20ms发送一一次,数据量大;
B和Q数据只有在检测到有效脉搏后,在每-次心跳后发送一一次, 数据量小
全套传感器套件
1.贴膜
由于电路板正面有光感受器,为了防止手指的汗液导致电路短路,所以可将赠送的贴
膜覆盖于电路板之上,如下图:
2.粘扣
由于电路板背面全部是电子器件,为了防止手指静电触碰发生损坏和干扰,建议利用提供的粘扣粘在背面,同时也可以方便与绑带进行固定,具体操作可见下图:
注意事项
1、保持指尖与传感器接触良好,没有汗水和污迹
2、不可太用力按传感器,否则局部血液循环不畅会无法测量脉搏
3、保持镇静,测量时身体不要过多移动,否则会影响测量结果准确性
4、不要用冰凉的手指进行测试,因为血液循环不好会让测量结果不准确
学习网址:
史上最全脉搏心率传感器PulseSensor资料
玩的就是心跳 —— 使用 PulseSensor 脉搏传感器测量心率
二、烟雾传感器:MQ-2
工作原理
MQ系列传感器使用的敏感材料是活性很高的金属氧化物半导体,传感器加热后,在不同气体浓度中电导率不同。使用简单的电路就可以将电导率的变化转换成与该气体浓度相对应的信号输出了。
MQ-2型烟雾传感器属于二氧化锡半导体气敏材料,属于表面离子式N型半导体。处于200~300摄氏度时,二氧化锡吸附空气中的氧,形成氧的负离子吸附,使半导体中的电子密度减少,从而使其电阻值增加。当与烟雾接触时,如果晶粒间界处的势垒收到烟雾的调至而变化,就会引起表面导电率的变化。利用这一点就可以获得这种烟雾存在的信息,烟雾的浓度越大,导电率越大,输出电阻越低,则输出的模拟信号就越大。参考网址
浓度计算
浓度计算:
1、MQ-2的计算公式:
阻值R与空气中被测气体的浓度C的计算关系式log R = mlog C + n (m,n均为常数)常数n:与气体检测灵敏度有关,除了随传感器材料和气体种类不同而变化外,还会由于测量温度和激活剂的不同而发生大幅度的变化。常数m:表示随气体浓度而变数的传感器的灵敏度(也称作为气体分离率)。对于可燃性气体来说,m的值多数介于1/2至1/3之间。
2、传感器的电阻的计算:
Rs=(Vc/VRL -1)*RL(3-2)
式中Vc为回路电压,VRL是传感器7脚、6脚输出的电压即U shuchu ,RL是负载电阻。更具上式即可即可算出传感器电阻Rs.
3、MQ-2烟雾传感器的输出电压计算:
根据MQ-2的工作原理(其电导率随着气体浓度的增大而增大,其电阻是电导率的倒数,所以其电阻是减小的,其特性相当于一个滑动变阻器)并且参考图MQ-2Datasheet的上的测试电路,在根据哥设计的实际电路如图3。可以得到下面的公式:Ushuchu= (R11/R1+Rs) *Vc
Vc为回路电压即电源电压,其加在MQ-2传感器的1脚、3脚之间。U shuchu是传感器4脚、6脚输出的电压,Rs为传感器的体电阻。其中若气体浓度上升,必导致Rs下降。而Rs的下降则会导致,MQ-2的4脚、6脚对地输出的电压增大。所以气体浓度增大,其输出的电压也会增大。
应用领域
可用于家庭和工厂的气体泄漏监测装置,适宜于液化气、苯、烷、酒精、氢气、烟雾等的探测。故因此,MQ-2可以准确来说是一个多种气体探测器。
输出方式
数字量输出:通过板载电位器设定浓度阈值,当检测到环境气体浓度超过阈值时,通过数字引脚DO输出低电平。
模拟量输出:浓度越高,AO引脚输出的电压值越高,通过ADC采集的模拟值越高。
注意事项
传感器通电后,需要预热20秒左右,测量的数据才会稳定。由于传感器工作时需要内部电热丝加热,所以传感器发热属于正常现象。
参数
链接:淘宝网站查找
接线连接
代码
#include <Arduino.h>
#define Sensor_AO A0//模拟信号接收
#define Sensor_DO 2
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);
}
注:int整型可以划分为带符号的(signed)和无符号的(unsigned)两种,
带符号类型(signed)可以表示正数、负数或0,
无符号类型(unsigned)则仅能表示大于等于0的值。
在默认情况下声明的整型变量都是有符号的类型,如果需声明无符号类型的话就需要在类型前加上unsigned关键字
个人理解:烟雾浓度达到某个值的时候会使得电流变小,导致报警