三相400Hz中频静止电源的研究与设计(软件) - 图文 下载本文

毕业设计(论文)

AdcRegs.ADCTRL1.bit.CONT_RUN=1; //启动/停止和连续运行选择1为连续

AdcRegs.ADCTRL1.bit.SEQ_CASC=1; //单双排序选择1为单排序

AdcRegs.ADCTRL3.bit.ADCBGRFDN=3; //电源上电 for(i=0;i<10000;i++) NOP;

AdcRegs.ADCTRL3.bit.ADCPWDN=1; //内核电源 for(i=0;i<5000;i++)

NOP;

AdcRegs.ADCTRL3.bit.ADCCLKPS=3; //hspclk(75m)/(2*3)=12.5m AdcRegs.ADCTRL3.bit.SMODE_SEL=1; //顺序及同时采样选择1为同时采样

AdcRegs.MAX_CONV.bit.MAX_CONV=2;//采3次一次采两个共6个 AdcRegs.CHSELSEQ1.bit.CONV00=0; AdcRegs.CHSELSEQ1.bit.CONV01=1; AdcRegs.CHSELSEQ1.bit.CONV02=2;

AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1; //清除中断标志位 AdcRegs.ADC_ST_FLAG.bit.INT_SEQ2_CLR=1; AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ=0; //

AdcRegs.ADCTRL2.bit.RST_SEQ1=1; //复位排序器1复位到CON00 AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1; //中断使能

AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1=0; //中断使能模式,0每次SEQ结束都置标志位

AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=1; //EVA驱动AD位1驱动0屏蔽

AdcRegs.ADCTRL2.bit.EXT_SOC_SEQ1=0; //外部驱动 AdcRegs.ADCTRL2.bit.RST_SEQ2=0; AdcRegs.ADCTRL2.bit.SOC_SEQ2=0; AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2=0;

27

毕业设计(论文)

}

AdcRegs.ADCTRL2.bit.INT_MOD_SEQ2=0; AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ2=0;

AdcRegs.ADCTRL2.bit.SOC_SEQ1=0; //软件触发AD

4.3.4 事件管理模块EVA

本方案中只用到EVA,设置载波频率40KHz,高速时钟预定标时钟HISPCP为75MHz不分频直接供给EVA坐为EVA的时钟,定时器T1连续增减计数来模拟载波,计算出周期寄存器T1PR的值为937即937个高速时钟预定标时钟脉冲。

部分程序如下: void InitEv(void) { EALLOW;

GpioMuxRegs.GPAMUX.all=0x00ff; //配置pwm引脚 GpioMuxRegs.GPBDIR.bit.GPIOB6=1;

EDIS;

EvaRegs.ACTR.all=0x999; //设置高低有效

EvaRegs.DBTCONA.all=0x02D8; //设置死区使能、周期2和分频150/4、死区 时间为53纳秒

EvaRegs.COMCONA.all=0x82E0; //比较控制寄存器,

EvaRegs.GPTCONA.all = 0x0080; //定时器T1下溢中断标志驱动AD并且禁止 他自带的一路PWM输出 EvaRegs.T1CNT = 0;

//计数器初值为0

EvaRegs.T1CON.all = 0x0800; //连续增减计数;1分频;75m EvaRegs.T1PR =937; // 对应载波频率72k EvaRegs.EVAIMRA.bit.T1UFINT = 1;//使能定时器1下溢中断 EvaRegs.EVAIFRA.bit.T1UFINT = 1;//复位定时器1下溢中断标志位 }

28

毕业设计(论文)

4.4 程序流程图

程序分为三部分:主程序完成系统初始化并等待中断,定时器下溢中断服务子程序完成上spwm波计算更新比较寄存器的值,AD转换子程序对采集的电压电流值的处理并完成过压过流判断和输出保护信号,PI调节也在AD转换子程序中完成。

主程序流程图如下:

开始系统初始化计算正弦表和余弦表关总中断并清除CPU 级IER IFR CPU级第二组中断使能位IER置1初始化PIE和PIE向量表初始化EVA、AD和GPIO把中断服务程序首地址赋给对应的中断向量开总中断使能T1定时器等待中断 图4-4 主程序流程图

在主程序中对系统、PIE、PIE向量表、EV、AD、IO进行初始化,把中断服务程序的首地址赋给对应的中断向量,同时由于在后面的子程序中要用到正弦值,为了减少对CPU的占用提高运算速度,在主程序中把一个周期分成一定的份数并计算出相应的正弦值存入数组,这样在后面的子程序中用到正弦值不必再计算直接从内存中调用即可。完成初始化后开总中断并使能EVA定时器,接着进入死循环等待中断。

29

毕业设计(论文)

AD采集子程序:

开始数据还原是否过流过压是输出指示信号否瞬时无功算法算出峰值禁止比较单元的比较操作设置输出强制低外环电压PI调节结束内环电流P调节返回M值 图4-5 AD采集子程序

AD是由EVA通用定时器T1的下溢中断标志启动的,启动后采集的电压电流值就存放在相应的结果寄存器中,在AD采样子程序中从结果寄存器中取出电压电流值根据比例还原成真实值,与允许的最大电压电流值比较判断是否过压过流,如果是就输出指示信号,并禁止比较操作同时设置输出为强制低即关闭SWPM波输出,完成过压过流保护;如果没有过压过流,接着进行瞬时无功算法(dq变换)求出当前电压电流波形的峰值,然后进行外环电压PI调节,得出的值作

30