江南大学
物联网工程学院
课程设计报告
科目:DSP原理及应用
课题:基于DSP的三相SVPWM变频调速系统的设计 班级: 姓名: 学号: 指导老师:
目录
1.引言
2.设计目的与要求
3.硬件设计 3.1主要器件介绍 3.2电路模块介绍
4.电压空间矢量脉宽调制技术(SVPWM)的基本原理
5.软件设计
6.感想总结
一.引言
现代交流变频调速系统以其优良的调速和启、制动性能广泛应用于工矿企业中。传统变频器所采用的正弦脉宽调制技术( SPWM) 着眼于使变频器的输出电压正弦化,而未考虑输出电流波形 ,其开关频率高、 开关损耗大、 装置效率低。电压空间矢量脉宽调制(SVPWM)从交流电动机的工作特点出发,将电动机与变频器看作一个整体 ,着眼于获得空间圆形旋转磁场 ,从而产生恒定的电磁转矩。SVPWM比 SPWM调制度高、 开关模式简单、 便于计算机实时控制,可提高直流电源电压利用率 15 %,并具有转矩脉动小、 噪声低等优点,获得了广泛应用。TMS320F2812 是美国德州仪器公司( TI)推出的面向电动机全数字控制领域的高性能 32 位定点数字信号处理器(DSP) 。该DSP具有 150 MIPS的高速处理速度和面向电动机控制的专用外围设备 ,模数转换和通信能力强、 成本低、 可靠性高 ,完全满足工业实时控制需要。本文在详细分析 SVPWM 原理的基础上 ,选用DSP为主控芯片设计了异步电动机 SVPWM 变频调速系统。仿真结果表明 ,该变频调速系统启动快、超调小、 稳态转矩脉动小、 停车迅速 ,具有良好的静、动态性能。
二.设计目的与要求
要求:1)选用SVPWM技术。 2)转速设定值的输入功能。 3)转速测量值输出显示功能。 目的:
能够正确地应用运动控制系统,培养解决工业控制、工业检测等领域具体问题的能力;通过课程设计,熟悉运动控制系统应用系统开发、研制的过程,软硬件设计的工作方法、工作内容、工作步骤;对学生进行基本技能训练,例如组成系统、编程、高度、绘图等,使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。
近年来用于感应电机控制的空间矢量理论被引入到逆变器及其控制中,形成和发展了SVPWM 控制思想。其原理就是利用逆变器各桥臂开关控制信号的不同组合, 使逆变器的输出电压空间矢量的运行轨迹尽可能接近圆形。SVPWM 同时控制三相电流的状态 , 以逼近电机气隙的理想圆形旋转磁场轨迹为目的, 不
仅使得电机脉动降低,电流波形畸变减小, 能够提高功率因数 , 降低损耗而且与常规正弦脉宽调制SPWM技术相比, 直流电压利用率有很大提高,并更易于数字化实现。随着微机控制技术的发展,微控制器的实时处理能力和运算能力不断增强,使得数字化PWM有了更为广阔的应用前景。TMS320LF2407DSP控制器是TI公司专门为交流电机控制而推出的数字信号处理器,尤其它内嵌的空间矢量状态机,更是专门为空间矢量脉宽调制技术而设计。这将大大减少DSP的处理时间,很容易实现交流电机的全数字化控制系统。
SVPWM以其直流电压利用率高、易于数字化实现等优点,在各种变流器中逐渐得到了广泛的应用。在现代高性能电机调速控制系统中,通常将矢量控制与SVPWM相结合以获得高精度的运行特性. 它将逆变器和电动机看成一个整体, 建立逆变器开关模式和电机电压空间矢量的内在联系, 通过控制逆变器的开关模式, 使电机的定子电压空间矢量沿圆形轨迹运动。在详细分析SVPWM基本原理的基础上,介绍了一种不同于传统算法的SVPWM实现方法。 传统算法是将相关矢量分解到α,β轴后,根据等效关系求取各矢量的作用时间。而此法是用α- β复平面中的状态开关矢量直接进行相关矢量作用时间的求取。该算法应用于以TMS320LF2407A为核心控制器的感应电机变频调速系统中,实验结果表明,逆变器直流母线电压利用率高,输出电流谐波小,电机运行性能优越。
三.硬件设计
系统结构框图
1+3.3V23456U9+3.3VRSBV+3.3VTMSD06TdDVdoD4TCKREADYMP/MC10uFU19PWM3U12NTLP559C180.1uFR3220KN19PP20C3TCLKINB/IOPDF5IOPFS6RD2D1VdXTAL1/CLKIdNVssC17TLP521D0XTVsLs2AoBOOET_ENAN_X14F4BIO/IOPC1VFAULTVssoPDPINTBTDIVssaVrefchaiVcADCVIrNef0lo8ADCIN00ADCIN09ADCIN01ADCIN10U11D5144143142141140139138137136135134133132131130129128127126125124123122121120119118117116115114113112111110109TCLKINA/IOPB7PWM12/IOPE6PWM6/IOPB3A13PWM5/IOPB2PWVssMo11/IOPE5VddoPWM4/IOPB1A12A11PWM3/IOPB0A10PWM120/IPPA74VWssMP/OIOEVddPWM1/IOPA6A9AW8M9/IOPE3PPM8/IOPE2VWcA7cpTWPP1M7/IOPE1A6TP2CP6/IOPF1CAAA5NRX/IOPC7VssoCAVddNoTX/IOPC6A4R3420KTLP559C230.1uFPWM4U16R3520KC240.1uFPWM6U17R3620KTLP521XFAULTTLP559P3P2+3.3V+3.3VP1PM66PWPWM5PWM4P5PWM3PWM2PWM1P4A373839404142434445464748495051525354555657585960616263646566676869707172S2TLP559+5TitleA3器件介绍:
UFAULTR37100KC2622PFY1C2722PFC1510uFPWM1RSS3R3120K0.1uFOVH
TLP521 复位电路CRYSTALU10TLP559C16+C254.7uFU13WFAULTTLP521C1910uFPWM5TMS320LF24071Vupc2UFo3Up4Vup15Vvpc6Vfo7Vp8Vvp19Vwpc10Wfo11Wp12Vwp113Vnc14Vn115Un16Vn17Wn18FoR3320KC200.1uFU14TLP55933uFC2115V123+3.3V456PDPINTA78910111213141516171819202122232425262728+3.3V2930313233343536TRSTTDIRB/IOPF4VssoVddoD7T4PWM/T4CMP/IOPF3PDPINTAT3PWM/T3CMP/IOPF2D8PLLF2PLLFPLLVccaD9TDIRA/IOPB6D10TIPWM/T1CMP/IOPB4D11T2PWM/T2CMP/IOPB5W/R/IOPC0D12XINT2/ADCSOC/IOPD0D13XINT1/IOPA2D14SCITXD/IOPA0SCIRXD/IOPA1D15VssVddSPISIMO/IOPC2A15SPISOM/IOPC3SPISTE/IOPC5A14SPICLK/IOPC4TMS2ADCIN11ADCIN02ADCIN12ADCIN03ADCIN13ADCIN04ADCIN05ADCIN14ADCIN06ADCIN07ADCIN15VIS OESTRBVddoVssoRDR/WEMU1/OFFEMU0WECAP4/QEP3/IOPE7DSVddVssPSCAP1/QEP1/IOPA3ISCAP5/QEP4/IOPF0A0CAP2/QEP2/IOPA4A1VddoVssoCAP3/IOPA5A2CLKOUT/IOPE0C220.1uFPWM2U15TLP559+3.3V DDCJ5U21321V22W23CON5PM10CSJ060U V W三点为逆变器系统原理图
IPM接口电路U18234三相输出端接三相异步电动机B1081071061051041031021011009998979695+3.3V94939291908988P78786+3.3V858483828180797877+3.3V76757473P0BU8ASizeBDate:File:5NumberRevision17-Jun-2010H:\\16号毕业设计原理图1修改.DDBSheet of Drawn By:611.TMS320LF2407A
TMS320LF2407A是TI公司推出的一款定点DSP控制器,它采用了高性能静态CMOS技术,使得供电电压降为3.3V,减小了控制器的功耗;40MIPS的执行速度使得指令周期缩短到25ns(40MHz),从而提高了控制器的实时控制能力;集成了32K字的闪存(可加密)、2.5K的RAM、500ns转换时间的A/D转换器,片上事件管理器提供了可以满足各种电机的PWM接口和I/O功能,此外还提供了适用于工业控制领域的一些特殊功能,如看门狗电路、SPI、SCI和CAN控制器等,从而使它可广泛应用于工业控制领域。然而,在实际的应用系统中,还需要对TMS320LF2407A进行必要的外围扩展,譬如程序区和数据区的扩展、CAN的驱动等,以满足整个应用系统的实际需要。TMs320LF2407A的PDPINT引脚连接驱动器IR2132的FAULT引脚,接收它输出的制动信号。整个驱动电路只需要外接+12V电源电压和伺服电机所需要的电源(本设计用的是60V)。整个驱动电路的保护功能由驱动器IR2132来实现。驱动电路的保护电路主要有两部分:自保护电路和过电流欠电压保护电路。外围电路中的电流检测电阻通过引脚Vso的设定值与流入CA一引脚的电流在反馈电阻上产生的电压相比较,如果超出设定或调整的Vso参考值,IR2132驱动器的内部电流保护电路启动,关断输出通道,实现电流保护的作用,驱动电路上的D4点亮。IR2132芯|片内部也有硬件保护电路。如果负载或驱动电路出现过电流或欠电压的情况,IR2132驱动器的FAULT引脚会输出制动信号,通常这个输出信号连接到DSP的PDPINT引脚上,拉低PDPINT引脚的输入电平,关断DSP的所以输出通道并置为高阻态,实现整个控制电路的保护作用。
2.74HV273锁存器
74HC273是一款高速CMOS器件,74HC273引脚兼容低功耗肖特基TTL(LSTTL)系列。74HC273具有八路边沿触发,D 型触发器,带独立的D输入和Q输出。74HC273的公共时钟(CP)和主复位(MR)端可同时读取和复位(清零)所有触发器。每个D输入的状态将在时钟脉冲上升沿之前的一段就绪时间内被传输到触发器对应的输出(Qn)上。一旦MR输入电平为低,则所有输出将被强制置为低,而不依赖于时钟或者数据输入。74HC273适用于要求原码输出或者所有存储元件共用时钟和主复位的应用。
3.74HC138译码器
74HC138是一款高速CMOS器件,74HC138引脚兼容低功耗肖特基TTL(LSTTL)系列。74HC138译码器可接受3位二进制加权地址输入(A0, A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。74HC138特有3个使能输入端:两个低有效(E1和E2)和一个高有效(E3)。除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高。利用这种复合使能特性,仅需4片74HC138芯片和1个反相器,即可轻松实现并行扩展,组合成为一个1-32(5线到32线)译码器。任选一个低有效使能输入端作为数据输入,而把其余的使能输入端作为选通端,则74HC138亦可充当一个8输出多路分配器,未使用的使能输入端必须保持绑定在各自合适的高有效或低有效状态。
4.IR2132驱动芯片
IR2132可以用来驱动工作在母线电压不高于600 V的电路中的功率MOS门器件,其可输出的最大正向峰值驱动电流为250 mA,而反向峰值驱动电流为500 mA。它内部设计有过流、过压及欠压保护、封锁和指示网络,使用户可方便地用来保护被驱动的MOS门功率管,加之内部自举技术的巧妙运用使其可以用于高压系
统,它还可以对同一桥臂上下两个功率器件的门极驱动信号产生O.8μs互锁延时时间。它自身工作和电源电压的范围较宽(3~20 V),在它的内部还设计有与被驱动的功率器件所通过的电流成线性关系的电流放大器,电路设计还保证了内部的3个通道的高压侧驱动器和低压侧驱动器可单独使用,亦可只用其内部的3个低压侧驱动器,并且输入信号与TTL及CMOS电平兼容。IR2132管脚如图1所示。VBl~VB3是悬浮电源接地端,通过自举电容为3个上桥臂功率管的驱动器提供内部悬浮电源,VSl~VS3是其对应的悬浮电源地端。HINl~HIN3,LINl~LIN3是逆变器上桥臂和下桥臂的驱动信号输入端,低电平有效。ITRIP是过流信号检测输入端,可通过输入电流信号来完成过流或直通保护。 CA一,CA0,VSO是内部放大器的反相端、输出端和同相端,可用来完成电流信号检测。H01~H03,L01~L03是逆变器上下桥臂功率开关器件驱动信号输出端。FAULT是过流、直通短路、过压、欠压保护输出端,该端提供一个故障保护的指示信号。它在芯片内部是开路输出端,低电平有效。VCC,VSS是芯片供电电源连接端,VCC接正电源,而VSS接电源地。IR2132的内部结构,它的内部集成有1个电流比较器(Current Comparator)、1个电流放大器(Current Amp)、1个自身工作电源欠电压检测器(Under Voltage Detector)、1个故障处理单元(Fault Logic)及1个清除封锁逻辑单元(Clear Logic)。除上述外,它内部还集成有3个输入信号处理器(Input Signal Generator)、2个脉冲处理和电平移位器(Pulse Generator Level Shifter)、3个上桥臂侧功率管驱动信号锁存器(Latch)、3个上桥臂侧功率管驱动信号与欠压检测器(Under Voltage Detector)及6个低输出阻抗MOS功率管驱动器(Driver)和1个或门电路。正常工作时,输入的6路驱动信号经输入信号处理器处理后变为6路输出脉冲,驱动下桥臂功率管的信号L1~L3经输出驱动器功放后,直接送往被驱动功率器件。而驱动上桥臂功率管的信号H1~H3先经集成于IR2132内部的3个脉冲处理器和电平移位器中的自举电路进行电位变换,变为3路电位悬浮的驱动脉冲,再经对应的3路输出锁存器锁存并经严格的驱动脉冲与否检验之后,送到输出驱动器进行功放后才加到被驱动的功率管。一旦外电流发生过流或直通,即电流检测单元送来的信号高于0.5 V时,则IR2132内部的电流比较器迅速翻转,促使故障逻辑单元输出低电平,一则封锁3路输入脉冲信号处理器的输出,使IR2132的输出全为低电平,保护功率管;同时IR2132的FAULT脚给出故障指示。IR2132驱动上桥臂功率管的自举电源电压不足时,则该电路的驱动信号检测器迅速动作,封锁该路输出,避免功率器件因驱动信号不足而损坏。当逆变器同一桥臂上2个功率器件的输入信号同时为高电平,则IR2132输出的2路门极驱动信号全为低电平,从而可靠地避免桥臂直通现象发生。
电路模块介绍:
硬件设计:DSP接口电路、功率驱动电路、三相逆变电路、逻辑控制电路
及保护电路等组成。电流信号由DSP的A/D 转换接口输人。DSP根据控制指令、参考速度指令及反馈转速输出SVPWM脉冲信号, 驱动IGBT构成的桥式逆变电路控制电机。功率驱动电路采用光偶驱动并加硬件互锁,在硬件上防止上下桥臂发生直通现象。三相逆变电路采用由IGBT构成的三相全桥电路。为减少由于IGBT在开关过程中对其他管子的干扰,在电路中加人缓冲电路,以使IGBT的开关强度降低。同时在软件中降低PWM的开关频率, 增加死区宽度。 1.DSP接口电路
由于DSP内部包含有串行外设接口SPI模块,SPI 是同步串行外围接口,它允许1~8 位的串行比特流以特定的传输速率移进移出芯片,主要用于与各种外围器件进行通讯,这些外围器件可以是简单的TTL移位寄存器或是复杂的LCD显示驱动器或A/D、D/A转换子系统。SPI 接口很容易与许多厂家的各种外围器件直接相连。其中,MAX5120/5121是适合于SPI通信的D/A转换芯片。它是Maxim 公司生产的12位,具有两级输入缓冲区:输入寄存器和DAC寄存器。SPI总线上接收到的数据位首先进入到16位的移位寄存器,然后进入输入寄存器和DAC寄存器进行D/A转换。MAX5120/5121与DSP的SPI接口连接进行DAC转换的电路如图3所示,其中DSP设置为主机工作模式,MAX5120/5121设置为从机模式。工作时,通过SCLK引脚接收外来时钟驱动,在此时钟下,从DIN引脚接收串行数据到移位寄存器中,并进行D/A转换,在OUT引脚输出模拟信号。图中,当开关S闭合到S1端时,为双极性输出;当开关S闭合到S2端时,为单极性输出。 DSP对并行D/A接口芯片的访问形式是只写不读,下面介绍DSP与AD7837的接口方法。如图4所示电路,AD7837为12位D/A转换器,对每个内部转换器(A或B)来讲,完成一次D/A转换操作的过程是:首先将待转换的低8位数据送到AD7837,然后再写高4位,最后通过I/O引脚输出一个转换锁存
信号到AD7837的引脚,从而启动D/A转换。地址信号A0和A1用来决定AD7837中的A或B转换器中的哪一个。
2.功率驱动电路
智能功率模块(IPM)是将大功率开关器件和驱动电路、保护电路、检测电路等集成在同一个模块内的一种电力集成电路[2]。它采用低饱和压降,高开关速度,内设低损耗电流传感器的绝缘栅双极晶体管(IGBT)功率器件。所设计系统中的功率开关器件采用以IGBT 为核心的IPM,型号为PM10CSJ060。采用单电源逻辑电压输入优化的栅极驱动,实行实时逻辑栅区(RTC)控制模式。采用严密的时序逻辑监控保护,可防止过电流、短路、过热及欠电压等故障发生。光耦合输入,带RC 信号干扰抑制和电源干扰抑制。IPM内置各种保护功能,只要有一个保护电路起作用,IGBT 的门极驱动电路即可关闭,同时产生一个故障信号。
3.三相逆变电路
三相交流负载需要三相逆变器,在三相逆变电路中,应用最广的是三相桥式逆变电路。采用IGBT作为可控元件的电压型三相逆变电路,可以看出电路由三个半桥组成。电压型三相逆变桥的基本工作方式与单相逆变桥相同,也是1800导电方式,即每个桥臂的导电角度为1800,同一相(同一半桥)上下两个臂交替导电,各相开始导电的时间依次相差1800。这样,在任一瞬间,将有三个桥臂同时导通。可能是上面一个臂,下面两个臂,也可能是上面两个臂下面一个臂同时导通。因为每次换流都是在同一相上下两个桥臂之间进行的,因此,也被称为纵向换流。用T记为周期,只要注意三相之间互隔T/3(T是周期)就可以了,即B相比A相滞后T/3,C相又比B相滞后T/3。具体的导通顺序如下: 第1个T/6:V1,V6,V5导通,V4,V3,V2截至: 第2个T/6:Vl,V6,V2导通,V4。V3,V5截至: 第3个T/6:V1,V3,V2导通,V4,V6,V5截至: 第4个T/6:V4,V3,V2导通,V1,V6,V5截至: 第5个T/6:V4,V3,V5导通,V1,V6,V2截至: 第6个T/6:V4,V6,V5导通,V1,V3,V2截至。
4.逻辑控制电路
5.保护电路
过压保护(OVP)器件数据资料中提供的典型电路可以满足大多数应用的需求。然而,有些应用需要对基本电路进行适当修改。本文讨论了一种应用:增大电路的最大输入电压,在过压情况发生时利用输出电容存储能量。
如果再使用80C196MC的内部A/D转换器可快速完成电流电压的检测和转换,从而节省了外围A/D转换硬件电路。PTS提供了5种操作模式:一次传送模式、块传送模式、A/D模式、HIS模式、HSO模式。本文采用了PTS-A/D模式。其工作过程为:
A/D转换的启动采用中断方式,即由软件定时器按采样周期定时,产生中断后进入中断子程序。A/D转换结束后影射到PTS通道,可以使PTS工作于A/D模式。在这种模式下,第一次A/D转换完成后将自动启动设定的下次A/D转换,并把先前结果放到存储器内的表格中,而且这种模式还可设定循环次数,完成若干次A/D通道的转换,最后进入PTS中断周期可执行PTS中断子程序。
四.电压空间矢量脉宽调制技术(SVPWM)的原理
SVPWM是空间矢量脉宽调制(Space Vector Pulse Width Modulation)的简称。我们期望变频器输出的电压波形是纯粹的正弦波形,但就目前的技术,还不能制造功率大、体积小、输出波形如同正弦波发生器那样标准的可变频变压的逆变器。目前很容易实现的一种方法是:逆变器的输出波形是一系列等幅不等宽的矩形脉冲波形,这些波形与正弦波等效,等效的原则是每一区间的面积相等。 SVPWM是近年发展的一种比较新颖的控制方法,是由三相功率逆变器的六个功率开关元件组成的特定开关模式产生的脉宽调制波,能够使输出电流波形尽 可能接近于理想的正弦波形。空间电压矢量PWM与传统的正弦PWM不同,它是从三相输出电压的整体效果出发,着眼于如何使电机获得理想圆形磁链轨迹。
SVPWM的主要思想是以三相对称正弦波电压供电时三相对称电动机定子理想磁链圆为参考标准,以三相逆变器不同开关模式作适当的切换,从而形成PWM波,以所形成的实际磁链矢量来追踪其准确磁链圆。SVPWM 的理论基础是平均值等效原理,即在一个开关周期内通过对基本电压矢量加以组合,使其平均值与给定电压矢量相等。在某个时刻,电压矢量旋转到某个区域中,可由组成这个区域的两个相邻的非零矢量和零矢量在时间上的不同组合来得到。两个矢量的作用时间在一个采样周期内分多次施加,从而控制各个电压矢量的作用时间,使电压空间矢量接近按圆轨迹旋转,通过逆变器的不同开关状态所产生的实际磁通去逼近理想磁通圆,并由两者的比较结果来决定逆变器的开关状态,从而形成PWM 波形。传统的SPWM方法从电源的角度出发,以生成一个可调频调压的正弦波电源,而SVPWM方法将逆变系统和异步电机看作一个整体来考虑,模型比较简单,也便于微处理器的实时控制。电压空间矢量脉宽调制方法(SVPWM)为交流电机的一种
控制方法,电压空间矢量PWM方法和普通的正弦PWM方法不同,它是从电机的角度出发,把电机和逆变器看作一个整体考虑,不简单从得到电压电流正弦出发,着眼于如何使电机获得幅值恒定的圆形旋转磁场,即正弦磁通。SVPWM与SPWM的原理和来源有很大不同,但是他们确实殊途同归的。SPWM由三角波与正弦波调制而成,而SVPWM却可以看作由三角波与有一定三次谐波含量的正弦基波调制而成,这点可以从数学上证明。
五.软件设计
// 该程序用于简单的SVPWM演示,产生3相互差120度电角度的正弦交流电压 //此程序实时计算cmp1和cmp2的值 //#include
\"register.h\"
#include \"f2407_c.h\" #include \"float.h\" #include \"math.h\"
float ualfa[200],ubeta[200]; // 存储电压矢量Uout的(α,β)轴分量ualfa、ubeta的数组 int
sector[200]; PI2 DETA
// 定义存储扇区数的数组
#define #define 差值 #define
2 * 3.1415926 // 定义2π的值
PI2/200 // 定义相临两个Uout之间的电角度的
INIA 3.1415926/180 // 定义Uout的初始电角度
#define TP 2400 // t1的周期寄存器的值,其值等于SVPWM调制周期T的一半, 一定,故改变此值
频率
// 因为在该程序中2π电角度内Uout的点数
// 可以改变输出的3相正弦交流电压的
#define KP 0.7 // 定义Uout的标幺值,KP的值在0和1之间,改变此值可以
// 改变逆变桥输出电压的幅值
// 屏蔽中断子程序 void inline disable() {
asm(\" setc INTM\"); }
// 系统初始化子程序 void initial() { *IFR=0x0FFFF; *IMR=0x0000;
*SCSR1=0x81FE;
*WDCR=0x00E8; *T1PR=TP;
/2
*T1CON=0x0802; 生对称的PWM, 就停止运行 *ACTRA=0x0666;
*COMCONA=0x9200; *EVAIMRA=0x0000; *T1CNT=0x0000;
*EVAIFRA=0x0FFFF;
*MCRA=*MCRA|0x0fc0; 0x007E
// 清除所有的中断标志 // 屏蔽所有中断 // CLKIN=6M,CLKOUT=24M
// 不使能看门狗
// 通用定时器1的周期=PWM的周期/指令周期
// 设置通用定时器1为连续增减模式,以产
// 且为了便于调试,使仿真一挂起时时钟
// PWM1、3、5高有效,PWM2、4、6低有效
// 使能PWM输出和比较动作 // 禁止EVB和时钟及比较有关的中断
// T1的计数器清0
// 清除EVB相应的中断标志
// PWM1-PWM6输出使能,使能PWM功能
WSGR=0x0000; // 不使能所有的等待状态
}
// 根据Uout的标幺值KP计算ualfa,ubeta子程序 void calu() { int i;
for(i=0;i<200;i++) { ualfa[i]=KP * cos(INIA+i * DETA); ubeta[i]=KP * sin(INIA+i * DETA);
}
}
// 各点的扇区确定子程序 void SECTOR() { int i,a,b,c;
float vref1,vref2,vref3; for(i=0;i<200;i++) { vref1=ubeta[i];
vref2=(-ubeta[i]+ualfa[i] * 1.732051)/2; vref3=(-ubeta[i]-ualfa[i] * 1.732051)/2; 要的3个参考量
// 计算确定扇区数需 // vref1、vref2、vref3 }
// 主程序 main() {
int anticlk[6]={0x1666,0x3666,0x2666,0x6666,0x4666,0x5666}; }
if(vref1>0) else
a=0;
b=1; a=1;
if(vref2>0) else
b=0;
if(vref3>0) else
c=0;
c=1;
a=4 * c+2 * b+a; switch(a){
case 1:sector[i]=1;break; case 2:sector[i]=5;break; case 3:sector[i]=0;break; case 4:sector[i]=3;break; case 5:sector[i]=2;break; case 6:sector[i]=4;break; default:break;
// 根据相应的关系确定各个Uout所在的扇区
}
// 逆时针旋转的6个基本矢量
int i,k=0,cmp1,cmp2; float x,y,z;
disable(); initial(); calu();
// 屏蔽所有中断 // 系统初始化
// 计算ualfa,ubeta的值
SECTOR();
由即时
// 确定各点的扇区,在实际应用时应该
// 的ualfa和ubeta即时算出
while(1) {
for(i=0;i<200;i++) {
*ACTRA=anticlk[sector[i]]; x=ubeta[i];
y=(1.732051 * ualfa[i]+ubeta[i])/2;
// 重新装配ACTRA
z=(-1.732051 * ualfa[i]+ubeta[i])/2; // 以上3句计算3个相应的参考量
switch(sector[i]) {
case 0 :cmp1=(int)(-z * TP),cmp2=(int)(x * TP);break;
case 1 :cmp1=(int)(y * TP),cmp2=(int)(z * TP);break;
case 2 :cmp1=(int)(x * TP),cmp2=(int)(-y * TP);break;
}
}
}
case 3 :cmp1=(int)(z * TP),cmp2=(int)(-x * TP);break; case 4 :cmp1=(int)(-y * TP),cmp2=(int)(-z * TP);break; case 5 :cmp1=(int)(-x * TP),cmp2=(int)(y * TP);break; default : break;
} // 以上根据uout所处的扇区计算相应的cmp1和cmp2的值 *CMPR1=cmp1;
// 比较寄存器4赋值 // 比较寄存器5赋值
*CMPR2=cmp1+cmp2;
if((i+k)==0)
*T1CON=*T1CON|0x0040; // 启动定时器,只启动一次
while(1) {
k=*EVAIFRA & 0x0200; if(k==0x0200){ }
*EVAIFRA |=0x0200;
break; // 如果T3的中断标志建立,则停止等待
}
// 如果由于干扰引起中断,则执行此直接返回程序 void interrupt nothing()
{ }
return;
六.感想总结
通过这次课程设计,感觉自己学习和巩固了很多运动控制相关知识和DSP基础知识。对我自己来说,我付出了汗水和时间,但是同样我收获而很多,学到了很多在课堂学不到的东西。我不但学会了怎样运用已学的知识到实践当中,而且学会了怎么样有效地查找资料,提高了管理和沟通能力。在设计过程当中,和队友团队合作,大家互相帮助,发挥自己擅长的地方,每个人都尽职尽责做好自己的本职工作,同时也为别人出谋划策,让自己课程设计圆满完成。
职责分工:主要做Svpwm原理分析总结和部分硬件设计。
因篇幅问题不能全部显示,请点此查看更多更全内容