找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: eagler8
打印 上一主题 下一主题
收起左侧

【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)

  [复制链接]
2041#
ID:513258 发表于 2019-9-2 18:51 | 只看该作者

回复

使用道具 举报

2042#
ID:513258 发表于 2019-9-2 18:56 | 只看该作者

回复

使用道具 举报

2043#
ID:513258 发表于 2019-9-2 19:11 | 只看该作者

回复

使用道具 举报

2044#
ID:513258 发表于 2019-9-2 20:38 | 只看该作者

回复

使用道具 举报

2045#
ID:513258 发表于 2019-9-2 20:39 | 只看该作者

回复

使用道具 举报

2046#
ID:513258 发表于 2019-9-2 20:41 | 只看该作者

回复

使用道具 举报

2047#
ID:513258 发表于 2019-9-2 20:43 | 只看该作者

回复

使用道具 举报

2048#
ID:513258 发表于 2019-9-2 20:44 | 只看该作者

回复

使用道具 举报

2049#
ID:513258 发表于 2019-9-2 20:45 | 只看该作者

回复

使用道具 举报

2050#
ID:513258 发表于 2019-9-3 10:32 | 只看该作者
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试做实验,不管成功与否,都会记录下来---小小的进步或是搞不定的问题,希望能够抛砖引玉。

【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百零四: MAX30102血氧仪手腕心率脉搏检测心跳传感器模块



回复

使用道具 举报

2051#
ID:513258 发表于 2019-9-3 10:34 | 只看该作者

MAX31020
是一种综合性脉搏血氧测定法,心率监测模块。它包括内部LED,光电探测器、光学元件和低噪声电子设备具有环境光抑制功能。max30102提供了完整的系统解决方案,简化流程设计适用于移动和可穿戴设备。MAX31020在单个1.8V电源上工作为内部LED提供单独的5.0V电源。通信通过标准I2c兼容接口。模块可以通过软件关闭零备用电流,允许电源轨始终保持通电。


应用
●可穿戴设备
●健身辅助设备
回复

使用道具 举报

2052#
ID:513258 发表于 2019-9-3 10:37 | 只看该作者

回复

使用道具 举报

2053#
ID:513258 发表于 2019-9-3 10:44 | 只看该作者
优点和特点
●心率监测器和脉搏血氧计传感器输入LED反射溶液
●微型5.6毫米x 3.3毫米x 1.55毫米14针光学模块
•集成的盖玻片提供最佳、坚固的
●移动设备超低功率运行
•可编程采样率和LED电流节电
•低功率心率监测器(<1兆瓦)
•超低停机电流(0.7μA,典型值)
●快速数据输出能力
•采样率高
●强大的运动伪影复原能力
•高信噪比
-40°C至+85°C工作温度范围




回复

使用道具 举报

2054#
ID:513258 发表于 2019-9-3 10:46 | 只看该作者

回复

使用道具 举报

2055#
ID:513258 发表于 2019-9-3 10:48 | 只看该作者

回复

使用道具 举报

2056#
ID:513258 发表于 2019-9-3 10:50 | 只看该作者

回复

使用道具 举报

2057#
ID:513258 发表于 2019-9-3 10:51 | 只看该作者

回复

使用道具 举报

2058#
ID:513258 发表于 2019-9-3 10:52 | 只看该作者

回复

使用道具 举报

2059#
ID:513258 发表于 2019-9-3 10:54 | 只看该作者

回复

使用道具 举报

2060#
ID:513258 发表于 2019-9-3 10:54 | 只看该作者

回复

使用道具 举报

2061#
ID:513258 发表于 2019-9-3 14:33 | 只看该作者

模块有两个发光二极管,一个光检测器,优化光学和低噪声的仿真信号处理,以检测脉搏血氧饱和度和心脏速率信号。
1、只需要将手指头紧贴在传感器上,就能估计 脉搏血氧饱和度(SpO2)及脉搏(相当于心跳)。
2、携带氧气的红血球能吸收较多红外光(850-1000nm),未携带氧气的红血球则是吸收较多的红光(600-750nm)。
3、因此pulse oximeter就是一个迷你的分光计,利用不同红血球之吸收光谱的原理,来分析血氧饱和度。
4、这种实时而快速的测量方式,也广泛被运用在许多临床的参考。

回复

使用道具 举报

2062#
ID:513258 发表于 2019-9-3 14:44 | 只看该作者
模块电原理图




回复

使用道具 举报

2063#
ID:513258 发表于 2019-9-3 14:48 | 只看该作者

回复

使用道具 举报

2064#
ID:513258 发表于 2019-9-3 14:50 | 只看该作者

回复

使用道具 举报

2065#
ID:513258 发表于 2019-9-3 14:52 | 只看该作者

回复

使用道具 举报

