APP下载

基于STM32的远程遥控机器人控制系统设计

2021-07-13吴云龙程武山

无线电通信技术 2021年4期
关键词:收线推杆寄存器

吴云龙,程武山,2

(1.上海工程技术大学 机械与汽车工程学院,上海 201620;2.安徽非禾科技有限公司,安徽 芜湖 241003)

0 引言

近年来,人口老龄化呈现逐渐上升趋势,对于医护人员来说无疑是从身体到心理都增加了负担。对于瘫痪和长期卧床的老年人来说,处理大小便很困难,自身尊严也不能得到很好保证[1-2]。随着今年新冠疫情的爆发,为避免医护人员与病人直接接触,六自由度机器人应运而生。目前国内的几家公司没有研发多功能高技术产品,能实现的功能比较少,也就两三个功能。比如国内的创明利主要设计的是微保姆智能护理器,这是一种穿戴式的自动坐便护理装置,是脱离康复护理床的独立个体。该装置拥有冲水、烘干、排污等功能[3]。与此同时,国外的一些公司也将计算机技术用于医疗行业,例如美国的Metrocare公司、日本的八乐梦公司。其公司虽然能够实现支背、屈腿及其他一些辅助功能,但是不能实现自动坐便护理功能。

针对此问题,提出了一种基于STM32F429的远程遥控六自由度机器人控制系统,实现支背上行、屈腿下行、盖板打开、便盆上行、冲洗烘干及便袋自动封闭等六自由度机器人功能。该控制系统主要由这5部分组成:无线遥控器(无线通信NRFL2401)、收线电机、控制板、气泵和水泵。收线电机主要用于便袋封闭,防止异味散发。

1 系统总体方案设计

系统总体设计方案如图1所示,该控制系统设计方案主要分为四部分:① 无线通信。系统采用无线通信芯片NRFL2401,通过对遥控器软硬件的设计,最终实现通过SPI与下位机进行通信。② 控制板与收线电机。控制板核心板采用STM32F429,底板根据所需要的功能,采用模块化设计思想,自主进行原理图与PCB图的设计与调试。收线电机采用安川35步进电机,利用驱动器设计好细分数(电机转一圈所需的脉冲数),调整电机所需脉冲数以实现便袋封闭功能并且采用定时器输出脉冲宽度调制 (Pulse Width Modulation,PWM)方波控制收线电机的速度。③ 水泵和气泵。水泵、气泵是用来冲洗、烘干。 ④ 电动推杆。本文以电动推杆作为驱动装置,实现支背、屈腿、坐便器盖板打开及便盆上行等功能。⑤ 遥控器。通过对遥控器硬件软件的设计实现了对机器人的控制。

图1 系统总体设计方案Fig.1 Overall design scheme of the system

2 执行机构的设计

2.1 支背机构

对于卧床的病人而言,进行大小便需要按照正常人一样处于坐姿状态,因此涉及到支背、屈腿机构和坐便器机构。支背机构上行是机器人的第一个自由度,图2为支背机构的平面运动简图。

图2 支背机构运动简图Fig.2 Motion diagram of supporting mechanism

由图2可知,当电动推杆伸出时,带动支背推杆逆时针转动,包胶轮就推动背部板上行,实现了将人体抬高的功能。当电动推杆收缩时,带动支背推杆顺时针转动,包脚轮就推动背部板下行,实现了将人体放平的功能。电动推杆的运行主要是继电器切24 V,支背机构相关参数如表1所示。

表1 支背机构基础参数表

2.2 屈腿机构设计

由上可知,在运行自动坐便器时,需要处于坐姿,腿部向下弯曲。屈腿机构下行是机器人的第二个自由度。经计算机构的自由度为1,确保机构稳定运行,屈腿机构运动简图如图3所示。

图3 屈腿机构运动简图Fig.3 Motion diagram of curved leg mechanism

如图3所示,四边形ABCD为平行四边形,其中机架AB、AD和BC为转动连杆,CD为传动连杆,运动中AD与BC始终平行,AB与CD保持水平。通过电动推杆的伸出与收缩实现屈腿机构的稳定运行,驱动方式与支背一样。屈腿机构基础参数如表2所示。

