基于FPGA的开关磁阻电机调速系统设计说明.docx
《基于FPGA的开关磁阻电机调速系统设计说明.docx》由会员分享,可在线阅读,更多相关《基于FPGA的开关磁阻电机调速系统设计说明.docx(22页珍藏版)》请在冰点文库上搜索。
基于FPGA的开关磁阻电机调速系统设计说明
基于FPGA的开关磁阻电机调速系统的设计
开关磁阻电机调速系统主要有开关磁阻电机、功率变换器、液晶显示、按键操作、位置
检测和FPGA控制器等六大部分组成,如图1所示。
功率变换器向SRM提供运转所需的能量,由蓄电池或交流电整流后得到的直流电供电;
转子位置检测器负责位置信号的检测是SRM同步运行和系统控制的重要基础。
FPGA主控
制器是系统的中枢,它综合处理速度指令速度反馈信号及电流传感器,转子位置检测器的反
馈信息电,流检测器负责检测实时电流,是SRM安全运行的保障和系统闭环的基础,以上
各部分相辅相成构成一个有机的整体。
图1开关磁阻电机调速系统
(一)硬件设计原理图
1.1、FPGA开发板原理图
FPGA开发板顶层原理图主要由JTAG接口、主板数码管、发光二极管、键盘电路VGA
电路、RS-232电路接口、电源电路模块、时钟及时钟分频电路组成。
如图2所示,FPGA开发板顶层的接口电路的分配关系。
•4>訂
图2开发板顶层原理图
1.2、FPGA电源电路
电源电路是保证整个FPGA硬件系统正常工作的核心部件。
没有电源电路系统是无法
工作的,本系统将交流电源经过整流滤波之后到到直流电压,使用三端稳压管,得到5V的
直流电压,供给FPGA硬件系统,保证开发板的正常工作。
+5V)
C116
CI15占=p
Tm
rOnF'25V
GNDlGNDl
GND]
图3FPGA电源电路
1.3、JTAG电路
JTAG是一种国际标准测试协议,主要用于芯片的内部测试,现在许多的高级器件都
支持该协议,如单片机,DSP,FPGA等器件。
标准的JTAG接口是4线:
TMS、TCK、
TDI、TDO,分别是模式选择、时钟、数据输入、数据输出线。
JTAG电路是下载程序所必须的电路,在PC机上编写好的程序,经过编译处理之后,生成相应的可执行文件,通过
1.4、功率桥模块原理图
此模块是由六个IGBT组成的多用桥,可以通过跳线连接成所需要的H桥,三相全桥,
四相不对称半桥等。
在本设计中所需要是四相不对称半桥,所以只需要连接TX21,TX11和
TX41,TX31就能组成四相不对称半桥。
此模块在本设计中有着至关重要的作用,通过PWM
脉冲功率桥的驱动模块来控制IGBT的导通与关断从而能达到让电机运转目的。
如图5所示:
图5多功能功率桥
1.5、IGBT驱动电路图
本模块是多用桥的驱动模块主要由M57962L芯片构成,如果M57962L的第十三管脚PWM输入引脚为低电平时B1和E1产生15V的电压驱使IGBT的导通,而当PWM输入为高电平时B1和E1产生-9V的电压驱使IGBT的关断。
从而能够根据PWM的占空比来调整IGBT导通或关断的时间,进而能够改变输出的电流大小。
此外M57962L还具
有过压保护功能。
如图6所示:
图6IGBT驱动电路
1.6、光电隔离原理图
光耦合器一般由三部分组成:
光的发射、光的接收及信号放大。
输入的电信号驱动发光
二极管(LED),使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步放大后输出。
这就完成了电一光一电的转换,从而起到输入和输出的隔离的作用。
由于光耦合
器输入输出间互相隔离,电信号传输具有单向性等特点,因而具有良好的电绝缘能力和抗干
扰能力。
也是实现弱电对强电的控制的重要部件,所以采用光电隔离输出PWM波可以避免
外界信号干扰FPGA,避免了电磁对FPGA程序的干扰,导致的程序跑飞现象,提高了系统的可靠性。
从而使FPGA具有良好的工作环境,正常输出PWM波等。
如图7所示,光
电隔离电路主要是由6N137芯片完成光和电的隔离。
由6N137芯片将FPGA输出的高电平是3.3V的PWM波,通过隔离得到5V的高电平输出PWM波,从而驱动IGBT的驱动芯片。
图7PWM光电隔离电路
(二)系统软件设计
2.1、NIOS处理器结构
基于SOPC的嵌入式系统结构如图8所示,主要包括嵌入式微处理器(CPU核)、定时
器(Timer)、嵌入式锁相环(PLL)、嵌入式数字信号处理器(DSP)及其他IP模块等部分。
和传统的单片机相比,基于FPGA的NIOS软核系统具有CPU外围功能模块可定制剪裁的优势,用户只需根据项目的需要,添加自己所需要的外设,即可完成产品的设计,并且集成在一片
芯片里边。
这样就可以大大缩减产品的开发周期,提高产品性能的稳定性。
图8基于SOPC的嵌入式系统结构
2.2、FPGA的NIOS处理器的定制
本设计系统主要应用到Altera公司的FPGA芯片EP3C40F484C8内部所嵌入的
NIOSii软核CPU、定时器2个、锁相环(PLL)、PIO口、RAM和ROM几个模块,其中NIOS与FPGA内部电路进行数据交换的主要是PIO口,通过PIO口可以控制PWM模
块的使能及输出,读取速度计算电路模块的计算结果,PID调节的信号的输入等。
本系统的
定制原理图如图9所示:
图9开关磁阻电机NIOS系统
2.3、锁相环倍频、分频电路
锁相环电路系统构成主要是由Altera公司的FPGA内部所包含的免费的IP核,通过ALT_PLL锁相环IP核可以很容易地实现分频和倍频的功能,只需要通过设置PII内的相关
参数即可。
此电路模块主要完成功能:
(1)NIOS软核工作所需要的100MHz的频率c0。
通过引脚PIN_G2接外部输入20MHz的晶振,经过5倍频之后得到100MHz的频率c0接入NIOS的时钟输入端,保证系统能够正常工作。
(2)PWM电路模块的工作时钟频率c1。
根据PWM模块电路工作原理,时钟的输入
做为三角波发生器的时钟,计数器计数得到三角波,再通过比较器比较得到PWM波,c1
主要是保证计数器正常计数的需要。
通过外部接入的20MHz的频率,经过20分频之后得
到1MHz的频率。
图10锁相环电路
2.4、PWM模块的设计
2.4.1、PWM波形实现原理
目前,采用FPGA产生PWM波形的方法很多,如上下计数法、存储查表法等,本文采用技术比较的方法来实现PWM波形的产生,原理如所示。
其原理是:
三角波发生器的值小于比较值时,输出低电平,高于比较值时输出高电平,如图所示。
其中,三角波作为载波,
三角波的实现是通过10位计数器IP核设置为增减计数模式,增减计数控制使能端为1时增计数,为0时是减计数。
当计数值到达计数器最大值1024时,输出一个上升沿脉冲
信号,输入D触发器,使其输出状态取反一次,从而有效地使计数器工作在增减计数模式下,实现了三角波生成的功能。
调节PWM波的占空比是电机调速的重要手段,若比较寄存器的值逐渐增大,输出脉冲的开启时间变大,PWM占空比逐渐变大,功率器件输出给电机电枢的能量增加,电机加速;若比较寄存器的值减小,输出脉冲的开启时间变小,PWM占空比逐渐变小,功率器件输出
2.4.2、PID控制原理
图13PID控制原理图
PID控制器是一种线性器,它根据给定值r(t)与实际输出构成控制偏差:
e(t)r(t)c(t)(5-1)
将此偏差的比例(P)、积分(I)和微分(D)通过线性组合构成控制量,对被控对象进行控制。
其控制规律为:
ttde(t)
U(t)Kp[e(t)1/T|0e(t)dt-](5-2)
0dt
其传递函数:
G(S)U(S)/E(S)KP(11/TISTDS)(5-3)
式中,Kp为比例系数,Ti为积分时间常数,Td为微分时间常数。
2.4.3、本设计系统PID模块的实现
本设计所采用的是增量式PID算法,所谓增量式PID是指数字控制器的输出只是控制
量的增量。
当执行机构需要的控制量是增量,而不是位置量的绝对数值时,可以使用增量式
PID控制算法进行控制。
增量式PID控制算法可以通过式(5-9)推导出。
由式(5-9)可
以得到控制器的第k—1个采样时刻的输出值为:
将式(5—8)与式(5-10)相减并整理,就可以得到增量式PID控制算法公式为:
VUkUk
Uk1
kp[e(k)
e(k1)Te(k)Tde(k)2e(k1)e(k2)]
TiT
kp[e(k)e(k1)]^e(k)kd[e(k)2e(k1)e(k2)](5-11)
增量式PID控制算法与位置式PID算法式(5-8)相比,计算量小的多,因此在实际中得到广泛的应用。
PID算法最终可以化简为UkqOekqleklq2ek2,其可以很
容易利用FPGA内部的IP核实现。
本系统利用一个减法器,实现误差值的求取,采用三个
乘法器实现公式当中的乘法,再利用一个加法器相加,最终得到计算结果,在通过一个比较
器,当计算结果大于0时输出高电平,计算结果小于0时,输出一个低电平,在NIOS当
中读取该电平的状态,根据该状态值增加或者减小PWM脉冲宽度的值,达到脉宽调制的效
果。
其中的ek、ek1及ek2的移位操作是通过乘法器的流水线时钟选择实现
的。
图14增量式PID算法电路
2.4.2、测速电路模块
两路位置信号输入,每一次跳变上升沿或下降沿都要产生一次计算过程,读取计数器的
数值即可计算出各路信号相邻两个跳变之间的标准脉冲个数N,脉冲个数的计算是在固定频
率的脉冲信号fclk下计算的。
图15位置信号示意图
根据T测速法,可得如下转速计算公式:
256~2047r/min
过的时间差,单位min;fdk是计数器的时钟频率;由于测速范围为
当n=2048r/min时,计数值N=256,贝U肛为0.2MHz,即当计数器的时钟频率选在
=1/24,fC|k=0.2MHz,则可以
0.2MHz时,系统能正常运行。
当n=256r/min
的分子可选19位全1的数据。
本系统实际设计,主要由异或门、计数器、常数值及除法器三部分构成,如下图所示。
捕获信号通过IN1,IN2引脚接入,经过XOR门之后,得到15°占空比为50%的倍频信
号。
倍频信号高电平期间使能计数器,对固定频率的时钟进行计数,低电平期间进行速度值
图16电机转速计算模块
2.5基于NIOSII软核应用软件编程
2.5.1、主程序的设计
主函数程序,主要完成系统函数的初始化,根据软件所设计的标志位控制相关模块的
运行与停止,是整个软件编写最主要的部分。
本设计系统主函数主要完成功能:
主函数流程图见下图所示:
实际系统设计主函数截图如下:
23/*****************************************
24*爾数宅称;主丽数
25*功辭:
歸育蜚数;无
26王
mtmain(void>
30{
31//alt_ir32PIOlKlt(>;//PI0口莉始北
Timer_l_rnit()匸"定吋富1初贻化
TlEBOZlnitO离时辭2初始化
PWMlnit(};"fwm湫初鮒化函数lnlt_12a64(>;"雀晶M初跆化3T
while
(1)
<
='_jxenu.andJ.ngshxhanshu();//履配界直工时函葱
ehushl^leciiAiiEhuaxlnheu^shUL():
人‘初始界tkl刷劉i曲数yejingjiemliinxiarflhihanshu():
//#品界面制示甬电ysjingjianpanhanshu\);"液晶梶盘函数caozuogongrtengxxianzejiemianhanshu{};//操作功能选择界面常数
1-dianjitjidon^hanshuO;//电机启动函数|
gftidiudusuanza“;"给罡速度透择函敷zh&ngfanzhuanqlehuantlugjiqueren门;/.'-v转训换芳机确认胡臂
-:
-LEDliushuidengO灯两魏
49>
50
50return0;
52}
图17系统主函数
2.5.2、开关磁阻电机位置检测捕获中断函数
本设计捕获功能的实现是同过NIOS的10口外设,将其设置为2输入的输入端口,此
时10口具有捕获功能,可以检测开关磁阻电机的两个位置传感器的位置信号,在NIOS软
件编程中读取捕获到状态值,来确定开关磁阻的电机A、B、C、D四相,哪一相导管,哪
一相关闭,从而给电机绕组通电,使电机转动起来。
在定制NIOS软核系统中,将CAP_PIO端口设置为同步边沿捕获,并且上升沿和下降
都捕获,这样在捕获中断函数当中读取捕获值,同时完成电机换向。
由电机结构决定,电机
每转动一圈,进24次中断。
本设计中NIOS定制中的捕获端口实际设计如下图所示:
图18捕获IO口设置为双沿同步捕获
首先进入捕获中断函数后,完成读取捕获值、换相函数、清除中断标志。
捕获功能的NIOS软件编程流程图:
本设计系统实际编程截图如下:
47/*******<**-捕获屮斷酷熨叮
staticvoidCAP_l&t*i!
rupt^v&ld*c{>nT*xtTalt_u32id}
49[—-
dir_w2wl_ft*t*=((dix«t丄I)>J//tjhu«nxi*nqhAnEf
lowALTSRAAYADQN_PIQ_EDOECAF(CAEFIPDA3E.3;•亠月亍杰寄打更
图19捕获中断函数
2.5.3、读速度中断函数
进中断
读15个速度值
速度值排序
—t
去最大最小值
©
求平均值
(结束'
流程图
在其中断函数当中,主要完成速度值的读取、存储、赋值给显示变量及其算法处理。
为
了提高速度的精度,我们取15组数据,存放在数组当中,用于求取速度的平均值。
在调试
函数过程中,出现的误差相对较大并且不稳定,为此,在对读取的15组数据当中,首先进
行一个排序处理,按照读取速度值的大小,从小到大依次排序。
然后,在处理数据的时候,去掉最小的4个数据和最大的5个数据,剩下中间的6个数据,求取平均值。
这样有效地避免了转速计算过程中可能会出现的坏值,解决了转速值不稳定的现象,大大提高了控制精
度。
2.5.4、正反转相序转换函数
正转相序和反转相序是根据电机结构而定的,电动机在出厂的时候就已经确定了的。
此
函数是电机运转的重要函数。
电机正转时:
00->10->11->01->00;
状态转换图如下图所示。
图22电机运转状态图
电机运转的原理是根据检测位置传感器的状态来确定,给电机的某相励磁绕组通电,驱使电机转动起来。
NIOS软件编程如下:
ti//**************5ft
voidzheng:
anahuanjcl«igxuzhuanhuaji(d),,5復箕和尸轻換曲註
t3{
swi
65I
ca£e0:
IOWRJkLTER2i_AV7iLtJN_PIO_EATA(PKM_SELECT_PIO_fiA£ET3)ybEaik;/,^case1:
IOWHJ^LTERjrAVULON^PIO^DArAtPWbTsELEC^TO^EA^ET2):
braak;//2case2:
IOMjQkLTEMTxWMLOlCPIO^151*1*PWLSELECOlO^BASS,1);Jstaak;//1匸嚴冃3:
iowr*ltem3™L0IC5IOZdat*{fwm2selecOio^8*5®01Jbteak;//0case4:
IOWR~ALTERJ^AVSLON~Pia~DATA{FTiy~5ELEC^FIO~BAGErl):
bteak;//1S:
IOWR-MTEEUrAVMON^^10^1^1*(ETO^SELEC^ICLDAGE:
b上也3k!
/;3c&sbfi:
iownj^lteeuTavalon^510!
11*1*(PWbTsELECT^pioTbxse7oj;br*4k:
打qcaso?
:
IOWRJLLTEmTaVALON^PIO^DiATAtFTiy2£ELECOlOXCEt2);brfl3k;//2default1工5ffl(j5TMU匚哲<CdATA{PW匸EtLPJ(CBM瓦0);bnak;//关闭FVtif■出
图23正反转相序转换函数
2.5.5、制动相序转换函数
电动机的制动方式主要有机械制动和电气制动。
机械制动是通过机械装置来卡住电机主轴使其减速,如电磁抱闸、电磁离合器等电磁铁制动。
而在实际应用中多采用电气制动,常用的电气制动方式有:
(1)短接制动:
制动时将电机的绕组短接,利用绕组自身的电阻消耗能量。
由于绕组的电阻较小,耗能很快,有一定的危险性,可能烧毁电机。
(2)反接制动:
直流电机制动,将电机的电源正负极反接,改变电枢电流的方向,这样转矩的方向也改变,使得转速与转矩的方向相反。
交流电机制动采用改变相序的方法产生
反向转矩,原理类似。
反接制动制动力强,制动迅速,控制电路简单,设备投资少,但制动
准确性差,制动过程中冲击力强烈,易损坏传动部件。
(3)能耗制动:
制动时在电机的绕组中串接电阻,电动机相当于发电机,将拥有的能
量转换成电能消耗在所串接电阻上。
这种方法在各种电机制动中广泛应用,变频控制也用到
了。
(4)能量回馈制动:
当采用有源逆变技术控制电机时,将制动时再生电能逆变为与电网同频率同相位的交流电回送电网,并将电能消耗在电网上从而实现制动。
77/?
*****************制功相序轉換函敷
voidahidongKiangxujhuftahuu(void)/打J別Hl申罠換苗倉
awlteH
8t{__
OhIOWB_RLTTKA_RVA1ON_P:
O_DATL(FMM_5ELECT_FSE.O)rbrtik;/'T'-.T=详了霏#CAiie1:
JQWFJ^TEFA10~DATAtP>Ud~SEL£CT-iIQ~BASE,1Jrbn*k;/''TZ,TjT7Tcaje2:
TQBF玉TEHiNvXL疵FI'breflk;/''Tl.T4计「悼:
;T:
3:
IOWB_BiTER*_AVXLaN_FID_DATA(PW_SELECT_FIO_BASE,3):
fare;/'T?
PC计『讪桃
<:
:
IC10^^™(F^2£ELZctZpE.2)r2,T^ix
ca^e5.;I心竝庆tF>Im[$ELECT^?
.0};break;/T2tT弓百t'W:
-l
CA5e51ieWR~kLTtRA_AVXLaH2PId2datjl(F皿亡IC_Ht£E3];4士亡Sk;/yTlT吧m它严耳违
CASC7ilOWR^X1™*__KVKLON_PttTjfATA(fTM^SELEC^EIO_BftSErl);bxflik;/'T1tT4'芒子导址
defadlt:
工tWE^j^TERAHvtL远BIO^tfATA(F>IM[en_F1:
o[b2LS云f0);fcreak:
/■F-X[.L'fli;-;
91}""~~"""
52}
图24制动转换函数
2.5.6、PID调节PWM脉冲宽度的实现
由于本系统在设计过程中,PID的计算过程是一个单独搭建的电路模块,计算得到最终
结果值有正负之分,通过一个比较器和0进行比较,根据比较计算结果,如果计算值大于0输出高电平,若小于0则输出低电平。
而在NIOS软件编写当中,只需要根据读到的电平状态,增加或减小PWM的数值,从而实现脉冲宽度的调制,达到对电机转速自动控制的目
的。
在NIOS实际软件编程当中,在程序编写过程中读取PID计算的结果,改变PWM的值。
如图所示:
】4//STDi|节的It
''voidFIDtlaojithtnahu(void)
1呵'
PID_fciiaaznibiaiiliaiiq=IQHD_ilTEHl_aMtDOW_PrD_DMia1TID_HESU1T_PID_EA£E)'
15Eif(diu)Uuo92hibiuzbx=axQ1}4£(zfiugibuuyundc£^i*ozM.=i))\
II(iaiM^iksngxhnQ)4£i;aMhufljiyu&dcng!
biaoiiii"l:
]i\
At(Ehidnngblatwhl^MI).Jyj-.}:
J
21(
if410M_JCrTE3I0__B3UE)=1)'11FTDl'iffTft.打勺1一计鼻紬TH'At'T0
pwta-«2f~_""为D—PlOitW^^ffid''于。
elEGifILCREALTERASV1LCNFIODATA.(EIDRESULTTICBASE=0:
■■■■■••■■
If
_.pMU"590;
pfWFTsD;
ICWH_JlL7ER?
i^hVAMffl_FT0_DA7R(PKW_CCKFASZ_PTO_SA3E.pflD:
:
*、、A土悴供
图25PWM调节函数
(三)实物设计图
IGBT功率桥
电机转速动态显示
IGBT驱动电路FPGA主控制板