2066#
ID:513258 发表于 2019-9-3 14:54 | 只看该作者

经过多方寻找,从一个研究MAX30102算法的程序中找到了一个经过亲自验证有效的实际血氧标定计算公式:

                           SpO2=-45.060*R*R+ 30.354 *R + 94.845

其中的R可以通过红光和红外光光强的对数值计算得到,这个标定表达式实际上是对血氧饱和度的二次曲线拟合,是经过测量得到的。最后终于可以输出血氧饱和度数据了。

回复

使用道具 举报

2067#
ID:513258 发表于 2019-9-3 15:03 | 只看该作者



回复

使用道具 举报

2068#
ID:513258 发表于 2019-9-3 15:05 | 只看该作者

回复

使用道具 举报

2069#
ID:513258 发表于 2019-9-3 15:07 | 只看该作者
应用
辅助健身设备
智能电话
平板电脑
可穿戴设备



回复

使用道具 举报

2070#
ID:513258 发表于 2019-9-3 15:10 | 只看该作者

回复

使用道具 举报

2071#
ID:513258 发表于 2019-9-3 15:36 | 只看该作者
与Pulse sensor这种传感器(具体见系列实验之95)相比,MAX30102的有点在于:
1.集成度高:MAX30102将两个发光LED、光电检测二极管、ADC、环境光抑制电路和光学机械外壳都集成在了一起,形成了一个完整模块。这样的优势就是体积小、能耗小、外界干扰小,易于集成系统。
2.数字输出:MAX30102本身自带18位高精度ADC,使用I2C接口与外接MCU通信。而且自身还有FIFO,可以减轻MCU负担,降低功耗。
3.功能丰富:MAX30102集成了LED驱动电路,可以根据不同情况调节LED电流,采样率也可以根据不同应用进行选择。此外还集成了片上温度传感器,可以随时监测片上温度(对血氧饱和度计算有用)。
       正是有以上一些优点,现在的模拟集成前端(AFE)都走向了集成化、小型化、数字化的方向,模拟电路的门槛越来越低了。



回复

使用道具 举报

2072#
ID:513258 发表于 2019-9-3 18:08 | 只看该作者
MAX30102的发光部分包括两个LED,一个是红光LED(660nm),另一个是红外光LED(880nm),这个是测量血氧饱和度SPO2最常见的配置。接收部分是一个对可见光和红外光都敏感的光电二极管,其接收的光强度信号转换为电流信号,经过环境光消除电路后,最后被自带的18位ADC进行采样转化,至此模拟部分完成。AD转化后的数字经过数字滤波后储存在数据寄存器中,最后可通过I2C总线被外接MCU读取。在硬件上,LED的电源和其他部分的电源不是同一个,因为LED为了保证足够的出射光强,需要瞬间大电流(最大50ma),这就要求LED的正向电压足够大(要求3.1V以上)。而其余的AD转换和I2C总线部分,为了实现低功耗要求电压足够小(要求1.8V),所以传感器需要两路独立的电源。此外,由于LED电源会产生瞬间大电流,所以电源引脚附近要加一个大电容减轻对电源电压的影响。
传统的脉搏测量方法主要有三种:一是从心电信号中提取;二是从测量血压时压力传感器测到的波动来计算脉率;三是光电容积法。前两种方法提取信号都会限制病人的活动,如果长时间使用会增加病人生理和心理上的不舒适感。而光电容积法脉搏测量作为监护测量中最普遍的方法之一,其具有方法简单、佩戴方便、可靠性高等特点。

光电容积法的基本原理是利用人体组织在血管搏动时造成透光率不同来进行脉搏和血氧饱和度测量的。其使用的传感器由光源和光电变换器两部分组成,通过绑带或夹子固定在病人的手指、手腕或耳垂上。光源一般采用对动脉血中氧合血红蛋白(HbO2)和去氧血红蛋白(Hb)有选择性的特定波长的发光二极管(一般选用660nm附近的红光和900nm附近的红外光)。当光束透过人体外周血管,由于动脉搏动充血容积变化导致这束光的透光率发生改变,此时由光电变换器接收经人体组织反射的光线,转变为电信号并将其放大和输出。由于脉搏是随心脏的搏动而周期性变化的信号,动脉血管容积也呈现周期性变化,因此光电变换器的电信号变化周期就是脉搏率。





回复

使用道具 举报