表2 屈腿机构基础参数表

2.3 坐便器机构设计

坐便器机构的设计主要用来对大小便进行处理,坐便器机构平面运动简图如图4所示。

图4 坐便器机构运动简图Fig.4 Motion diagram of sitting mechanism

ABCD为平行四边形机构,OF为双边传动转轴,传动连杆EF是驱动的连杆,进行驱动平行四边形机构的驱动。OK为电动推杆,电动推杆水平固定。KF为拉杆,通过电动推杆拉动双边传动转轴OF来驱动平行四边形机构。GI和JH为便盖随动连杆,由平行四边形进行驱动进行盒盖的开关。坐便器机构存在两个自由度:坐便器盖板打开、便盆上行。坐便器机构基础参数如表3所示。

表3 坐便器机构基础参数表

2.4 便袋封闭

对便袋封闭机构的设计主要是防止异味散发。便袋机构存在两个自由度:收线推杆上行、收线电机动作扎紧便袋。收线推杆也是采用电动推杆,12 V供电,行程50 mm。实现方式如下:将绳子缠绕在便盆上方,绳子穿过电动推杆与电机带轮相连,通过电机的转动,将绳子拉紧以实现便袋封闭功能。

3 硬件结构设计

3.1 微处理器

控制系统采用的是STM32F429芯片,该芯片是32位的处理器,共有144的GPIO口,这些IO口既可以作为普通的IO口使用,也可以复用为串口。比如PA9与PA10既可以做普通的IO口使用,也可以复用为串口1的发送接收引脚。

该芯片具有丰富的通信功能,比如IIC,SPI,RS-232串口,485串口等[4-5]。最小系统主要包括供电系统、复位系统、时钟系统、BOOT启动模式系统、下载电路以及后备电池。

3.2 无线通信设计

本文采用NRF24L01无线通信模块,该通信模块采用3.3 V供电,同时采用SPI与下位机STM32F429进行通信,数据传输速度最大可达10 MHz,稳定可靠[6]。SPI是一种全双工、同步通信总线,只是用了4根线与控制器进行通信,分别是:① MISO,主机数据输入,从机数据输出;② MOSI,主机数据输出,从机数据输入;③ SCLK,时钟信号,由主机产生;④ CS,从机片选信号,主要由主机控制。SPI内部结构简图如图5所示。从硬件上分析,总共只有4根线,主机与从机都有一个串行移位寄存器,SPI通信是一种全双工的通信,主机与从机的数据是同时传输的。首先,主机先发送时钟信号,通过片选信号线确认与主机通信的从机。主机将移位寄存器里的内容逐一利用MOSI信号线发送给从机,与此同时,从机也将移位寄存器的数据逐一利用MISO信号线发送给主机。这样,主机与从机的数据就被交换。

图5 SPI原理图Fig.5 SPI schematic diagram

对于SPI通信而言,时钟信号的相位与极性也很重要。SPI_CR寄存器的时钟极性(CPOL)与时钟相位(CPHA)位,能够组合4种时序关系。CPOL位主要用于控制在没有数据传输时时钟的空闲状态电平,这一位对主机、从机都是有效的。如果CPOL位被清零,SCK引脚在空闲状态保持低电平;如果CPOL位被置1,SCK引脚在空闲状态保持高电平。如果CPHA位被置1,SCK时钟的第二个边沿进行数据采集,数据在第二个边沿被锁存;如果CPHA位被置0,SCK时钟的第一个边沿进行数据采集,数据在第一个边沿被锁存[7]。

由SPI_CR1寄存器LSBFIRST位可知,输出数据时可以MSB在前也可以LSB在前,根据SPI_CR1寄存器DFF位,每个数据帧可以是8位,也可以是16位。应用程序主要通过3个状态的判断来检测SPI总线的状态:① 发送缓冲器空闲标志位(TXE),此标志位置1表示发送缓冲器空闲,写下一个待发送的数据进入缓存器中后,TXE标志位被清除。② 接收缓冲器非空(RXNE),此标志位置1表示接收缓冲器中包含有效的接收数据,读SPI数据寄存器可以清除此标志。③ 忙(BUSY)标志,有硬件设置与清除,表示通信的状态。

