APP下载

基于CPLD 的步进电机控制系统设计

2021-07-30吕栋腾

电子设计工程 2021年14期
关键词:脉冲驱动电机

吕栋腾

(陕西国防工业职业技术学院,陕西西安 710300)

数字系统的设计和实现离不开CPLD 器件,CPLD 在制造完成后用户可根据需要定义其逻辑功能。CPLD 以功能强大、开发过程投资少、开发工具智能化等特点成为硬件设计的首选方式之一[1]。控制步进电机的运行要使用专门的驱动控制器,基于这个特点可以将步进电机和现代数字控制技术结合。本设计通过Verilog HDL 进行编程,在MAX+PLUSII 软件环境下进行编译并写入CPLD,在综合仿真实验仪上实现对步进电机的运行控制和工作模式选择。

1 软件开发环境

CPLD 有Synplify、Synopsps、Quartus II、ZLGICD、ISD51 和MAX+PLUSII 等软件开发环境。该设计采用的是Altera 公司提供的MAX+PLUSII 开发集成环境。MAX+PLUSII 开发系统具有开放的界面,设计时可调用丰富的设计库和模块化工具,支持多种硬件描述语言[2]。MAX+PLUSII 提供了一种与系统结构无关的设计环境,在MAX+PLUSII 上可以进行步进电机控制系统的输入/输出设计,以及功能和时序仿真,最后编译下载整个流程。MAX+PLUSII 软件设计流程如图1 所示。

图1 MAX+PLUSII软件设计流程

2 开发设计语言

该设计采用Verilog HDL 进行编程,以控制步进电机。Verilog HDL 是在C 语言基础上发展起来的,专门面向硬件与系统设计的描述语言。如果前期具备C 语言的编程基础,可以在较短时间内学习和掌握。Verilog 以模块集合的形式来描述硬件数字系统,模块之间并行运行,可以使用高层模块调用其他模块。Verilog 还提供了完善的模拟功能验证,对每个语法结构都定义了清晰的仿真语义,通过建立数学模型能够用Verilog 仿真器对步进电机控制系统进行验证[3]。

Verilog HDL 主要有自下而上和自上而下两种设计方法[4]。自下而上的设计是从已有的基本单元出发,设计树上末端的单元可以是已经制造出的单元或者是其他项目开发好的单元,这种方法容易实现各个子模块电路,但对系统的整体性不好,是比较传统的设计方法。自上而下的方法是从总体出发,将系统先划分为若干基本功能单元,对基本功能单元再次进行划分,直到可以用EDA 元件库中的元件实现为止。这种设计方法使复杂数字电路的设计成为可能,避免了不必要的重复设计,但由于一开始考虑系统的整体性,得到的最小单元可能不标准。步进电机控制系统设计采用两种方法相结合的综合设计法,在高层系统通过自上而下的设计方法来实现,对整体系统进行划分和管理,在低层系统使用自下而上的方法从数据库中调用已有的单元设计。这种综合设计法更适合复杂数字逻辑电路和系统的设计,设计完成后还可以使用矢量测试库进行测试。

3 硬件开发环境

该设计采用的是Altera 公司MAX 7000S 系列CPLD,型号为EPM7128SLC84-15。MAX7000 系列器件在国内使用较多,且与其他MAX 系列器件在结构功能上十分相似,可以替换使用。MAX7000 系列器件利用内部的EEPROM 单元实现各种不同的组合逻辑与时序逻辑。其具有SSI、MSI、LSI、PAL、GAL等中低规模的逻辑电路的所有功能[5]。

仿真实验仪DP-MCU/Altera 采用EPM7128S 系列CPLD 作为目标CPLD。该仿真实验仪的优点是集合了具有ISP 功能的单片机和CPLD,可以同时完成不同的仿真模拟。该仿真实验仪具有比较宽的频率范围,具有两个可选节电模式。因为采用了静态设计,因此支持操作时断点恢复运行,防止用户数据的丢失,并且用户提供了丰富的外围器件和设备接口。步进电机与驱动模块及仿真仪的连接如图2 所示。

图2 仿真仪通过驱动芯片与步进电机连接

4 步进电机驱动控制

步进电机通过环形脉冲分配器同步电脉冲信号,并能将电脉冲信号转换成角位移或线位移。当空间中按一定规律布置励磁绕组顺序和直流电接通后,转子在旋转磁场的作用下会转过一定角度,转过的角度大小和输入的脉冲数成正比,控制发送脉冲的速度就可以控制步进电机的转速[6]。步进电机主要由脉冲发生单元、脉冲分配单元、功率驱动单元和反馈单元这几部分组成,步进电机采用脉冲驱动的方式,过程中需要使用步进电机驱动控制器,基于这个特点可以将步进电机和现代数字控制技术结合,通过CPLD 对步进电机实现运行控制。

该设计选取25BY4801 型永磁式步进电机作为控制对象,驱动电压为DC 5 V,相电流为0.5 A。选用的步进电机驱动芯片为ULN2003A,其电路具有电流增益高(大于1 000)、带负载能力强(输出电流大于500 mA)、温度范围宽(-40~85 ℃)等特点。将步进电机的信号输入端连接到CPLD 控制器的信号输出端,就可以根据所编写的程序控制步进电机采用波驱动、半步驱动或全步工作模式。程序采用模块化设计方式,TOP-DOWN 的设计方法。即先设计出顶层模块(驱动模块),然后设计顶层模块中所需要的各功能模块,顶层模块的功能是调用各底层模块[7-8]。

4.1 四相四拍控制

该设计方案利用脉冲数量进行计数,产生两个输出信号,然后通过译码成为4 个信号,即为控制步进电机旋转的信号。整个程序分为4 个模块:计数器模块、译码器模块、脉冲产生模块及步进电机驱动模块(顶层模块)。四相四拍控制原理如图3 所示。

