您现在的位置是:首页 > 电路图 > 电机控制电路 > 电机控制电路

基于ARM的多自由度机械手设计

转载来源:电子技术应用-AET chinaaet.com 电子发烧友 elecfans.com2017-03-23

简介孙捷,刘瑄,有力,刘楚,徐莲辉 (华中师范大学 计算机学院,湖北 武汉 430070) 摘要:机械手选用ARM芯片作为控制核心,主要是基于其运算能力强,外设接口丰富,可扩展成串行、并行

  孙捷,刘瑄,有力,刘楚,徐莲辉

  (华中师范大学 计算机学院,湖北 武汉 430070)

       摘要:机械手选用ARM芯片作为控制核心,主要是基于其运算能力强,外设接口丰富,可扩展成串行、并行、高速和低速等各种接口,也能很容易扩展成网络接口,便于机械手组网协同工作。特别是ARM芯片的LCD接口和存储器扩展接口能大大提高机械手的智能化程度,扩展LCD后能提供友好的人机交互界面,便于编程、维护和故障指示;大容量存储器可为复杂运算和大数据存储提供方便。ARM的这些优点为机械手的高度智能化提供了最有效的保证。

  关键词:机械手;ARM芯片;伺服电机;嵌入式;控制系统  

0引言

  机器人应用情况是展现一个国家工业自动化水平的重要标志。工业自动化中机械手发挥了相当大的作用,生产中应用机械手可以减轻劳动强度、保证产品质量、实现安全生产;尤其在高温、高压、易爆、有放射性或有毒性污染的场合中,机械手能代替人进行正常的工作。特别是近些年人工成本越来越高,企业都迫切需要采用一些自动化设备来降低人工成本,工业机械手在这方面有着广阔的应用前景。

  常用的机械手多为6个自由度以下的。一般的专用机械手只有2~4个自由度,而通用机械手则多数为3~6个自由度。目前大多数工业机械手基本上都是采用单片机、PLC或DSP等控制的,单片机只能控制简单的3个自由度以下的机械手;PLC控制的成本高,运算能力很差,对机械手运动轨迹控制能力差;应用DSP控制运算能力强,但其外设接口没有ARM丰富[1],并且成本也比ARM高,一片DSP控制的机械手自由度也有限,6个自由度的、复杂一点的机械手都需要多个DSP芯片协同才能较好地完成控制。1机械部分设计与安装  1.1 4个自由度设计[2]

  机械抓手选用型号为42HD2401100L,两相4线步进电机,丝杆电机的行程为100 mm,步距角为1.8°,电流1.5 A N1504。利用其不同的行程可以设计不同力矩大小的抓手或夹具,此部分通过加工的一个连接轴,用螺丝锁定在型号为42BYG行星减速步进电机上,配48 mm 步进电机,减速比5.18∶1,这样控制机械抓手在360°范围内旋转。也就是机械手的第一自由度控制。

  第二自由度装置负责将前面第一自由度的电机固定,并且控制运动一定的角度范围,根据选用的蜗轮减速装置结构,角度范围为0~130°。电机为57步进电机57BYG250H,转矩2.8 NM,步距角1.8°,机身长112 mm,蜗轮蜗杆减速机NMRV030,减速比1∶20。

  第三自由度使用的电机型号为86HS45 80,两相步进,步距角1.8°,机身长度78 mm,电流4 A,保持转矩4.24 NM。配备蜗轮减速装置RV040,减速比1∶20。

  第四自由度主要负责平面内360°旋转,采用与第二自由度一样的电机,减速装置的减速比为1∶30。该电机安装在底座上。

  1.2电机驱动器选型及机械部分总成

  机械手有4个自由度和1个机械抓手,共使用了5个不同规格步进电机,其中86型号的电机使用的是F-MD860,其他的都使用DM542型,配备了两个24 V功率为250 W的电源分别供电[3]。

图像 001.png  

