欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

【arduino传感器个人学习笔记】pulsesensor传感器和MQ-2烟雾传感器

程序员文章站 2022-03-11 21:05:12
PulseSensor 脉搏传感器介绍基本参数供电电压:3.3~5V检测信号类型:光反射信号(PPG)输出信号类型:模拟信号输出信号大小:0~VCC电流大小:~4ma(5v 下)功能原理PulseSensor 是一款用于脉搏心率测量的光电反射式模拟传感器。将其佩戴于手指、耳垂等处,利用人体组织在血管搏动时造成透光率不同来进行脉搏测量。传感器对光电信号进行滤波、放大,最终输出模拟电压值。单片机通过将采集到的模拟信号值转换为数字信号,再通过简单计算就可以得到心率数值。传感器...

PulseSensor 脉搏传感器介绍

【arduino传感器个人学习笔记】pulsesensor传感器和MQ-2烟雾传感器

基本参数

  • 供电电压:3.3~5V
  • 检测信号类型:光反射信号(PPG)
  • 输出信号类型:模拟信号
  • 输出信号大小:0~VCC
  • 电流大小:~4ma(5v 下)

功能原理

PulseSensor 是一款用于脉搏心率测量的光电反射式模拟传感器。将其佩戴于手指、耳垂等处,利用人体组织在血管搏动时造成透光率不同来进行脉搏测量。传感器对光电信号进行滤波、放大,最终输出模拟电压值。单片机通过将采集到的模拟信号值转换为数字信号,再通过简单计算就可以得到心率数值。

传感器只有三个引脚,分别为信号输出 S 脚 、电源正极 VCC 以及电源负极 GND,供电电压为 3.3V - 5V,可通过杜邦线与开发板连接。上电后, 传感器会不断从 S 脚输出采集到的电压模拟值。需要注意的是,印有心形的一面才是与手指接触面,在测量时要避免接触布满元件的另一面,否则会影响信号准确性

核心操作 —— 识别一个脉搏信号

IBI和BPM

心率,指的是一分钟内的心跳次数,得到心率最笨的方法就是计时一分钟后数有多少次脉搏。但这样的话每次测心率都要等上个一分钟才有一次结果,效率极低。另外一种方法是,测量相邻两次脉搏的时间间隔,再用一分钟除以这个间隔得出心率。这样的好处是可以实时计算脉搏,效率高。

IBI: 相邻两次脉搏的时间间隔,单位:s。

BPM:心率,一分钟内的心跳次数。即BPM = 6000 / IBI

无论是采用计数法还是计时法,只有能识别出一个脉搏,才能数出一分钟内脉搏数或者计算两个相邻脉搏之间的时间间隔。那怎么从采集的电压波形数据判断是不是一个有效的脉搏呢?显然,可以通过检测波峰来识别脉搏。最简单粗暴的方法是设定一个阈值,当读取到的信号值大于此阈值时便认为检测一个脉搏。

https://github.com/WorldFamousElectronics/PulseSensor_Amped_Arduino/tree/master/PulseSensorAmped_Arduino_1.5.0

下载以上链接文件,用arduino打开里面的PulseSensorAmped_Arduino_1.5.0.ino文件,即可与plusesensor配套使用。

注意事项:

  • 避免手指触碰传感器背面
  • 传感器与手指之间不要施加过大压力,否则会阻碍血液流动而读不到脉搏信号
  • 传感器与手指之间的接触要保持稳定,按压力度的轻微变化都会影响电压值

 MQ-2烟雾传感器

【arduino传感器个人学习笔记】pulsesensor传感器和MQ-2烟雾传感器【arduino传感器个人学习笔记】pulsesensor传感器和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

相关标签: 人工智能