基于FPGA的步进电机正弦波细分驱动器设计
时间:08-02
来源:互联网
点击:
3.1FPGA结构设计
本系统是由集成在系统采用层次化开发方式,顶层模块由多个子模块组合而成,FPGA设计系统框图如图5所示。系统由NiosII微处理器模块和数字逻辑模块组成。
图5 FPGA设计系统框图
控制器采NiosII的32位CPU软核,由SOPCBuilder生成。用来接收外界控制信号并把信号处理后送给脉冲发生器,并通过输出端口控制LED来指示系统工作情况。系统顶层设计图如图6所示,系统由CPU软核(stepmotor_controller、CP发生器(PatternGenerator)、正弦查表控制模块(interface)、A/D电流采样模块(currenttop)、C相电流计算模块(Current_c)调节模块、PI调节模块(pimodule)、PWM发生模块(PWM)组成,各模块功能如下:
CPU:接受外界控制信号把信号处理后得到相应的细分等级和与速度对应的控制信号送给CP发生器,把转向信号处理后送到查表控制模块,并把转速和转向信号送到LED数码管和发光二极管来指示电机运行情况;
CP发生器:接受转速控制信号发出与转速相对应的CP脉冲并给出相应转速下对应的最佳细分等级;
正弦查表控制模块:根据CP脉冲和细分等级进行查表产生参考电流,根据转向控制信号来决定查表方向来实现转向控制;
A/D电流采样模块:采集步进电机A、B两相电流值;
C相电流计算模块:根据基尔霍夫电流定律A、B、C三相电流之和为零,由A/D采集的A、B两相的电流计算出C相电流;
PI调节模块:将参考正弦电流与反馈电流差值进行PI调节,把调节后的控制信号,为了防止IPM内上下半桥的IGBT同时导通,导致IPM短路,PI模块内设置的了死区时间。
图6 系统顶层设计图
顶层接口说明:
AD_in_a、AD_in_b是AD1674转换输出的数字信号;
AD_CE、AD_RD、AD_STS为AD的控制信号;
clk、reset分别为系统时钟输入端口和系统复位端口;
enable端口是PWM发生器使能端,功率模块温度过高热保护就会动作将enable置0停止发出PWM波,保护驱动器;
setspeet、rotate_dirc分别为转速和转向控制端口;
led_sel、speeddisplay、led_indicator为工作情况指示电路;
pl_a、ph_a、pl_b、ph_b、pl_c、ph_c为A、B、C三相桥臂的上下半桥控制端;
3.2NiosII软核设计
在本控制器中利用CPU控制灵活的功能用来接受并处理外界控制号再将处理过的控制信号送到各个功能模块,因此NiosII软核采用了经济型即NiosII/e,加入了用于输入输出端口(PIO)、片上存储器模块(OnchipMemory)。控制器程序流程图软件程序工作流程如图7所示。
图7CPU控制流程图
CPU内部程序采用C++语言编写,并对电机的控制状态建立类。通过对电机的控制状态对象的操作,即可输出各种控制命令到接口模块和CP脉冲发生模块,控制电机状态;同时在程序主循环中监视用户的各种输入,更新电机的控制状态对象的成员变量。
3.3CP发生器模块和查表控制模块
PatternGenerator模块根据设置的电机转速产生相应的CP脉冲和在该转速下的最适宜的细分等级,并把这些信号传送给查表控制模块。CP发生器模块和查表控制模块如图8所示。
图8CP发生器模块和查表控制模块
查表控制模块(interface)内部例化了一个只读存储器,存放一个周期的正弦数据表。正弦表数据宽度与系统数据流数据宽度一致,因此选择14位宽度。正弦表深度决定了驱动器的最大细分等级,关系式表示为:NMAX=2N,当N=12时,达到最高细分等级4096细分。外部输入CP和CCW信号后,通过顺序的给出三相绕组对应的地址数据,即可查得三相相电流的给定数据,并同时更新三个给定数据寄存器,送入下一个环节。转向交换也在本模块实现。输入的CCW信号将控制一个路选择器,控制正弦表的查表方向来改变步进电机转向。本模块通过输入的细分等级信号和CP脉冲信号共同决定三相绕组的地址数据的每次增量大小。当细分等级最高时,地址计数器每次增1或减1;当处于非最高细分精度时,地址计数器每次递增2的N次幂,N由当前的细分等级确定。
3.4AD采样模块与C相电流计算模块
步进电机A、B两相电流通过霍尔元件进行采集,AD采样模块通过采集采样电阻上的电压来将电机A、B两相电流的模拟量转换为数字量,C相电流模块由基尔霍夫电流定律ia+ib+ic=0计算得到。图9为两模块的端口。
图9AD采样模块与C相电流计算模块
3.5PI调节模块
PI调节模块是对给定数据和反馈数据进行离散化PI调节。模块的数据宽度统一为14位,即给定数据/反馈数据/控制数据都用14位宽度无符号整型数据表示。本模块实现一个PI控制器功能,如图10所示。
图10 PI控制逻辑框图
PI调节离散化公式如(4)式所示。
I(K)=I(K-1)+KP*(E(K)-E(K-1))+KI*E(K) (4)
其中,1500≤I(K)≤14384,I(0)=8192,E(K)=IREF-IOUT
模块在收到启动信号后,先寄存给定数据/反馈数据,再对二者扩宽符号位做有符号减法,并启动KI乘法器计算KI乘以误差e的结果。对减法的计算结果取绝对值,并与阀值作比较(常数比较器),比较的结果存入寄存器。计算e的误差增量,即E(K)-E(K-1),并用KP乘法器计算KP乘以误差增量的结果。将KI乘法器计算的结果先送入累加器,然后再将KP乘法器计算的结果送入累加器;模块的累加器在每次累加的时候会进行溢出处理和数据超出边界处理,无论哪种情况都会置为边界值(最大/最小值)。
本系统是由集成在系统采用层次化开发方式,顶层模块由多个子模块组合而成,FPGA设计系统框图如图5所示。系统由NiosII微处理器模块和数字逻辑模块组成。
图5 FPGA设计系统框图
控制器采NiosII的32位CPU软核,由SOPCBuilder生成。用来接收外界控制信号并把信号处理后送给脉冲发生器,并通过输出端口控制LED来指示系统工作情况。系统顶层设计图如图6所示,系统由CPU软核(stepmotor_controller、CP发生器(PatternGenerator)、正弦查表控制模块(interface)、A/D电流采样模块(currenttop)、C相电流计算模块(Current_c)调节模块、PI调节模块(pimodule)、PWM发生模块(PWM)组成,各模块功能如下:
CPU:接受外界控制信号把信号处理后得到相应的细分等级和与速度对应的控制信号送给CP发生器,把转向信号处理后送到查表控制模块,并把转速和转向信号送到LED数码管和发光二极管来指示电机运行情况;
CP发生器:接受转速控制信号发出与转速相对应的CP脉冲并给出相应转速下对应的最佳细分等级;
正弦查表控制模块:根据CP脉冲和细分等级进行查表产生参考电流,根据转向控制信号来决定查表方向来实现转向控制;
A/D电流采样模块:采集步进电机A、B两相电流值;
C相电流计算模块:根据基尔霍夫电流定律A、B、C三相电流之和为零,由A/D采集的A、B两相的电流计算出C相电流;
PI调节模块:将参考正弦电流与反馈电流差值进行PI调节,把调节后的控制信号,为了防止IPM内上下半桥的IGBT同时导通,导致IPM短路,PI模块内设置的了死区时间。
图6 系统顶层设计图
顶层接口说明:
AD_in_a、AD_in_b是AD1674转换输出的数字信号;
AD_CE、AD_RD、AD_STS为AD的控制信号;
clk、reset分别为系统时钟输入端口和系统复位端口;
enable端口是PWM发生器使能端,功率模块温度过高热保护就会动作将enable置0停止发出PWM波,保护驱动器;
setspeet、rotate_dirc分别为转速和转向控制端口;
led_sel、speeddisplay、led_indicator为工作情况指示电路;
pl_a、ph_a、pl_b、ph_b、pl_c、ph_c为A、B、C三相桥臂的上下半桥控制端;
3.2NiosII软核设计
在本控制器中利用CPU控制灵活的功能用来接受并处理外界控制号再将处理过的控制信号送到各个功能模块,因此NiosII软核采用了经济型即NiosII/e,加入了用于输入输出端口(PIO)、片上存储器模块(OnchipMemory)。控制器程序流程图软件程序工作流程如图7所示。
图7CPU控制流程图
CPU内部程序采用C++语言编写,并对电机的控制状态建立类。通过对电机的控制状态对象的操作,即可输出各种控制命令到接口模块和CP脉冲发生模块,控制电机状态;同时在程序主循环中监视用户的各种输入,更新电机的控制状态对象的成员变量。
3.3CP发生器模块和查表控制模块
PatternGenerator模块根据设置的电机转速产生相应的CP脉冲和在该转速下的最适宜的细分等级,并把这些信号传送给查表控制模块。CP发生器模块和查表控制模块如图8所示。
图8CP发生器模块和查表控制模块
查表控制模块(interface)内部例化了一个只读存储器,存放一个周期的正弦数据表。正弦表数据宽度与系统数据流数据宽度一致,因此选择14位宽度。正弦表深度决定了驱动器的最大细分等级,关系式表示为:NMAX=2N,当N=12时,达到最高细分等级4096细分。外部输入CP和CCW信号后,通过顺序的给出三相绕组对应的地址数据,即可查得三相相电流的给定数据,并同时更新三个给定数据寄存器,送入下一个环节。转向交换也在本模块实现。输入的CCW信号将控制一个路选择器,控制正弦表的查表方向来改变步进电机转向。本模块通过输入的细分等级信号和CP脉冲信号共同决定三相绕组的地址数据的每次增量大小。当细分等级最高时,地址计数器每次增1或减1;当处于非最高细分精度时,地址计数器每次递增2的N次幂,N由当前的细分等级确定。
3.4AD采样模块与C相电流计算模块
步进电机A、B两相电流通过霍尔元件进行采集,AD采样模块通过采集采样电阻上的电压来将电机A、B两相电流的模拟量转换为数字量,C相电流模块由基尔霍夫电流定律ia+ib+ic=0计算得到。图9为两模块的端口。
图9AD采样模块与C相电流计算模块
3.5PI调节模块
PI调节模块是对给定数据和反馈数据进行离散化PI调节。模块的数据宽度统一为14位,即给定数据/反馈数据/控制数据都用14位宽度无符号整型数据表示。本模块实现一个PI控制器功能,如图10所示。
图10 PI控制逻辑框图
PI调节离散化公式如(4)式所示。
I(K)=I(K-1)+KP*(E(K)-E(K-1))+KI*E(K) (4)
其中,1500≤I(K)≤14384,I(0)=8192,E(K)=IREF-IOUT
模块在收到启动信号后,先寄存给定数据/反馈数据,再对二者扩宽符号位做有符号减法,并启动KI乘法器计算KI乘以误差e的结果。对减法的计算结果取绝对值,并与阀值作比较(常数比较器),比较的结果存入寄存器。计算e的误差增量,即E(K)-E(K-1),并用KP乘法器计算KP乘以误差增量的结果。将KI乘法器计算的结果先送入累加器,然后再将KP乘法器计算的结果送入累加器;模块的累加器在每次累加的时候会进行溢出处理和数据超出边界处理,无论哪种情况都会置为边界值(最大/最小值)。
步进电机 单片机 电路 模拟电路 DSP FPGA 电流 电动机 IGBT PWM LED PCB 二极管 电阻 电压 比较器 仿真 Altera 相关文章:
- 基于FPGA实现的短波发射机自动调谐系统的设计(07-27)
- 用单片机和CPLD实现步进电机的控制(08-06)
- FPGA在短波发射机自动调谐系统中的应用(08-21)
- 运动控制和混合信号FPGA(10-13)
- 装入CPLD/FPGA的步进电机运动控制器与驱动器(11-07)
- 利用可编程逻辑实现高性能的罪犯抓捕系统(11-08)