3.3 收线电机设计

步进电机是一种将电脉冲信号转换成直线或角位移的执行元件。要想使步进电机正常的运转,离不开脉冲线和方向线共同作用。方向信号线控制电机的正转和反转。控制板的通用输入输出口(GPIO)口的脉冲信号,通过环形分配器按一定的顺序加到电动机的各项绕组上,再通过功率放大器使电动机能够输出足够的功率[8]。

当U相接通电源,V相与W相不接通电源,此时1齿和3齿与U相对齐;同理当V相接通电源,U相和W相不接通电源,2齿和4齿与V相对齐;当W相接通电源,U相和V相不接通电源,1齿和3齿与W相对齐。可知当步进电机的通电顺序为“U→V→W→U→V→…”时,转子便沿顺时针方向一步步地向前转动;通电状态每更换一次,转子便前进一步,电机每转一步对应的角度称为步距角。步距角的计算方法如下:

θb=360/ZKm,

(1)

式中,Z为电机转子齿数,m为电机定子绕组相数,K为通电系数(K=1,2)。

步进电机通过连接件直接与负载相连,由电机产生输出转矩TM,用来克服负载转矩TL,带动负载以角速度ω(或速度n)进行运动。当输出转矩TM与负载转矩TL平衡时,转速n或角速度ω不变;加速度dn/dt或角加速度dω/dt等于零,即TM=TL,这种运动状态称为静态(相对静止状态)或稳态(稳定运转状态)。当TM≠TL时,转速或角速度就要发生变化,产生角加速度,速度变化的大小与传动系统的转动惯量J有关。

(2)

TM-TL=Td,

(3)

式中,TM为电机的输出转矩;TL为负载转矩;J为传动系统的转动惯量;ω为传动系统的角速度;n为传动系统的转速;t为时间;Td为动态转矩。

但是在实际工程中往往用转速来代替角速度,用飞轮惯量来代替转动惯量,因此有:

(4)

考虑传动机构在传输功率过程中有损耗,这个损耗可用效率ηc来表示,即:

(5)

负载转矩折算到电机轴上的等效转矩为:

(6)

式中,ηc为电机传动效率;j为总传动比;ωM为电机角速度;ωL为转动速度;T′L为负载转矩。

控制板的IO口接到驱动器的方向正、脉冲正上,方向负、脉冲负接系统对应的0 V。外部控制系统使用共阳的接法,VCC采用的是5 V供电,如果外部系统供电电压超过5 V,就需要外加限流电阻进行限流。在使用驱动器的时候,还要考虑到细分数。步进电机的细分数在本质上是一种电子阻尼技术,主要用来减小电机的低频振动,增大电机的运作精度。本文细分数采用的是6 400,也就是电机转一圈需要6 400个脉冲。

3.4 气泵、水泵、电动推杆

本文采用的气泵是微型真空负压吸气活塞泵,该微型气泵采用直流24 V供电,其抽气流量为42 L/min,真空度为-85 Kpa,实现冲洗之后进行烘干。水泵采用直流12 V供电,型号是ZX45D-12,功率14.4 W,流量600 L/h,主要用来冲洗。支背、屈腿、坐便器都是通过电动推杆来驱动,采用捷昌的电动推杆,支背的电动推杆为6 000 N,屈腿、坐便器的电动推杆都为3 000 N,以上的控制方式都为STM32单片机的IO口控制继电器的通断,从而实现3.3 V切24 V[9]。

3.5 遥控器硬件电路设计

遥控器的硬件电路主要包括电源电路、晶振电路、复位、LCD电路、SWD调试接口及按键等。电源电路采用5 V供电,采用AMS1117将5 V转换成3.3 V。采用8 M的晶振,按键采用低电平有效电路设计,串口屏采用迪文科技,5 V供电,通过PA2、PA3与STM32F103进行通信,实现数据的交互。

