陈茂添,王文华,吴伟娜
(1.广东海洋大学电子与信息工程学院,广东湛江 524088;2.广东海洋大学数学与计算机学院,广东湛江 524088)
步进电机是按步骤前进的,电机旋转一周分为n步进行,n取决于应用场合的旋转精度要求以及步进电机的性能,完成一周的动作后再次进行循环,从而将数字式脉冲信号通过步进电机精确地带动执行机构,实现设定的角位移或者是线位移[1]。在步进电机的驱动下,执行机构能够快速且较精确地定位在所需要的位置,实现执行机构较高精度的动作,同时又可以轻松实现正转/前进、反转/后退,或者需要特定的角度、线位移量,并且切换平滑[2],所以步进电机在机器人的驱动、现代测量、机械加工、激光加工和自动焊接等领域的自动控制系统中得到了广泛的应用[3-5]。驱动步进电机执行动作时,可以通过减小步进电机的步进量提高电机和执行机构运行的平稳性,降低噪声,从而改善控制系统的动态性能和灵活性等,满足自动控制系统的高精度定位、精确的位移量、高精度测量,以及机械加工等方面的精细加工要求[6-7]。
本文采用步进电机模块、51单片机模块、按键控制电路和ULN2003驱动模块等硬件,结合软件开发,实现步进电机正转、反转、暂停和给定角度的精确旋转和控制,精确带动步进电机的执行机构,进而实现精确测量。
为了有较高的性能和功能的通用性,采用AT89C51单片机作为智能控制的核心处理器。因为该处理器是8位的,所需电压低,并且其存储器提供了4 k的字节,同时又兼容了51单片机的各项功能。结合硬件和软件,实现设定的步进电机动作,使得执行机构带动待测部件的正转、反转、以及设定角度的旋转、暂停。本文设计了具有步进电机模块、51单片机模块、ULN2003驱动模块、电源模块和键盘控制模块等5个部分,其中的键盘控制电路模块用于在需要的时候采取人为手动控制,实现执行机构带动待测部件进行正转、反转、旋转45°、旋转90°和暂停等功能。硬件系统如图1所示。
图1 硬件系统模块图
5 V的工作电压条件下,ULN2003驱动器可以直接连接一些基本电路,如TTL和CMOS等;ULN2003在单片机驱动的情况下,通常选择2 kΩ的上拉电阻,而对于ULN2003驱动器连接的电路可以接电源,也可以采用悬空的方式。基于ULN2003具有带负载能力强等特点,经常被用于控制电路中用于智能控制或自动控制。
步进电机将接收到的一系列脉冲数字信号转换为执行机构旋转或者直行的角位移或线位移信号,达到执行机构精确运动的目的。
本文选用DC-5 V的永磁式步进电机作为测量部件动作执行机构的驱动源。当ULN2003驱动器输出的脉冲式电流加载到步进电机时,磁场将在定子绕组上产生,继而该磁场带动DC-5 V永磁式步进电机的转子旋转预定的角度,该角度与脉冲数相对应。因此,步进电机产生的矢量磁场与转子能够保持同步旋转,使他们的方向始终相同,即本文采用的DC-5 V永磁式步进电机转动的原理。当步进电机接收到一个数字式电流脉冲的时候,它就会转动一个角度,其转速与接收到的数字脉冲频率成正比;如果要加快步进电机的速度,则通过软件增加单位时间内输入的脉冲频率就可以实现,所以待测部件速度的调节关键在于软件代码的编写。而步进电机带动待测部件的转动角度与ULN2003驱动器输出的脉冲数量有关,它们之间的关系是正比关系。步进电机正转的问题解决了,其反转也就容易了,改变绕组的接通数字式脉冲电流的顺序即可。本文就是利用步进电机的这个控制原理,通过编写代码对步进电机输入不同的脉冲数量、脉冲频率实现设定角度的转动和转速,通过硬件系统的键盘模块控制通电顺序实现电机的正转、反转等功能。
键盘控制电路如图1(b)所示,它是整个智能步进电机系统中的关键部分,在需要的时候可以通过人工干预单片机来控制步进电机的转动性质,其实质是多个开关分别控制步进电机不同的功能。由于开关的断开和闭合都是通过按下或松开开关实现的,因此这个过程都会产生短暂的抖动,抖动的幅度在10 ms以内。开关的接通与否将导致键盘电路的输出电压呈现高低变化,因此,可以通过检测输出电压的高低来判断开关是否接通。
根据本次设计与实现的实际需求,本文需要用到步进电机的功能有正转、反转、45°旋转、90°旋转和暂停。正转和反转功能的实现,是通过改变电机的导通相序来改变步进电机的转动方向,而想要改变步进电机的导通相序,只要把AT89C51单片机P0口的电平轮流置高就行了,这时候电机会顺时针旋转,每执行完一次这个顺序,电机顺时针旋转会旋转0.72°。如果需要步进电机顺时针旋转,则电机的通电顺序设置为D-C-B-A,P0口先将0x08的置为高电平,其次将0x04置为高电平,然后0x02,0x01依次为高电平,如果需要步进电机逆时针旋转,则电机的通电顺序为A-B-C-D,P0口电平置高顺序与顺时针时相反,每执行完一次这个顺序,电机会逆时针旋转0.72°。如果电机暂停,则P0口全部置0就行了。
本文的软件系统采用C语言编写,使用模块化思想分别设计延时函数和中断函数等,根据所需的功能划分好每个模块,一个模块由一个函数完成,一个模块实现一个功能,然后运用面向对象的方法根据所需功能来调用每个模块,最后将各个模块联合起来,构成一个系统。考虑到程序的易读性,选用Keil作为程序编辑代码的平台,Keil平台如图2所示。
图2 Keil软件平台
为了防止误触,确保按键接收到的就是一次按键,对电机系统进行消抖操作是必须的。可以设计相应的硬件电路对按键进行消抖从而防止误触,但是硬件消抖的电路设计比较复杂,而且效果也不是很理想;另外一种消抖的办法是用软件来实现,编写适当的延时(抖动幅度以内的延时时间即可)并执行,通过执行延时函数之后再判断开关是否处于接通状态,如果是,则接收到信号就是有一个按键动作,这样就消抖成功了。
本文电机系统的设计和开发是为了实现透明材料折射率的精确和自动测量,通过电机系统驱动执行机构带动被测量的部件执行顺时针转旋转的动作,或者是逆时针旋转,45°旋转、90°旋转和暂停等。主程序的设置是在选择正转的条件下,电机有旋转45°和旋转90°这两种选择;选择反转的条件下,电机也有旋转45°和旋转90°这两种选择。步进电机控制系统主程序的流程图如图3所示。
图3 步进电机控制系统主程序流程图
电机的顺时针旋转和逆时针旋转功能是通过改变电机的导通相序来实现的,而改变P0口电平置高的顺序就可以改变电机的导通相序。顺时针旋转功能如图4所示,逆时针旋转功能同理。
图4 电机顺时针旋转
本文所用的DC-5 V步进电机是一种四相五线的步进电机,其步进角为0.72°,也就是说电机每把这四相执行完一次,步进电机就转动0.72°,想要电机旋转90°或者45°,则通过软件控制电机把这四相执行对应的次数即可,由设定的需要旋转的角度除以0.72°。电机旋转90°的代码如图5所示。暂停功能可以采用单片机的中断技术,也可以使用较为简单的的暂停功能,即将P0口的电平置0,没有高电平驱动,则电机就不会旋转。
图5 电机旋转角度
本文步进电机系统设计与开发目的是带动转盘转动从而实现待测量的测量,需要在转动一个精确的角度后停下,如果按照步进电机原本的速度来驱动电机,则电机旋转的非常快,当步进电机带动被测部件达到某一个角度后,惯性将会导致执行机构带动被测部件继续旋转,这样会导致待测量的测量造成很大的误差。解决方法是给各相通电的时候添加一个延时函数,这样电机转动的速度就会慢下来。控制电机转速的方法如图6所示。
本文将设计和开发的步进电机系统应用于透明材料折射率的自动精确测量[8],步进电机在系统软硬件的控制下带动执行机构旋转,使得待测材料随之精确地顺时针或逆时针旋转到对应位置,此时激光束以设定的角度入射和出射,从而达到折射率精确测量的结果,最终测得玻璃折射率的不确定度为0.001。
图6 电机转速的控制
步进电机广泛应用于驱动执行机构按指定的方向和设定的角度转动或者完成既定的线位移,在机械加工、激光加工、自动测量、机器人的驱动等智能控制方面的应用潜力很好。本文通过单片机、电源模块、ULN2003驱动器集成芯片结合的方法,运用C语言做软件开发,实现步进电机通过执行机构带动被测部件顺时针旋转、逆时针旋转、暂停、以及设定角度的精确旋转,确保所需要的角度能够做到精确位置的控制,实现透明材料折射率的自动精确测量,能够很大程度上提高实验的测量精度,减少了人为旋转所造成的实验误差。