Remote stepper motor control system based on Android
黄慧萍,肖世德,孟祥印
HUANG Hui-ping, XIAO Shi-de, MENG Xiang-yin
(西南交通大学 机械工程学院,成都 610031)
摘 要:设计并实现了一种基于Android平台的步进电机远程控制系统。介绍了系统的组成与工作原
理、硬件设计方案以及软件开发工作。系统的主要硬件设备包括:基于Android平台的客户端智能手机或者平板电脑、作为远程服务器的上位工控机、单片机、步进电机、电机驱动芯片和液晶显示器。系统软件开发工作主要包括运行在Android智能手机或者平板电脑上的客户端应用程序,运行在远程工控机上服务器应用程序,以及单片机内部的控制程序。系统采用C/S结构,以基于Android平台的智能手机或者平板电脑为客户端,它通过Wifi,GPRS、3G等多种方式接入Internet,与远程服务器端的工控机通信。上位工控机与下位单片机通过串口通信,传达远程用户发来的电机运动控制指令,从而控制步进电机的启停、转向和转速。测试结果表明,系统运行结果正确,性能稳定可靠。
关键词:Android系统;步进电机;单片机;串口通信中图分类号:TM301.2;TP393 文献标识码:A 文章编号:1009-0134(2014)02(上)-0044-04Doi:10.3969/j.issn.1009-0134.2014.02(上).12
0 引言
步进电机是数字控制电机,它将脉冲信号转变成角位移,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的[1]。步进电机无累积误差、精度和可靠性高、动态响应快、易于起停、正反转及变速。由于这些优点,步进电机被广泛应用于制造业的速度控制、位置控制系统中,如数控机床、机械手等现代化制造设备。
目前随着计算机、网络、通信技术的飞速发展,现代化制造设备的远程控制成为了一个重要的研究方向。而如何进行步进电机的远程控制是其中必须解决的一个问题。文献[2,3] 采用B/S结构,提出了一种通过Internet来实现电机远程控制的解决方案。这些远程控制方案在传统的基于Windows平台的远程控制计算机上能够良好地运行。但是,它们无法应用在如今相当普遍的基于
Android平台的智能手机或者平板电脑上。而目前各类平板电脑、智能手机使用便捷,可以通过Wifi,GPRS,3G等多种移动网络接入方式连入Internet,与远程设备通信。因此,它们越来越广泛地被作为一种远程控制设备应用在工业远程控制系统中。本文针对这种应用需求,设计并实现了一种基于Android平台的步进电机远程控制系统。
1 系统总体方案设计与工作原理
基于Android平台的步进电机远程控制系统采用成熟的C/S结构,如图1所示。可以将该系统分为三层来分析。在该系统中,第一层为客户端,这是基于Android平台的智能手机或者平板电脑,其中安装有专门针对该系统开发的客户端应用软件。第二层是服务器端的上位工控机,其中也安装有相应的服务器端软件。第三层为现场受控端,包括单片机以及与其相连的步进电机,同样也需要为单片机编写程序来达到控制步进电机的目的。
系统工作流程如下:用户首先利用智能手机或者平板电脑通过GPRS、Wifi、3G等移动网络接入Internet,为远程控制做好网络连接准备。用户启动其智能手机上已经安装好的步进电机远程控制客户端软件程序,在该软件中设置电机的启动、停止,或者调整电机的转向和转速。客户端
收稿日期:2013-11-12
基金项目:高校基本科研业务费专项资金资助(2682013CX022)
作者简介:黄慧萍(1977 -),女,湖北武汉人,讲师,博士,主要从事工业监控与自动化方面的应用研究。【44】 第36卷 第2期 2014-02(上)
软件将用户的这些控制命令立即通过Internet传送给远程的服务器,即位于电机工作现场的上位工控机。工控机接收到控制命令后,转发给与其相连的单片机,再由单片机根据用户发来的控制命令,对步进电机实现具体的控制操作。
第一层基于Android的智能手机或者平板电脑作为客户端GPRS/Wifi/3G第二层上位工控机作为远程服务器串口通信第三层下位单片机电机驱动芯片步进电机的51单片机指的是所有兼容Intel 8031指令系统的单片机,它虽然是一款8位单片机,但其功能和性能却能满足大多数的工业应用。目前,国产宏晶STC单片机以其低功耗、廉价及稳定性能,占据着国内51单片机较大市场。且STC的51单片机支持ISP下载,极大的降低了程序烧写的复杂程度。因此,本系统选择STC51单片机,型号为STCC51RC。STCC51RC单片机具有4K的用户程序控件,工作频率0-40MHz,片上集成512字节RAM,2K的EEPROM,同时具有8路中断源,三个16位定时/计数器,还具有看门狗、ISP、IAP功能。在布置电路时,按照以下表格的设置来分配各个功能模块占用的单片机端口。
表1 单片机端口分配表功能模块远程控制步进电机LCD1602显示串行口通信占用端口P1.0-P1.3P0.0-P0.7P3.1、P3.2图1 基于Android平台的步进电机远程控制系统结构图
基于上文所述的系统结构和工作原理,我们设计了一个基于Android平台的步进电机远程控制系统,其中涉及的主要硬件设备包括:基于Android平台的客户端智能手机或者平板电脑、作为远程服务器的工控机、单片机、步进电机、电机驱动芯片、液晶显示器1602。涉及的软件主要包括运行在Android智能手机或者平板电脑上的客户端应用程序、运行在远程工控机上服务器应用程序,以及单片机内部的控制程序。下面分别介绍该原型系统的主要硬件设计方案,以及软件开发方法。
2.2 四相五线步进电机的工作原理与选型
步进电机是一种将电脉冲转化为角位移的执行机构。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。可用控制脉冲数量、频率及电动机各相绕组的通电顺序来控制步进电机的转动。本系统中使用的是一种四相五线步进电机,其原理图如图2所示。
2 系统的硬件设计
在本文设计的基于Android平台的步进电机远程控制系统中,采用单片机向电动机驱动芯片发送控制指令,从而来控制一台四相五线步进电机的运转,同时为了验证数据传输到远程客户端的准确性,有必要在现场也能获得本地的工作参数,例如当前步进电机的正反转情况和速度,因此还需要使用一块液晶显示器来显示当前的步进电机工作参数,以便与远程用户发送的控制参数进行比较,检查二者是否一致,验证电机是否按照远程用户的控制要求正确运转。下面分别介绍各硬件组成部分的选型、工作原理与电路设计方案。2.1 单片机选型与控制端口分配
目前单片机已经从上世纪80年代的4位、8位单片机,发展到现在的32位高速单片机,它们在工业控制领域得到了广泛的应用。目前应用广泛
!3N!5!6!4!2图2 四相五线步进电机原理图
如图2所示,红5线一般固定接高电平,通过单片机控制电机驱动系统,设定四相五线步进电机1-4线的电平高低,当1-4线依次设定为高电平或者是低电平,步进电机的转子即可以按照固定的方向旋转,通过改变1-4线电平切换的频率,即脉冲频率,就可以控制步进电机转动的速率;而通过设定电平切换的次数,即脉冲个数,就可以控制步进电机停止的角位移量;同样,改变1-4线上
第36卷 第2期 2014-02(上) 【45】
高低电平的切换方向,即可使步进电机实现反转。2.3 步进电机驱动芯片的选型与使用
在步进电机的应用中,由于单片机I/O口的输出功率有限,通常需要借助相应的步进电机驱动芯片来实现对步进电机的控制,常用的芯片有L298N、ULN2003A等,本系统使用的是ULN2003A,它适用于高速而又大功率的驱动系统。ULN2003是由七个硅NPN达林顿管组成的达林顿阵列,具有工作电压高、电流增益高、带负载能力强等特点。
本系统中步进电机与单片机的接线如图3所示。单片机的四个I/O口与ULN2003的IN口相连,同时将ULN2003的OUT1-4口与四相五线步进电机的1-4线相连,而步进电机的5线则与Vcc相连,获得高电平。
机或者平板电脑上的客户端应用程序;2)运行在工控机上的服务器端应用程序;3)单片机内部的控制程序。在本系统的软件开发中用到了多种开发工具和编程语言,在Android应用程序的开发过程中,使用了Eclipse和Android SDK来搭建开发环境,并使用java语言来编写应用程序[5]。在开发工控机的服务端软件时则使用Visual Studio 2010搭建的Windows应用开发环境,使用C#语言开发应用程序。在开发单片机的控制程序时,使用Keil C51软件来开发。
整个系统软件开发过程中需要解决的关键性技术问题包括:1)基于Android的智能手机或者平板电脑与远程工控机之间的通信;2)上位工控机与下位单片机之间的通信;3)单片机对步进电机的控制。下面分别就这三方面的关键技术进行阐述。3.1 基于Android的智能手机或平板电脑与远程工
控机之间的通信
基于Android的智能手机或者平板电脑作为客户端可以通过GPRS、Wifi、3G这样的移动网络接入Internet,作为远程服务器的工控机也接入Internet,二者之间实现网络连接。它们之间的通信遵循TCP/IP协议[6],因此,我们采用基于TCP/IP的Socket通信机制,分别编写客户端和服务器端程序,来保证基于Android的智能手机或者平板电脑
图3 步进电机接线原理图
2.4 液晶显示器1602
在本系统中,为了验证数据传输到远程客户端的准确性,需要在现场也能获得本地的参数。目前,单片机的人机交互,主要通过按键和液晶显示器来实现。本系统使用LCD1602型号的工业字符型液晶显示器,该液晶具有功耗小、体积小的特点。
当系统工作时,远程用户通过Android智能手机向步进电机发来控制命令,电机开始运转,同时电机的实际工作状态就实时显示在该液晶显示上。我们可以将该液晶显示器上显示的参数与用户所发的控制参数进行比较,看二者是否一致,从而来验证步进电机是否按照用户的控制指令正确运转。
3 系统的软件设计与开发
本系统的软件设计与开发工作主要包括三方面的内容:1)运行在基于Android平台的智能手
【46】 第36卷 第2期 2014-02(上)
图4 TCP通信流程图
与远程工控机之间的通信稳定可靠。在软件设计中,基于Android平台的客户端程序采用Java语言编程,而工控机上的服务端应用程序采用C#语言编程,尽管编程语言不通,但它们基于TCP/IP的Socket通信原理是一致的,其流程图如图4所示。
运行在工控机上的服务器端应用程序的Socket类库在C#中位于System.Net包中。在远程监控系统运行时,工控机需要先接入网络,并获得网络分配的唯一IP地址,然后启动Socket监听。socket监听需要知道工控机在网络中的IP地址,同时需要一个未被占用的端口。部分实现代码如下。
C#:int port = Convert.ToInt32(this.textport.Text.Trim());//获取端口号
IPAddress[] ipaddress = Dns.GetHostAddresses(Dns.GetHostName());获取IP
this._tcplistener = new TcpListener(ipaddress[1], port);//创建监听
this._tcplistener.Start();//启动监听
this._thread = new Thread(this.Listen);//线程对象接收发到服务器端的信息
this._thread.Start();//启动线程
运行在基于Android平台的智能手机或者平板电脑上的客户端应用程序采用的编程语言是Java。Java中的Socket和ServerSocket类库位于java.net包中。智能手机或者平板电脑在与工控机连接的过程中,需要知道工控机的IP地址和对应的端口号。建立以该IP地址和端口号为参数的socket连接,在Java中编写的部分socket连接函数如下。
Java:public void ConnectToServer() {try {
int myportint = Integer.valueOf(Sym_remote_controlActivity.myport);
client = SocketChannel.open();
isa=new InetSocketAddress(Sym_remote_controlActivity.myip,myportint);
//连接相应的socketclient.connect(isa);
} catch (IOException e) {e.printStackTrace();}}3.2 上位工控机与下位单片机之间的通信
如前文所示,本系统采用STCC51RC单片机和步进电机驱动芯片ULN2003A来控制一台四相五线步进电机。单片机通过串口接收上位工控机机
发出的运行指令,根据指令控制电机执行相应的运动。控制流程如图5所示[4]。系统在工作时,首先对程序进行初始化,设置串口通信模式以便接收上位工控机转发的来自远程用户的控制命令,在收到串口信息帧后,单片机对数据帧进行判断,得到相应的控制命令,控制步进电机执行相应的动作。
䆒㕂І䗮1І<䇏ІІҸ㉏㸠⬉⧚Ҹ图5 上位工控机与下位单片机之间的串口通信流程图
3.3 单片机对步进电机的控制
在系统中,用户通过操作其Android智能手机或者平板电脑上的客户端软件,将控制指令发送给远程的工控机,再由工控机从字节流中过滤出指令信息,并通过串口转发给单片机。单片机再次过滤出控制电机的指令,并将参数读出,通过自己的I/O口设置步进电机的正反转及转速。
本系统中,利用ULN2003大功率驱动器来驱动一台四相五线步进电机。其中步进电机的控制线有四根,一般情况下,需要占用四个单片机的I/
【下转第61页】
第36卷 第2期 2014-02(上) 【47】
变形,更能准确的预测加工时变形,有效的指导了加工参数的确定和准确性。数字化的优化与分析手段为今后流体类机械的加工提供了更有效的手段。参考文献:
[1] 张伯明.数字化制造是先进制造技术的核心[J].北京:制
[2] [3] [4] [5]
造业自动化,2000,(2):1-5.
《金属切削理论与实践》编委会.金属切削理论与实践(中册)[M].北京:北京出版社.1985.380-410.
ANSYS12.0 机械设计高级应用教程(第二版) [M].北京机械工业出版社,2009.
数控加工工艺[M].北京:机械工业出版社,2001.
陈汉军,廖文,周儒荣.四坐标数控加工原理及算法研究[J].工程图学学报,1996(1):1-3.
【上接第47页】
O口来控制。在本系统中,定义了P1.0-P1.3为步进电机A、B、C、D相的控制端口。
C:sbit A1=P1^0; //定义单片机上步进电机A相控制I/O口
sbit B1=P1^1; //定义单片机上步进电机B相控制I/O口
sbit C1=P1^2; //定义单片机上步进电机C相控制I/O口
sbit D1=P1^3; //定义单片机上步进电机D相控制I/O口
步进电机的转动是通过A、B、C、D四相的依次通电来实现的,也就是说,在硬件电路中需要设置四个I/O口的电位高低,从而控制电机各个相线的通电。
C:#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全断电
从以上的代码可以看出,步进电机的旋转是四个相依次切换通电的结果,那么实现电机的反转就只需要将四个相反向依次通电即可。而步进电机的转速控制方法是使用定时器来产生相应的中断脉冲,在脉冲中断函数中实现相线的切换,采用成熟的PWM脉宽调速技术来调节步进电机的
转速。
4 结束语
本文设计并实现了一种基于Android平台的步进电机远程控制系统,介绍了系统的硬件组成与软件开发。系统采用基于Android平台的智能手机或者平板电脑作为客户端,用户可以通过Wifi,GPRS、3G等多种方式接入Internet,向远程工控机发送用户的电机控制指令。上位工控机与单片机通过串口通信,传达远程用户发来的控制指令,将控制信号发送给电机驱动芯片,进而控制步进电机运转。同时在电机工作现场配置有液晶显示屏实时显示电机的运转参数,以验证远程控制的正确性。实际测试结果表明,用户使用Android智能手机或者平板电脑上网即可远程控制步进电机运转。运行结果正确,性能稳定可靠。该系统的设计方法可以推广应用到制造业领域各类机电设备的远程控制中。参考文献:
[1] 高琴,刘淑聪,彭宏伟.步进电机控制系统的设计及应用
[J].制造业自动化.2012.34(1):150-152.
[2] 尚晓锋,刘廷章,王世松. 基于B /S结构的电机远程控制系
统的设计[J]. 组合机床与自动化加工技术.2011.01:69-71[3] 黄慧萍,孟祥印,肖世德,等.基于B/S模式的步进电机远程
系统实验平台[J].实验科学与技术.2010.8(2):184-186.[4] 李文广,汤清华,吴.基于AVR 单片机和L6208 的步进
电机控制系统设计[J].电机与控制应用.2011.38(1):43-46.[5] 郭宏志.Android应用开发详解.北京:电子工业出版
社,2010.
[6] 罗军舟.TCP/IP协议及网络编程技术[M].北京:清华大学
出版社,2004.
第36卷 第2期 2014-02(上) 【61】
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务