摘 要

在这篇文章中,就电机测控和虚拟仪器的发展进行了介绍;介绍用LabVIEW作出的上位机远程控制步进电机的方法。硬件部分利用单片机来控制,这个部分里面有单片机最小系统、复位电路、LCD液晶显示、通信电路;软件部分包括用KeilC编写的下位机和用LabVIEW编写的上位机进行通信。这样设计出来的系统控制起来非常良好,而且编程容易上手,软件交互友好。

关键词:步进电机;LabVIEW;单片机;测速;

目 录

 

Abstract

1  

2 步进电机程序控制原理

3 步进电机控制系统硬件设计

3.1 步进电机控制电路的设计

3.2 单片机最小系统

3.3 单片机控制步进电机流程

3.4 电机驱动设计

3.5 步进电机

3.5.1步进电机的介绍

3.5.2步进电机的控制

3.6 通信电路

3.6.1串口通信

3.6.2 RS-232简介

3.7 串口通信系统的建立

3.7.1系统硬件部分的组成和通信的建立

3.7.2通信程序设计

3.7.3串行通信模块在LabVIEW中的应用

3.8液晶显示模块设计

3.9电机测转速的方法

4 步进电机控制系统的软件设计

4.1系统整体软件设计

4.2液晶显示程序设计

4.3串口通信软件设计

4.4上位机软件设计

4.4.1上位机前面板设计

4.4.2 LabVIEW的后面板设计

5系统下载与调试

5.1 KEIL软件介绍

5.2 程序下载

5.3 硬件调试

5.4 LabVIEW概述

5.5 LabVIEW调试

6  

参考文献

 A 总电路图

 B 实物图

 C 主程序

 

4 步进电机控制系统的软件设计

4.1系统整体软件设计

这次设计的系统主要包含三个部分:上位机、单片机和电动机,根据上位机发来的控制命令,电机进行相关动作,液晶显示电机的运行状态,并将速度信息发到上位机,其主程序框图如下图4.1所示:

图4.1 主程序流程框图

4.2液晶显示程序设计

单片机控制1602LCD一般分为两种方式进行数据的显示,一种为直接显示法,另一种为间接显示方式,这次设计的系统的显示方式为LCD直接显示的方法。本系统中将控制芯片89C52单片机的P0口直接和液晶显示模块1602LCD的接口直接相连,单片机P0口作为总线向LCD并行输入字符码有效地提高了数据的传输速率,本系统中具体的LCD显示流程图如图4.2所示。

图4.2 LCD显示流程框图

4.3串口通信软件设计

由于PC机本身是不带串口的,所以要利用USB转换线来进行PC机与单片机的串口通信,具体程序如图4.3所示: 

图4.3 串口通信流程图

/******************************************************/

{

SBUF=d;

 sending=1;  //设置发送标志

 while(sending); //等待发送完毕

}

{

{

  send(*pd); //发送一个字符

  pd++;  //移动到下一个字符

 }

}

