APP下载

基于多STM32和CAN总线的分布式控制电动护理床设计

2020-12-08迪,赵琢,陈

计算机测量与控制 2020年11期
关键词:控制板立柱显示屏

吴 迪,赵 琢,陈 逢

(威海威高医疗影像科技有限公司 研发中心,山东 威海 264210)

0 引言

随着社会老龄化的加剧和精细化医疗的实施,对护理床的需求日益增加[1-2]。在新技术快速发展和跨领域广泛应用的背景下,护理床的发展有如下几个趋势:1)电动护理床逐步取代传统的手动护理床;2)电动护理床由支持简单动作向支持多功能组合动作演变;3)智能化、模块化、标准化的设计[3-4]。目前,多功能电动护理床的控制系统设计,大多数采用单一控制器方式,这种方式的优点是设计简单,缺点是受主控芯片功能、性能和端口数量的限制,无法实施更多、更复杂的功能应用。此外,由于护理床外形尺寸较大,各个电动执行机构和传感器装置分散在床体各处[5],对于单一控制器的方式而言,所有信号连接线都要汇总到控制板,因此走线错综复杂,信号干扰严重,不利于系统的稳定性和工艺实施。

鉴于以上,本设计采用分布式控制方式,将护理床控制系统的各个功能扁平化、模块化。控制系统由运动控制板、检测控制板、手操作控制板、脚踏控制板、左侧显示屏和右侧显示屏构成。各个控制单元均采用STM32作为主控芯片,各个控制单元之间采用CAN总线通信。

与现有方式相比,本设计将各个控制单元分散布置在床体各处,便于与电动执行机构和传感器装置就近连接,各类信号能够就近传输和处理,缩短敏感信号的传输距离。各个控制单元各司其职,减小了主控芯片的负担,系统负荷均衡,整体性能得到提升。各个控制单元之间通过CAN总线通信,抗干扰能力强、仲裁容错能力强[6],提高了床体的系统稳定性。此外,由于CAN总线拓扑结构的特点[7],方便后续增加新的功能单元节点。

1 系统结构及原理

系统由多个控制单元与CAN总线组成,各个控制单元分散布置在床体各处。其中,运动控制板和检测控制板位于床体中部,脚踏控制板位于床体底部,手操作控制板位于床旁,左侧显示屏和右侧显示屏分别位于床头护栏的左、右两侧。各个控制单元通过CAN总线连接。系统框图如图1所示。每个控制单元均由STM32作为主控芯片,应用其丰富的接口完成相应控制和处理功能;STM32内置有CAN控制器,与CAN隔离收发器通信。CAN隔离收发器在CAN总线上发送或接收数据,实现与其他控制单元之间的通信。

图1 系统框图

运动控制板用于控制床体的电动执行机构,由STM32的IO口控制3个电动升降立柱和4个电动推杆。3个电动升降立柱分别位于床架的背部、左腿部、右腿部,其组合动作可以实现床体的前后倾斜、左右倾斜等功能。例如左、右腿部的立柱同时降低,背部立柱升高,可以实现床体向前倾斜功能;背部立柱保持不动,左腿部立柱下降,右腿部立柱上升,可以实现床体的向左倾斜功能。4个电动推杆分别位于背部、大腿部、小腿部和脚部。STM32控制推杆的伸出或缩回,带动机械机构,可以实现床体的背部升降、大腿升降、小腿弯曲、脚部伸缩等功能。

检测控制板用于检测各个传感器的状态,包括位于背部、大腿和小腿的角度传感器;位于左、右侧身体护栏和头部护栏的位置传感器。STM32读取各个传感器的状态,实现床体姿态识别功能。

手操作控制板和脚踏控制板布置有多个按键,用于输入各种床体动作命令。

左、右两侧显示屏分别位于左、右两侧床头护栏内。显示屏作为显示和控制的集中单元,用于显示当前床体状态,且设计有按键用于输入床体控制命令。通过CAN总线与检测控制板通信,获取床体姿态数据用于显示;与运动控制板通信,执行相应动作。

2 硬件设计

主要设计参数有:

