嵌入式步进电机控制系统的设计与实现
0、前言
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁减,适用于应用系统对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统[1]。自20世纪70年代世界上第一个为嵌入式应用而设计的微处理器诞生以来,已在几十年的发展历程,如今嵌入式系统(embedded system)已经成为电子信息产业中最具增长力的一个分支。随着微电子技术的发展,嵌入式控制系统在工业生产智能化、自动化中的应用越来越普及。尤其手机、PAD、GSP、机顶盒等新兴产品的大量应用,嵌入式系统的市场正在以每年30%的速度递增,嵌入式系统的设计也成为软硬件工程师越来越关心的问题。
步进电机是工业控制中的一种常用执行部件,具有控制灵活、价格低等优点,因而在许多设备和装置中常被采用。嵌入式步进电机控制器就是将微处理器置于电机控制器中,使步进电机控制器能按设定的相数、拍数以及单个触发脉冲所走的步数,提供相应的控制逻辑。
1、步进电机的工作原理
步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电元件,它实际上是一种单相或多相同步电动机。目前常用的步进电机有3类:反应式步进电动机(VR)、永磁式步进电动机(PM)和混合式步进电动机(HB)。现以反应式三相步进电机为例说明其工作原理,定子铁芯上有六个形状相同的大齿,相邻两个大齿之间的夹角为60o。每个大齿上都套有一个线圈,径向相对的两个线圈串联起来成为一个绕组,各个大齿的内表面上又有若干个均匀分布的小齿。转子是一个圆柱形铁心,外表面上圆周方向均匀地布满了小齿。转子小齿的齿距是和定子相同的。设计时应使转子齿数能被2整除,但某一项绕组通电,而转子可自由旋转时,该相两个大齿下的各个小齿将吸引相近的转子小齿,使电动机转动到转子小齿与该相定子小齿对齐的位置,而其他两相的各个大齿下的小齿必定和转子的小齿分别错开1/3的齿距,开成“齿错位”,从而形成电磁引力使电动机连续地转动下去。
永磁式步进电动机和混合式步进电动机的绕组电流要求正、反向流动,故驱动电路一般要做成双极性驱动。
2、相应的软硬件配置
硬件环境:主要包括ARM嵌入式开发板;用于ARM7TDMI的JTAG仿真器;Pentium100以上PC。
软件环境:PC机操作系统工程Windows98以上、ARM SDT2.51或ASD1.2集成开发环境、仿真器驱动程序。
3、开发板中步进电机的实现
开发板中使用的步进电机为四相步进电机,转子小齿数为64。系统中采用四路I/O进行并行控制,ARM控制器直接发出多相脉冲信号,在通过功率放大后,进入步进电机的各相绕组。这样就不再需要脉冲分配器了,其功能可以由纯软件的方法实现,连接方法如图1:
图1 四相步进电机在开发板中的接法
四相步进电机的控制方法有四相单四拍、四相单、双八拍和四相双四拍3种控制方式。步距角的计算公式为
![]()
其中:m为相数,孔制方法是四相单四拍和四相双四拍时C为1。控制方法是四相单、双八拍时C为2,Zk为转子小齿数。我们采用的是四相单、双八拍控制方法,所以步距角应为360o/512/8。
UP-NETARM300开发平台中使用EXI/O的高四位控制四相步进电机的四个相。按照四相单、双八拍控制方法,电机正转时的控制顺序为A →AB→B→BC→C→CD→D→DA。EXI/O的高四位的值如表1所示。
表1 电机正转时EXI/O高四位的值
反转时,将控制信号按相反的顺序给出即可。
4、用ARM汇编语言实现对步进电机的控制
对步进电机工作原理掌握后,通过程序完成对74HC573的高四位进行操作来完成步进电机的脉冲分配。在C 语言程序中调用汇编先要完成两件工作:在C语言程序中使用extern关键字声明外部函数,即要声明要调用的汇编子程序;在汇编程序中使用export伪指令声明要C中要调用的汇编子程序,使用export声明后其他程序可以调用此汇编程序。如下例:
4.1 C中调用汇编程序
#include
extern void strcopy(char *d,const char *s);
int main()
{ const char *srcstr=”First string-source”;
char dststr[]=”Second string - destinnation”;
printf(“Before copying:\n”);
printf(“ %s\n %s\n”,srcstr,dststr);
strcopy(dststr,srcstr);
printf(“After copying:\n”);
printf(“ %s\n %s\n”,srcstr,dststr);
return (0);
}
- 上一篇文章:交流伺服在三维弯管机上的应用
- 下一篇文章:交流伺服在数控中的应用