{

 if(RI)    //收到数据

 {

 RI=0;   //清中断

  //command=SBUF;

 if(SBUF!='!')

 {

Uart_Receive[pUartRec++] = SBUF;  //读从串口收到的数据

 }  

 else pUartRec = 0;

  }

 else      //发送完一字节数据

 {

  TI=0;

  sending=0;  //清正在发送标志

 }

/******************************************************/

4.4上位机软件设计

4.4.1上位机前面板设计

前面板包括了一些实现设计所必需的功能,比如实时显示步进电动机的转速、数据存储功能、查询历史数据等功能,如图4.4所示。这些功能的实现主要看labview后面板程序的编写,而前面板的设计主要是上位机设计过程过程中涉及到的界面设计部分。因为基本按键是由后面板程序决定的,而每个界面给人的直观感觉是看前面板的界面设计,界面设计也是Labview编程过程中首先要完成的。

一个界面设计好坏的最基本指标一是看是否完成了交互功能;二是看它在输入信息或者接收信息的时候能不能特别清晰直接地看出来;三是界面的美观程度。一个好的用户界面共有的特点具有三个方面:一是一致性、二是使用恰当的数据类型和控件类型。三是控件的分类排步合理简洁。在这里面,一致性包含了很多的方面,一是程序的内部的内容一定要一样;

;三是要符合客观事实;四是遵守客观的规律。对于第三个方面而言,比如在测量、控制、数据采集等一些领域,用户的界面可以借鉴这些仪器的外观。

本设计的上位机界面设计的理念是:采用背景图片制作、排布自定义控件和相应控件。背景图片制作主要是从网上选取一些图片,而自定义控件需要在Labview前面板中先将所要用的控件拖到界面中,然后鼠标右击→选择高级→自定义控件→进入自定义控件界面进行制作(这时候可以导入网上查找的图片进行制作)。

图4.4 LabVIEW的前面板

4.4.2 LabVIEW的后面板设计

如图4.5所示,是LabVIEW的后面板图(也就是上位机程序设计图)。其中包括了数据通信串口协议方面模块的搭建、各类输入输出控件、各类结构(比如、条件结构While循环)、延时函数、时间显示模块等。

如图4.5所示,数据先经过串口配置资源输出,然后经过属性节点,当传入串口数据的字节数不等于0时,经过串口读入模块读入数据。采取条件结构对布尔按钮进行调控,再通过“连接字符串”进行字符串连接,来对步进电动机进行控制。

图4.5LabVIEW后面板

5系统下载与调试

本课题是基于LabVIEW的电机测控系统设计,涉及到程序代码的编写和下载。本设计中,选用KEIL4作为下位机的程序编写软件,STC-ISP作为代码下载调试软件,首先利用KEIL4将程序代码编写好,并检查是否有语法错误,然后编译链接生成用于下载的hex文件,利用STC-ISP软件将多编写的代码下载到单片机中。在确定硬件设计无误的情况下,给系统上电,即可进行硬件调试,在调试的过程中不断修改代码,直到达到预期的效果。另外选用LabVIEW作为上位机的编写软件,来实现上位机与下位机的数据传输,进而对步进电机进行控制测速。

5.1 KEIL软件介绍

从某种意义上说,单片机系统的核心是软件的编程,软件的编写是否可靠稳定直接影响系统的效果和质量。KEIL软件不仅适合汇编开发编程也同样适用于C语言的开发,并为单片机的系统开发提供了功能丰富的封装函数。KEIL软件已经是当下最流行的单片机编程软件,其功能操作简单实用,而且它还能产生种类不同的烧录文件供客户进行抉择,对于单片机来说很是合适。

KEIL软件诞生于美国,经过一代又一代开发人员的努力,KEIL软件发展到今天,功能更加完善,界面更加友好,成为许多单片机从业者最终的选择。本设计所有软件代码全部由KEIL软件编辑编译,图5.1

,图5.2为KEIL4编程界面图。

图5.1 KEIL4软件开机界面

图5.2 KEIL4编程界面

5.2 程序下载

利用KEIL4软件编写好程序后,要将这个程序加载到单片机上。KEIL能够生成hex的文件,只要用串口调试助手将程序载入进单片机就可以了。在本设计中,我们使用STC公司出品的STC-ISP烧录器。该软件界面如图5.3所示。在载入程序之前,也要提前做好一些工作,首先,选择单片机型号为“STC89C52RC”,选择合适的COM口,COM口的选择需自行查看电脑设备管理器,然后设置好下载的波特率的最高上限和最低下限,一般情况下按照系统自带的就行了,最后打开hex文件,点击下载按钮。由于我们使用的是STC系列单片机,相比如传统的AT系列,在下载程序时会显得十分快捷,只需对单片机重上电即可,在本设计中,下载电路采用TTC转USB接口电路,由于现在的笔记本大都带有诸多USB接口,所以在硬件连接上也很简便。

图5.3 STC-ISP程序烧录界面

5.3 硬件调试

最先着手的是设计硬件部分,然后根据已有的设计来画电路图,接着按照电路图用杜邦线来连接单片机和电机,再把光电编码器和电动机粘起来。在本系统中,光电编码器进行测速,利用液晶实时反应电机的状态,并将该信息通过串口发送至上位机显示。通过一步步对实物的调试,不断修改代码直至达到预期的效果。

5.4 LabVIEW概述

LabVIEW使用的编程语言是一种图形化的编程语言,又叫做G语言,这种图形化的程序语言,编写时基本不用写代码,而是用图标代替代码。LabVIEW采用一系列浅显易懂、好理解、好使用的图形代码来编程。

LabVIEW有很多的优点,它的应用领域也是很广的,比如测试测量、控制仿真、儿童教育、快速开发、跨平台等领域。我这次的毕业设计采用LabVIEW设计了一个上位机,做出了一个界面,用来与单片机通信,进行数据传输。

5.5 LabVIEW调试

在调试上位机之前,就已经能够通过串口调试助手对步进电动机进行控制,但是在与LabVIEW连接的时候出现了一点小故障,按钮有延迟,这个也许是程序本身运行问题,尝试了很多办法,还是没能解决,所以还是有点遗憾的。先给出几组系统状态截图,停止状态如图5.4所示,以一档速度反转状态如图5.5所示,利用左边指令控制电机进入二档正转状态如图5.6所示。

图 5.4测控系统停止状态

图 5.5以一档反转运转状态

图 5.6字符串指令发送使电机以二档速度正转

6 结 论

我这次设计的重点在于充分利用了单片机,通过LabVIEW这么一个图形化的软件编程,大致能实现控制电机的功能。虽然还存在一些小瑕疵,如按键有迟缓。作为菜鸟级入门新手,我在这方面仍无法解决这个问题,但是我会继续向老师和同学请教的。

最初我从老师提供的选题中选择了自己感兴趣的方向,然后搜索与课题相关的资料,完成了参考文献,再用谷歌搜索了一些外文文献,进行了翻译,在做好一系列准备工作后,我顺利完成了开题报告的撰写,接着按照任务书进行初稿的完成。在这期间,又在同学的帮助下以及老师的指导下,完成了初步的实物。从编程到论文的撰写,这一系列流程下来,我更加了解自己的毕设,尤其在专业知识上较之课本上的学习内容有了进一步的了解。一次次磨练,我掌握了如何进行工程设计,首先要分先现状,看看在当下的需求,然后深入分析要怎么实现功能,搭建框架,为日后的设计做好铺垫工作,夯实基础,最后是付诸实践,在一次次调试中对设计进行改进。

不过,就目前水平而言,作为LabVIEW初学者,还是有很多问题尚未解决,就比如说在PC端进行软件操作的时候,有一定的延迟,反应不够灵敏。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