1)高度值模数转换器(ADC)精度:12位;

2)角度值测量误差:1°;

3)电动执行机构驱动电压:24 V;

4)通信方式:CAN 2.0B协议。

本设计中的运动控制板、检测控制板和左、右两侧显示屏的主控芯片选用STM32F405VG,它是以ARM Cortex-M4为内核的32位单片机,工作频率高达168 MHz。内置1 MB闪存和192+4 KB的SRAM,包含82路GPIO,2路CAN接口,具有支持8080/6800格式液晶显示屏(LCD)驱动的可变静态存储控制器(FSMC)接口,16通道12位ADC等[8-9]。处理能力强,运行速度快,接口丰富,适合高性能的嵌入式系统设计。本设计中的手操作控制板和脚踏控制板功能相对单一,考虑到成本因素,主控芯片选择STM32F405RG,其GPIO有51路,无FSMC接口,其他性能不变,可以满足实际需求。

CAN收发器采用CTM1051高速隔离收发模块,其端口与CAN控制器、CAN总线连接,无需外加器件即可直接使用。支持CAN 2.0A和2.0B,每个CAN网络最多可接入110个收发模块,最长通信距离1 km,支持最低波特率40 kbps。满足设计需求,并为后续功能单元的拓展提供了可能性。

2.1 运动控制板设计

运动控制板用于接收控制命令,驱动3个电动升降立柱和4个电动推杆按照特定方式动作。电动升降立柱和电动推杆都是由直流电机和机械执行机构组成的,所以对它们的控制实质上就是对直流电机的控制。控制升降立柱和推杆的运动方向和运动速度,实质是控制电机的转动方向和转速。电机的转动方向由流经电机的电流方向决定,一个简单的控制方法是通过继电器实现。电机的转速用脉宽调制(PWM)调节实现。主控芯片STM32控制其中一路电动升降立柱的电路图如图2所示。

图2 电动升降立柱控制电路图

选用的松下ACT212继电器,线圈由12 V电压驱动,载流可达25 A,其内部电路如图3所示。其常开触点(N.O.)接24 V电压,常闭触点(N.C.)接PWM调制的24 V电压。公共端COM 1和COM 2分别接直流电机的2个输入端。2个闸刀分别由2个线圈COIL A和COIL B控制。当N.O.为24 V,N.C.为PWM的低电平0 V时,N.O.与N.C.之间有24 V电压,即COM 1与COM 2之间有24 V电压,也即电动升降立柱的2个输入端之间有24 V电压,电动升降立柱开始运动;当N.O.为24 V,N.C.为PWM的高电平24 V时,N.O.与N.C.之间无电压,电动升降立柱停止运动。若通过COIL A和COIL B改变闸刀的位置,可以改变流经COM 1与COM 2的电流方向,即控制电动升降立柱的运动方向是升高还是降低。

图3 ACT212继电器电路图

STM32的PA7 Timer1配置为PWM输出,信号幅值为3.3 V,若要实现对24 V的PWM调制,需要用场效应(MOS)管控制。设计采用的MOS管CSD88539ND,双N沟道,漏源极耐压为60 V,支持连续漏极电流可达15 A,栅源极阈值电压3 V,适合于电机控制。PA7输出的PWM通过一级三极管反向,变换为幅值为24 V的反向PWM,接入MOS管CSD88539ND的栅极,其源极接地。通过PWM控制栅源极之间24 V电压的有无,实现对漏极的导通控制,即上文所述继电器常闭触点N.C.的PWM控制。通过设置PA7输出PWM的占空比,即可改变电动升降立柱的运动速度。为了避免电机启动时产生的瞬间大电流,将STM32输出的PWM信号设置为变占空比的方式,使电机变速启动。

STM32的GPIO端口PD14、PD15用于控制电动升降立柱的运动方向。因GPIO电流驱动能力不足以直接驱动继电器线圈,利用达林顿管ULN2003A提高其电流驱动能力。ULN2003A的COM端接12.5 V电压,实现STM32的GPIO 3.3 V逻辑电平控制12.5 V电压,以此推动继电器线圈COIL A和COIL B。当继电器线圈中有电流流过时,其对应的闸刀吸合。通过改变闸刀的位置,可以控制流经直流电机的电流方向,从而达到控制升降立柱运动方向的目的。

