FPGA Verilog HDL 系列实例--------步进电机驱动控制

摘要:
FPGAVerilogHDL系列实例VerilogHDL之步进电机驱动控制步进电机的用途还是非常广泛的,目前打印机,绘图仪,机器人等等设备都以步进电机为动力核心。试验中使用EXI/O的高四位控制四相步进电机的四个相。

【连载】 FPGA Verilog HDL 系列实例

Verilog HDL 之 步进电机驱动控制

步进电机的用途还是非常广泛的,目前打印机,绘图仪,机器人等等设备都以步进电机为动力核心。那么,下面我们就了解下什么是步进电机,它是怎么控制的。

一、步进电机相关知识简介

1、步进电机概述

步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电元件,它实际上是一种单相或多相同步电动机。单相步进电动机有单路电脉冲驱动,输出功率一般很小,其用途为微小功率驱动。多相步进电动机有多相方波脉冲驱动,用途很广。使用多相步进电动机时,单路电脉冲信号可先通过脉冲分配器转换为多相脉冲信号,在经功率放大后分别送入步进电动机各相绕组。每输入一个脉冲到脉冲分配器,电动机各相的通电状态就发生变化,转子会转过一定的角度(称为步距角)。正常情况下,步进电机转过的总角度和输入的脉冲数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。由于步进电动机能直接接收数字量的输入,所以特别适合于微机控制。

2、步进电机的种类

目前常用的步进电机有三类:

(1)反应式步进电动机(VR):它的结构简单,生产成本低,步距角可以做的相当小,但动态性能相对较差。

(2)永磁式步进电动机(PM):它的出力大,动态性能好;但步距角一般比较大。

(3)混合步进电动机(HB):它综合了反应式和永磁式两者的优点,步距角小,出力大,动态性能好,是性能较好的一类步进电动机。

如果还想做更深入的了解,自行查找相关资料。

3、步进电机控制的实现

我们实验中所使用的步进电机为四相步进电机。转子小齿数为64。系统中采用四路I/O进行并行控制,FPGA直接发出多相脉冲信号,在通过功率放大后,进入步进电机的各相绕组。这样就不再需要脉冲分配器。脉冲分配器的功能可以由纯软件的方法实现。

FPGA Verilog HDL 系列实例--------步进电机驱动控制第1张

四相步距电机的控制方法有四相单四拍,四相单、双八拍和四相双四拍三种控制方式。步距角的计算公式为:

FPGA Verilog HDL 系列实例--------步进电机驱动控制第2张

其中:m为相数,控制方法是四相单四拍和四相双四拍时C为1,控制方法是四相单、双八拍时C为2,Zk为转子小齿数。本系统中采用的是四相单、双八拍控制方法,所以步距角为360°/512。但步进电机经过一个1/8的减速器引出,实际的步距角应为360°/512/8。

试验中使用EXI/O的高四位控制四相步进电机的四个相。按照四相单、双八拍控制方法,电机正转时的控制顺序为A→AB→B→BC→C→CD→D→DA。EXI/O的高四位的值参见表1.1。

FPGA Verilog HDL 系列实例--------步进电机驱动控制第3张

表1.1 电机正转时,FPGA四位IO口的值

反转时,只要将控制信号按相反的顺序给出即可。

步进电机的频率不能太快,也不能太慢。在200Hz附近最好。频率太快是转动不起来的。

注:为什么步进电机高于一定速度就无法启动:

步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。

二、实验平台

Quartus II 7.2 集成开发环境、SOPC-MBoard板、ByteBlaster II 下载电缆

三、实验实现

详细实现步骤请参考【连载】 FPGA Verilog HDL 系列实例--------8-3编码器

1、在设计文件中输入Verilog代码。

复制代码
 1 //--------------------------------------------------------------------------------------------------
