嵌入式控制系统以其低功耗、低成本、高性能等优势被广泛用于工业控制领域,而在嵌入式控制系统中步进电机驱动控制技术是关键技术之一。在,虽然此方法可行,但由于线复杂而且制成后不易调整,存在一定的局限性。随着嵌入式技术的发展,越来越多的智能化带有界面控制功能的小型设备深入到人们生活当中。开发者基于嵌入式领域中的Qt技术,设计出一套应用于工控领域的具有界面的智能控制统,Qt是挪威Trolltech著名的标志性产品,采用C++作为程序设计语言,已经成为用C++GUI工具包在Linux上进行软件开发的主流,是Linux上流行的KDE桌面的基础。Qt/Embedded是著名的Qt库开发商Trolltech公司开发的面向嵌入式系统的Qt版本。Qt是Server/Client结构,延续了Qt在X上的强大功能,在底层摒弃了Xlib,仅采用帧缓冲作为底层图形接口。Qt/Embedded类库完全采用C++封装,提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。Qt/Embedded是完全面向对象的,很容易扩展,提供了丰富的窗口部件集,并且允许真正的组件编程。
该控制系统的硬件部分主要由:步进电机、TA8435H、S3C2440微处理器、光电耦合器、触摸显示屏组成。控制系统硬件结构图如图1所示。
系统在Linux下应用Qt设计开发嵌入式控制系统人机界面的方法,通过触摸屏界面对步进电机进行控制,控制步进电机的转动方向和转速、细分模式等。
本系统的硬件核心电是由S3C2440处理器、TA8435H步进电机驱动芯片以及步进电机组成的步进电机控制电。步进电机控制电如图2所示。
在该步进电控制系统中,采用了以arm920t为内核的S3C2440芯片,该芯片是三星公司生产的一款高性能微处理器,具有功耗小、性能高、价格低等优势,在许多领域都获
得了应用。本文选择该芯片为核心处理器,并将其植入Linux系统,进而完成通过触摸屏对步进电机交互控制。S3C2440芯片拥有289个引脚,其中多功能通用I/O多达30个,分别为GPA~GPJ,GPA有25个输出端口,其余均可根据需要配置成输入或输出。为了实现四个电机的可靠控制,本系统选择GPB端口为控制端口,该端口具有8个引脚,分别为GPB0~GPB8,所以可完成步进电机的实时控制。TA8435H是东芝公司生产的单片正弦细分二项步进电机驱动专用芯片,TA8435H可以驱动二项步进电机,且电简单,工作可靠。
TA8435H步进电机驱动芯片引脚4外接电容的电容值决定芯片内部驱动级的斩波频率,这里使用的电容容量是0.01F。由于电机所需要的驱动电流为0.1 A,因此设定REF IN引脚为高电平,Rnf=0.8 。步进电机接口需要使用快恢复二级管(D1D4),用来泄放绕组电流。
为了提高硬件的可靠性并且有效干扰,S3C2440和TA8435H之间加入由光耦TLP521-4和TLP521-2芯片组成的电平隔离电,将S3C2440处理器控制信号与步进电机控制器进行电平转换和隔离。电平隔离电如图3所示,S3C2440处理器GPIO端口、PWM输出引脚通过光电耦合器TLP251实现电平隔离转换。
由于在实际工业控制中会对电机有精度、速度、稳定性、方向等要求,所以本设计要通过触摸屏按键交互,实现对电机正转、反转、转速、细分模式的选择。
TA8435H芯片有正转反转两种工作模式,分别通过引脚CW/CK1/CK控制电机的正反转。也可以通过M1,M2输入引脚的高低电平来选择细分模式。当M1M2为00表示步进电机工作在整部方式,没有细分;10为半步方式,01为1/4方式;11为1/8细分方式。在低速工作时,可以选用1/4或1/8细分模式,以提高步距角精度;在高速工作时,可以选用整步或半步方式,以提高步进电机运行的稳定性,减小步进电机的噪声和振动。
步进电机的转速是由脉冲信号频率所决定的,脉冲信号的产生与控制实际是由CPU产生的,一般脉冲信号的占空比为0.30.4左右,电机转速越高,占空比则越大。本设计中电机转速是通过改变定时器参数,已产生其他频率和占空比的PWM输出控制步进电机。
PWM定时器的设置,要分别设置定时器0的预分频器值和时钟分频值,以供定时器0的比较缓冲寄存器和计数缓存寄存器。预分频值为0~255,分频器的分频值为2,4,8,16。
当时钟被使能后,定时器计数缓冲存储器(TCNTBn)把计数初值下载到递减计数器中,定时器比较缓冲器(TCMPBn)把其初始值下载到比较寄存器中,并将该值和递减计数器的值进行比较。这种基于TCNTBn和TCMPBn的双缓冲特性使定时器在频率和占空比变化时产生稳定输出。
本设计采用的触摸屏是TQ4.3寸屏,因为要通过与触摸屏的交互来控制电机,也就是说在开发板上操作QT程序,是通过触摸屏完成的,所以首先要移植tslib,进行触摸屏校正。tslib是一个开源的触摸屏支持库,它是开发的,作者是Russul King,Douglas Lowder和Chris Larson。它给上层的应用程序,为不同的触摸屏提供了一个统一的接口。它提供诸如滤波、去抖、校准之类的功能。
解压源代码tslib-1.4.tar.gz,编译安装tslib,将安装径下的整个tslib文件夹,下载至开发班的上,存放的径为/usr/local。设置开发板变量,通过超级终端,打开变量文件/etc/profile,添加如下内容:
在PC的Linux的终端输入命令:#qt2/bin/designer 1来在后台启动QT设计器。设计步进电机的控制界面,整个控制界面的名称为xagc,并将按钮的点击事件与控制电机转速和方向的函数用信号与槽连接起来。图4是电机控制界面,控制界面分别控制电机转动、细分模式、四种转速。图5是信号和槽连接,添加的响应函数为void Motor_CW(),voidMotor_CCW(),voidDriver_Model1/2/3/4(),void Speed Model1/2/3/4()。
保存工程名为xagc.ui,然后使用uic软件将刚刚建立工程为源代码,首先建立一个可执行脚本来完成文件转换,这里用到的文件名与ui相同,该脚本会在以后开发中用到,设置ui2cpp脚本为可执行,最后执行建立的脚本转换文件。获得源码xagc.h;xagc.cpp;moc_first.cpp。程序如下。
经测试,电机控制界面移植到了s3c2440上,并通过触摸屏按键的交互,可以实现步进电机的控制,并且在改变电机速度时,电机可以稳定的运行。实例运行结果如图6。
图形用户界面的广泛流行是当今计算机技术的重大成就之一,它极大地方便了非专业用户的使用。本设计通过Linux下应用Qt设计开发嵌入式控制系统人机界面的方法,设计出了简单方便的步进电机控制界面,实现了对步进电机转速、方向、细分模式的选择控制。运用这一技术控制的步进电机成功地应用到我们研制的核电设备的焊机系统上,系统运行稳定,控制精度高,其软件界面形象生动,并且编程简单,实现起来非常方便,并且可根据用户的不同要求随时调整控制方式,因此具有广泛的应用价值。
本文来源于ipfs