基于DSP的电子节气门PID控制
扫描二维码
随时随地手机看文章
以往的直流电机调速系统通常采用单片机或DSP进行控制,而单片机需要使用大量的外围电路,且系统的可升级性差,如更换控制器,往往要对整个软硬件进行重新设计,可重用性不高。而采用DSP作为主要控制器,如果碰到处理多任务系统时,一片DSP不能胜任,这时就需要再扩展一片DSP或者FPGA芯片来辅助控制,从而实行双芯片控制模式。但这样做,既增加了两个处理器之间同步和通信的负担,又使系统实时性变坏,延长系统开发时间。基于以上此类问题,本文提出了采用Altera公司推出的NiosⅡ软核来控制直流电机调速系统,它的好处在于Ni-osⅡ属于软核处理器,可以直接通过软件形式扩展成双核乃至多核,无需外加芯片;再者NiosⅡ软核处理器和所有外围电路可以集成到一片FPGA芯片上来实现整个直流电机控制系统,这样无疑大大减小了控制器体积和重量,设计人员也可以在短时间内完成整个系统的制作,提高了工作效率。
本文利用Altera公司的FPGA芯片EP2C35F672C6作为系统控制器,采用数字PID算法对直流电机进行PWM闭环调速控制。并且利用硬件描述语言(VHDL)自行设计、生成PWM模块和测速模块,最后通过实验验证了该系统的可行性。
1 系统硬件设计
1.1 系统总体设计方案
选用Altera公司的DE2开发板作为开发平台,采用SOPC技术通过在FPGA中植入嵌入式系统处理器NiosⅡ作为核心控制电路,利用FPGA中的可编程逻辑资源和IP软核来构成该嵌入式系统处理器的接口功能模块,借助于Avalon总线,实现对外围PWM模块、测速模块、SDRAM、键盘等硬件的控制,FPGA通过Avalon总线对输入模块和输出等模块进行配置,整体功能框图如图1所示。
整个系统的主要工作流程如下:当系统启动完成各单元初始化后,通过键盘输入期望设定值,同时由光电编码器采集实测转速传输到测速模块,通过NiosⅡ处理器处理电机PID控制算法,并将计算后的数据传输给自定制的PWM模块对其进行闭环控制。最后在NiosⅡIDE上采集到实际输出数据,并通过Matlab软件画出控制曲线波形图,最后对实验结果进行分析。
1.2 PWM模块
系统中的自定制PWM模块是通过写VHDL代码,经过仿真、编译、管脚分配,最后生成PWM功能模块。它在整个系统中的作用是:对实测转速通过计算进行闭环控制。生成的PWM模块如图2所示。
图2中:clk为时钟信号端;sta用来控制直流电机正反转;conword为占空比信号;PWM_A表示直流电机处于正转状态时的占空比输出;PWM_B表示直流电机处于反转时的占空比输出。
PWM模块的原理如下:将时钟源50 MHz的基频信号64分频,作为PWM模块的基频信号,以256个该基频脉冲信号作为PWM输出的一个周期,由NiosⅡ处理器给出的conword的值指定一个PWM周期内高电平持续时间,改变conword的值即刻改变占空比输出的值。
1.3 测速模块
系统中的测速模块生成方式如PWM模块,它在整个系统中的作用如下:主要是利用基频的周期来计算光栅信号的周期,算出直流电机的转速,其生成的模块如图3所示。
图3中:clk为时钟信号端;en为使能信号,即表示光栅有效;dout表示光橱有效时间。
测速模块的原理如下:给出已知频率的基频,用光栅作为门限,测基频脉冲的个数,由基频的周期来计算光栅信号的周期,再算出转速,电机控制算法即根据测速模块测出的速度进行算法调整,达到闭环控制的效果。
2 系统软件设计
本次设计的软件主要分为两部分:
(1)利用QuartusⅡ7.2完成NiosⅡ系统的构建:利用SOPC Builder构建NiosⅡCPU;使用VHDL编写各控制模块。
(2)利用NiosⅡIDE完成系统控制与控制算法编写,主要使用C语言进行控制与算法编写;对直流电机进行成功控制后,在NiosⅡIDE上采集输出转速的实测数据,将其导入Matlab画出控制效果图,整体软件框图如图4所示。
本次设计使用SOPC Builder组建的NiosⅡ嵌入式系统,如图5所示。该系统除了配置NiosⅡ最小系统的CPU核NiosII CPU,Avalon总线,使用FPGA资源例化的存储器之外,还有以下外接设备的控制单元:
(1)SDRAM Controller;
(2)Common Flash Interface;
(3)JTAG UART;
(4)锁相环PLL;
(5)Interval Timer;
(6)通用I/O接口,包括PWM模块接口conw,msta和测速模块接口speed,按钮接口button。
对于SOPC Builder组建的NiosⅡ系统,可以在QuartusⅡ软件方便地调用,在QuartusⅡ中Block Diagram设计调用NiosⅡ系统的框图如图6所示。给该系统配备工作时钟,并分配FPGA的I/O管脚,程序经综合,布局,仿真之后,就可将配置文件通过各种配置方法下载到FPGA上。本文使用JTAG+AS方式配置,通过USB Blaster下载电缆线将计算机USB接口与FPGA的JTAG口相连,把配置文件从计算机下载到FPGA中,这样就完成了系统的软件设计。
3 实验与数据分析
3.1 测试系统
测试系统由一个额定电压为2.5 V的直流有刷电机和Altera公司的DE2开发板组成。电机相关技术指标为:额定电压为2.5 V,额定功率为O.065 W,额定转速为2 150 r/min,空载转速为2 650 r/min。[!--empirenews.page--]
整个测试系统的硬件结构图如图1中所示,其工作流程在前文中有详细介绍。
3.2 实验结果及分析
将直流电机增量式PID算法以C语言的形式写入NiosⅡIDE中,调试后将其采集到的实测数据导入Matlab,画出时间与转速之间的关系图形如图7~图9所示。
(1)比例(P)控制
取采样周期T=0.1 s,KP=0.5,实验结果如图7所示。
在P控制中,比例环节的作用是对偏差作出快速响应,Kp,越大,控制能力越强,但跟过大的Kp会增大超调量,另外比例环节可以减少稳态误差,但不能完全消除。从图7中可以看出比例环节使得电机的转速从零提升到设定值的过程比较快,但出现了比较明显的超调,且存在一定的稳态误差。
(2)比例积分(PI)控制取采样周期T=O.1 s,Kp=0.5,T1=2,实验结果如图8所示。
在PI控制中,积分环节的作用的是消除累计下来的偏差(即稳态误差),在控制过程中,只要有偏差存在,积分环节的输出就不断增大,直到偏差为零,输出才可能稳定在某一值上。但积分环节会降低响应速度,增加超调量,T1越大,积分作用越弱。从图8中可以看出,在比例环节上加上积分环节,先前的稳态误差得到消除,电机转速趋于设定值,但同时也增加了另一段超调量。
(3)比例积分微分(PID)控制取采样周期T=0.1 s,Kp=0.5,T1=2,TD=0.1,实验结果如图9所示。
在PID控制中,微分作用是根据偏差的变化趋势进行控制的,偏差变化得越快,微分环节输出就越大,并且能在偏差值变大前进行修正。微分环节有利于减小超调量,克服振荡,TD越大,微分作用越大。从图9中可以看出,加入微分环节后,超调量明显得到有效抑制。
从图7~图9中可以看出,用PID控制算法控制基于NiosⅡ的直流电机控制效果还是不错的,有一定的稳定性,即便在转速出现跳变时,也能进行良好的跟踪。PID控制算法已经相当成熟,参数可以通过整定很容易得到,实验表明,此方案具有一定的可行性。
4 结语
提出一种直流电机的新型控制方式,即利用NiosⅡ软核和FPGA芯片对其控制。通过实验验证,将PID增量式算法应用到此系统中,能进行良好的闭环控制。在电机控制中如遇更复杂的电机,如无刷电机等,用NiosⅡ软核进行控制,可以将其扩展为双核乃至多核,一个CPU用来控制算法,另一个CPU用来控制外围系统,互不干扰,发挥NiosⅡ处理器的最大优势。