所有机械部分安装完成后的实物图如图1所示,底座采用镀锌方管焊接成100 mm×100 mm的双层铁架构成,最下面的电机用角铁固定,全部用自喷漆喷涂一遍用于防锈,将导线用伸缩塑胶管封固定,以防导线缠绕或损坏[4]。  

图像 002.png

2机械手控制系统硬件设计

  机械手的控制核心采用功能强大的ARM芯片来进行设计,芯片型号为STM32F103C8T6,引脚数48。控制板接收上位机的串口通信数据,并根据数据协议转变为控制步进电机的脉冲信号去驱动各个步进电机,控制板采用双排针将所有GPIO全部引出,可以灵活扩展[5]。原理图使用的是Altium Designed 10软件进行绘制,ARM控制板CPU部分电路原理图如图2所示,时钟、复位、电源电路原理图如图3所示,串口与JTAG电路原理图如图4所示[67]。

  机械手的具体指标参数如下:机构材料采用全金属材料;驱动方式为步进伺服混合驱动;操作方式采用可编程单机工作/联机工作;重复定位精度为±5 mm;最大展开半径为600 mm;高度为1 000 mm;本体重量≤50 kg;电源为单相220 V;最大功率<200 W;动作范围为第1自由度转动-180°~ 180°,速度范围在0.5°/s~50°/s;第2自由度转动-65°~65°,速度范围在0.5°/s~30°/s;第3自由度转动-65°~65°,速度范围在0.5°/s~30°/s;第4自由度转动-180°~180°,速度范围在0.5°/s~40°/s。3机械手控制系统软件设计

  3.1ARM控制板软件的设计

  开发环境使用的是Keil uVision3 + MDK3.50,ARM控制板上的程序主要包括串口通信的控制和脉冲波形的产生,主控程序流程图如图5所示[8]。STM32F103首先要进行初始化,主要有如下初始化内容:RCC_Configuration(void)、NVIC_Configuration(void)、GPIO_Configuration(void)、USART_Init(USART1, &USART_InitStructure)和TIM3_PWM_Init(u16 arr,u16 psc)。

  串行通信先要设置GPIO引脚,串口设置波特率为9 600 b/s,8 bit数据,2 bit停止位,不使用奇偶校验位,无硬件流控制。最后还要按如下语句进行串口接收中断初始化设置:  

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;  

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  

