91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

pic單片機(jī)+MOS數(shù)控電源,加入PI算法控制,出錯(cuò)

用PIC單片機(jī)的PWM驅(qū)動(dòng)MOS,做一BUCK的電源;想加入PI算法,可程式總是出錯(cuò),現(xiàn)把程式其它部分刪掉;圖為仿真部分電路(控制A/Dpin為1.2v)請(qǐng)大家?guī)兔纯?程式哪書寫錯(cuò)誤。

#include "pic.h

"typedef unsigned char unchar;

typedef unsigned int unint;

unint PWM_period=0,PWM_duty=0;

void main()

{typedef struct pid 

{ float setvol;//設(shè)定值 

 float pcoe;//比例系數(shù)  

float icoe;//積分系數(shù) 

 int lasterror; 

 int preerror; 

 float sumerror;

}pid; 

pid volpid,*sptr=&volpid; 

//pid *sptr;

//sptr=&volpid;

void initpid(pid *sp);

void crespid(pid *sp,int testpoint);

asm("clrwdt");

initpid(pid *sptr);// 

sptr->setvol=1.2;

while(1){crespid(pid *sptr,4);}}

/*------------增量式PI ---------*/

void initpid(pid *sp)

{sp->setvol=0; 

sp->pcoe=0.4;

 sp->icoe=0.05;//

 sp->lasterror=0;}

void crespid(pid *sp,int testpoint)

{static float temerror; 

if(sp->setvol>testpoint)

temerror=sp->setvol-testpoint;

else temerror=testpoint-sp->setvol;

{PWM_duty+=(sp->pceo)*(temerror-sp->lasterror)+(sp->iceo)*temerror;}

sp->lasterror=temerror;//把PWM—duty--部分省略

簡(jiǎn)單仿真圖

}

全部回復(fù)(3)
正序查看
倒序查看
2014-04-09 11:02
hary_wu01 我?guī)湍阃葡掳桑茨懿荒芙o你些幫助。
0
回復(fù)
2014-04-14 16:26
我個(gè)人覺(jué)得你最好先不加入PID現(xiàn)實(shí)一下,如果程序的思路或是結(jié)構(gòu)都OK后再加入PID控制,這樣會(huì)有助于你實(shí)驗(yàn)或者是開(kāi)發(fā)的進(jìn)度,其次還有種方法,放大你的基準(zhǔn)信號(hào)送給單片機(jī)處理,盡量不要用浮點(diǎn)去讓51系列的單片機(jī),單片機(jī)處理小數(shù)是很費(fèi)勁的!
0
回復(fù)
mixsall
LV.3
4
2014-04-20 00:51
你這個(gè)結(jié)構(gòu)體聲明元素名稱和void crespid這個(gè)函數(shù)用指針調(diào)用的名稱不一樣啊。{PWM_duty+=(sp->pceo)*(temerror-sp->lasterror)+(sp->iceo)*temerror;}   這條算占空比的語(yǔ)句你和結(jié)構(gòu)體聲明的部分對(duì)比下。還有,寫這種程序沒(méi)必要非得用結(jié)構(gòu)體指針。你的指針命名還不規(guī)范,你自己讀的不頭疼嗎?離散化的pi算法最好有固定的采樣時(shí)間,你這個(gè)無(wú)視采樣周期,直接循環(huán),你覺(jué)得積分能準(zhǔn)么?testpoint我猜的如果沒(méi)錯(cuò)的話應(yīng)該是ad的采樣值輸入吧。你怎么寫固定值了。最后你的pi算法也不對(duì)。
0
回復(fù)
發(fā)
主站蜘蛛池模板: 德庆县| 醴陵市| 武功县| 瑞安市| 山丹县| 云阳县| 广饶县| 海城市| 保靖县| 白玉县| 仲巴县| 巴林右旗| 通辽市| 余姚市| 分宜县| 定陶县| 太白县| 运城市| 吴川市| 淮北市| 广宗县| 杭锦旗| 柘城县| 德阳市| 铜陵市| 德格县| 吴堡县| 通化县| 云阳县| 北碚区| 手游| 普兰店市| 龙胜| 吉木萨尔县| 高尔夫| 桂平市| 金昌市| 太原市| 余庆县| 海兴县| 长垣县|