1、 - 1 - 基于 FPGA的电机的控制 指导老师 :王 彦 作者 :刮国文 刘智聪 王明海 (第 15 组 ) 摘要: 目前,电机在控制系统中的应用越来越广泛,由此凸现了电机控制的重要性。本文简单介绍了步进电机和伺服电机的原理和特点,并根据两种电机的不同特性设计了基于FPGA 的不同的控制电路:以 PWM 变频来控制步进电机的转速;以调节脉冲的占空比大小改变输出电压的大小来控制伺服电机的转速。 关键字: 步进电机 伺服电机 电机控制 PWM 占 空比 Design of the Motor-Control Based on FPGA Abstract: At present, the mot
2、or is playing a more and more important part in the application of auto-control system; It impels us continuously to study how to master the motor techniques. This paper simply introduced the principles and the characters of current-motor and step-motor; On the basis of those, we designed the drivin
3、g circuit for both the current-motor and the step-motor based on FPGA: changing the frequency with PWM(脉宽调制电路 ) to control the speed of step-motor, changing the volume of output-voltage with adjusting the duty cycle (占空比 ) of impulses to control the speed of current-motor. Keyword: Step-motor Servo-
4、motor Motor-control PWM Duty cycle - 2 - 目录 第一章 总体设计 .3 第二章 单元电路设计 . 6 1.步进电机驱动电路 设计 . . 6 2.伺服电机驱动电路 设计 . 6 第三章 软件设计 .7 第四章 系统测试 .9 第五章 结 论及参考文献 . .9 第 六章 附录 .10 - 3 - 一 .总体设计 1电机简介 1.1.1.步进电机 是将电脉冲信号转 变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,
5、加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。 不过步进电机在控制的精度、速度变化范围、低速性能方面都不如传统的闭环控制的直流伺服电动机,在精度不是需要特别高的场合就可以使用步进电机 . 1.1.2. 伺服电机 可以把输入的电压信号变换成为轴上的角位移和角速度输出 ,在控制系统中 , 伺服系统是一种十分广泛应用的系统,伺服电机在系统中是用作执行元件,定子中的励磁磁通和转子中的电流相互作用时就会产生电磁转矩驱动电枢转动,恰当地控制转子中电枢的电流的方向和大小,就可以控制伺服电机的转动方向和转动速度,电枢电流为零时伺服电机则停止不动,不像
6、步进电机需要用时序脉冲去驱动,还可以通过反馈形成闭环控制,达到较高的精度。实现更简单。 2电机控制 1.2.1.步进电机的控制 : 步进电机能够直接将数字脉冲信号转化成为角位移,不需要 A/D 转换,所以被认为是理想的数控执行元件。 1.2.1.1.步进电机的起动: 步进电动机的最高起动频率(空载起动频率)一般为 0.1KHz到 3-4KHz,而最高运行频率则可以达到 ? KHz。以超过最高起动频率的频率直接起动,将出现 “失步 “现象,甚至无法起动。因此驱动步进电机时,应当先计算出电机不失步起动的最大频率,但其计算过程涉及参量复杂,鉴于我们不是机械专业学生,对其具体理论了解有限,故不能精确计
7、算出空载起动频率,实际应用对起动段的处理是采用按直线拟合的方法,即 “阶梯升速法 “。可按两种情 图 1 阶梯升速起动 况处理,已知突跳频率则按突跳频率分段起动,分段数 n=f/fq。未知突跳频率,则按段拟合至给定的起动频率,每段频率的递增量(后称阶梯频率) f=f/8,即采用 8段拟合。在运行控制过程中,将起始的速度(频率)分为 n分作为阶梯频率,采用 “阶梯升速法 “将速度连续升到所需要的速度,然后锁定,按预置的曲线运行。如图 1所示。 速 度从 V1 V2如果是线性增加,则按给定的斜率升 /降速;如果是突变,则按 “阶梯升速法 “处理。在此过程中要处理好两个问题: 速度转换时间应尽量短;
8、为了缩短速度转换的时间,可以采用建立数据表的方法。,结合各曲线段的频率和各段间的阶梯频率便可以建立一个连续的数据表,并通过转换程序将- 4 - 其转换为脉冲速率。通过在不同的阶段调用相应的脉冲速率,控制电机的运行。 保证控制速度的精确性;要从一个速度准确达到另外一个速度,就要建立一个校验机制,以防超过或未达到所需速度。 1.2.1.2.步进电机的换向: 步进电机 通电换相这一 过程称为脉冲分配。例如: 四 相步进电机的 八 拍工作方式,其各相通电顺序为 A-AB-B-BC-C-CD-D-DA-A,通电控制脉冲必须严格按照这一顺序分别控制 A、 B、C、 D相的通断 。 如果 按 给定工作方式正
9、序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。 步进电机换向时,一定要在电机降速停止或降到突跳频率范围之内再换向,以免产生较大的冲击而损坏电机。换向信号一定要在前一个方向的最后一个 CP脉冲结束后以及下一个方向的第一个 CP脉冲前发出。如图 3所示。对于 CP脉冲的设计主要要求其有一定的脉冲宽度(一般不小于 5 s)、脉冲序列的均匀度及高低电平方式 . 1.2.1.3.步进电机的转速控制: 步进电机的加 /减速控制,实际上就是控制触发脉冲的频率, 两个脉冲的间隔 长 短, 决定了步 进电机 的转速 。 升速时,使脉冲频率增高,减速时,使脉冲频率降低。 调整 触发 脉冲频率,就可以
10、对步进电机进行调速。 1.2.2.伺服电机的控制 : 1.2.2.1.控制方案比较 控制直流伺服电动机的转动方向比较简单,只需使驱动电路控制直流电源正接、反接,便可以达到对方向的控制。而电动机的转动速度则跟电机的电磁转矩有关。 ( 1.2.2.1) 式 (1.2.2.1)中 M即为电磁转矩, 为磁通量, Ia为励磁电流;控制伺服电机速度的方法有两种:一种是改变电枢电压 Ua即改变电枢电流 Ia的方法;另一种是改变励磁电流 If即改变磁通的方法。常用调节电枢电压的方法。 对电动机电枢电压的调节电路、方案选择的不同,结果会有 很大的差异。以下是电动机的驱动调速电路的方案选择。 方案一:采用电阻网络
11、或数字电位器调整电动机的分压,从而达到调速的目的。但是电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。更主要的问题在于一般的电动机的电阻很小,但电流很大;分压不仅会降低效率,而且实现很困难。 方案二:采用继电器对电机的开或关进行控制,通过开关的切换对电机的速度进行调节。这个方案的优点是电路较为简单,缺点是继电器的响应时间慢、机械结构易损坏、寿命较短,可靠性不高。 方案三:采用由 晶体管功率放大器 8050和 8550组成的 H型 PWM电路。用 FPGA控制晶体管功率放大器使之工作在占空比可调的开关状态,精确调整电动机的转速,这种电路由于工作在管子的饱和截止模式下,效率非常高; H型
12、电路保证了可以简单的实现转速和方向的 控制;电子开关速度很快,稳定性也极强,是一种广泛应用的 PWM调速技术。 - 5 - 基于上述理论的分析,直流伺服电动机驱动的调速电路选用由晶体管功率放大器组成的 H型 PWM电路来实现。 伺服电机控制闭环控制图 : 图 2 闭环速度 控制系统 1.2.2.2.PWM 波的实现 用 FPGA产生 PWM波具有频率稳定、运算速度快等优点。 为了使得到的频率等步进变化,采用相位累加的方法。输出波形的频率可用式 (1.2.2.2.2)算出。 ffkff Nsoc 20(1.2.2.2.2) 其中, fosc为晶振频率; k为分频系数,取 k=200; N为相位累
13、加器位数,取 N 10,计数范围即为 0 1024; ff为相位累加器步长。我们采用的实验箱晶振为 32MHz,初始状态 ff=1,通过改变 ff的值可以改变输出波形的频率。将 k=3,N=10,fosc=32M代入式 可得到频率步进为160Hz。可用式 (1.2.2.2.3)计算频率: fffff 1602003 2 0 0 0 0 0 02 100 (1.2.2.2.3) 可以看出,只要改变 ff的值,就可以方便的改变频率,使其实现 160Hz的等步进调频。 本设计中设置了 100档调节 ff,从而实现了从 20转 /分到 1800转 /分每档约为 20转的等步进调速。如果有需要,可以方便
14、地修 改程序,使其达到预定的要求,从而实现无级调速。 电机控制总框图: 图 4 电机控制总框图 按键输入 电机控制模块 (FPGA 最小系统 ) 步进电机驱动电路 步进电机 LED(电机运行状态 ) add_s/sub_s/shift 伺服电机驱动电路 clk/cs_shift 伺服电机 add_c/sub_c/shift - 6 - 二 .单元电路设计 2.1.步进电机驱动电路 : 步进电机的驱动电路如图 5 所示 ,其驱动电路原理很简单。从 FPGA 出来的脉冲信 图 5 步进电机驱动电路 号从 J1 接入按一定的顺序分别接到晶体管 Q7Q10 的基极,输出端则有四个相应的信号输出,并接到
15、电机的 1、 4、 3、 6 脚(注意:电机引出了六根线,只有 1、 4、 3、 6 才是真正接电机的四相输入,且分别接电机的 A、 B、 C、 D 相)。设脉冲信号 Step1 的输入信号是低电平,则输出就为高电平,相应的电机 A 相导通;反之,则 A 相不导通。以此类推,其余各相亦是如此。则电机在脉冲序列信号的作用下按预定方向转动 ,通过改变脉冲序列信号的快慢即频率来控制步进电机转速。 2.2.伺服电机驱动电路 : 直流电动机 PWM 驱动电路的具体电路如图 6 所示, 本电路是基于 PWM 原理的 H 型驱 图 6 直流伺服电动机 PWM驱动电路 动电路。该电路采用晶体管功率放大器 80
16、50 和 8550,以满足电动机启动瞬间的大电流要求。 当 J1-6 输入为 PWM 调制信号时,则 J1-5 输入为低电平,晶体管功率放大器 Q1、 Q4导通, Q2、 Q3 截止。 Q1、 Q4 与电机 DC-Motor 一起形成一个回路 ,从而驱动电机正转。当- 7 - J1-5 输入为 PWM 调制信号时,则 J1-6 输入为低电平,晶体管功率放大器 Q1、 Q4 截止,Q2、 Q3 导通, Q2、 Q3 与电机 DC-Motor 形成回路,驱动电机反转。 一般控制系统电压统一为 3.3V 电源,因此若晶体管功率放大器的基极由控制系统直接控制,则控制电压最高为 3.3V,在加上三极管本
17、身的压降,加到电动机两端的电压就只有2.5V 左右,减弱了电动机的驱动力。基于以上考虑,我们运用了 4N25 光耦集成块,将控制部分与电动机的驱动部分隔离开来,这样不仅增加了各系统模块之间的隔离度,也使驱动电流得到大大的加强。在此,光耦集成电路的电源 VCC 为 9V, H 型驱动电路中晶体管功率放大器 Q3、 Q6 的发射极所加的电源为 9V。两个电源利用光耦隔离开来,互不 影响。 图 7 电机驱动电路总电路图 2.3.控制模块的设计 : 总控制模块用 VHDL语言对 FPGA编程实现。总控制模块其实质是一个按键控制程序,共有 reset复位键、 add累加键、 sub递减键、 start/
18、stop启动 /停止键、 CS-shift伺服 /步进电机控制切换键、 shift电机正反转控制键六个按键。系统启动时,首先运行系统初始化程序,程序先转到步进电机控制模块,送复位信号使步进电机处于初始状态,再转到伺服电机控制模块,送复位信号使伺服电机处于初 始状态。系统运行时 ,默认运行伺服电机控制模块。其间主控程序不断检测按键,只要有键被按下则启动相应的子模块实现实时控制。具体程序代码见附录程序清单。 三 .软件设计 3.1.程序流程图 : 控制模块的程序流程图如图 8所示。 - 8 - 图 8 控制模块程序流程图 3.2.步进电机控制模块的设计 : 步进电机控制模块其程序设计共分按键去抖、
19、变频、测频、步进、换向五个部分 。模块一接收到按键信号,则按键去抖部分先对按键信 号进行处理,得到稳定的控制信号;如果是变频信号则变频部分动作,通过相位累加模型,改变步进电机脉冲频率,并送给步进部分;如果是换向信号,则换向部分动作,为了使 电机降速停止或降到突跳频率范围之内再换开 始 系统初始化 检测按键 是否按键 ? N Y 判断按键 步进电机 调整按键 步进 /伺服 电机转换按键 伺服电机 调整按键 步进进程 ? 伺服进程 ? 步进电机 控制进程 伺服电机 控制进程 N N Y Y 步进电机 驱动电路 伺服电机 驱动电路 步进电机 伺服电机 显示模块 步进电机转速 (圈 /分 ) 或 伺服
20、电机 PWM 波 占空比 - 9 - 向,先停送驱动脉冲一秒,再送反向脉冲给步进部分,驱动电机换向;步进部分则是按照送来的脉冲频率和步进顺序信号驱动电机按预定的转速和转向转动;测频部分通过测定所送脉冲频率,再利用四相电机 八拍运行时步距角为 =360度 /( 50*8) =0.9度 的尺度则可以计算出步进电机的每分钟转速数据,再送给显示模块显示 。 3.2.伺服电机 控制模块的设计 : 伺服电机控制模块其程序设计共分为按键检测、按键去抖、 PWM波产生、换向、占空比计数五个部分。按键检测部分检测到按键信号,则送至按键去抖部分处理后得到稳定的控制信号;在没有收到控制信号时 ,PWM波产生部分则按
21、默认的设置产生 PWM波 ,一旦收到控制信号 ,波形产生部分则根据按键为累加或递减信号来产生相应的 PWM波脉冲 ,相应的 ,占空比计数部分则开始对输出脉冲计数 , PWM信号占空比的初始值为 50,通过对时钟进行计数,每计 50个脉冲输出一个高电平,再过 50个脉冲输出一个低电平。计数周期固定为 100,如果占空比改变为 51,那么来 51个脉冲输出一个高电平, 49个脉冲输出低电平 ;然后将占空比计数结果送显示模块显示;如果收到换向信号,则跟步进电机换向部分一样,先停送脉冲一秒 ,再送反向脉冲信号完成反向转动。 四 .系统测试 4.1.使用仪器 : 直流稳压电源: DC POWER SUP
22、PLY DF1731SL2A, Zhong Ce Electronics CO., LTD; 数字万用表: UT101 MULTIMETER 金创电子仪器厂; FPGA 实验仪: DP-FPGA, 广州致远电子有限公司; 电机实验仪: DP-51MOTOR,广州致远电子有限公司; 4.2.测试结果 : 问题 1: 电机不转,正反转指示灯不亮。 原因:三极管管脚接错; 解决办法:重接此只三极管; 问题 2: 电机不转,但正反转指示灯亮。 原因:分压电阻过大,导致电机驱动电流过小; 解决办法:根据电机驱动电流大小换分压电阻。 问题 3: 靠近电源接进口的三极管发热严重。 原因:电路设计与实践数据出
23、现偏差 ,导致流过三极管的电流偏高 . 解决办法:根据实测电路数据 ,修改电路原件 . 经反复调试 ,现电路可按照按键输入准确控制电机运行 . 五 .结论及参考文献 5.1.结论 : 对直流伺服电机采用 PWM脉冲方式控制,其功率损耗小,运行效率高,加减速性能好,尤其是在要求低速大转矩下连续运行的场合。伺服电机手 步进电机控制相对简单,但要处理好启动、换向时的加速问题,否则容易产生“失步”- 10 - 现象,对电机造成不必要的冲击。 5.2.参考文献 : 1.潘松,黄计业 .EDA 技术实用教程 m.北京:科学出版社 .2002。 2.黄智伟主编 ,王彦 ,陈文光 ,朱卫华编著 .全国大学生电
24、子设 计竞赛训练教程 M.北京 :电 子工业出版社 2005. 3.南华大学第六届全国电子设计竞赛全体参赛成员 .第六届电子大赛资料 C(多谢老师提供) . 4. 王松武,蒋志坚 .通用仪器【 M】 .哈尔滨:哈尔滨工程大学出版社 .2002。 5. 高吉祥 .电子技术基础实验与课程设计【 M】 .北京:电子工业出版社 .2002。 六 .附件 6.1.元件清单 : 器件 型号 数量 备注 FPGA 实验板 1 主控制器 步进电机 1 伺服电机 1 整流桥 2w10 1 整流用 电阻 若干 10K(2 个 ),220K(2 个 ),100 欧 /1W(4 个 ),200欧 (2 个 ),470 欧 (2 个 ) NPN 三极管 5609 2 NPN 三极管 9013 2 NPN 三极管 8050 4 PNP 三极管 5610 2 发光二极管 2 光电耦合器 4N25 2 二极管 IN4148 4 电源插孔 1 插针 1 信号接口 电解电容 1000uF/50V 1 瓷片电容 33P 1 小车车架 1 6.2.程序清单 :