1 引言
机器人的出现是科技不断发展的必然产物,随着社会的不断发展,机器人的不断应用也将会推动生产力的发展,同时也为人类文明的进步做出了巨大贡献。人工智能技术的研究主要是智能机器方向,所以如今对智能机器人的科研程度已经是一个国家科学以及技术的竞争的一个重要方面。一个国家对只能机器人研发的程度体现出国家的综合科技实力,新型机器人的研发更是表现一个国家的尖端科技。现在,世界上机器人在生活中的应用是很普遍的,机器人更是有各种各样的种类。机器人已经变得更加多元化,不像以前那么单一。研究机器人的结构环境定点操作的非结构化环境的转变,在军事侦察、太空探索、抢险救灾等方向展示了广阔前景。
2 目的及基本思路
人类用双手创造了今天辉煌的文明,灿烂的历史。然而人的双手也有众多局限性,比如它不能在某些特定环境下工作,如深海作业、外太空作业、拆弹作业等;而且现有的机械臂需要专业的驾驶员去操纵,普遍使用性不够高,且灵活性不够高。为解决这个问题,跟焦式机械臂由此诞生,它能有人类手臂的灵活性而且兼具一般机械臂的高性能。
用机械手臂控制板和NRF24L01无线模块组合而成的无线机械手臂控制器控制舵机转动,电位器作为角度传感器,获取关节的角度变化,舵机的转动基本和电位器同步,将已经做好的机械臂连接到控制器,将电位器做成摇杆支架,那么我们就能操纵摇杆和机械臂同步动作。这样一个能跟踪人的手臂动作并把动作复制给机械臂的控制系统,相当于把操作员手臂动作的有效负载放大了,可以完成一些人的手臂无法承受的操作,如此一来机械臂既有人手臂的灵活性又有机械的工程性。
实验阶段仿生机械臂由多个大力矩的舵机作为动力输出,4种类型的铝合金支架组合成6自由度臂体,用铝合金圆盘与机械轴承组合成360度云台,有效臂长32cm,用六个同等的滑动变阻器装在一个6自由度操作把的关节处,当操作员带上这个操作把活动时,采用自动跟焦式仿生控制,用ADC采集每个滑动变阻器引起的电压的变化并反馈给控制器,经数据处理后驱动舵机运动,把操作员手臂的动作同步复制出来,有效的提高了控制效率和简化了控制难度。
实验的关键技术包括:ADC精确采集操纵臂的数据并反馈给处理器作精确处理;处理器精确控制舵机的运转进行动力输出;数据的稳定有效传递。
3 解决方案
3.1 硬件系统设计
本文中的机械臂系统采用模块化设计,采用的是两自由度的模块化机械臂,这个机械臂上下和左右运动都是通过步进电机进行驱动。本系统左右限位运动轨迹距离较小,电机运动不到两圈就可完成整个运动轨迹。在短距离环境下实现对速度的精确控制,需将电机在脉冲驱动下的运动角度进行细分化处理,因此我们需选择有细分功能的步进电机驱动芯片。驱动芯片的细分用来对电机在一个脉冲作用下运动角度的调节,通常步进电机在一个脉冲下运动的角度为1.8度。设置过细分后实际运动角度为1.8度和细分值的商。通过细分降低了电机的固步角,从而提高了运动的精确度。
本系统中机械臂运动控制的方法采用硬件运动控制方式,通过硬件电路采集信号,根据采集到的信号结合软件设计实现对机械臂运动轨迹的控制。用ADC采集每个滑动变阻器引起的电压的变化并反馈给控制器,经数据处理后驱动舵机运动。
3.1.1 步进电机及其驱动方法概论
在本文设计的机械臂系统中,步进电机完全可以满足系统功能的需要。步进电机是一种将电脉冲信号转变为角位移或线位移且受数字信号控制的开环控制元件。步进电机的运动速度与所输入驱动芯片频率有关,外部负载的变化不对其速度产生影响。通常输入脉冲的频率越大,电机转动的速度也就越快。步进电机的运动距离与输入脉冲的个数相关,在实际的应用中实现对电路运动路径的准确控制,需要严格的计算输入的脉冲数量。
本文设计的机械臂系统采用两相四线混合式电机。混合式步进电机常见的有两相、三相、四相,通常电机的相数越多,其步矩角度越小,从而控制的精确度越高。本文设计中选择两相能够较好的满足设计要求,采用两相步进电机进行控制时,为了能够达到较好的控制效果必须要降低电机的步矩角。因此,在系统设计是必须采用带有细分功能的电机驱动芯片,通过调节细分实现对电机速度的准确控制。在系统设计时采用THB6128电机驱动芯片,其具有较好的细分功能,通过STM32向其输入相应的脉冲信号,从而达到较好的控制效果。步进电机结构图如图1所示。
机械臂系统左右限位运动时由于轨迹较小,用一般方法会造成较大的误差,无法准确的对其运动轨迹进行控制。电机运动时通常采用细分调节方法,将步矩角度变小,从而提高电机运动时的精度。通过对细分参数的设置可以有效的减小电机在运行中产生的噪声,提高电机的动态性能。系统中采用的THB6128芯片最大可以采用1/128的细分方式,大大的提高系统的准确性能。
3.1.2 各个功能模块硬件电路的设计
机械臂的控制系统采用集中式体系结构,系统包括一个主控制器,一个关节驱动器。主控制器通过CAN总线与关节驱动器进行通信。
本系统设计的机械臂有两个自由度,能够实现上下和左右的运动,左右运动范围是0~180度。CAN通信采用了VP230芯片。系统中的每个步进电机都采用了THB6128作为其驱动芯片。
(1)主控制器电路
在本系统中选用的是意法半导体公司的STM32F103CBT6,是STM32F1的增强型系列。STM32F1系列采用ARM Cortex-M3内核,主控制器电路主要包括:复位电路、晶振电路、电源电路。系统下载电路选用了SWD程序下载方式,该方式支持在线调试方便后期对软件代码工作的调试。
图3中主控制芯片是STM32F103CBT6,M1、M2、M3是用来设置细分系数。本系统中采用SWD下载方式,图3中JTMS、JTCK与下载端口相连,PUL+口是脉冲输出端口,STM32输出的脉冲通过该口与电机驱动芯片相连。ENA+是电机驱动芯片使能输人口,其为“0”是驱动芯片不工作。DIR口是用来控制电机的运动方向,在其为“1”时电机正转,“0”时则为反转。
(2)步进电机驱动电路设计
THB6128是一种两相混合式电机驱动芯片,通过对端口的设置可以实现高细分。它的最大耐压为36V,其峰值电流为2.2A,工作电流1.5A,其低通电阻Ron=0.55Ω。芯片上的三个细分设置端口可以设置八种细分值,其最大的细分值为128。图4是基于THB6128的步进电机驱动电路。
步进电机运动时由于电机内部构造原因会产生一定的振动和噪声,过大的振动和噪声会对系统的稳定性和使用寿命造成一定的影响,因此如何将系统的振动和噪声控制在一定的范围内也是设置这要重点考虑的问题。本系统中在硬件电路中加入了电流调节电路,通过改变输出电流和电压的值调节振动。电路调节电路和步进电机驱动芯片相连接,电路图中的PR1和PR2是两个相同的电位器,通过调节它们两个的阻值大小改变输入电机驱动芯片的电流。PR1和PR2的调节根据系统实际情况定,系统在工作是通过旋转电位器找出最适合系统的阻值大小。电流调节电路的电路图如图5所示。
(3)CAN通信模块设计
CAN通信是一种国际标准化的串行通信协议,其特点为:多主控制,系统柔软性强,通信距离和速度优势明显,具有故障封闭功能。CAN通信协议的这些特点,使得其在使用过程中能够很好的实现多个设备之间的互联,越来越受到工业生产的青睐,是目前公认的最有发展前景的串行总线。CAN通信有五种类型的帧:数据帧、遥控帧、错误帧、过载帧、帧间隔。数据帧用来表示发送单元和接收单片的数据,遥控帧是用来请求相同的ID号,错误帧是指当CAN检测出错误时向其他单元发送错误通知,过载帧是指接收设备还没做好接收其他单元发送过来数据的准备,帧间隔是用来区分数据帧和遥控帧。CAN收发器的数据帧由帧起始、仲裁段、控制端、数据段、CRC校验段、ACK段、帧结束7个码段构成。
STM32内部自带bxCAN,其支持CAN2.0A和CAN2.0B协议。它能够消耗最小的CPU资源来实现大量的数据的接收和发送。bxCAN在对数据传送时支持时间触发通信,其传送速度可达1Mbps。bxCAN有3个收发邮箱和2两个FIFO储器,内部同时具有多个过滤组。FIFO收到的报文数,我们可以通过查询CAN_RFXR中的FMR寄存器来得到,只要FMR补位0,我们就可以从FIFO中读出收到的报文。STM32在使用CAN通信时有三种模式:环回模式、静默模式、回环静默模式。环回模式可理解为自发自收形式,即CAN接收到的消息自动再发送出去,环回模式结构图如图6所示。
环回模式可用于系统CAN通信功能的自动测试,为了避免外部的其它因素的影响,环回模式下CAN在数据帧和远程帧不设置屏蔽位。在环回模式下,bxCAN在内部吧输Tx出回馈到Rx输入上,而忽略Tx引脚的实际状态。本文设计CAN通信收发器选用的是VP230芯片,该芯片与STM32主控芯片相结合组成一个完整的通信系统。CAN通信电路图如图7所示。
(4)关节驱动电路
关节的驱动选用Maxon公司的4-Q-DC Servo Control。其输出功率范围为0~50W,输入直流电压范围为12-30V。4Q-DC具有过流、过热及短路保护功能,双向速度驱动和刹车功能,直流测速速度控制、编发器反馈速度控制、IxR补偿和电压调节器控制四种操作模式。内部集成PI控制器、温度保护装置、A/D转换装置等。
4-Q-DC由A、B两个连接口,A接口是用来连接电源、电机、控制信号等,B接口是用来连接编码器反馈信号。
由于4-Q-DC线性放大器是通过模拟信号进行控制的,所以选用主控制器24、25端口输出的-10 ~ +10V的模拟电压作为控制信号。
3.1.3 关节结构
关节的旋转特性使人自然而然的想到将其设计为圆柱形结构。根据经验,圆柱形结构可以在使用相同多的材料时获得最大的强度与刚度,并且结构更紧凑,加工与装配也更方便。关节的结构如图8所示。
机械臂关节受力比较简单,主要为轴向力和径向力。而因为关节转速极小,加速度几乎为零,所以关节轴向力也相对较小,主要负载体现为径向负载。考虑到较小的径向力也可能损伤电机,用联轴器将电机输出轴与谐波减速器相连,以起到缓冲作用。为了实现2mm的定位精度要求,关节的刚度必须得到绝对的保证。为此在谐波减速器的输出法兰外圈安装滚子密封轴承,其承担了主要的向心力,在保证关节刚度的同时,能够保护谐波减速器免受弯矩的损害。滚子密封轴承带有的密封装置具有防止灰尘入侵和润滑油泄露的功能,使得关节设计工作更为简便、关节构造更为简单。
位置检测采用双端编码器,电机端编码器1为maxon的MR增量编码器,2通道,32线,用来检测电机的速度,其抗干扰能力强,装在电机后面没有间隙误差。绝对位置编码器10安装在谐波输出法兰8上。
3.2 软件系统设计
3.2.1 步进电机运动软件实现
机械臂系统软件的设计是通过STM32库函数实现的,库函数包括宏、程序、数据结构等。用户在用库函数时,函数的外设配置都是打包好的,用户不了解函数中的细节也可以正确使用。采用库函数设计程序可以节省研发人员的开发时间,提高产品开发效率,能够有效的缩短研发周期。
3.2.2 左右限位软件实现
机械臂系统中左右限位用来调节机械臂运动的轨迹,准确的移动至指定的位置实现对样本盘的抓取。左右限位的轨迹较短,步进电机运动不足两圈,上下限位的距离较长,因此对左右限位的控制不能同上下限位一样。在对左右限位的控制方面将左右运动轨迹通过角度进行分段,通过计算脉冲的数量来计算电机实际运动的角度,从而实现对其速度的准确控制。
步进电机都是通过脉冲信号控制的,用一个用来产生一定频率脉冲的单片机(脉冲频率用来控制速度),经过信号隔离放大(达到驱动电机的电压)来驱动控制步进电机。STM32在对电机进行S型曲线运动时,内部中断程序不断的计算每一步运行后的时间间隔。在系统频率较低时CPU还可以轻松的对数据进行处理,但是随着输出频率的升高,控制器调用中断函数的次数不断增加,增大了控制器的负担,大大影响电机控制的质量。为了提高步进电机的响应速度,同时减少控制器内部资源的消耗,本文在软件设计时采用了DMA技术。采用DMA技术,直接建立存储器与外设通道,不需要CPU的干涉,进行数据的双向传输。本文把每一步要延时的计数值通过计算机VC编程生成一张表存在单片机的存储器,然后连通到定时器的计数值寄存器中。
初始化时,必须使能定时器,并配置成TIM_OCMode_Toggle(输出比较模式),打开定时器的器的溢出中断,当计数值与比较/捕获寄存器值相同时,翻转输出引脚的电平,从而形成频率变化的脉冲控制步进电机的速度。步进电机运动固定步数软件实现流程图如图9所示。
3.2.3 上下限位软件实现
上下限位运动的距离相对于左右限位较长,传统的步进电机运动控制能够得到有效的运用。在对步进电机上下限位的控制时,系统通过向电机驱动芯片输出PWM波来实现。系统选择PWM波驱动而不是像左右限位使用DMA触发方式,因为上下限位距离较长,一般控制就可以满足条件,使用DMA会在一定程度上会增大系统的运算消耗,这是没有必要的。系统中的检测模块软件设计时需要通过PWM波进行检测,上下限位使用PWM波在一定程度上也有利于程序的移植。
在STM32库函数中,通过设置其内部的定时器即可实现PWM波的输出,只需要对定时器配置成PWM模式。
通过上面的设置,STM32控制器即可实现对PWM波的输出,步进电机的运动与输入电机驱动芯片内的频率有关,与频率的占空比无关,因此我们只要通过改变分频系数即可实现对输出频率的控制。
机械臂在运动过程中如果程序出现问题,为了避免对系统和用户造成伤害和损失,系统在设计之初在硬件电路板上面安装了限位开关(系统上电或者系统完成一套完整的动作时都要自动回到零位)。机械臂在初始化和回到零位的设计方法为:上电后,如果没有检测到下限位信号,此时步进电机向下运动,当机械挡板运动至下面零位时电机减速,等电机运动到下限位是电机停止运动。如果上电后控制器检测到下限位信号,电机则无需运动。其大致流程如图10所示。
3.2.4 CAN通信软件实现
本文设计的机械臂系统采用CAN总线作为与其他子模块进行通信,通过发送不同的指令,实现对各个子系统精确控制以及保证能够有序的控制各个模块运行。模仿控制模块通过发送相应的指令完成对机械臂系统的控制。为了能够保证系统通信准确高效,需要制定一个CAN通信协议来统筹协调这些电机的工作状态。
本协议遵循CAN2.0B协议,采用源->目的的方法,每个节点都有自己固定的标识地址,且节点数小于64。本协议完成特定信息的广播、主从节点之间的连接、主从节点之间的信息交换(包括故障信息)功能。
本协议采用帧优先原则分配标识符,每一帧标识符中的高四位表示帧类型,不同帧类型有不同的优先权,优先权决定了各种信息帧的在同等情况下的发送顺序。协议中29位标识符的分配如下:帧类型(4位)+目的地址(6位)+源地址(6位)+命令(或状态、报告)属性(或数据属性+分段标志+分段号)。对所有的命令或状态、数据、报告属性,除定时采集发送的数据外,原则上均需应答(发送确认帧以保证通讯正常)。
仲裁场由29位标识符ID28-ID0、SRR、IDE和RTR组成,在SJAl000寄存器17-2l用来存放扩展帧格式帧信息的标识符。标识符中ID28-ID25为主控制模块交换报文的帧类型,共4位:ID24-IDl9为主控制模块中帧信息使用者的地址或称为目的地址,共6位;IDl8-1D13为主控制模块中帧信息发送者的地址或称为源地址,共6位;IDl2-ID5为主控制模块中交换的命令、状态、数据或报告属性,共8位;ID4为需附加命令或状态、数据、报告属性时的分段标志;ID3-ID0为为附加命令或状态、数据、报告属性的分段号,共4位。当ID4=0时,ID3-ID0、控制场、数据寄存器0-7有效。对于远程帧可忽略ID4-ID0以及控制场的值。
按机械臂节点要求,通讯的信息帧分为以下6种,见附表所示。
上电或者唤醒状态下,各从节点发送状态信息,正常情况下,从节点内部查询各端口状态,如有故障则向主节点发送故障代码,主节点收到故障信息后发出响应,从节点停止发送信息,当从节点故障解除后再向主节点发出信息。
由于整套进样系统涉及到大量的步进电机控制,电机之间通过CAN总线实现相互通信以实现相互联动控制。这就要求在控制过程中要求有一个较为严谨的控制协议,以下是进样机构的整套步进电机控制协议。
4 实验验证
4.1 测试系统的建立
测试系统采用的上位机软件为EmbededDebug,在测试时DATA3的数据分别代表机械臂系统的上运动、下运动、左运动、右运动、电磁阀抓取、电磁阀放置。其操作界面如图11所示。
为了测试抓取机械臂系统的性能,需要建立一个测试系统进行测试。图12是利用控制终端建立的一个功能较为完备的测试系统。此测试系统可以外挂多个测试模块,测试系统采用USB-CAN模块与上位机向连接,通信的波特率采用500kbps。
4.2 系统硬件测试
机械臂系统功能测试前需要对硬件电路进行调试,其调试步骤为:
(1)将电路板上电后通过示波器检测从直流稳压电源输入系统的电压是否为5V和24V。
(2)检测AMS117电压转换芯片能否将进来的5V转为3.3V。
(3)用示波器检测检TM32输入电压是否正常,以及晶振是否有正常的波形。
(4)复位电路未按时为高,在按下按键是应该为低。
(5)待上面的步骤完成后下载系统程序,检查能否将程序下载至控制器。
(6)前面步骤调试正确后通过更改程序检测步进电机的EN、DIR能够根据设置在3.3V和0V间正常变化。通过示波器检测驱动芯片PUL端是否有脉冲产生。
(7)检测开关能够在3.3V和0V间变化。
CAN总线调试时将其通信模式设置为回传模式,测试时尽量不要设置它的接收方式,避免使用不当出现问题。为了方便测试,在CAN总线电路正常时,可以对软件设置在接收成功或发送成功数据是对EN进行翻转,我们只有通过检测EN电压的变化就可以判断CAN模块能否正常工作。
4.3 系统整体调试
机械臂系统整体联调时,分别将主控电路板和左右限位电路板安放在机械臂安装位置。STM32下载系统程序,PC机通过USB-CAN与机械臂硬件电路板相连接。在上位软件EmbededDebug设置发送命令进行联调。通过对系统长时间的测试检测系统稳定性。机械臂系统中会产生一定的振动和噪声,通过调节硬件电路的电位器可将噪声和振动降低在一定的范围内。在USB-CAN中更改CAN的发送指令来分别测试各个模块的功能是否能够正常工作。
4.4 实验结果
通过联机调试能够根据CAN总线发送的指令完成对机械臂上下限位、左右限位等动作。机械臂左右限位的短距离运动控制也能较好的完成整个运动动作且准确的在指定位置停止。
通过分析我们得到步进电机速度控制时输入频率变化的曲线,STM32内的中断函数对输出频率进行控制。系统通过操作数据的无线传输对机械臂的位置进行有效判断,根本运动位置的变化输出不同的频率。在系统中我们选用的电机启动频率为1000Hz,电机停止时的频率为1200Hz,运行频率为6000Hz。每0.2s电机的启动停止过程执行一次,通过STM32的寄存器记录,并转化为频率曲线绘制成曲线,检测结果如图13所示。
5 结束语
本文首先阐述了跟焦式机械臂项目的硬件系统设计:步进电机、各个功能子模块及关节结构。然后介绍了软件系统的设计。最后对该项目进行了测试实验,实验结果表明机械臂具有适用范围大、实用性等优点,具有较高的实际应用价值。
参考文献(略)
共0条 [查看全部] 网友评论