资源描述
哈尔滨工业大学2006届本科优秀毕业设计(论文)选集步进电机控制系统优化技术研究电气工程及自动化学院:宋 翔 指导教师:杨春玲摘 要:本文设计了一种基于FPGA的正弦波可变细分步进电机驱动器,可有效地解决步距角的高细分问题,从而提高电机的运行力矩,提高转角分辨率,使电机旋转更加平滑。设计过程中采用自底向上的模块化设计方法,用VHDL语言对电路进行描述,采用Xilinx的ISE开发工具进行了综合和布局布线,使用Modelsim软件的PLI仿真接口实现了行为仿真和门级仿真验证。经测试表明,该驱动器具有调试方便,抗干扰能力较强,驱动能力较强,体积小,规模化成本低的优点。关键词:步进电机;可变细分;脉宽调制;驱动;FPGAAbstract:In this paper, a FPGA-based step motor driver implementing adjustable subdivision and sine pulse width modulation is introduced. This driving system can solve the high subdivision problem, increase the driving torque and angle resolution, and smooth the motor angle. Employing the bottom-top design method, the circuit was described by the VHDL language, synthesized by Xilinx ISE integrated environment, and simulated by Modelsim in both behavior level and gate level through the PLI interface. According to experiments result, this driver has the advantages of easy debugging, high anti-interference ability, larger driving power, low volume and low cost in large scale production.Key words:stepper motor adjustable subdivision PWM driving FPGA1 引 言步进电动机是工业控制中应用十分广泛的一种电动机,具有较高的定位精度,无位置积累误差,并且能够开环运行。但是步进电动机运行工况存在许多不足之处,如低频振荡、噪声大、分辨率不高及驱动系统可靠性差等,严重制约了步进电动机的应用范围。如果步进电机能够克服低频振荡,降低振动,提高分辨率,可以肯定步进电机的应用范围将更大。目前市场上的主流驱动技术采用正弦波可变细分技术1,但是能够实现此功能的控制器成本较高,一些同类产品(基于单片机)的步进信号频率不够高,因此低成本,高性能的步进电机驱动器很有市场前景。本课题是利用FPGA为控制模块,IR2175构成电流反馈模块,使用IPM集成功率模块构建步进电机主电路,构成低成本,高性能的步进电机驱动器2。2 步进电机驱动系统的设计2.1驱动器硬件总体设计步进电机三相绕组的电流是阶段性的正弦阶梯波电流,通过改变给定电流的每一次变化的阶梯数就可以实现可变细分功能。该驱动器的任务就是控制电机绕组的电流,使之按正弦阶梯波的规律变化。每给一个步进脉冲,A/B/C三相绕组的电流沿正弦阶梯波前进一步,电机转动一个步距角。为了控制绕组电流,在设计中引入电流反馈,驱动器的系统框图如图2-1所示。六路PWM输出经过光耦后输入到IPM驱动模块控制电机的绕组电流。电机的绕组电流被采样后变成电压信号,再经滤波后输入到电流传感器IR2175中,IR2175输出占空比变化的PWM波,经过光耦后输入到FPGA中,FPGA根据输入的PWM波的占空比的值确定反馈电流的大小。图2-1驱动器的系统框图2.2 驱动器软件设计系统采用层次化开发方式,顶层模块由多个子模块组合而成,采用自底向上的方式进行开发3。FPGA设计系统框图如图2-2所示。图2-2FPGA设计系统总体框图设计划分为控制器和驱动器两个部分,其中MicroBlaze微处理器模块和CP脉冲发生器模块属于控制器,剩下的模块属于驱动器。控制器接受用户输入,根据命令计算当前转速和转向,输出CP、细分等级和转向信号。这些信号进入驱动器后,通过三相PI调节就能够控制步进电机的绕组电流按照正弦规律受控变化。具体工作过程是:用户输入在MicroBlaze微处理器中进行处理,并产生转速和转向信号,转速信号送入CP脉冲发生器产生CP脉冲和细分等级数,同转向信号CCW共同送入正弦表数据接口模块中,通过内部逻辑产生三相相电流给定数据。电流反馈模块采样相电流,产生相电流反馈数据。在PI模块中,通过当前以及此前的给定数据/反馈数据,进行PI调节,并产生控制信号送入PWM发生器中,PWM发生器模块将输出PWM控制信号4,控制三相逆变器的6个IGBT通断,实现电机控制。2.3 驱动器的优化实现2.3.1 时钟网络与复位设计采用的FPGA输入的外部晶振产生的50MHz时钟,经过时钟管理模块的两个DCM模块进行倍频,得到50MHz时钟CLK50,100MHz时钟CLK100,200MHz时钟CLK200。其中控制器和控制精度无关,因此采用50MHz低频时钟,约束时较为容易。驱动器中数据流较为缓慢的模块采用100MHz时钟,也可以使约束易于实现。驱动器中的载波模块、比较器模块、电流计算模块以及PWM模块与控制精度有关,所以采用200MHz时钟。时钟域交叉处的信号传递基本上采用的是扩宽脉冲宽度的方法,因为这三个时钟频率有倍数关系,且同相位,因此能够比较容易的解决跨时域数据传输问题。全局异步复位由ClockMnger模块产生,该信号在外部Reset时置1,并在第二个DCM信号锁定后置0,输出时与CLK100的上升沿同步,同时对于高频时钟或者高扇出复位模块都设计了异步置位到模块内部的同步置位,减小复位信号扇出的同时消除了部分DFF因为异步RESET导致建立时间不够的现象。2.3.2设计约束 (1)Period约束通过周期约束,指导PAR工具必需尽量减小指定时钟网络上DFF之间的纯组合逻辑延迟,满足指定时钟网络上DFF的建立时间和保持时间。约束输入晶振时钟的频率为50MHz * 110%;并对时钟管理模块产生的CLK50,CLK100和CLK200三条时钟网络分别施加比实际频率高10%的Period约束。由于CLK200约束到220MHz比较难,降低为215MHz约束。(2)手动布局约束使用Floorplanner手动布局时序等于比较器、Block RAM和MULT18X18等资源,减小连线延迟,达到芯片性能。(4)区域约束使用区域约束限定各个模块的布局范围,指导PAR工具进行外围资源的布局布线,综合控制Interconnect的走线延迟。施加区域约束时,需要将功能相近的单元模块放在一起,同时遵循纵横方向布局控制流、水平方向布局数据流的准则进行布局。根据FPGA的芯片结构,按照上述准则进行布局规划后,能够较大提高器件性能。本设计中对各个模块进行了区域约束。通过静态时序分析工具输出的时序分析报告可以看出,经过手动布局约束和区域约束后,设计满足时序要求。2.4控制器的硬件设计控制器采用Xilinx的32位软CPU核。在Xilinx的嵌入式开发软件包EDK中添加MicroBlaze软核、代码ROM、数据RAM和外部I/O接口,如图2-3所示。图2-3MicroBlaze部件配置部件说明:(1)microblaze:CPU内核,实现了一个32位CPU。(2)lmb_bram_if_cntrl:片内存储器控制层逻辑,本设计中使用了两个实例,分别用于数据存储器和指令存储器的实现。(3)bram_block:片内块RAM,作为指令和数据存储区。(4)opb_gio:符合IBM的开放总线规范opb的标准IO口,本设计中使用了多个实例,实现CPU核与外部模块的数据交互。其中DIP_Switches用于拨码按钮的输入,LEDS用于发光二级管的输出,Push_Buttons用于按钮的输入,SpeedSet用于设定CP Pattern模块的速度输入寄存器,ControlPort控制片内关键控制信号,OC_IN来自外部过流信号的输入,Prob_Monitor作为调试的通用预留管脚。(5)opb_7segled:opb总线兼容的自定义驱动器,用于驱动7段数码管的显示。在程序中通过该驱动器能非常方便地控制数码管显示各类数字和符号。2.5控制器的C+程序设计本设计的软件程序工作流程如图2-4所示。图2-4电机控制软件流程图在EDK中开发MicroBlaze嵌入式应用程序可以使用C/C+语言,EDK采用的编译器是GCC,支持ANSI C或者标准C+语法。本设计中采用了C+语言,并对电机的控制状态建立类。通过电机的控制状态对象的操作,即可输出各种控制命令到接口模块和CP脉冲发生模块,控制电机状态;同时在main函数的主循环中监视用户的各种输入,更新电机的控制状态对象的成员变量。2.6控制器的软硬协同设计用于控制器的软件代码其可能因为控制的意图的变化而频繁改变,同时硬件电路并不需要改变。因此找到仅更新软件的执行代码,而不需要重新进行硬件综合与实现的方法是很重要的。Xilinx公司提供的Data2mem辅助工具很好地解决了这一问题。图2-5软硬件协同设计流程图本设计通过使用该辅助工具,实现了软硬件协同设计的设计方法,流程如图2-5所示。其中方框内为设计步骤,括号内为实现使用的软件工具。每次编译完成新的程序后,得到elf可执行文件,使用Data2mem辅助工具手动更新下载文件topflow.bit中的ROM区。通过这个工具,下载文件不需要重新进行十多分钟的综合实现,节省了调试时间。3步进电机的仿真建模3.1 步进电机建模为了达到系统的仿真要求,使用PLI技术用C语言对步进电机建模。根据分析,步进电机的绕组模型可以用一个电阻和一个电感表示,公式如(3-1)所示。 (3-1)在相电流较小时可以忽略反电动势,即Ea 0。图3-1步进电机绕组模型根据电路学中的三要素公式: (3-2)可以建立绕组的瞬态电路方程: (3-3)在inertia_engine.c文件中建立该瞬态电路模型,并提供接口函数供Testbench调用,从而模拟步进电机三相相电流的变化。接口函数有:(1)NetDriverLink(para1,para2,para3,para4)该函数接收Testbench传送过来的四个网络信号ghPA,ghPB,ghPAOC和ghPBOC,并绑定到程序内部局柄上,用于设定这四条网络的输出信号。(2)MotorSimulate (para1)输入参数为合成的六个IGBT桥臂的控制信号,根据6条信号的电平状态解算相电压大小,如图3-2所示。图3-2三相桥式PWM型逆变电路设直流电源中点为N,则相电压计算公式为: (3-4)函数会比对上一次输入的控制信号,如果控制信号变化则保存当前的瞬态相电流,建立新的三要素方程式;如果控制信号没有变化则继续求解先前建立的三要素方程式,更新相电流数据。如果相电流超过额定值会报告警告信息。每隔固定时间,函数会报告当前的A/B两相相电流数据,以提供参考。(3)PWM_Gen (para1)根据MotorSimulate函数更新后的相电流数据产生PWM波形,Testbench会每隔10ns调用一次本函数。函数通过当前相电流/额定相电流的比率产生占空比变化的PWM信号。3.2仿真结果通过PLI技术用C语言对步进电机建模后,经过VC编译后生成动态连接库文件inertia_engine.dll,与Modelsim联合进行仿真。部分仿真波形如图3-3所示。图3-3顶层时序仿真波形结 论本文详细探讨了开发研制的基于FPGA的步进电机正弦波可变细分驱动器的设计方法,通过对硬件和软件的设计,实现了一种低成本、高性能的步进电机驱动器,成功地将控制器和驱动器集成到单一FPGA芯片中,大大提高了系统的可靠性,降低了设计成本。控制器采用了32位CPU软核实现,可定制功能强,工作稳定。实现了从16细分到4096细分之间阶梯细分,全自动切换,无需用户干预,使用方便。特别是低速下的4096超高细分设计消除了步进电机存在的低频振荡问题。 硬件方面采用IR公司的线性电流传感器IR2175取代传统的霍尔元件加A/D转换器的方式进行反馈电流的测量,降低了成本,缩小了体积;采用IR公司的智能功率模块(IPM)进行功率驱动,简化了设计,提高了硬件调试的效率。设计使用的FPGA型号是XC3S400,通过优化设计,部分模块工作频率达到200MHz,对于PWM信号生成和电流反馈信号的精度达到14位,极大地提高了控制精度。驱动器内部实现了全数字式的PI控制器,且可在线调解KP、KI参数,便于优化控制策略。针对IR2175易受干扰的特点,在电流反馈模块中设计了软滤波环节,实践证明能够非常有效的抑制反馈电流的干扰。参考文献(略)225- -
展开阅读全文