part1:專案簡述
第一, 專案內容與試驗目的。
專案內容:搭建硬體buck平台(開環,平台上包括柵極驅動電路),使用fpga完成資料採集和資料處理,設計乙個fpga數控電源。本次設計,採用的adc型號為ad9200。
試驗目的:
1】 在fpga開發平台上成功執行pid演算法;
2】 熟悉數字設計中的小數處理方式;
3】 利用fpga平台完成閉環訊號處理;
part2:方案設計
這是乙個閉環數模混合系統,fpga主要實現資料獲取和處理,並輸出控制pwm波,容易得到系統的控制框圖如下:
其中,灰色方框為在fpga中處理。整個控制框圖很清晰,輸入目標輸出電壓,通過取樣輸出值並反饋,兩者的誤差值進行pid處理得到控制量輸出,最後送給執行環節生成,目標pwm波,當系統由於干擾失穩時,由於閉環控制,又會快速將系統拉回預定軌道執行。
那麼,要實現上述系統,使用數字設計,需要的主要模組包括:pid模組、adc驅動模組、pwm發生器模組。除此之外,整個系統加入了加法器、乘法器以及打拍器模組。
再介紹之前,先給出系統綜合處的rtl試圖如下:
本系統涉及到訊號處理,羅列出系統中相關的資料關係:
其中,r1=1.1k,r2=9.1k,vin=16v為輸入電壓,duty表示占空比,vfb為分壓電阻中點電壓,vadc為adc模組採集的電壓值(因為使用的adc模組前端添置了相關訊號處理電路,限定了adc模組的採集範圍在0-2v,其輸出資料位寬為8bit)。由此可見,整個系統的運算關係並不複雜,但注意到,上述資料中包含小數,所以說整個系統就是浮點數(小數)系統,那麼自然要涉及到小數處理方式。其次,因為包含pid運算,所以又是有符號數系統。即本系統是乙個有符號小數閉環系統。
由上述rtl試圖知,先由adc模組獲取到輸出電壓值,但這其中需要作電壓轉換(式1可知),得到實際電壓值後,送入pid模組進行運算,進而得到控制量輸出,本設計將控制量直接作為對映到duty上,即利用duty=duty0+ctrl_out,duty0是上一週期的占空比,經過一次pid運算後,疊加上ctrl_out得到新的占空比,再利用duty0=duty如此迭代,知道整個系統穩定。
本次設計工作在modelsim下作了**,最終系統的**波形如下:
從中可以看到,adc_reg為採集到的電壓值(即上文中說的vadc),具體地,本次設計中使用的adc模組,當輸入為0時,adc採集到電壓為1v,所以實際中,當輸出vout=5v時,轉換到adc採集到的電壓值約為1.107843v,轉換為8bit資料為141。上述**為目標輸入為8192(2*4096,即目標電壓2v),經過上述系統之後,adc採集到的電壓約為134,因為vout每變化1v,對映到adc採集的電壓值,就變化128*(1.1/51)=2.76
,則輸出vout=2v時,**結果6與實際2.76*2=5.52
相近。此外,由adc_reg的波形可知,曲線的變化趨勢符合pid調節規律,最終穩定下來能夠反映實際buck電路的輸出情況。
pid控制演算法中的處理
積分抗飽和pid控制器 積分抗飽和的意思就是當輸入訊號的設定點發生變化時,誤差值也會發生很大變化,所以在達到目標值之前,控制訊號由於積分作用很快達到驅動器的極限位置。當輸出訊號已經達到參考輸入值時,誤差訊號變為負值,但由於積分器的輸出過大,控制訊號仍將維持在飽和非線性的限幅邊界上,故使得系統的輸出持...
PID控制中Kp Ki Kd 在控制質量中的影響
所謂pid指的是proportion integral differential。翻譯成中文是比例 積分 微分。記住兩句話 1 pid是經典控制 使用年代久遠 2 pid是誤差控制 對液壓幫浦轉速進行控制還要 1 變頻器 作為電機驅動 2 差動變壓器 作為輸出反饋。pid怎麼對誤差控制,聽我細細道來...
omnipeeker在wifi分析中的應用
記得大學學習tcp ip協議時,tcpdump給了很多幫助,最近需要好好了解一下802.11x mac層,在業內高手的推薦下發現了omnipeeker這一利器。下面和初學者分享一下這個軟體的使用。從無線特性看,電磁波的發射方是沒法限制接收方的,只要在覆蓋範圍內,任何人都可以用相關裝置收到訊號,也可以...