因为电机是感性负载,控制其启动、停止和反向时,会有感应电流产生。为了及时释放感应电流,使用快恢复二极管ES1J作为释放二极管,构成电流释放通路,保证系统稳定。

电动升降立柱的高度数据,通过模拟量输出,用STM32 的PC0采集,进行12位的A/D转换。

STM32控制电动推杆的设计与此类似,但不需要采集推杆伸出长度数据。推杆自带限位装置,伸出或缩回到极限位置时自动停止。

2.2 检测控制板设计

检测控制板用于实时读取各个角度传感器的数据,和各个位置传感器的状态,以识别床体当前姿态。其中一路角度传感器和一路位置传感器的电路图如图4所示。

图4 角度传感器和位置传感器电路图

采用单轴角度传感器AYC-360,分辨率为0.1 °,精度为0.5 °,将其垂直于水平面安装在床架上。当床面呈水平时,STM32读取并设置其输出角度为0,当床体动作时,传感器实时输出当前角度值。输出采用RS-232通信协议,波特率设置为9 600 bps。STM32的USART接口是TTL电平,需要使用RS-232收发芯片进行转换。设计选取MAX3223芯片,其RS232端连接角度传感器,TTL端连接STM32的USART3接口PC10和PC11,实现对当前角度数据的读取。

位置传感器采用微动式行程限位开关,床体护栏关闭时开关压紧闭合,开关两端接地,STM32的PD14为低电平。护栏打开时开关释放,PD14由电阻上拉到3.3 V,输入为高电平。以此判断床体护栏的状态。

2.3 手操作控制板和脚踏控制板设计

手操作控制板和脚踏控制板用于发送各种动作命令。手操作控制板布置在床旁,有较多按键;脚踏控制板布置在床体底部,通过踏板的方式操作。主要按键包括床体向前、后、左、右倾斜、床体升高、床体降低、背部升降、大腿部升降、小腿部升降、脚部伸缩按键。还设计有快捷按键,用于将预设的组合动作一步执行到位,包括心肺复苏模式、休克急救模式和座椅模式按键。

选用的STM32F405RG有足够的GPIO口,因此按键识别采用GPIO直接控制。按键采用机械触点式。没有按键动作时,相应GPIO通过电阻上拉到3.3 V,为高电平;有按键动作时,相应GPIO下拉到地,为低电平,STM32据此识别出相应的按键。

2.4 显示屏单元设计

显示屏有2个,分别位于左、右两侧床头护栏内。显示屏主要用于显示当前床体状态,可以查看床体各部分的姿态数据,如图5所示。且设计有按键用于输入床体控制命令。

图5 显示屏

STM32对LCD驱动的控制通过FSMC来实现。STM32的FSMC可支持SRAM、NAND FLASH、NOR FLASH和PSRAM等存储器,对LCD驱动的控制类似于对SRAM的控制方式。FSMC配置为LCD并行接口时可以支持大多数的LCD控制器[10],包括Intel 8080和Motorola 6800格式。

配置为LCD驱动接口的FSMC信号包括片选信号(CS)、写信号(WR)、读信号(RD)、复位信号(RST)、命令/数据标志(RS)、16位双向数据线(DB[0-15])。STM32与显示屏的接口电路如图6所示。设计采用的LCD的驱动IC为ILI9488,将[IM2 IM1 IM0]配置为[0 1 0]可支持MCU16位并行模式。背光部分为6个LED,每个驱动电流为20 mA,显示部分和背光部分均为3.3 V电压供电。

通常,液晶屏上电初始化过程中会显示乱码。为了遮掩乱码,需要增加对液晶屏背光时序的控制,当初始化完成、图像正常显示后,再打开背光。设计用MOS管AO3401作为背光的控制开关。STM32的PC3输出高电平时,三极管3904导通,AO3401的源栅极产生电压差,AO3401随之导通,使得+3.3 V连通到+3.3 V_LCD,液晶屏背光电压的3.3 V完成加载,背光打开。源栅极间并联电容的充放电时间影响源栅极电压的建立时间,调节其容值可以调节AO3401打开的速度。

