基于FPGA的步进电机控制器设计

  • 格式:pdf
  • 大小:1.25 MB
  • 文档页数:4
文章编号: 1009 - 2552( 2012) 02 - 0068 - 03 中图分类号: TM383. 6 文献标识码: A
基于 FPGA 的步进电机控制器设计
李贺然,王 黎,高晓蓉,郭建强
( 西南交通大学光电工程研究所,成都 610031)
摘 要: 为了达到控制步进电机正反转和变速运动的目的,采用了一种可编程 FPGA 技术的方 法,通过 Altera 公司的软件 QuartusⅡ9. 0 及其 DE0 开发板进行了设计和仿真分析,以及连接以 东芝公司的 TB6560AHQ 步进电机驱动芯片为核心的驱动器和 57BYG223 混合式步进电机进行了 实验验证,预先设定了等 4 个档位的速度,实现了步进电机的运动控制和相应速度的显示功能。 最后实验结果表明,该设计控制方便,便于调试。 关键词: 步进电机; FPGA; 运动; 控制; 显示
Байду номын сангаас
3. 2 下载实验 在进行仿真后,把代码下载到配置 FPGA 芯片
中,与后端的驱动器和两相四线步进电机相连,进行 实验,如图 6 所示,给出了前段控制器与 TB5650 芯 片的驱动器以及与电机的连接图。图中的脉冲、方 向、使能,分别对应控制器引出的 3 个控制输出引
脚,即给 clk_out,o_dir,和 ena 3 个控制信号所分配 的引脚。数字信号电源接 DE0 开发板接出的3. 3V 电源。驱动器有段的 VCC 需要接 12V 开关电源。
1 步进电机的控制原理
步进电机又称脉冲电机,是数字控制的一种执 行元件,由输入的脉冲信号来加以控制,将脉冲信号 转换成相应的角位移或者线位移。其最大特征是容 易精确地控制机械位置,电机的总旋转角度与输入 脉冲总数成比例,电机的速度与每秒的输入脉冲数 目( 脉冲速率: Pulse rate) 成比例。由于步进电机可 由相应的驱动器给其控制脉冲序列,因此,在本设计 中,调节控制步进电机的速度也就是改变控制信号
系统确实能够精确地反应环境的温度和障碍物的距
离,实时性强,且系统结构并不复杂,测量障碍物的
距离较远,可以达到 5m,其中测量精度可以精确到
0. 1cm。但是该系统仍然有待于改进,虽然测量温
度能够提供温度补偿的效果,但是超声波发射和接
收装置存在一定的距离是不可以忽略的,本文系统
由于条件限制,则采用了近似,把发送和接收视为同
Controller design of step motor based on FPGA
LI He-ran,WANG Li,GAO Xiao-rong,GUO Jian-qiang
( Photoelectric Engineering Institute of Southwest Jiaotong University,Chengdu 610031,China)
一点,若能采用角度补偿,那么将会提高测量精度,
达到更好的效果。
参 考 文 献:
[1] 楼然苗. 单片机课程设计指导[M]. 北京: 北京航空航天大学出
版社,2007: 38 - 50.
[2] 张荣. 基 于 单 片 机 的 超 声 波 测 距 器 设 计[J]. 科 技 信 息,2010
( 31) : 87 - 88.
— 68 —
本设计 中,就 利 用 了 Altera 公 司 的 Quartus Ⅱ 9. 0软件,采用 VHDL 语言编写代码,综合仿真,下载 到同样来自于 Altera 公司的实验平台 DE0 开发板 后,使其输出控制信号,再连接驱动器与电机进行实 验验证,设定了 200Hz,500Hz,1000Hz 以及 2000Hz 等脉冲频率,用以实现电机的 4 个档位的运动控制。
显示模块显示的是控制脉冲数,并通过 trans 信 号,显示电机所转的圈数。当分频器产生的脉冲输 入到显示模块时,开始计数。实验平台 DE0 开发板 仅还有 4 个数码显示管,因此,除去第一位作为速度 档位 0 ~ 3 的显示,其他 3 位用来显示计数值,范围 1 ~ 999,当其达到 1000 时清零重新计数。图 2 是有 显示模块生成的元件图。其中 reset 和 start 是系统 统一的复位和开始信号,trans 是切换脉冲显示 / 圈 数显示的信号,clk_in 是有控制模块发出的控制脉 冲,speed _ in[1. . 0]为 档 位 的 信 号,digt1,digt2, digt3,digt4 分 别 为 4 个 数 码 显 示 管 控 制 信 号, led[2. . 0]为转换显示模式时的 led 提示的输出信号。
接通 后,发 现 在 输 出 频 率 为 200Hz,500Hz, 1000Hz 时,电机完全正常运动,而达到 2000Hz 时, 电机出现震动,这时利用驱动器的衰减解决了问题。
— 70 —
图 6 驱动器连接图
( 下转第 75 页)
SET
EX0
; 开启接收回波中断
RETIOUT: RETI
超声波的接收主要由外部中断 0 控制,负责收
分频模块是本设计中的核心模块。本模块中,
产生了控制脉冲的频率,并把其传输给显示模块,作 为显示模块的计数脉冲。在产生分频时,采用计数 分频。由于系统的时钟频率是 50MHz,所以当计数 达到 25000 时,即 可 产 生 所 设 定 的 最 高 档 位 的 2000Hz 的脉冲频率,根据计算,该模块还分别产生 了 1000Hz,500Hz,200Hz 的频率,总共实现了 4 个 档位的速度控制。 2. 3 显示模块
Abstract: This article introduces a way of programming FPGA to control stepping motor changing speed and turning forwardly and reversely. It designed and simulated in software QuartusⅡ9. 0 and developing board DE0,then connects driver based on chip TB6560AHQ and 57BYG223 mixed stepping motor. The experiment realizes the function of controlling and displaying the speed. It turns out that the design is easy to control and debug. Key words: stepping motor; FPGA; speed; control; display
[3] 彭伟. 单片机 C 语言程序设计实训 100 例[M]. 北京: 电子工业
出版社,2009: 193 - 198.
[4] 易丽华,彭劲松. 基于单片机的超声波测距系统设计[J]. 山西
电子技术,2010( 4) : 26 - 28.
[5] 戴仙金. 51 单片机及其 C 语言程序开发实例[M]. 北京: 清华大
Read_temp( )

