高精度一维标定装置控制系统设计
2014-05-25朱海涛凌从高
赵 炯,张 涛,朱海涛,凌从高
(同济大学 机械与能源工程学院,上海 201804)
在科学测量中,标定是一个不容忽视的重要步骤,用于完成信息的获取、转换和处理.目前自动标定装置多采用伺服电机或者直线电机作为控制对象和动力源,并采用光栅位移传感器或光电编码器反馈,组成闭环控制系统.闭环控制可以将实际位置反馈给控制器,从而进行位置补偿.但是闭环控制系统的成本很高,而且容易引起持续的机械振荡,控制复杂、维护难.另外,还有使用激光来进行标定的方法,虽然其标定的精度可以达到微米级,但是其成本相当之高.因此,如何提高自动标定系统的分辨率、精度、稳定性、性价比和可靠性是自动化发展面临的主要问题.针对这个问题,本文设计了基于单片机控制的高精度一维标定装置.
1 工作原理
该装置主要由机械运动系统和电气控制系统组成.机械运动系统主要由滚珠丝杠和直线导轨组成,滚珠丝杠传动,直线导轨承载,实现工作台在一维方向上的运动.电气控制系统主要由步进电机、驱动器、单片机及其外围器件组成,单片机控制,步进电机驱动,能够很好地实现自动标定控制[1].将PC编好的程序烧写进At89S52单片机,通过键盘的输入和12864LCD显示屏的输出,从而达到单片机控制电机移动和显示位置的效果.对于重要的数据,我们运用24C08串行EPPROM实时进行存储,以防丢失.试验装置三维图与实际图如图1,2所示.
图1 装置三维图Fig.1 Three-dimensional diagramm of the device
图2 实际装置图Fig.2 Actual device
AT89S52单片机的3个引脚用于驱动电机,使用开关电源来驱动TB6560驱动器.单片机的供电电源通过24V转12V的稳压芯片.通电之后,通过键盘输入的数值使得电机转动,从而可以使得平台移动.
每个模块之间的联系如图3所示:① 控制模块,包括PC机、At89s52单片机和串行EEPROM;② 输入输出模块,包括键盘和12864LCD显示屏;③ 驱动模块,包括驱动器、开关电源和步进电机;④ 机械模块,包括滚珠丝杠和直线导轨.
图3 模块连接图Fig.3 Connection diagramm of modules
2 系统总体设计
系统总体设计包括对于装置的设计参数和软件的实际要求,以及硬件具体的设计方案和软件的设计流程.
2.1 装置设计参数和软件设计要求
标定装置具有良好的可移动性,我们设计的装置总体的安装尺寸750mm×270mm×320mm.最大有效行程150mm,分辨率达到0.001 25mm,测量的精度达到0.01mm.
表1是装置设计的主要参数.
表1 主要设计参数Tab.1 Main design parameters
软件方面我们需要实现以下要求(分为自动模式和点动模式):自动模式下,可以实现系统的配置(对于每圈步数和细分的设置)、位移模式(按照位移值电机正反转动,实现平台的左右移动)和步进模式(按照步数值移动).点动模式下,按一下按钮左移或者右移0.01mm.在平台移动的同时,我们要实现在12864显示屏上的显示[2].当单片机关机后下次再开启时,读数还是保持上次的读数,可以作为断电保护.另外设置可以清零的按钮,这样可以进行新的标定.
2.2 硬件设计
装置硬件主要由3个方面组成:单片机、驱动器模块和步进电机.单片机用于控制电机的转动、数据的输入和显示以及对于重要数据的保存[3].驱动模块主要是为电机提供电源,以及驱动电机.
2.2.1 单片机
装置采用Atmel公司的At89s52单片机作控制器[4].该单片机是增强版的8051芯片.8位CPU,片内有振荡器和时钟电路,工作频率为0~24 MHz;片内有256B数据存储器RAM和8KB程序存储器ROM;4个8位的并行I/O口(P0,P1,P2,P3);1个全双工串行通讯口;3个16位定时器/计数器(T0,T1,T2);可处理6个中断源,两级中断优先级.另外,At89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式.空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作.掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止.
图4 At89s52单片机的最小系统图Fig.4 Minimum system of At89s52
单片机中用到的模块有矩阵键盘、独立键盘、12864LCD显示屏、24C08存储芯片以及中断定时器T0.
用矩阵键盘来输入电机所转的步数和要前进的距离,在单片机中占用P1.0~P1.7口.我们使用行扫描法来识别按键[5].
独立键盘在本装置中用到4个,起到控制电机正转反转、自动状态下停止转动和手动状态下退出模式的作用.在单片机中用到 P2.6,P2.7,P3.6,P3.7口.
12864LCD显示屏用于显示输入电机需要的距离,以及实时测量装置运动的距离.在单片机中用到P0.0~P0.7,P2.0~P2.5口.要注意对于时序的调整.
电机的驱动我们使用中断的方法,脉冲0.5ms跳变一次,1ms为一个周期,这样可以更精确地计算出电机转动的圈数.使用P3.0来产生脉冲,P3.1用来作为电机的使能口,P3.2用来调节电机转动的方向.
24C08存储芯片用于掉电以后存储重要数据,在单片机上通过纽扣电池供电,占用单片机的P3.4,P3.5口,在本试验中用于存储平台移动的距离值.
24C08存储芯片是用I2C总线进行传输的.I2C总线采用两线制,由数据线SDA(Synchronous Data Adapter)和时钟 线 SCL(Serial Communication Loop)构成[6].在I2C总线上,数据是伴随着时钟脉冲,一位一位地传送的,数据位由低到高传送,每位数据占一个时钟脉冲.I2C总线上的在时钟线SCL高电平期间,数据线SDA的状态就表示要传送的数据,高电平为数据1,低电平为数据0.在数据传送时,SDA上数据的改变在时钟线为低电平时完成,而SCL为高电平时,SDA必须保持稳定,否则SDA上的变化会被当作起始或终止信号而致使数据传输停止.
2.2.2 驱动器模块
步进电机驱动器的主要功能为脉冲分配、细分和功率放大.由于细分能够改善控制精度,因此,对于高精度控制系统来说,驱动器的选择十分重要.驱动器的选择由驱动器电流、供电电压和细分3个因素决定.该系统采用TOSHIBA公司的TB6560驱动器.该驱动器工作电流和电压与步进电机相匹配,最大细分可达1/16,满足高精度控制的要求,是两相混合式步进电机驱动的专用驱动器.
2.2.3 步进电机模块
步进电机以位置定位控制为主要目的.进步电机的选用以提高位置定位精度为主要原则.定位精度主要由步距角决定[7].由式(1)知,相数多,步距角小,分辨率高,则位置定位精度提高.
式中:θ为步距角;z为齿数;m为相数;k为电机系数,与电机的激励方式有关.
以我们设计中用到的步进电机为例,相数为2相,齿数为100,电机系数定为1,因此步距角为1.8°.
对于步进电机,细分设置未打开时,电机转一圈需要200步.本实验使用16细分,对于一个脉冲,电机转动1/3 200圈.一个脉冲周期通过定时器设定为1ms,因此电机走一圈需要3.2s.
2.3 软件设计
程序包括复位、模式选择和菜单选择.复位模式:当装置开启时,我们可以选择读取当前所在的位置或者重置清零.模式选择:对于一个装置而已,必须要有手动和自动模式,自动用于粗调,手动用于细微的调整,所以我们手动一次移动0.01mm.
程序的流程图如图5所示:
图5 软件流程图Fig.5 Software flow pattern
2.3.1 子程序介绍
菜单选择:首先必须对自动模式进行配置,包括细分和每圈步数.然后我们才可以精确地去完成规定的步数值或者位移值.
模式选择包括手动模式和自动模式.手动模式用以点动控制电机,让平台以0.01mm的距离移动.自动模式用以自己设置距离或者步数,使电机转动相应的步数或者距离.
① 手动模式:按2进入手动模式.手动模式包括24C08写操作、显示、电机转动和数据转换的程序.手动模式下,按一下左键,显示屏上的数值加0.01,同时在24C08中记录下最新的数值,以便下一次继续读取.按一下动一下,计数加1.按右键时,显示屏数值减0.01.按下退出键直接回到单片机开始程序.
② 自动模式:按下1键进入自动模式,自动模式首先进入的是一个菜单选择模式.可以选择配置、位移和步进模式.配置模式下,我们可以输入电机步进的每圈步数以及电机的细分设置,从驱动模块上设置细分.当驱动模块上的细分设置改变时,我们需要同时在软件里面设计细分.一般开机后首先进入配置进行配置,对于电机每圈所转动的步数和细分进行设计.配置模式包括键盘输入、显示和数据转换[8].配置得到的数据将会传送到位移和步进模式下的显示栏上.
按3进入配置模式,首先设置每圈走的步数,此装置用的电机设置为200步1外圈.对于不同的电机可以设置不同的步数值.经过0.5s后进入细分设置,代表外圈走1步可以在让它在内圈走n步,此装置设置为16细分.细分越大,则精度越高.
位移模式和步进模式主要包括键盘输入、显示、数据转换和电机转动.
位移模式下输入需要走的距离值,输入完毕后按下确定键,则电机开始转动.如果输入的值是“+”的,则表示电机带动平台向左移动;输入的值是“-”的,则电机带动平台向右移动.期间按下退出键时,电机停止转动,LCD显示屏停止计数[9].按下退出键,返回到程序最开头.
步进模式与位移模式类似,不同的是输入外圈走的步数,显示的还是位移值.
2.3.2 软件设计中遇到的问题及解决方法
在设计单片机控制系统的时候,遇到过以下的问题:
(1)LCD显示屏显示问题:在初次调试的时候,显示屏有可能出现乱码,或者位置出错.
(2)显示数值在最后一位差一个数值.
(3)初次使用步进电机,使用软件进行计时来驱动电机,难以调整到精确的数值,并且会影响电机转速.
(4)进行数据转换的时候,由于涉及到电机正反转的问题,数据正负代表电机的正反转,常用的字符和浮点数的转换函数无法正常使用.
解决方法:
(1)LCD显示屏显示问题:是关于时序的问题,需要自行调试,修改延时函数或者加入空指令进行调整.
(2)浮点数运算的时候最后一位失真的问题,需要加入一定的小数(如10-6)进行修正.
(3)使用定时器进行精确定时,从而可以更加准确地进行标定,而且不会影响电机转速.
(4)加入一个新的字符转换为浮点数的函数,加入一个作为判断的首位,当第一位是数字时,正转,将第一位到最后一位作为一个完整的浮点数,转换成相应的电机转动数值;当第一位是“-”时,电机反转,将第二位到最后一位作为一个完整的浮点数,转换成相应的电机转动数值.
2.3.3 装置自检功能
高精度的标定装置都是带有自检功能的.本装置的软件设计中我们还加入了自检程序,自检可以有效地检测出装置的回程误差.我们采用的方法是在装置的两边各加上一个限位开关,当需要自检的时候,按下自检的按钮,电机会向左移动直到到达限位开关所在的位置,软件置零;然后开始反方向移动,移动到另一端的限位开关处,从而记下走过的距离.重新置零,在移动到另一端的限位开关处,记录下这一个距离值.比较两个距离值,计算出两个值的的差,显示在12864LCD显示屏上,从而完成自检的功能.当回差过大的时候,我们需要重新进行调整,消除误差,而后才可以继续进行测量.
2.4 精度检定
装置设计完成之后我们需要对其进行检定,我们设计的装置预计可以达到0.01mm等级的精度.然而由于单片机发出的脉冲电机有的时候无法收到,导致电机的失步,从而有可能无法达到精度要求.为此我们进行检定.
我们选用整体检定法进行检定,使用精度更高的计量基准[10].整体检定法的优点在于简便、可靠,并能求得修正值.我们使用高精度的量块进行多次测量,检定是否符合精度的要求.
量块应用广泛,用于检定和校准其他量具、测量仪,相对测量时调整量具和量仪的零位,以及用于精密机床的调整、精密划线和直接测量精密零件等.量块的测量面非常平整和光洁,用少许压力推合来,两块量块就能使测量面紧密接触并粘合在一起,这种特性称为研合性.
量块的尺寸一般是由专门量具厂用多块组成的盒装套件供应.我们选用38块组的高精度量块,精度可达0.005mm.38块组量块的参数如下:
表238 块组量块参数Tab.2 Parameters of 38gauge of block group
为了测量的标准,我们进行多次测量:在位移模式下输入数值:20.52,41.38,80.99,104.18,138.71.分别对每一个数值进行检定,表3是测量的结果.
表3 精度检定表Tab.3 Precision calibration
经过测量,可以发现我们的测量装置可以达到0.01mm的精度.
3 回差说明
回差,即回程误差,测量器具对于同一个尺寸进行正向和反向测量时,由于结构上的原因,其值不可能完全相同,因而造成误差.对于电机的正反转,来回一次,传动机构的回差误差是不会积累的.
在使用本装置进行标定的时候,回程误差主要是由于电机输出轴上连接的滚珠丝杠副之间有间隙导致的.
调整滚珠丝杠副的间隙与预紧是消除回程误差的有效的机械方法.根据消除间隙和预加载荷的方法的不同,又分为单螺母变位导程法和双螺母预加载荷法.此外,还可使用零位开关的硬件法以及软件置零的软件法.
单螺母变位导程法:螺母内螺旋线为变位导程,靠调整钢球大小等措施消除间隙,该方法结构复杂,加工难度大.双螺母预加载荷法:把左右螺母往两头撑开,向中间挤紧,左右螺母接触方向相反,装在一个共同的螺母体内.螺母作为整体与丝杠间处于无间隙或者过盈状态,以提高接触刚度.此方法结构紧凑,调整方便,应用较为广泛,缺点是精确度不高.双螺母法中还有一种齿差式消除间隙和预加载荷法,即左右螺母体上的外齿轮齿数相差1,与支座上的内齿轮相啮合.为了获得微小的调整量,必须将螺母旋至外径比螺纹小径略小的光杆上,将两段外齿轮拉出来,都相对齿轮同一方向转过一个或几个齿,然后再插入内齿圈内,则两个螺母便产生了相对转角,从而实现调整间隙的目的.齿差式消除间隙法调整精确可靠,定位精度高,但结构复杂,目前数控机床上应用较广.另外还可以使用硬件控制的方式,运用零位开关来解决回程误差.当需要保证来回方向都没有回程误差时,要在装置的两端都加上零位开关,使得电机在变向后先对准此方向的零位,再以此为零位测量运动的位移.软件法:在装置的一端软件设置其初始位置为零,到达另外一端的时候记下运动的距离,重新置零,然后反方向运行与之前记下的数值相同的距离,此时的来回误差基本为零,从而可以有效消除误差.此方法与零位开关的方式类似.
在本装置中我们使用的是垫片式消除间隙和预加载荷的方法.调整垫片的厚度,使螺母产生轴向位移,以消除间隙.垫片式消除间隙法结构简单、刚性好,适用于精度较高的传动机构.
4 结论
本系统设计具有良好的人机界面,在低成本的基础上设计了一个精度可达10微米级、稳定性高的一维标定装置,可以实现两种模式运作,并且带有断电保护的作用.下一步,我们将对其进行改进,之后将用计算机通信功能实现数值的输入,可以更加安全可靠,再添加数据采集系统,返回单片机测出来的数据,并在计算机上显示出来.
[1]KIRK Z.嵌入式系统的C程序设计[M].艾克武,译.北京:机械工业出版社,2002.KIRK Z.C Programming for embedded systems[M].AI Kewu,translated.Beijing:China Machine Press,2002.
[2]赵亮,侯国锐.单片机C语言编程与实例[M].北京:人民邮电出版社,2003.ZHAO Liang,HOU Guorui.Microcontroller C programming language and examples[M].Beijing:Posts & Telecom Press,2003.
[3]程国刚.51单片机应用开发案例手册[M].北京:电子工业出版社,2011.CHENG Guogang.51MCU application development scenarios manual[M].Beijing:Publishing House of Electronics Industry,2011.
[4]胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2004.HU Hancai.MCU principles and interface technology[M].Beijing:Tsinghua University Press,2004.
[5]范红刚,魏学海,任思璟,等.51单片机自学笔记[M].北京:北京航空航天大学出版社,2010.FAN Honggang,WEI Xuehai,REN Sijing,et al.51MCU study notes[M].Beijing:Beihang University Press,2010.
[6]顾龙芳.计量学基础[M].北京:中国计量出版社,2006.GU Longfang.Metrology foundation[M].Beijing:China Metrology Publishing House,2006.
[7]陈京培,徐永梅.基于AT89S52单片机的液晶显示控制电路设计[J].现代电子技术,2008,22:22-25.CHEN Jingpei,XU Yongmei.Design of LCD control circuit based on AT89S52[J].Modern Electronics Technique,2008,22:22-25.
[8]彭礴,张明敏,林飞龙,等.基于At89S52高精度步进电机伺服控制系统设计[J].电子测量技术,2011(3):49-53.PENG Bo,ZHANG Mingmin,LIN Feilong,et al.Design of servo control system for high-precision stepper motor based on At89S52[J].Electronic Measurement Technology,2011(3):49-53.
[9]陈京培.AT89S52单片机实验系统的开发与应用[D].无锡:江南大学,2007.CHEN Jingpei.Development and application of the experimental system MCU AT89S52[D].Wuxi:Jiangnan University,2007.
[10]丁幼春,任奕林,熊利荣,等.At89S52在电机转速测量中的应用[J].农机化研究,2005(4):214-219.DING Youchun,REN Yilin,XIONG Lirong,et al.Applications in motor speed measurement based on At89S52[J].Journal of Agricultural Mechanization Research,2005(4):214-219.