集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 960|回复: 0

PWM直流电机速度控制器的FPGA应用

[复制链接]
fpga_feixiang 发表于 2018-7-19 17:12:26 | 显示全部楼层 |阅读模式
对直流电机的控制采用的一般就是脉宽调制(PWM)的方法,而脉宽调制有两种方式,一种是用模拟电路控制,一种就是用高速单片机实现控制。下面介绍的就是通过FPGA来实现对直流电机的控制。

       其中控制器的组成是这样的:电机速度和电流反馈信号输入到AD,FPGA驱动其转换;上位机的信号直接输入FPGA;还有控制器的控制部分,负责校正运算、故障检测等;控制器的脉冲产生部分自然就是产生PWM波的,通过驱动电路控制功率开关器件。结构框图如下:


       而FPGA所做的可以大致是分为三个部分:

       一是数据采集模块。

要实现良好的速度控制,就必须有电流回路设计。其中首先的就是AD芯片的选择,不仅仅要考虑AD的精度,更要考虑到采样频率等等。而本设计中电流回路控制的采样频率取决于功率放大器件的开关频率。另外,通过PWM波来控制的实际电机电流是波动的,电机速度控制器则要进行数字滤波,那么控制器的采样频率要高与功率放大器件的开关频率。最好的选择是选用一款多通道高速AD,这样又能有较快的AD采样频率,而且有不同的采样频率和通道,来实现电流反馈和速度反馈。

       在我看过的一个案例中,它的功率放大器件用的是IPM模块,设计的开关频率是16KHZ。而在每个电流回路控制周期都要进行IO采样滤波,所以电流反馈的实际采样频率是160KHZ。所以设计者选用了TI的一款AD转换芯片ADS7864,这是一款快速6通道全差分12位AD。其最高采样频率是500KHZ,且多通道,完全符合上述设计的需要。

       说完AD选型,就要说正题了,FPGA的工作。一是选择需要转换的通道,二是产生启动转换的脉冲序列,三是查询转换结束信号,四是进行数据存储以及提供AD时钟信号等。

       二是控制算法模块。

在上面提到的那个案例中,设计者用的是工控中最常用的PI校正的算法。而数字控制则需要将PI校正的式子离散化。PI校正的差分方程式为:

Yk=A0*Xk-A1*Xk-1+Yk-1。

式中:A0、A1为和PI校正增益与积分时间常数相关的常数;Xk、Xk-1分别为本次偏差和上次偏差;Yk、Yk-1分别为本次校正输出和上次校正输出。

       由PI校正的差分方程式可以看出,要进行两次的乘法和两次加法。在FPGA中设计乘法器是比较耗资源的,所以在设计时候就必须考虑运算器的字长等。在上面提到的那个案例中,设计者将乘法器设计位16位宽的,而其考虑到积分精度,将加法器设计为32位,然后用补码算法。在FPGA中实现加法表达式为:

Qi=Xi+Yi+Ci+1。

其中:Qi是结果位;Ci+1是进位位。该部分的代码如下:

Always    @(X,Y)

Begin

       C<=1’b0;

       For(i=1’b0;i<32;i=i+1’b1)

       Begin

              Q(i)<=X(i)^ Y(i) ^ C;

              C<=(( X(i) & Y(i) ) | (X(i) & C ) | ( Y(i) & C);

       End

End

       乘法器的设计其实就是将乘法转化为加法的Booth算法。

       三是时序控制模块。

       在设计方面,所用的时钟源最好是从FPGA的全局时钟引脚输入,从而减小线路延时和干扰毛刺。系统循环用一个总的计数器。前面提到的案例中功率开关器件的开关频率为16KHZ,那么输入的时钟源clk最好是8MHZ,这样可以保证控制周期在62.5us(1/16Khz)。在这个总循环ALL_cnt中分为三个阶段:ALL_cnt=2’b0时,启动AD转换和滤波时钟ad_cnt,从而控制AD转换滤波的时序;ALL_cnt=2’b01 |ALL_cnt=2’b10 时,启动校正运算时钟,JZ_cnt;ALL_cnt=2’b11时,PWM输出。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-4-27 12:06 , Processed in 0.064598 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表