4 系统软件设计

4.1 无线通信程序设计

本实验采用NRF24L01无线通信模块,其本质就是SPI同步通信,由上可知,数据的通信需要两个无线通信模块,一个发送,一个接收。

首先对NRF24L01的IO口进行初始化,对SPI2进行初始化,设置其工作模式,数据结构为8位帧结构,同步时钟在空闲时为高电平,同步时钟的第二个跳变沿数据被采样,预分频值设置成256,数据的传输从MSB位开始,通过调用__HAL_SPI_ENABLE(&SPI5_Handler);使能SPI,并且调用SPI2_ReadWriteByte(0Xff);启动数据的传输。SPI的数据传输速度等于APB1的时钟除以分频系数,APB1的时钟一般时45 MHz。通过调用NRF24L01_Check(),检测无线通信模块是否存在,如果返回0,说明检测到了NRF24L01模块。通过调用NRF24L01_Write_Reg()函数实现对寄存器进行写值,u8 NRF24L01_Read_Buf(u8 reg,u8 *pBuf,u8 len);旨在指定位置读出指定长度的数据。遥控器作为发送端,下位机作为接收端,部分程序如下:

void NRF24L01_TX_Mode(void)

{

NRF24L01_CE=0;

NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS,TX_ADR_WIDTH);∥写TX节点地址

NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH);∥设置TX节点地址,主要为了使能ACK

NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x01);∥使能通道0的自动应答

RF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01);∥使能通道0的接收地址

NRF24L01_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);∥设置自动重发间隔时间:500 μs + 86 μs;最大自动重发次数:10次

NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40);∥设置RF通道为40

NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);∥设置TX发射参数,0 dB增益,2 Mbit/s,低噪声增益开启

NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG,0x0e);∥配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式,开启所有中断

NRF24L01_CE=1;∥CE为高,10 μs后启动发送

}

4.2 收线电机的程序设计

4.2.1 收线电机算法

步进电机程序设计采用定时器中断。采用TIM3进行定时,采用向上计数,计数器从0记数到自动重装在值ARR,定时器产生溢出,然后定时器继续重0开始计数。定时器的时钟采用APB1时钟,时钟分频因子设置为1[10-11]。采用值分频寄存器设置自动重装值,预分配寄存器设置其计数器的计数频率,TIM3_CR1控制寄存器设置其计数模式,中断使能寄存器TIM3_DIER设置其是否开启中断。

4.2.2 步进电机程序设计

对便袋进行封闭需要步进电机的驱动,硬件设计中对步进电机的原理、选型进行介绍,之后需要对软件进行设计。电机的驱动器供电需要对继电器切12 V,串口接收的指令是放在数组里面,首先需要清空数组里面的内容以便接收指令,判断方向标志位是不是为1,继电器得电,调用motor子函数,同样打开定时器进行计时,等待定时时间到电机结束[12]。其中涉及到一个T3Runtime,为定时器发生中断的计数次数,比如定时器设定的时间为10 μs,则T3Runtime会每隔10 μs加1,T3Runtime/speed==m1就是设置PWM的高低电平持续的时间为m1×speed×10 μs。步进电机的程序设计的流程如图6所示。

图6 收线电机控制流程图Fig.6 Control flow chart of receiving motor

4.2.3 收线电机调速

PWM是通过利用数字输出技术来对模拟电路控制的一项技术,PWM原理如图7所示。

由图7可知,假设定时器的计数方式设置为向上计数模式,当计数器的值小于比较值时,控制器的IO口输出为0;当计数器的值大于或等于比较值时,控制器的IO口输出为1[13-15]。当计数器的值达到定时器自动重装载值时,计数器清零,又将从零开始计数,不断地重复此过程,只要不断地改变比较值,就可以实现定时器输出不同的占空比,改变自动重装载值就不断改变计数器的频率,这就是PWM输出的原理。STM32F429除了定时器6和定时器7以外,都可以输出PWM方波。定时器输出PWM方波主要涉及到几个重要寄存器:比较模式寄存器、比较使能寄存器以及比较寄存器。比较模式寄存器有两个:一个设置通道1和2,另一个设置通道3和4。TIM_CCMR2寄存器是16位寄存器,模式设置位OC4M由3位组成,需要设置成110或者111,这两种模式输出电平的极性相反[13]。

