1. 项目概述:基于STM32的智能输液监测系统
在医院陪护过病人的朋友都知道,输液过程中最让人提心吊胆的就是液体快输完时没及时叫护士。传统输液完全依赖人工观察,不仅增加医护人员工作量,还存在安全隐患。我设计的这套智能监测系统,用STM32单片机实现了输液全过程的自动化监控,当液体即将耗尽、出现回血或患者生理指标异常时,系统会自动报警并切断输液。
这个项目的核心价值在于将常见的传感器技术与医疗场景深度融合。通过液位检测模块实时监测剩余药量,红外对管精确计算滴速,颜色传感器识别回血现象,再结合心率血氧模块监控患者状态——整套系统就像给输液过程装上了"电子哨兵"。特别值得一提的是,我们采用了医用级步进电机控制输液阀,动作精度达到0.1ml,远超人工调节的准确度。
2. 系统架构设计解析
2.1 硬件组成框架
系统以STM32F103C8T6为主控,这块单片机虽然价格不到20元,但72MHz主频和丰富的外设接口完全满足需求。硬件架构采用模块化设计,包含8个关键子系统:
-
传感检测层:
- 液位检测:采用电容式传感器(型号MS-110)
- 滴速监测:红外对管槽(ITR9909)
- 回血识别:TCS34725颜色传感器
- 生理监测:MAX30102心率血氧模块
-
执行控制层:
- 步进电机:28BYJ-48驱动输液阀
- 声光报警:有源蜂鸣器+RGB LED
-
人机交互层:
- OLED显示屏:0.96寸SSD1306
- 按键输入:5向导航键
-
通信模块:
- 蓝牙4.0:HC-05模块
硬件选型经验:医疗设备必须优先考虑可靠性。例如红外对管要选择带防尘设计的型号,避免病房环境中的灰尘影响检测精度。
2.2 软件流程设计
系统软件采用前后台架构,通过定时器中断实现多任务调度:
c复制void TIM2_IRQHandler() { // 10ms定时中断
static uint8_t cnt = 0;
if(++cnt >= 10) { // 100ms周期任务
LiquidLevel_Check();
Blood_Detect();
cnt = 0;
}
FlowRate_Calculate(); // 每10ms执行
}
主程序循环处理非实时任务:
c复制while(1) {
Key_Scan();
OLED_Refresh();
Bluetooth_Handle();
if(alarm_flag) Emergency_Stop();
}
这种设计保证了关键监测功能的实时性(滴速检测响应时间<20ms),同时兼顾了界面交互的流畅度。
3. 核心模块实现细节
3.1 液位检测方案优化
最初尝试过超声波测距方案,但实测发现输液瓶材质会导致声波折射误差。最终采用电容检测法,在瓶壁外侧对称安装两个10mm×20mm的铜箔电极,通过检测LC振荡电路频率变化判断液位:
code复制f = 1/(2π√(LC))
液体存在 → 介电常数ε增大 → 电容C增大 → 频率f降低
具体实现时需要注意:
- 电极需要做防水处理(涂覆三防漆)
- 不同药液需重新校准(葡萄糖和盐水介电常数不同)
- 温度补偿算法(每℃引起约0.3%的读数漂移)
3.2 回血检测算法
回血检测是项目的技术难点。通过实验发现,正常药液与血液在RGB颜色空间有明显差异:
| 液体类型 | R值 | G值 | B值 |
|---|---|---|---|
| 生理盐水 | 185 | 190 | 200 |
| 葡萄糖 | 180 | 175 | 165 |
| 血液 | 120 | 50 | 60 |
采用欧式距离算法进行判别:
c复制float Blood_Detect(void) {
uint16_t r,g,b;
TCS34725_GetRGB(&r,&g,&b);
float dist = sqrt(pow(r-120,2)+pow(g-50,2)+pow(b-60,2));
return (dist < 80) ? 1 : 0; // 阈值通过实验确定
}
3.3 滴速控制实现
滴速控制采用PID算法调节步进电机转速:
c复制void PID_Control(float target) {
static float err_sum = 0, last_err = 0;
float err = target - current_speed;
err_sum += err;
float output = KP*err + KI*err_sum + KD*(err-last_err);
Stepper_SetSpeed(output);
last_err = err;
}
实测控制精度:
| 目标滴速(滴/分钟) | 实际滴速 | 误差 |
|---|---|---|
| 30 | 29.8 | 0.7% |
| 60 | 60.5 | 0.8% |
| 90 | 89.3 | 0.8% |
4. 系统测试与优化
4.1 环境适应性测试
在模拟医院环境下进行了72小时连续测试:
-
光照干扰测试:
- 强光直射时,颜色传感器需增加遮光罩
- OLED屏幕在500lux照度下仍可清晰阅读
-
电磁兼容测试:
- 距离心电监护仪30cm时无干扰
- 蓝牙传输在WIFI密集区域需降低发射功率
-
可靠性测试:
- 步进电机连续工作2000次后需润滑
- 液位传感器漂移<1%/8h
4.2 典型问题解决方案
问题1:输液管气泡触发误报警
- 原因:气泡通过红外对管时信号波形与液滴相似
- 解决:增加波形特征识别,液滴信号脉宽>20ms,气泡脉宽<10ms
问题2:深色药液导致回血检测失效
- 优化:动态调整检测阈值,当检测到深色药液时启用辅助判断条件:
c复制if(medicine_type == DARK) { if(r<100 && g<50 && (r-g)>30) return 1; }
问题3:蓝牙传输距离不足
- 改进:改用陶瓷天线,传输距离从5m提升到12m
- 注意:需通过SRRC认证才能用于医疗环境
5. 应用扩展与升级方向
当前系统已实现基础功能,但还有优化空间:
-
云端对接:
- 通过ESP8266模块上传数据至医院管理系统
- 开发微信小程序实现家属端查看
-
智能预测:
- 基于历史数据预测输液完成时间
- 根据患者体征动态调整滴速(需临床验证)
-
耗材管理:
- RFID识别药品信息
- 自动记录输液量统计
这套系统在毕业设计答辩时获得了评委的高度评价,有医院表示愿意合作开展临床试验。最让我自豪的是,有位评委老师说:"这个设计抓住了临床护理的真实痛点。"后续如果能通过医疗器械认证,或许真能造福更多患者。