2 // Title : StepMotorPorts
3 // Author : wangliang
4 // Generated : 2011.08.16
5 //-------------------------------------------------------------------------------------------------
6
7 module StepMotorPorts (StepDrive, clk, Dir, StepEnable, rst);
8
9 input clk;
10 input Dir;
11 input StepEnable;
12 input rst;
13
14 output[3:0] StepDrive;
15
16 reg[3:0] StepDrive;
17 reg[2:0] state;
18 reg[31:0] StepCounter = 32'b0;
19 parameter[31:0] StepLockOut = 32'd200000; //250HZ
20 reg InternalStepEnable;
21
22 always @(posedge clk or negedge rst)
23 begin
24 if ( !rst)
25 begin
26 StepDrive <= 4'b0;
27 state <= 3'b0;
28 StepCounter <= 32'b0;
29 end
30
31 else
32 begin
33 if (StepEnable == 1'b1) InternalStepEnable <= 1'b1 ;
34
35 StepCounter <= StepCounter + 31'b1 ;
36 if (StepCounter >= StepLockOut)
37 begin
38 StepCounter <= 32'b0 ;
39
40 if (InternalStepEnable == 1'b1)
41 begin
42 InternalStepEnable <= StepEnable ;
43 if (Dir == 1'b1) state <= state + 3'b001 ;
44 else if (Dir == 1'b0) state <= state - 3'b001 ;
45 case (state)
46 3'b000 : StepDrive <= 4'b0001 ;
47 3'b001 : StepDrive <= 4'b0011 ;
48 3'b010 : StepDrive <= 4'b0010 ;
49 3'b011 : StepDrive <= 4'b0110 ;
50 3'b100 : StepDrive <= 4'b0100 ;
51 3'b101 : StepDrive <= 4'b1100 ;
52 3'b110 : StepDrive <= 4'b1000 ;
53 3'b111 : StepDrive <= 4'b1001 ;
54 endcase
55 end
56 end
57 end
58 end
59 endmodule
复制代码

注:

(1)第19行,此处的数值为200000,因为实验中所使用的晶振时钟频率是50MHz,这样我们为步进电机提供了250Hz的频率,使之能正常工作。

(2)第43、44行是选择正转还是反转。

(3)第45行~第54行:就是根据表1.1而来的,配置步进电机的IO口值。

2、由设计文件生成的.bsf文件,其外接接口如图1.2所示。  

FPGA Verilog HDL 系列实例--------步进电机驱动控制第6张

3、引脚分配

clk接时钟;Dir接按键,控制正转还是反转;StepEnable接按键,表示开关;rst接复位信号;StepDrive接步进电机的4个引脚。

4、实验结果

FPGA Verilog HDL 系列实例--------步进电机驱动控制第7张

烧写到FPGA上以后,通过拨动开关就可以使步进电机正转反转了。

转载自:http://www.cnblogs.com/kongtiao/archive/2011/08/16/2140528.html

免责声明:文章转载自《FPGA Verilog HDL 系列实例--------步进电机驱动控制》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jenkins X实践系列(4) —— jenkins X 构建提速【华为云技术分享】避坑指南:关于SPDK问题分析过程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

FPGA使用技巧

1 IOB 为了保证FPGA输入输出接口的时序,一般会要求将输入管脚首先打一拍再使用,输出接口也要打一拍再输出FPGA。将信号打一拍的方法是将信号通过一次寄存器,而且必须在IOB里面的寄存器中打一拍。因为,从FPGA的PAD到IOB里面的寄存器是有专用布线资源的,而到内部其他寄存器没有专用的布线资源。使用IOB里面的寄存器可以保证每次实现的结果都一样,使用...

深入理解CPU和异构计算芯片GPU/FPGA/ASIC (下篇)

3.2.1 CPU计算能力分析 这里CPU计算能力用Intel的Haswell架构进行分析,Haswell架构上计算单元有2个FMA(fused multiply-add),每个FMA可以对256bit数据在一个时钟周期中做一次乘运算和一次加运算,所以对应32bit单精度浮点计算能力为:(256bit/32bit) 2(FMA) 2(乘和加) = 32 S...

GPU 、APU、CUDA、TPU、FPGA介绍

购买显卡主要关注:显存、带宽和浮点运算数量 GPU :图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。 用途是将计算机系统所需要的显示信息进行转换驱动,并向显示器提供行扫描信号,控制显...

用FPGA实现视频中物体边缘二值化

       对于高速视频图像中的物体轮廓提取中,图像的二值化,采用软件方式,速度无法满足需要,因此要采用FPGA方案,这样可以实现二值化速度和帧率一样,完全和视频同步。 一、算法原理:  边缘二值化的算法很多,象sobel法,roberts法,拉普拉斯法,导数法。为了简单化,采用导数法。        视频图像每帧扫描顺序如下图的黑色箭头所示     ...

风扇转速通过FPGA采样

1、风扇最大转速16000RPM,那么每一转需要时间60S/16000=0.00375S=375*10^4ns=T=T1+T2+T3+T4; 2、采样0.6S内的风扇detect信号的上升沿个数:0.6s/(375*10^4ns)=0.6*10^9ns/(375*10^4ns)=160 由于转数取最大值,所以T是最小的,那么160是最大计数个数,实际风扇规...

ISE中FPGA的实现流程

一.ISE实现的步骤 在综合之后,我们开始启动FPGA在ISE中的实现过程,整个过程包括以下几个步骤:1.Translate - 将输入的网表文件和约束文件整合后输出到一个Xilinx私有的通用数据库文件(Native Generic Database,NGD)中。2.MAP -将设计映射到目标器件的资源上,可以选择在此阶段完成资源的布局。3.Place...