Ow_reset( ) ;
/ /总线复位
Write_byte( 0xCC) ;
/ / 发Skip ROM命令
Write_byte( 0xBE) ;
/ /发读命令
Temp_data[0]= read_byte( ) ; / / 温度低 8 位
Temp_data[1]= read_byte( ) ; / / 温度高 8 位
图 1 总体设计模块
系统通电后,首先由最低的 0 档速度开始工 作,控制模块先根据 dir 和 start 的信号情况,控制电 机的正反转方向与使能,分频模块再根据控制模块 产生相应的脉冲频率信号,输出相应档位速度的控 制脉冲,并把其脉冲计数值和档位显示到数码管上。 当 up 输出一个高电平时,速度加一档,down 输出高 电平时,速度减一档,trans 信号可切换显示数码管 在计数脉冲和所转圈数。 2. 1 控制模块
图 2 显示模块生成的元件
3 实验结果
3. 1 软件仿真 根据以上分析与设计,在 QuartusⅡ9. 0 软件中编
写代码。每个模块完成后,分别对其进行仿真、修改。 图 3 和图 4 分别给出了分频和显示模块的功能仿真 图。由图 3 可见,分频模块能够产生所需要的脉冲频 率,当 speed_in = 0 时,clk_out 输出 clk0 的频率,speed_ in = 1 时,clk_out 输出 clk1 的频率,依此类推。
控制模块主要是对输入输出的控制,是整个系统 的总体指挥。本模块需要给电机驱动器控制信号,同 时要输出速度的档位信号,还要控制分频模块控制输 出控制脉冲与给显示模块的计数频率。其中,最为关 键的即为方向控制的按键输入,需要对其进行防抖动 处理。在本设计中采用的是计数消抖,即在计算按键 按下达 20ms 以后,才确认其按下的动作。 2. 2 分频模块
入回波,其主要的汇编程序如下:
PINT0: CLR
TR0
; 关计数器
CLR
TR1
CLR
ET1
CLR
EA
CLR
EX0
MOV
44H,TL0 ; 将计数值移入处
理单元
MOV
45H,TH0
SETB 00H
; 接收成功标志
RETI
关 于 测 量 温 度 的 程 序 很 长,其 中 涉 及 到
DS18B20 的读写以及初始化问题,本文只给出主要 的读出温度函数,其主要程序如下[5]。
学出版社,2008: 26 - 38.
责任编辑: 肖滨
櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀櫀
( 上接第 70 页)
[4] Ronal J Tocci,Neal S Widmer,Gregory L Moss. 数字系统原理与