逆變電源PID程序_第1頁
逆變電源PID程序_第2頁
逆變電源PID程序_第3頁
逆變電源PID程序_第4頁
逆變電源PID程序_第5頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、/* * * pid 相關(guān)函數(shù)* */ /pid 默認參數(shù)#define kdefaultpid_k 5/默認的增益為5 倍#define kdefaultpid_t 5/默認控制周期為5 秒#define kdefaultpid_ti 25/默認積分時間為25 秒#define kdefaultpid_td 5/默認的微分時間為5 秒#define kdefaultset (float)g_vf/100.0 /默認風速/定義 pid 參數(shù)結(jié)構(gòu)體typedef struct float t;/ 采樣周期float kp;/ 比例系數(shù)float ti;/ 積分時間float td;/ 微分時間f

2、loat set;/設(shè)定值float input3;/ 輸入緩存float output;/ 輸出pid_stru; /step1 定義 pid 控制參數(shù)pid_stru pid_ctrl; /函數(shù)名:增量式pid 參數(shù)初始化/參數(shù): pid_stru 指針/返回值: void void pid_init(pid_stru * p_pid) p_pid-set = kdefaultset;/ 默認 pd 設(shè)置值p_pid-kp = kdefaultpid_k;/比例系數(shù)p_pid-ti = kdefaultpid_ti;/積分時間p_pid-td = kdefaultpid_td;/微分時間p

3、_pid-t = kdefaultpid_t;/控制周期 /函數(shù)名:增量式pid 控制/參數(shù): pid_stru 指針/返回值: void void pid_getvalue(pid_stru * p_pid) uint8 i; static uint8 counter = 0; float err3; / 定義誤差數(shù)組if(controflag=0) counter = 0; p_pid-input2 = p_pid-input1; p_pid-input1 = p_pid-input0; p_pid-input0 = g_diode_v; for(i=0;iset - p_pid-inpu

4、ti; if(counter = 2) /pid的初值 p_pid-output = p_pid-kp*(err0+p_pid-t*(err0+err1)/p_pid-ti+p_pid-td*(err0-err1)/p_pid-t); else if(counter 2) / 增量 pid p_pid-output += p_pid-kp*(1+p_pid-t/p_pid-ti+p_pid-td/p_pid-t)*err0;/a p_pid-output -= p_pid-kp*(1+2*p_pid-td/p_pid-t)*err1;/b p_pid-output += p_pid-kp*p_

5、pid-td*err2/p_pid-t;/c else counter +; /pid 控制主流程void ctrlprocess(void) /pid 控制pid_getvalue(&pid_ctrl); /* /范圍保護if(pid_ctrl.output 100) pid_ctrl.output = 100; */ /輸出 51 單片機按鍵控制pwm 占空比, duty:72.41%-99.13% ,fre=1.08khz ,vol:400mv-5.12v 問題p0 口輸出全部有pwm 輸出且相同,#include #define uchar unsigned char #def

6、ine uint unsigned int sbit key1=p32; sbit key2=p33; uchar pwm; void keyscan(); /聲明一個鍵盤輸入函數(shù)void delay(uchar z); void main() pwm=0 x7f; /給 pwm 賦初值tmod=0 x21; th0=0 xfc; /裝載初值 0 xfc66 tl0=0 x66; th1=pwm; /把 pwm 定義為定時器 t1 的高位tl1=0; ea=1; /開亂七八糟的et0=1; et1=1; tr0=1; while(1) /判斷是否有按鍵按下 keyscan(); void ti

7、me0() interrupt 1 /中斷函數(shù) th0=0 xfc; tl0=0 x66; th1=pwm; / tl1=0; /不能加 ?tr1=1; p0=0 x00; void time1() interrupt 3 /中斷函數(shù) tr1=0; p0=0 xff; /結(jié)束輸出 void keyscan() if(key1=0) /檢測按鍵 1 是否按下,是就執(zhí)行下面的代碼,否就跳過去 if(pwm!=0 xff)/ 如果 pwm 不等于 0 xff,pwm 就加 1 pwm+; delay(10); / while(!key1); /不能加? if(key2=0) /檢測按鍵 2 是否按下, 是就執(zhí)行下面的代碼,沒就跳過去 if(pwm!=0 x01) /判斷 pwm 是否為 1,否就減 1,是就不減了,過界 pwm-; delay(10); / wh

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論