2073#
ID:513258 发表于 2019-9-3 18:24 | 只看该作者
  1. /*
  2. 【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
  3. 实验一百零四: MAX30102血氧仪手腕心率脉搏检测心跳传感器模块
  4. 1、安装库:IDE-工具-管理库-搜索“MAX30105”-安装
  5. 2、项目:串口读取测量数据
  6. 3、连线(I2C):
  7. VIN  → 3.3V
  8. GND  →  GND
  9. SDA  接 A4
  10. SCL  接 A5
  11. */

  12. #include <Wire.h>
  13. #include "MAX30105.h"
  14. #include "heartRate.h"

  15. MAX30105 particleSensor;

  16. const byte RATE_SIZE = 4; //Increase this for more averaging. 4 is good.
  17. byte rates[RATE_SIZE]; //Array of heart rates
  18. byte rateSpot = 0;
  19. long lastBeat = 0; //Time at which the last beat occurred

  20. float beatsPerMinute;
  21. int beatAvg;

  22. void setup()
  23. {
  24.   Serial.begin(115200);
  25.   Serial.println("Initializing...");

  26.   // Initialize sensor
  27.   if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //Use default I2C port, 400kHz speed
  28.   {
  29.     Serial.println("MAX30105 was not found. Please check wiring/power. ");
  30.     while (1);
  31.   }
  32.   
  33.   Serial.println("Place your index finger on the sensor with steady pressure.");

  34.   particleSensor.setup(); //Configure sensor with default settings
  35.   particleSensor.setPulseAmplitudeRed(0x0A); //Turn Red LED to low to indicate sensor is running
  36.   particleSensor.setPulseAmplitudeGreen(0); //Turn off Green LED
  37. }

  38. void loop()
  39. {
  40.   long irValue = particleSensor.getIR();

  41.   if (checkForBeat(irValue) == true)
  42.   {
  43.     //We sensed a beat!
  44.     long delta = millis() - lastBeat;
  45.     lastBeat = millis();

  46.     beatsPerMinute = 60 / (delta / 1000.0);

  47.     if (beatsPerMinute < 255 && beatsPerMinute > 20)
  48.     {
  49.       rates[rateSpot++] = (byte)beatsPerMinute; //Store this reading in the array
  50.       rateSpot %= RATE_SIZE; //Wrap variable

  51.       //Take average of readings
  52.       beatAvg = 0;
  53.       for (byte x = 0 ; x < RATE_SIZE ; x++)
  54.         beatAvg += rates[x];
  55.       beatAvg /= RATE_SIZE;
  56.     }
  57.   }

  58.   Serial.print("IR=");
  59.   Serial.print(irValue);
  60.   Serial.print(", BPM=");
  61.   Serial.print(beatsPerMinute);
  62.   Serial.print(", Avg BPM=");
  63.   Serial.print(beatAvg);
  64.   Serial.println();
  65.   delay(1000);
  66. }
复制代码


回复

使用道具 举报

2074#
ID:513258 发表于 2019-9-3 18:29 | 只看该作者
Initializing...
Place your index finger on the sensor with steady pressure.
正在初始化…
将食指稳定地放在传感器上。
(初始化后的串口数据-未放上手指)




回复

使用道具 举报

2075#
ID:513258 发表于 2019-9-3 18:33 | 只看该作者


放上手指,只有一组数据,比较平稳估计是血氧值,大约95%
回复

使用道具 举报

2076#
ID:513258 发表于 2019-9-3 19:04 | 只看该作者

回复

使用道具 举报

2077#
ID:513258 发表于 2019-9-4 06:54 | 只看该作者
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试做实验,不管成功与否,都会记录下来---小小的进步或是搞不定的问题,希望能够抛砖引玉。

【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百零五:12位 WS2812 5050 RGB LED 智能全彩RGB环开发板大环




回复

使用道具 举报

2078#
ID:513258 发表于 2019-9-4 07:40 | 只看该作者

WS2812B
是一种将控制电路和rgb芯片集成在一起的智能控制led光源。5050组件的包装。内部包括智能数字端口数据锁存和信号整形放大驱动电路。还包括精密内部振荡器和12V电压可编程恒流控制部分,有效保证了像素点光色高度一致。数据传输协议采用单NZR通信方式。像素上电复位后,DIN端口接收数据来自控制器,第一个像素收集初始24位数据,然后发送到内部数据锁存器,其他数据由内部信号整形放大电路通过DO端口发送到下一个级联像素进行整形。后对于每个像素的传输,信号要减少24位。像素采用自动整形传输技术,使像素级联数不受信号传输的限制,只取决于信号传输的速度。复位时间>280μs,中断时不会造成误复位,支持较低频率,价格低廉单片机。刷新频率更新到2kHz,画面频率低,高清摄像机无闪烁,提高出色的展示效果。LED具有驱动电压低、环保节能、亮度高、散射角大、一致性好、功率低、寿命长等优点。集成在led上的控制芯片越来越多电路简单,体积小,安装方便。

回复

使用道具 举报

2079#
ID:513258 发表于 2019-9-4 08:02 | 只看该作者

回复

使用道具 举报

2080#
ID:513258 发表于 2019-9-4 08:04 | 只看该作者

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表