呼吸机是可以代替人的呼吸功能或辅助人的呼吸功能的仪器。它适用于呼吸衰竭、甚至停止呼吸的病人做人工呼吸之用。它能帮助病人纠正缺氧和排出二氧化碳,是挽救某些危重病人生命的重要工具。
现有的呼吸机产品,其主控系统大多基于单片机来实现,对于功能强一些的产品就需要使用高端单片机,这样使得系统的成本比较高,而且外围的接口模块较多,结构复杂。使用SOPC(可编程片上系统)技术设计主控系统,可充分利用IP核的强大功能,精简外设数量,与此同时只占用了很小部分的资源,大大提高了系统的性价比。
本文利用SOPC技术设计了持续气道正压通气呼吸机的主控系统,使用了Altera公司的Nios II软核处理器以及一些通用的IP核,笔者基于Avalon总线规范定制了组件,将控制逻辑全部集成至单片FPGA内。
医用呼吸机
正压呼吸机是利用增加气道内压力的方法将空气送入肺内,肺内的压力增大使肺腔扩张。当压力失去后,由于肺腔组织的弹性,将肺恢复到原来的形状,而使经过交换的一部分空气呼出体外。目前,大部分呼吸机都是利用这种增加气道内压力的方法给病人送气的。
呼吸机所需的气压采用直流电机来提供,直流电机的控制信号为PWM信号,根据PWM信号的占空比和周期来控制电机的转速。外部接口提供按键来接受命令,设定各种参数。提示信息、状态信息、参数信息通过字符型LCD显示。为了便于对系统进行测试,使用UART为命令控制接口,对系统进行直接控制,该接口在成品后即被隐去。
系统结构
以SOPC技术为核心的呼吸机主控系统框图如图1所示。
图1 呼吸机系统硬件结构框图
主控系统的核心FPGA采用Altera公司Cyclone系列的EP1C6T144C8。CPU即为Nios II软核处理器,对整个系统进行统一管理。折线框内为主控板,除下载、调试用的PC机外,对直流电机及主控板需单独供电。直流电机工作后将气流送至面罩内,电机根据端的信号来调节气流的大小。在面罩内装有压力检测模块,通过A/D转换返回至主控板,用来对气流进行回馈调节。面罩供患者使用。
直流电机控制
系统使用PWM信号对直流电机进行控制。在SOPC Builder提供的标准IP核中是没有PWM组件的,需要自行定制,PWM组件的输出信号是方波,方波的周期及占空比可调。PWM任务逻辑结构示于图2。
图2 PWM任务逻辑结构
PWM组件的任务逻辑有:
●PWM任务逻辑由一个输入时钟、一个输出信号、一个允许位、一个32位计数器和一个32位的比较器组成;
●时钟驱动32位计数器,建立输出信号的周期;
●比较器用来对32位比较器的当前值和占空比值进行比较,决定所输出的信号;
●若当前值小于或等于占空比值,则输出逻辑信号为0,否则为1。
PWM组件的寄存器文件:
●clock_divde 在PWM的一个周期中的时钟周期数;
●duty_cycle PWM输出为低电平的时钟周期数;
●enable PWM输出的允许/禁止。0到1的上升沿使能PWM组件。
将PWM定义寄存器的头文件和驱动程序封装有:
altera_avalon_pwm_init(); //PWM模块初始化,包括周期设置
altera_avalon_pwm_enable(); //PWM模块使能
altera_avalon_p wm_disable(); //PWM模块禁止
altera_avalon_ pwm_change_duty _cycle(); //PWM模块占空比调整
对于直流电机来说,PWM占空比需要达到一定量才能使电机工作,低于阈值(PWM_DUTY_THRESHOLD)的PWM信号不能驱动电机,这部分能量会转化为热量损害电机,所以,设定PWM值的时候需要注意将值设在阈值以上,在altera_avalon_pwm_change_duty_cycle()中对所设定的值进行判断,如果值低于PWM_DUTY_THRESHOLD则调整为PWM_DUTY_THRESHOLD+1。
以上的设计全部完成后,在SOPC Builder内将其封装成为SOPC组件。
输出及指示模块
系统需要输入设置、控制以及显示提示,这部分功能包括有按键输入、LED指示灯输出、蜂鸣器输出、液晶输出等。