图3 四相四拍控制原理图

计数器模块是在时钟脉冲下,将脉冲转化为两个输出信号,即每当脉冲上升沿,计数器计数一次。正转时q1、q2此并列两位进行每次加1 计数,忽略进位,即以00→01→10→11→00 进行循环计数;反转时q1、q2此并列两位进行每次减1 计数,忽略借位,即以00→11→10→01→00 进行循环计数。计数器模块仿真波形如图4 所示。

图4 计数器模块仿真波形图

译码器模块将计数器模块产生的q1、q2两个信号通过译码输出 为out1、out2、out3、out44 个输出信号。并根据q1、q2的数据(0、1)的循环变换,out1、out2、out3、out4进行循环移位。四相单四拍定义为,正转输入信号以1000→0100→0010→0001→1000 进行循环,反转输入信号以1000→0001→0010→0100→1000 进行循环。四相双四拍定义为,正转输入信号以1100→0110→0011→1001→1100 进行循环,反转输入信号以1100→1001→0011→0110→1100 进行循环。四相双四拍仿真如图5 所示。

图5 译码器模块仿真波形图

脉冲产生模块将系统脉冲分频,进而产生所需要频率的脉冲,并通过几次分频分得不同的频率脉冲,进而能控制步进电机的转速。设计所利用的频率为11.059 26 MHz的系统时钟源,但因11.059 26 MHz数据量较大,非常容易造成MAX+PLUSII 软件的不响应,故用100 Hz 模拟其仿真频率。文中的仿真时钟频率全部为100 Hz。步进电机驱动模块是调用上述各个模块,进而控制步进电机,并定义输入、输出端口。步进电机驱动模块仿真如图6 所示。

图6 步进电机驱动模块仿真波形图

4.2 四相八拍控制

此方案预先给定4 个输出信号(正转为一种方式,反转为一种方式),然后在控制信号下进行信号的循环移位,即可以将信号按一定循环方式发送到步进电机,进而达到了控制步进电机的目的[9-11]。该控制方案将程序分为了半步驱动模块、脉冲产生模块和步进电机驱动3 个模块,原理如图7 所示。

图7 四相八拍控制原理图

在半步驱动模块中,设定其正转输入信号顺序为:1000→1100→0100→0110→0010→0011→0001→1001→1000,反转为:1000→1001→0001→0011→0010→0110→0100→1100→1000。给定初始信号,然后根据脉冲设定,进行相应的信号移位,使信号按上述方式循环,即可使步进电机为四相八拍式旋转,半步驱动模块波形仿真如图8 所示。

图8 半步驱动模块仿真波形图

脉冲产生模块同四相四拍控制,在此不再赘述。步进电机驱动模块是调用上述各模块,进而控制步进电机,并定义输入、输出端口,驱动模块仿真波形如图9 所示。

图9 步进电机驱动模块仿真波形图

4.3 模式选择

在四相八拍控制中增加四相单四拍和四相双四拍控制,并设定模式选择按键就可对各种控制方式进行选择。模式选择将全系统分为脉冲产生、脉冲控制和顶层控制3 个模块。

脉冲控制模块包括波驱动模式、半步驱动模式、全步模式3 个模块。上述3 种模式分别控制步进电机为四相单四拍、四向八拍和四相双四拍转动。这些模式的选择与转换都通过两个模式选择键进行控制。脉冲产生模块如前文所述。顶层模块即步进电机驱动程序模块,包括有输出选择、驱动模式选择、复位控制、方向控制。根据系统控制要求,顶层模块负责调用上述模块。当mode=00 时,输出为波驱动模式;mode=01 时,输出为全步模式;mode=10 时,输出为半步模式;mode=11 时,err=1,报错并输出高阻态[12-14]。

输入端口dir 控制正反转,key-in1、key-in2 控制加减速,clr 代表复位分别连接到仿真仪上的K1、K2、K3、K4 按键;clk 为时钟脉冲输入连接到仿真仪上的时钟信号源;mode0、mode1 代表模式选择连接到仿真仪上的K5、K6 按键。将输入输出管脚锁定在CPLD 上,并将程序下载到CPLD 中,将仿真试验仪与步进电机相连接进行仿真。通电后步进电机先按四相单四拍方式进行转动,按下所设定的按键后就可以对步进电机的正反转、加减速、运行模式进行控制和选择[15-16]。

5 结束语

常用的步进电机控制系统一般采用微机控制,这种微机控制的方法编程量大,限制了步进电机转速的提升和运行控制,同时这种控制方式在电磁干扰较严重的车间抗干扰性能力也较差,可靠性不高。CPLD 是一种可进行多次编程的超大规模数字集成电路,其集成了相当规模的标准逻辑模块,只要利用EDA 工具将所设计的数字系统的功能描述出来后编程到CPLD 内,就可以得到此系统的集成电路。在MAX+PLUSII 软件环境下,用Verilog 语言对CPLD 进行编程,通过CPLD 对步进电机进行控制,控制系统采用模块式设计方法,把各控制功能分别列于不同模块,提高了控制系统的灵活性且扩展性良好,为步进电机低成本控制提供了一种新的设计思路和实现方法[17-19]。

猜你喜欢

脉冲驱动电机
他们使阿秒光脉冲成为可能
脉冲离散Ginzburg-Landau方程组的统计解及其极限行为
基于模糊PI控制的驱动防滑仿真系统分析
关于电机滚动轴承的选择与计算
瞻望电机的更新换代
欢迎订阅2022年《电机与控制应用》
屈宏斌:未来五年,双轮驱动,砥砺前行
轨旁ATC系统门控柜接收/驱动板改造
黄芩苷脉冲片的制备
电机隐忧