数字式开关电源的PID控制_第1页
数字式开关电源的PID控制_第2页
数字式开关电源的PID控制_第3页
数字式开关电源的PID控制_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、/*/*/*PID /*开关电源的数字化控制 */所用拓扑为Buck,单片机 msp430*/ 算法实现开关电源的恒流、恒压、恒功率功能 */ 糖 coffeeuestc*/*Part 1*/#include <> #include "" #include "" #include "" #include "" #include "" #include ""void main( void )WDTCTL = WDTPW + WDTHOLD; init_clk();i

2、nit_lcd();GUI_CU();init_ADC12();init_TA();init_TB();initKey();_EINT();while(1)KeyScan();if(Mode=0)PutDig(fP%10); ;PutDig(iU%10);PutDig(fU/10);PutDig(iI%10);PutDig(fI/10);PutDig(fP/10);处理电压 PWM*/*void deal_U()if(Uout>Us*100+25)|(Uout+25<100*Us) ;PutDig(fUs); /* 显示设置电流 */void DisplaySetI()unsign

3、ed char iIs,fIs;iIs = Is/10; fIs = Is%10;Set_cursor(0,3);PutcLCD('0');PutDig(iIs);PutcLCD('.');PutDig(fIs);/* 显示设置功率 */ void DisplaySetP()unsigned char iPs,fPs;iPs = Ps/10; fPs = Ps%10;Set_cursor(0,3);PutDig(iPs/10);PutDig(iPs%10);PutcLCD('.');PutDig(fPs); /* 键盘初始化 */void ini

4、tKey()KeyDIR &= (Inc + Dec + MOD + ADD + PLU);/* 键盘检测 */void KeyScan()if(KeyIN != 0x1f)Delay(100);if(KeyIN != 0x1f)unsigned char KeyTemp = KeyIN;while(KeyIN != 0x1f); / 等待按键松开 switch(KeyTemp)case 0x1e:if(Mode=0) Us+=1; else if(Mode=1) Is+=1; else Ps+=5;break; /+case 0x1d:if(Mode=0) Us-=1; else i

5、f(Mode=1) Is-=1; else Ps-=5;break; /-case 0x1b:Mode+;if(Mode>2)Mode=0;if(Mode=0) Us = 10;GUI_CU(); else if(Mode=1) Is = 10;GUI_CC(); else Ps = 10; GUI_CP();break; /modcase 0x17:if(Mode=0) Us+=5; else if(Mode=1) Is+=2; else Ps+=10;break; /+case 0x0f:if(Mode=0) Us-=5; else if(Mode=1) Is-=2; else Ps

6、-=10;break;/-#endif/*Part init Headfile*/#ifndef _init#define _init/* 初始化时钟 */ void init_clk()FLL_CTL0 |= XCAP18PF;FLL_CTL1 &= XT2OFF;/ Set load capacitance / Turn on XT2doIFG1 &= OFIFG;for (unsigned int i = 1000; i; i-); while (IFG1 & OFIFG); FLL_CTL1 = SELS;/ Clear oscillator fault fla

7、g/ Test osc fault flag/ Select SMCLK source as XT2CLK/* 初始化 AD,计算输出 */void init_ADC12()P6SEL = 0x03;/ Enable A/D channel inputsADC12CTL0 = ADC12ON + MSC + SHT0_8 + REFON + REF2_5V;/Turonn ADC12,set sampling time/ Use sampling timer 序列单ADC12CTL1 = SHP + ADC12SSEL_1 + CONSEQ_1; 次ADC12MCTL0 = INCH_0 +

8、SREF_1;ADC12MCTL1 = INCH_1 + SREF_1 + EOS;ADC12CTL0 |= ENC; /*初始化TA,采样周期void init_TA()TACTL = TASSEL_2 + TACLR;CCTL0 = CCIE;CCR0 = 800;TACTL |= MC_1;*/ sMCLK, clear TAR/ CCR0 interrupt enabled/ Start Timer_A in UP mode/* 初始化TB,驱动信号void init_TB()TBCTL |= TBSSEL_2 + TBCLR + MC_1 + ID_0;TBCCR0 = 400;TBCCTL2 = OUTMOD_7;TBCCR2 = 200;P2DIR |= BIT3;P2SEL |= BIT3; */ SCLK, Clear Tar/ PWM =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论