图4 系统的顶层原理图
4. 综合与仿真
4.1 模块连接图
图5 模块连接图
模块连接图如图5所示,模块BUSMUX是PWM读数器,也就是二路选择器,模块dec2是一个译码器,用来使接口宽度一致,模块rom3是PWM波形存储器,模块compare是数字比较器,模块CNT8是8进制PWM计数器,模块CNT24是24进制PWM地址计数器,GND是接地,VCC是电源。
4.2 仿真图形
附录中程序1、程序2和程序3是图5中的元件CNT8、DEC2 和CNT24 的VHDL描述。程序4是LPM-ROM元件LPM-ROM3 中的初始化数据文件pwm_1.mif程序5是步进电机的总控制程序。地址计数器根据控制输出LPM-ROM 地址,用来选择模块内预先写好的数据。并且把它送给PWM 电路。从而实现对步进电机不同步距细分数和方向的控制。地址计数器是一个可加/减计数器。u_d为方向控制,clk0 为速度控制。
图6 PWM波形读数器CNT8仿真图
图6为PWM波形读书器CNT8仿真图。8进制PWM计数器,每输入一个脉冲信号输出就增加1。当增加到8的时候就会重新变为0,然后一直循环。
图7 U_D放置于低电平时CNT24的仿真图
图7为U_D放置于低电平时CNT24的仿真图,24进制PWM地址计数器,当EN=1时,输出保持不变,当EN=0时若U_D=1则每输入一个脉冲输出加1,当加到24时变为0不断循环。
图8 U_D放置于高电平时CNT24的仿真图
图8为U_D放置于高电平时CNT24的仿真图,24进制PWM地址计数器,当EN=1时,输出保持不变,当EN=0时若U_D=0则每输入一个脉冲输出减1,当为0时减1变为24,不断循环。
图9 DEC2的仿真图
图9为DEC2的仿真图,在每个时钟信号上升沿到来的时候,若A=00,那么D=1001;若A=01,那么D=1100;若A=10,那么D=0110;若A=11,那么D=0011。用来使接口宽度一致。
图10 步进电机PWM的仿真波形图
图10为步进电机PWM的仿真波形图,随着输入脉冲的增加,PWM的输出按阶梯的周期性规律循环变化。u_d为方向控制,首先是A相导通,接着AB导通,然后B相导通A相为0,每隔8拍按照A-AB-B-BC-C-CD-D-DA顺序周期性的循环变化。即A相导通,经过8拍转为AB导通,再经过8拍B相导通,以此循环。实现了对步进电机的16细分驱动。
5. 结束语
基于FPGA的步进电机细分驱动设计与研究的优点就在于能够降低步进电机低频振荡,增大步进电机的输出转矩,由于减少了步矩角,提高了步进电机转动的均匀性,从而提高了电机的分辨力。本设计采用了QuartusⅡ9.0软件进行VHDL语言的编译跟仿真,使用了Altera公司的EP3C5E144C8芯片,采用FPGA控制的PWM细分驱动技术,通过由FPGA产生的按阶梯变化的周期性PWM信号以控制步进电机每相绕组的电流大小和方向,从而实现了对步进电机的步距角角16细分控制。系统结构简单,控制灵活,工作可靠。
在设计过程中也发现了一些在该设计中需要改进的地方,比如可以设计出能够实现更加均匀细分的驱动,再比如可以设计出两个电机可以同时用同一个细分驱动,或者根据要求电机能够在不同条件下选择不同的细分驱动。相信在以后的学习中,通过不断的努力与改正,能够设计出功能更加完善的步进电机。 FPGA的步进电机细分驱动研究与设计+电路原理图+仿真图(5):http://www.youerw.com/zidonghua/lunwen_971.html