Arduino 红外光电脉搏检测:实时心率监测系统 (配 LabVIEW 可视化)
元器件清单
| 元器件 | 数量 | 备注 |
|---|---|---|
| Arduino UNO R3 | 1 | 数据采集与串口传输 |
| 红外发射管 + 光电晶体管 (反射式) | 1对 | 指尖血容量脉动检测 (PPG) |
| LM386 音频功放芯片 | 1 | 弱信号放大 (增益约 200 倍) |
| 电阻:1kΩ×2, 100Ω×1 | 各1 | 偏置、限流、增益设定 |
| 电容:100μF×2, 0.1μF×若干 | 若干 | 耦合、滤波、去耦 |
| 排针排母、跳线、面包板/万用板 | 若干 | 电路搭建 |
电路原理与信号链路
- 传感器前端: 红外 LED 发射光照射指尖,光电晶体管接收透射/反射光。血管搏动导致血容量变化,引起吸收光强度周期性变化,输出微弱电流信号 (μA 级)。
- 跨阻/电压放大: LM386 配置为增益约 200 倍的放大器,将微弱光电流转换为 0-5V 电压信号。
增益公式:Av = 1 + (Rf/Rin),配合电容耦合滤除直流分量。 - 信号调理: 二阶 RC 低通滤波器 (fc ≈ 150Hz) 去除高频噪声及工频干扰,保留 0.5-5Hz 心率基波及谐波。
- Arduino 采集: 模拟口 A0 以 100-200Hz 采样率读取,通过峰值检测/自相关算法计算 BPM。

软件架构
Arduino 端 (嵌入式采集)
- 使用
FreqMeasureMulti库或自带定时器中断实现精确周期测量 - 串口以 115200 波特率输出原始波形数据或计算后的 BPM 值
- 代码托管:GitHub 仓库
LabVIEW 端 (PC 可视化与模糊逻辑处理)
- 通过 LINX Toolkit 实现 Arduino 与 LabVIEW 串口通信 (类 Firmata 协议)
- 前面板实时绘制 PPG 波形图、心率趋势图、BPM 数值显示
- 引入模糊逻辑规则库:对噪声伪峰、运动伪迹进行智能抑制,提升计算鲁棒性
- 可导出 CSV 格式数据供后续分析

关键调试要点
- 手指按压力度: 过紧阻断血流、过松信号弱,建议制作 3D 打印指夹固定
- 环境光干扰: 传感器需避光封装 (热缩管/黑色胶带包裹)
- 基线漂移: 高通滤波 (fc ≈ 0.5Hz) 或软件基线校正消除呼吸/体动引起的低频漂移
- LM386 增益调节: 引脚 1/8 跨接 10μF 电容可将增益从 20 提升至 200
- 采样率权衡: 100Hz 足够捕捉心率波形,过高增加串口负担
局限性与改进方向
- 仅适用于静止测量,运动伪迹抑制能力有限
- 单波长 PPG 无法测量血氧饱和度 (SpO2),需双波长 (红光+红外) 方案
- 可移植至 ESP32 实现 WiFi/BLE 远程监护,配合手机 App
- 引入 MAX30102 专用 PPG 芯片替代分立元件,大幅简化电路并提升 SNR
制造工艺
- 远程心率监测系统:AWS IoT 告警 + 树莓派 Windows IoT 可视化
- 智能缺水报警器 – DIY植物土壤湿度监测装置
- 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
- 意大利语单词时钟:Arduino Nano + NeoPixel 144 灯珠 + LCD + RTC 打造
- Arduino Nano 驱动的智能家居植物自动浇水系统
- 基于Arduino MKR Fox 1200构建可靠Sigfox千瓦时电表
- 蓝牙温度监测仪:Arduino Nano + NTC 热敏电阻 + HC-06 无线传输
- 非接触手势门锁:APDS-9960 + Arduino 实现安全门禁
- Arduino UNO 精准视觉反应时间测试仪
- 云监控:实时资产管理的远程控制系统
- 智能服装集成心率传感器实现可靠可穿戴监测
- 智能音箱无接触心跳监测:革命性系统