AVR32的便携式无线医疗点滴监控系统
收、脉冲整形3部分,硬件原理图如图5所示。ST1150是单光速直射式红外光电传感器,光缝宽度为1.5 mm,光轴中心为2.5 mm,红外检测面积较校当无液滴通过时,接收管(ST1150内部的三极管)导通,Vin为低电平;当有液滴通过时,接收管截止,Vin处产生高电平脉冲,经过斯密特触发器整形后在Vout处产生一串规则的方波脉冲,并送至ATmega128进行处理。
图5 点滴速度检测电路
液位检测则采用反射式红外传感器,电路检测原理电路和点滴速度检测电路类似。ST198是采用高发射功率红外光电二极管和高灵敏度光电晶体管组成的反射式光电传感器,采用非接触检测方式,检测距离为2~10 mm时可用。当液位低于设定值时,接收管接收到的是电平信号,经过反相器倒相后送至单片机,触发中断。当红外对射管为ST1150时用于点滴速度检测,为ST198时用于液位检测。
3 系统软件结构
(1) 数据帧结构
定义一个通信数据帧结构来管理控制端与设备间的通信,通过对数据帧的解析,主/从设备可以高效率地完成数据处理。按照通信传输的先后顺序,数据帧的格式为:命令(1字节)+设备ID(1字节)+事件类型(1字节)+数据域长度(1字节)+数据域(n字节)+校验和(2字节)。
(2) μC/OSII的移植
μC/OSII是一种开源、结构可裁剪的可剥夺实时内核的RTOS,其大部分代码都是C语言,可移植性较强,已在多种系列的CPU上进行了移植。AVR Studio 5内部集成了Software Framework软件包,包含Atmel MCU接口驱动函数,在AVR Studio 5环境下,移植μC/OSII到AT32UC3A0512 MCU上,需要在Micrium官方移植实例中进行以下修改:
① 修改exception.S文件中的内容,修改如下:
_handle_Supervisor_Call:
lddpcpc,__OSCtxSw
__OSCtxSw:.
longOSCtxSw
② 修改cpu.h内容如下:
#define CPU_CRITICAL_ENTER()
{cpu_sr = CPU_SR_Save();}
#define CPU_CRITICAL_EXIT()
{CPU_SR_Restore(cpu_sr);}
#define CPU_SR_Save()cpu_irq_save()
#define CPU_SR_Restore(cpu_sr)
cpu_irq_restore(cpu_sr)
#define CPU_IntDis()Enable_global_interrupt()
#define CPU_IntEn()Disable_global_interrupt()
#define CPU_ExceptDis()Disable_global_exception()
#define CPU_ExceptEn()Enable_global_exception()
#define CPU_Reset()Reset_CPU()
图6 主控制端的软件结构图
(3) 控制器部分软件设计
在μC/OSII系统下的软件结构如图6所示。
主控制端主要通过LCD界面来完成用户的操作,5个触摸键为界面操作按键,数字键盘用软件实现。通过数字键盘输入要查询的病房号,确认后即可查询到该病房中点滴的速度、余量等状态。
界面菜单的切换关系通过定义一个结构体来实现,结构体定义为:
typedef struct MenuItem{
U8 MenuNum;//当层菜单项目数
U8 *DispStr; //显示字符串
struct MenuItem *ChildrenMenus;//子菜单节点
struct MenuItem *ParentMenus; //父菜单节点
} Menu;
(4) 终端监控部分软件设计
终端接收到控制端发来的命令数据包,解析出命令,实施相应的处理,并将数据处理后打包发送给控制端。终端控制部分的软件流程如图7所示。
图7 终端主程序
结语
基于AVR32MCU和μC/OSII的嵌入式系统,利用无线通信方式实现远程在线监控,无线网络的组建增强了系统的可移动性。本文提出的一种基于AVR32的便携式点滴监控系统的设计,将医疗点滴监控装置小型化,近距离范围内系统稳定。由于资源有限,关于远距离控制的网络组建还在进一步探索。
- Arduino是什么?(07-07)
- 单片机课程设计-ATMEL51系列单片机编程器(12-01)
- ATMEL的ISP下载线(12-01)
- Atmel和STC的51单片机通用ISP下载线制作(11-29)
- ATMEL9263 800*600屏驱动问题(11-22)
- MSP430与ATMEL 93C46通讯子程序(11-13)