集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 698|回复: 0

基于FPGA的永磁同步电机控制器设计

[复制链接]
羽蒙 发表于 2014-8-12 11:13:30 | 显示全部楼层 |阅读模式
摘要:提出一种基于FPGA的永磁同步电机控制器的设计方案,该设计可应用于具有高动态性能要求的永磁同步电机伺服控制系统。为提高伺服控制系统的实时性,简化电路及节省成本,该系统设计采用Ahera公司生产的CycloneIII EP3C25Q240C8型FPGA器件实现电机控制器。嵌入NiosⅡCPU软核配合片内硬件乘法器及可编程逻辑门阵列,实现软硬件协同工作。通过QuartusⅡ软件自带的SignalTaplI嵌入式逻辑分析仪进行板上调试验证,得到带有死区输出的PWM波形。该PWM波形可用于电机驱动。
关键词:同步电机控制;FPGA;NiosII;SignalTaplI


1 引言
国内普遍采用TM320系列的DSP器件作为永磁同步电机控制系统的主控制器,因CPU负载过重导致系统实时性降低的问题日益显著。采用具有并行工作特性的FPGA器件作为主控制器能够提高系统实时性。因此,这里给出一种基于FPGA的永磁同步电机控制器设计方案。
FPGA器件内嵌NiosⅡCPU软核的SoPC是Altera公司首创的SoC解决方案。将SoPC应用到电机控制中,是当前的研究热点。FPGA依靠硬件逻辑门工作,NiosⅡ处理器依靠执行软件程序工作。而在电机控制中实现软硬件协同工作则是设计的难点和创新之处。本设计需要特别注意软硬件协同工作的时序控制。软硬件之间信号的交换需按严格时序进行控制。

2 片上系统规划
片上系统功能总体规划为电机硬件驱动和NiosⅡ系统模块两部分,前者主要完成速度外环,电流内环的双闭环运算;而后者主要完成按键输入、LED数码管显示、电机驱动器参数设置和传输以及上位机通信。

3 系统硬件设计
3.1 NioslI系统模块
3.1.1 Nios lI系统模块的设计
在QuaauslI的SoPC builder中调出nioslI软核。调用4个用于输出的PIO核,挂接到Avalon总线上,作为信号输出I/O端口,这4个PIO核分别是start(启动电机信号),Data(16位,电机参数值),ec(8位,参数寄存器使能信号),choice(3位,多路选择信号)。调用6个作为输入的PIO核用以按键输入。设置中断掩码寄存器为中断有效,边沿捕获寄存器为上升沿检测。按键经FPGA引脚,用户设计硬件防抖动后,产生一个上升沿信号,启动NioslI处理器中断,执行相应中断功能。调用异步串口UART内核,实现与上位机通信,设置其波特率同定,UART通过中断请求实现数据通信功能。图1和图2分别给出Niosll系统结构框图和其电路原理图。

3.1.2 NiosⅡ系统软件设计
  该系统设计的软件程序主要在Nios IED软件中编辑调试,实现按键中断程序,按键如下:reset(复位),start/stop(启动和暂停),choose(参数选择),increase(参数值的增量),de-crease(参数值的减量),transmit(参数的传输);并实现串口通信中断程序。图3为NiosⅡ处理器软件执行流程。




  这里只给出 stait按键中断软件程序代码,而choose,in-crease,decrease,transmit程序与之相同。
int main(void)
{ alL_irq_register(start_IRQ,start_BASE,start_ISR);//按键
start的中断注册
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(start_BASE,
0x01);//开启中断使能;
IOWR_ALTERA_AVALON_PIO_EDGE_CA(start_BASE,
0x00)://清除捕获寄存器;
//只给出start变量(用于启动电机)初始化,并写入输出
寄存器:其他变量初始化相同;
Unsigned start=0;
. IOWR_ALTERA_AVALON_PIO_data(start_BASE,start);
//变量写入输出PIO寄存器;
While()
}
3.2 电机硬件驱动模块
  电机硬件驱动模块实现clark,park,i_park坐标变换,PI调节器,SVPWM产生器,转速检测等硬件模块等双闭环结构。由于上述各个模块设计比较简单常见,因此,这里主要介绍SoPC时序控制部分。Reset按键为全局复位。复位后系统软件从主程序入口开始执行;而此时硬件驱动模块中的两个状态计数器为“-1”。这两个计数器计数时间对应50μs和1 ms,分别对应于电流环和速度环的采样时间。一旦检测到来自NiosⅡ处理器的start高电平信号,该信号作为计数使能信号,这两个计数器从“0”开始计数,计数为“0”时产生一个高电平脉冲信号,电流环计数器脉冲用于锁存SVPWM中的Ta,Tb,Tc(三相占空比信号),并启动A/D转换。速度环的
计数器脉冲锁存一个反馈速度信号,然后计数器循环计数。
4 仿真结果
  该系统设计对电机驱动部分进行开环验证。给定uq(旋转坐标中的力矩分量)为2 048(16位Q12的定点),ud(旋转坐标中的励磁分量)为0。正余弦两个查找表各有720个地址,相邻地址相差0.5°。每相隔50μs查找地址增量为l,即电机每隔50μs转过0.5°,约为1 666 r/m。在QuartusⅡ中进行时序仿真可得到如图4和图5所示的波形。




  由图4可知,A相上桥臂在每个PWM周期的占空比不同,具有从增到减,从减到增的规律;从图5可知,器件实际工作时,上下桥臂死区时间为2μs,而且死区时间可采用NiosⅡ处理器设置。由于有死区时间的控制,该PWM可接入电机进行开环调试。

5 结论
  本设计的SoPC器件已产生PWM波,用于开环验证,为后续闭环验证提供条件。FPGA在高速数字信号处理领域逐显优越,且SoC已成为集成电路发展的主流,而SoPC是SoC一种灵活的解决方案。其具有软硬件协同工作,合理分配软硬件功能等特点,从而能够快速灵活实现系统设计。SoPC控制电机可提高电机动态响应,缩小系统面积,节省成本。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-26 13:44 , Processed in 0.726069 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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