基于ARM920t为内核的S3C2440芯片步进电机控制系统设计
2015-11-09 10:45:05 来源:物联网在线
【哔哥哔特导读】图形用户界面的广泛流行是当今计算机技术的重大成就之一,它极大地方便了非专业用户的使用。本设计通过Linux下应用Qt设计开发嵌入式控制系统人机界 面的方法,设计出了简单方便的步进电机控制界面,实现了对步进电机转速、方向、细分模式的选择控制。
图形用户界面的广泛流行是当今计算机技术的重大成就之一,它极大地方便了非专业用户的使用。本设计通过Linux下应用Qt设计开发嵌入式控制系统人机界 面的方法,设计出了简单方便的步进电机控制界面,实现了对步进电机转速、方向、细分模式的选择控制。运用这一技术控制的步进电机成功地应用到我们研制的核 电设备的焊机系统上,系统运行稳定,控制精度高,其软件界面形象生动,并且编程简单,实现起来非常方便,并且可根据用户的不同要求随时调整控制方式,因此 具有广泛的应用价值。
嵌入式控制系统以其低功耗、低成本、高性能等优势被广泛用于工业控制领域,而在嵌入式控制系统中步进电机驱动控制技术是关键技术之一。在步进电机控制系统设计中,传统的方法是用逻辑电路或单片机实 现步进电机控制,虽然此方法可行,但由于线路复杂而且制成后不易调整,存在一定的局限性。随着嵌入式技术的发展,越来越多的智能化带有界面控制功能的小型 设备深入到人们生活当中。开发者基于嵌入式领域中的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是完全面向对象的,很容易扩展,提供了丰富的窗口部件集,并且允许真正的组件编程。
1 硬件电路设计
1.1 系统整体框图
该控制系统的硬件部分主要由:步进电机、TA8435H、S3C2440微处理器、光电耦合器、触摸显示屏组成。控制系统硬件结构图如图1所示。
系统在Linux下应用Qt设计开发嵌入式控制系统人机界面的方法,通过触摸屏界面对步进电机进行控制,控制步进电机的转动方向和转速、细分模式等。 1.2 电路设计 1.2.1 SC2440和TA8435H电路设计 本系统的硬件核心电路是由S3C2440处理器、TA8435H步进电机驱动芯片以及步进电机组成的步进电机控制电路。步进电机控制电路如图2所示。
在该步进电控制系统中,采用了以arm920t为内核的S3C2440芯片,该芯片是三星公司生产的一款高性能微处理器,具有功耗小、性能高、价格低等优 势,在许多领域都获 得了应用。本文选择该芯片为核心处理器,并将其植入Linux系统,进而完成通过触摸屏对步进电机交互控制。S3C2440芯片拥有289个引脚,其中多 功能通用I/O多达30个,分别为GPA~GPJ,GPA有25个输出端口,其余均可根据需要配置成输入或输出。为了实现四个电机的可靠控制,本系统选择 GPB端口为控制端口,该端口具有8个引脚,分别为GPB0~GPB8,所以可完成步进电机的实时控制。TA8435H是东芝公司生产的单片正弦细分二项 步进电机驱动专用芯片,TA8435H可以驱动二项步进电机,且电路简单,工作可靠。 TA8435H步进电机驱动芯片引脚4外接电容的电容值决定芯片内部驱动级的斩波频率,这里使用的电容容量是0.01μF。由于电机所需要的驱动电流为0.1 A,因此设定REF IN引脚为高电平,Rnf=0.8 Ω。步进电机接口需要使用快恢复二级管(D1—D4),用来泄放绕组电流。 1.2.2 电路可靠性设计 为了提高硬件的可靠性并且有效抑制干扰,S3C2440和TA8435H之间加入由光耦TLP521-4和TLP521-2芯片组成的电平隔离电路,将 S3C2440处理器控制信号与步进电机控制器进行电平转换和隔离。电平隔离电路如图3所示,S3C2440处理器GPIO端口、PWM输出引脚通过光电耦合器TLP251实现电平隔离转换。
2 软件设计 由于在实际工业控制中会对电机有精度、速度、稳定性、方向等要求,所以本设计要通过触摸屏按键交互,实现对电机正转、反转、转速、细分模式的选择。 TA8435H芯片有正转反转两种工作模式,分别通过引脚CW/CK1/CK控制电机的正反转。也可以通过M1,M2输入引脚的高低电平来选择细分模式。 当M1M2为00表示步进电机工作在整部方式,没有细分;10为半步方式,01为1/4方式;11为1/8细分方式。在低速工作时,可以选用1/4或1 /8细分模式,以提高步距角精度;在高速工作时,可以选用整步或半步方式,以提高步进电机运行的稳定性,减小步进电机的噪声和 振动。 步进电机的转速是由脉冲信号频率所决定的,脉冲信号的产生与控制实际是由CPU产生的,一般脉冲信号的占空比为0.3—0.4左右,电机转速越高,占空比 则越大。本设计中电机转速是通过改变定时器参数,已产生其他频率和占空比的PWM输出控制步进电机。 PWM输出信号占空比公式为
PWM定时器的设置,要分别设置定时器0的预分频器值和时钟分频值,以供定时器0的比较缓冲寄存器和计数缓存寄存器。预分频值为0~255,分频器的分频值为2,4,8,16。 定时器输出时钟频率为 TCLK=PCLK/[(预分频值+1)]×分频器分频值 (2) 当时钟被使能后,定时器计数缓冲存储器(TCNTBn)把计数初值下载到递减计数器中,定时器比较缓冲器(TCMPBn) 把其初始值下载到比较寄存器中,并将该值和递减计数器的值进行比较。这种基于TCNTBn和TCMPBn的双缓冲特性使定时器在频率和占空比变化时产生稳 定输出。 3 QT控制界面设计开发 首先介绍将Qt/Embedded在以S3C2440为核心的硬件平台上的移植。该系统采用CPU内部LCD控制器和320*240分辨率的16bpp TFT LCD作为显示设备,同时移植了ARM Linux作为操作系统。这里用到的操作系统平台是Linux—Red Hat 9.0,交叉编译器版本是arm—linux—gCC 4.1. 2。其次介绍以qtopia为图形界面应用程序开发平台和图形界面控制电机系统的开发过程。 3.1 tslib移植本设计采用的触摸屏是TQ4.3寸屏,因为要通过与触摸屏的交互来控制电机,也就是说在开发板上操作QT程序,是通过触摸屏完成的,所以首先要移植tslib,进行触摸屏校正。tslib是一个开源的触摸屏支持库,它是handhELDs.org上开发的,作者是Russul King,Douglas Lowder和Chris Larson。它给上层的应用程序,为不同的触摸屏提供了一个统一的接口。它提供诸如滤波、去抖、校准之类的功能。 解压源代码tslib-1.4.tar.gz,编译安装tslib,将安装路径下的整个tslib文件夹,下载至开发班的上,存放的路径为/usr/LOCal。设置开发板环境变量,通过超级终端,打开环境变量文件/etc/profile,添加如下内容:
3.2 QT开发环境搭建与移植 将qt-4.6.3.tar.gz压缩包解压为3份,分别编译PC,嵌入式x86和arm三个版本的Qtopia-2.2.0。在root目录下建立 tmp文件夹,将qt-4.6.2.tar.gz直接解压后复制3份,分别命名为pc、x86、arm。将Linux-Red Hat上/usr/local/TrolLTEch/QtEmbedded- 4.6.3-arm/lib(bin/include/fronts)中的所有文件分别复制到ARM板/fla sh/qt/lilib(bin/include/fronts)目录中。移植qt的嵌入式版本到嵌入式设备中,保证设备启动后可以正常进入到GUI模 式。 3.3 建立QT项目文件 在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。程序如下。
根据得到的pro文件使用tmaker软件生成Makefile文件,手首先复制前面制作好的“xagc/”目录到“/opt/EmbedSky /Qte/arm-qtopia-2.2.0/pro/”目录下,然后重新打开一个PC的linux的终端,重新设置环境变量,修改Makefile文 件,然后编译即可完成移植。 4 结果测试 经测试,电机控制界面移植到了s3c2440上,并通过触摸屏按键的交互,可以实现步进电机的控制,并且在改变电机速度时,电机可以稳定的运行。实例运行 结果如图6。
声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请与我
们联系,我们将及时更正、删除,谢谢。
步进电动机是一种将电脉冲信号转换成角位移或线位移的机电元件。步进电机驱动器,是一种将电脉冲转化为角位移的执行机构。步进电动机的输入量是脉冲序列,输出量则为相应的增量位移或步进运动。
哔哥哔特将邀请MPS电机驱动芯片产品线高级应用工程于2022年12月15日下午14:00至15:00主办一场线上直播会议,演讲主题为《步进电机的反电动势研究》,报名正在火热进行中,欢迎企业积极报名!
由于步进电机能够逐步移动,因此它们在工业自动化和机器人技术中得到了应用。这些电机用于 IC 制造单元。这些电机在 CNC(计算机数字控制)机器和 xy 绘图仪的设计中起着不可或缺的作用。
对于步进电机失步问题,用户首先要知道,一般电机失步都是其中一相或二相缺失,即一条线路断了,不能正常发挥功能,从而导致电机失步
混合式步进电机是指混合了永磁式和反应式的优点。它又分为两相、三相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度,混合式步进电机随着相数(通电绕组数)的增加,步进角减小,精度提高,这种步进电机的应用最为广泛。
伺服电机本体搭载旋转检测器(编码器),向驱动器反馈电动机轴的旋转位置/转速。驱动器通过演算从控制器发出的脉冲信号(位置指令/速度指令)与反馈信号(当前位置/速度)的误差,将此误差控制为0,进行电动机旋转的控制。
第一时间获取电子制造行业新鲜资讯和深度商业分析,请在微信公众账号中搜索“哔哥哔特商务网”或者“big-bit”,或用手机扫描左方二维码,即可获得哔哥哔特每日精华内容推送和最优搜索体验,并参与活动!
发表评论