图7 PWM原理图Fig.7 PWM schematic diagram

PWM可以生成一个脉冲信号,这个脉冲信号的频率由TIMX_ARR寄存器值决定,其占空比则由TIMX_CCRx寄存器值决定。通过向TIMx_CCMRx寄存器中的OCxM位写入110(模式1)或者111(模式2),可以独立选择各个通道。必须将模式寄存器中的OCxPE位置1使能相应的预装载寄存器,最后通过将控制寄存器中的ARPE位置1使能ARR寄存器。PWM的高电平输出的时间越长,电机的速度就越快,因此可以调节高电平持续的时间来控制电机的转速。

4.3 电动推杆程序设计

本文用了4个电动推杆:支背、屈腿、坐便器以及收线小推杆。这个4个推杆的硬件设计与算法均一样。下面以支背为例,阐述其硬件电路和软件算法。硬件电路:控制板的IO口连接到继电器的输入,输出接到电动推杆上,当控制板输出高电平时,继电器常开触点闭合,输出24 V,推杆运行。推杆运行何时停止需要靠定时器来实现。软件算法如下:当下位机通过串口收到指令后,对应的标志位置1,清除串口缓存,调用motor子函数,初始化定时器,进入到while(1)大循环,等待定时时间到退出while循环,推杆运行结束。流程如图8所示。

图8 推杆运行流程图Fig.8 Push rod operation flow chart

4.4 遥控器串口屏幕组态

本文采用3.5寸串口屏,分辨率为480 px×320 px,通过组态软件DGUS Tool对UI界面进行设计,该串口屏在使用时需要一些通信规则:对于变量数据的显示,指令格式为“5A A5 05 82 00 00 00 26”。 5A A5为数据帧头,82为数据地址,00 00为屏幕寄存器地址,00 26为显示的数据值。屏幕上“自动坐便器”键值设置为0X000C。遥控器界面如图9所示。

图9 遥控器UI界面Fig.9 UI interface of remote control

5 实验与分析

控制板采用AD16设计,板厂加工,对IO口、串口以及无线通信等进行调试,满足要求。在电路板调好之后,将控制程序下载到控制板里面,通过RS232串口调试助手给下位机发送指令,对串口调试助手界面参数进行设置,包括串口的选择、停止位、数据位及奇偶校验位等。若没有达到所计划的功能要求,则通过调节脉冲数增大或减小电动推杆的长度与程序里正负逻辑调整以实现所要求的功能。系统的实现需要4个电动推杆和1个收线电机共同作用,调试参数如表4所示。

表4 电动推杆与电机调试参数

从表4可以看出,当电机的转速与推杆速度一定时,脉冲数越大,推杆的位移就越长,定时器及收线长度就越大。

6 结论

本文通过对机器人的支背机构、屈腿机构和坐便器机构进行设计,经过功能调试满足所需的功能;然后对六自由度机器人控制系统的软硬件进行设计,实现了支背、屈腿、盖板打开、便盆上行、冲洗烘干和便袋自动封闭功能。点击遥控器上的“自动坐便器” 控件,通过无线通信可以稳定地操作机器人。相较于传统的康复护理机器人,护工压力大大减少,该系统使用简单、成本低,可以广泛地应用于医疗领域。

猜你喜欢

收线推杆寄存器
一种多通溜槽
起重机自动抓具模拟体研究★
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
扁丝十头收排线机的改进
移位寄存器及算术运算应用
爱打黑鱼的爸爸
核电厂装卸料机B推杆位置失效原因分析及解决方案
亨通线缆荣获“优秀自动创新成果”奖
两种直进式拉丝收线机兼容性能的研制