微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > 一种基于FPGA的三坐标测量机电机控制系统

一种基于FPGA的三坐标测量机电机控制系统

时间:07-16 来源:互联网 点击:

1、控制系统概述

随着工业的发展,三坐标测量机越来越显示出其重要作用。而电机控制系统对三坐标测量机的运行有着非常重要的作用。由于FPGA可以现场可编程,可以实现专用集成电路,能满足片上系统设计(SOC)的要求,使其日益成为系统的关键部件。[1]本文介绍一种基于FPGA的电机控制系统,用于控制三坐标测量机电机运行。

系统主要由PC机、控制电路、驱动器[2]和电机组成。系统结构图见图1。

其中PC 机,由VC++实现用户界面,发出的命令由FPGA进行接收和缓存,单片机进行分析处理产生控制命令,控制命令再经过FPGA传入驱动器,控制电机运行。同时电机状态信息反馈回PC机,用于人机交互。系统中FPGA选用的是Altera公司的Cyclone系列。

2、系统功能实现

下面分别介绍FPGA实现电机控制功能的几个重要部分。

2.1 编码器进行速度、位移量测量的实现方法

编码器为传感器类的一种,主要用来侦测机械运动的速度、位置、角度、距离或计数,在电机控制中用于换相、速度及位置的检出,作用十分重要。 光电编码器具有分辨率高,响应速度快,体积小,重量轻,耐恶劣环境等特点,故常被用作高精度位置检测传感器。它的精度或分辨率主要决定于每转输出的脉冲数(对增量式编码器而言) 。根据控制需要,还可以利用倍频技术来提高位置检测精度。[5]本系统使用增量式编码器即增量编码盘。

增量编码盘输出信号A 和B 具有90°的相位差。A和B的相位关系反映了被测对象的旋转方向,若A 超前于B ,表明编码器是顺时针旋转的,反之,编码器为逆时针旋转。当增量编码盘的细分数为N 时,增量编码盘的每一个脉冲代表的角位移为360° /N,A、B 信号的频率相同,频率大小反映当前电机速度,由这两个信号就可得到电机转向、转角和转速。[6]如图2所示,在A和B的上升沿和下降沿计数器均做相应变化,得到count 脉冲,在FPGA中计数,即可得到编码器输出的脉冲数,经过计算就可以得到电机一定时间内实际走过的路程或者单位时间内的速度。

本系统主要在FPGA中编程实现对编码器的硬件解码。主要程序如下:

if(shift_a == 2’b01)

begin

if(b)

cnt = #2 cnt - 1’b1;

else

cnt = #2 cnt + 1’b1;

end

else if(shift_a == 2’b10)

begin

if(b)

cnt = #2 cnt + 1’b1;

else

cnt = #2 cnt - 1’b1;

end

else if(shift_b == 2’b01)

begin

if(a)

cnt = #2 cnt + 1’b1;

else

cnt = #2 cnt - 1’b1;

end

else if(shift_b == 2’b10)

begin

if(a)

cnt = #2 cnt - 1’b1;

else

cnt = #2 cnt + 1’b1;

其中,cnt为十六位寄存器,shift_a =2’b01和shiftb=2’b01分别表示A和B出现上升沿,同理如果是等于2’b10则表示下降沿。电机编码器硬件解码程序仿真模拟后效果如图3所示。图中number为FPGA计算所得的编码器输出脉冲数。

2.2 脉冲控制实现运动过程

利用脉冲控制电机速度即利用脉冲频率决定电机速度。这种方法能够得到较高的运行精度,适用于三坐标机电机控制系统。首先,上位机给定运行速度,命令传到单片机,单片机进行计算,获得单位脉冲周期内需要时钟数,再将数据传入FPGA,由其相应模块处理。FPGA中相应的处理模块实现的基本原理是:根据单片机给出的时钟数进行判定。程序开始运行,开始计数周期,时钟数目不断累加,当累加数目到达单片机给定值的时候完成一个计数周期。然后计数器清零,重新开始计数,输出信号状态翻转。程序如下所示:

if(cnt >= currentSpd)

begin

puls = ~puls;

cnt = 25’h1;

end

else

cnt = cnt + 1’b1;

其中cnt为计数器,currentSpd为单片机计算所得的时钟数,puls为输出脉冲。电机运动加速的过程就是一个脉冲频率逐渐加大的过程,也就是说单位周期内时钟数量逐渐增加的过程。相应的减速过程与之相反。匀速过程则是一个以给定频率保持不变的运动过程。下图便是一个匀速、减速的仿真结果。

2.3 限位和解除限位的方法

最后讲述限位及其解除方法。在电机控制过程中应用限位是一种减少事故发生的有效方法。限位功能的实现需要由限位开关实现。限位开关按其检测方式可分为接触式(行程开关)和非接触式(接近开关)。[7]本系统采用非接触式。接近开关式一种非接触式检测,当运动的金属物体接近开关的感应面而达到动作距离时,便无接触无压力的自动发出检测信号,用于驱动器,也可以将其输出信号送入控制单元,以控制系统动作。[8]电机运行过程中,如果运动轴到达限位开关,即产生限位信号,信号传到控制电路,FPGA接收限位信号,做出处理后发出停

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top