2.5 CAN总线通信设计

CAN总线采用多主机工作方式和非破坏性仲裁总线技术,总线上任意节点可在任意时刻主动向网络上其他节点发送信息而不分主次,各节点之间自由通信,通信方式灵活。当多个节点同时向总线发送信息时,优先级较低的节点会主动退出发送,而优先级较高的节点不受影响,从而有效节省了总线冲突仲裁时间,即使在网络负载繁重的情况下,也不会出现网络瘫痪的情况[11]。适用于对稳定性要求严苛的控制系统。

CAN节点通常采用CAN控制器加隔离和收发的架构方式。设计采用的STM32F405VG和STM32F405RG自带2组基本扩展CAN(bx CAN)接口,其支持CAN协议2.0A和2.0B主动模式;波特率最高达1 Mbps;支持时间触发通信功能。设计前端采用隔离和收发功能一体的高速隔离收发器CTM1051KT,实现CAN控制器的逻辑电平和CAN总线差分电平的转换,具备3500 VDC隔离功能,并且未上电的节点不影响总线。各控制单元的CAN部分电路图如图7所示。CTM1051KT的CANH、CANL管脚连接到CAN总线;RXD、TXD管脚连接到STM32的CAN控制器管脚PA11和PA12。

图6 显示屏接口电路图

图7 CAN节点电路图

系统设计了6个CAN节点的布局,远端采用终端电阻连接于CAN总线,即在左、右显示屏端设计有120 Ω的终端电阻,其作用是与CAN总线电缆做阻抗匹配,减小信号反射,提高数据通信的抗干扰性。

3 软件设计

3.1 系统软件设计

系统上电初始化后,运动控制板检测3个升降立柱的高度,并计算床体前后、左右倾斜的角度,完成床架姿态判断,并通过CAN总线发送给屏端。检测控制板检测3个角度传感器和4个位置传感器的数值,完成床体姿态判断,并通过CAN总线发送给屏端。屏端接收到数据后,在相应位置显示。如果接收到来自手操作控制板、脚踏控制板或显示屏按键的命令,则做相应动作。执行完后再次判断床架、床体姿态。系统软件流程图如图8所示。

图8 系统软件流程图

3.2 升降立柱控制软件设计

系统上电初始化后,运动控制板检测3个升降立柱的高度,利用反三角函数公式计算床体前后、左右倾斜的角度,并做角度变化值的比较。如果变化值大于1 °,则刷新数据;如果变化值小于1 °,不刷新数据。这样设计目的是做软件滤波,滤除机械运动误差带来的数据不稳定性。如果接收到动作命令,则做相应动作。执行完后返回。升降立柱控制流程图如图9所示。

图9 升降立柱控制流程图

升降立柱在正常运动控制以外,还设计有保护机制,避免运动状态混乱、达到床体机械极限、引起电机堵转等风险。主要有如下几个规则:

1)按下按键并保持,床体执行动作命令。松开按键,动作停止。同一时间只响应一个按键。

2)床体呈左、右方向倾斜的状态下,按“前、后倾斜”按键,床体的3个升降立柱先恢复水平,再做前、后倾斜的动作。

3)床体呈前、后方向倾斜的状态下,按“左、右倾斜”按键,床体的3个升降立柱先恢复水平,再做左、右倾斜的动作。

4)左、右倾斜动作分阶段执行。即在水平面最低状态下,按“左、右倾斜”按键,床体先左、右倾斜一定角度,然后停止左、右倾斜,3个升降立柱同时升高一定高度,然后再次做左、右倾斜,直至完成动作。这样设计的目的是避免床体支架磕碰底架。

5)左、右倾斜角度不能超过30 °,避免床体机械损坏。

3.3 传感器检测软件设计