NVIC_Init(&NVIC_InitStructure)。

  为了保证ARM控制板能在接收命令参数后独立控制机械手的运动,需要将数据存储在ARM芯片的Flash存储器中,然后再读出、解析、执行命令,程序流程图如图6所示。  另外对于脉冲波形的产生,采用ARM芯片内自带的硬件定时器单元来产生频率可调的方波,定时器中断初始化的程序如下:

  void Timerx_Init(u16 arr,u16 psc)

  {  RCC->APB1ENR|=1<<1;//TIM3时钟使能

  TIM3->ARR=arr;//设定计数器自动重装值,刚好1 ms

图像 003.png

图像 004.png

图像 005.png

图像 006.png

TIM3->PSC=psc;//预分频器7200,得到10 kHz的计数时钟  TIM3->DIER|=1<<0;//允许更新中断  TIM3->DIER|=1<<6;//允许触发中断  TIM3->CR1|=0x01;//使能定时器3  MY_NVIC_Init(1,3,TIM3_IRQChannel,2);//抢占1,子优先级3,组2  }  周期时间较长的方波用上述定时器中断溢出进行计时产生,这种方法产生的延时可以很长,适用于对各种动作速度的控制。对于运动较快的也可以直接利用STM32F103中的硬件PWM单元来产生方波,这种周期时间较短,其主要控制源程序如下:  void TIM3_PWM_Init(u16 arr,u16 psc)  {//此部分需手动修改IO口设置  RCC->APB1ENR|=11;//TIM3时钟使能  RCC->APB2ENR|=13;//使能PORTB时钟  GPIOB->CRL&=0XFF0FFFFF;//PB5输出  GPIOB->CRL|=0X00B00000;//复用功能输出  RCC->APB2ENR|=10;//开启辅助时钟  AFIO->MAPR&=0XFFFFF3FF;//清除MAPR的[11:10]  AFIO->MAPR|=1 11;//部分重映像,TIM3_CH2->PB5  TIM3->ARR=arr;//设定计数器自动重装值  TIM3->PSC=psc;//预分频器不分频  TIM3->CCMR1|=7 12;//CH2 PWM2模式  TIM3->CCMR1|=1 11; //CH2预装载使能

  TIM3->CCER|=1 4;//OC2 输出使能

  TIM3->CR1=0x0080;//ARPE使能

  TIM3->CR1|=0x01;//使能定时器3  }

  3.2机械手上位机软件的设计

  上位机程序主要完成机械手运动位置参数的设定[9],并且通过串口将数据传送给ARM开发板,在调试过程中,将运动控制分为单轴运动的控制和三轴运动的控制。单轴控制界面如图7,三轴运动控制界面如图8,分别输入x、y、z三个方向的起始和终止坐标,启动后即可将数据传送给下位机[10]。  

图像 007.png

图像 008.png

  在界面上还有串口通信数据监测窗口,主要显示发出的命令和收到的数据是否正常,这样能方便进行开发。

  在进入串行数据通信编程中,应用CSerialPort类进行编程,对串口、波特率、数据位数、停止位、奇偶校验位等初始化,使用的主要函数为InitPort(),如下所示:  if(m_Port.InitPort(this,m_nCom,m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512)){  m_Port.StartMonitoring();  m_CtrlOpenPort.SetWindowText("打开串口");  m_Port.ClosePort();//关闭串口  }elseAfxMessageBox("没有发现此串口");  发送数据使用的主要语句如下:  sendcommand=m_strSendData;  m_Port.WriteToPort((LPCTSTR)sendcommand);//发送数据  接收数据在CSerialPort类中进行,可以中断接收,但必须在主程序中进行数据识别,本文在LONG CICtestDlg::OnCommunication(WPARAM ch, LPARAM port)函数中专门来解析接收到的数据。4结束语  本项目主要是利用ARM系列的CPU作为控制核心,驱动一定数量的伺服机构来组装一台多个自由度的机械手装置。与传统的机械手控制系统相比,本系统具有体积小、功耗低、性能髙、成本低等优点,具有很好的发展前景。重复定位精度未达到预先估计的值,这与购买的电机和减速机的制造精度有关,并且步进电机在运行过程中还可能失步,因此还有许多方面需要改进,比如在各个电机运动控制时加装编码器来进行运动角度检测,这样可以改进精度方面的问题,也完全可以消除失步的问题。

  参考文献

  [1] 李新荣,曲风娟.ARM9嵌入式系统设计与应用[M].北京:清华大学出版社,2011.

  [2] 李海标,甘镇钊,杨硕.基于ARM9的机械手控制系统的设计[J].测控技术,2015,34(8):82 85.

  [3] 耶晓东.基于单片机的简易机械手的设计[J].微计算机信息,2009,25(14):230 231.

  [4] 孙宴伟.五轴注塑机机械手示教系统的设计及实现[D].西安:西安电子科技大学,2013.

  [5] 杨振声.工业机械手控制系统硬件设计[D].西安:西安电子科技大学,2014.

  [6] 向丹,王文涛,原健钟,等.基于ARM嵌入式的三维机械手远程控制系统设计[J].电子与封装,2009,9(6):21 24.

  [7] 杨莉,李正明,刘宝森.基于ARM9的嵌入式数控铣床控制系统的设计[J].机床电气,2008,35(2):8 11.

  [8] 李坤,杨家军.5自由度焊接机械手的运动学研究[J].机械工程师,2007(4):20 21.

  [9] 何洋.三轴伺服注塑机机械手上位机控制器的设计与实现[D].杭州:浙江大学,2012.

  [10] 李涛.伺服机械手手控器软件设计及其实现[D].西安:西安电子科技大学,2013.