系统上电初始化后,检测控制板读取位于床体背部、大腿、小腿位置的3个角度传感器的数值,判断角度变化值,做软件滤波。如果变化值大于1 °,则刷新数据;如果变化值小于1 °,不刷新数据。读取位于床体左、右两侧身体护栏和左、右两侧头部护栏的4个位置传感器的数值,判断是否是1。如果是1,表示对应的护栏处于打开状态,产生报警信号,并持续判断位置传感器数值,直到是0,表示护栏已关上,流程返回。传感器检测流程图如图10所示。

图10 传感器检测流程图

4 系统测试与分析

4.1 电动升降立柱启动测试与分析

在电动升降立柱启动时,用示波器测量STM32输出PWM信号的占空比变化,测试波形如图11所示。因有三极管反向作用,STM32输出低电平时,电机转动;高电平时,电机停止。由测试结果分析可知,起始占空比较大,并迅速减小,电机转速逐渐增大,实现了电机变速启动,避免了电机启动瞬间的大电流影响,减轻了系统负荷。

图11 电动升降立柱变速启动波形

4.2 倾斜角度测试与分析

角度的测量分为两类:1)床体的前、后倾斜和左、右倾斜的角度值,是STM32读取电动升降立柱的高度数据,并通过反三角函数计算出的角度值,其精度与器件精度、A/D转换精度、升降立柱的安装一致性有关;2)背部、大腿和小腿的角度值,是角度传感器直接输出的角度值,其精度与器件精度、安装位置有关。测试通过使用高精度角度仪,比较角度仪测出数据与护理床显示屏显示数据的差异。测量5次的数据如表1所示。由测试结果分析,前后、左右、背部、大腿、小腿倾角的最大误差分别为0.6°、0.6°、0.3°、0.3°、0.2°,整体最大误差为0.6°,小于1°,符合设计要求。其中,由电动升降立柱的高度计算出的角度数据误差相对稍大,这方面可以在后续的工作中进一步改善。

表1 角度测试结果 °

4.3 CAN总线测试与分析

CAN总线测试采用CANScope总线综合分析仪,连接于CAN总线,获取数据进行分析。CAN波形分析如图12 所示。分析可见,CAN-H与CAN-L波形匹配、输出无延迟,共模抑制效果良好[12];差分信号完整、边沿无明显振荡;CAN数据逻辑清晰,符合规范。长时间持续测试表明,无明显干扰,系统稳定性强。

4.4 综合运动测试与分析

按照设计要求,对系统进行全面的功能、性能、稳定性

图12 CAN波形分析

测试。各电动升降立柱和电动推杆的运动逻辑正确;各个预设动作能够准确执行、动作到位。执行部件响应无明显延迟、运动无过冲。保护机制有效执行,避免了运动状态混乱、机械卡位和电机堵转风险。位置传感器反馈灵敏。显示屏功能正常、时序正确,显示信息同步。各个控制板按键输入响应灵敏。由运动综合测试的结果可知,系统整体设计较为完善,符合功能性和稳定性要求。

5 结束语

本设计基于分布式控制理念,采用多个基于STM32的控制单元,分别实现床体的运动、检测、控制和显示功能。控制单元之间采用CAN总线通信。设计将STM32强大的处理能力和CAN总线安全稳定的特点相结合,是电动护理床的一种新的技术应用形式。系统具有可靠性高、响应快、功能扩展性强等特点,同时也是一种技术平台,为后续新功能的拓展和延伸打下了基础,应用前景广阔。基于多STM32和CAN总线的电动护理床后续还可以进一步改进和完善,比如在易用性方面,增加可记忆的用户自定义姿态;在智能化方面,增加语音控制、语音或遥控助行;在物联方面,增加远程操控和数据传输等功能,以上均可基于此平台开发。

猜你喜欢

控制板立柱显示屏
一块布就是一个显示屏?
综采工作面液压支架立柱挠度影响因素试验分析及其仿真
八旬老者 文化养生——记85岁北大老学长陈立柱
张衡在他的地动仪中是如何成功地用立柱验震的
2018年智能手表显示屏出货量同比增长42%
五台山掠影
轨道交通AFC导向标识控制板设计
苍蝇迷恋显示屏
LG申请欧盟商标 或布局MicroLED显示屏
一种集成脚本控制单元的设计与实现