• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::


Browsing this Thread:   1 Anonymous Users






Re: 解決PWM亂開問題
#5
資深會員
資深會員


查看用戶資訊
樓上說的沒錯, 不需要Q格式, 代表你是用Q0在算你的運算式.
D_now=4680*(e_now-e_last)+195*e_now+D_last;

假設4680*(e_now-e_last) 超過32767有號數, 或是65535無號數, 請問一下, 答案是多少?
所以"Kp與Ki值降到很小便不會出現"亂開"", 這是當然的阿~~16BITS隨便算都溢位~Kp與Ki值降到很小後~~很就才會溢位, 也就是很久才會"亂開"一次~你不覺得很奇怪? 你沒想過溢位後答案是什麼?

你最好花點時間研究一下Q格式, PI控制使用Q格式是很基本的哦!! 不是沒有小數點就不需要Q格式.
只是超過1就不能稱為pu系統.

發表於: 2009/8/20 22:45
Thanks,
Edward Lee
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 解決PWM亂開問題
#4
資深會員
資深會員


查看用戶資訊
沒有數值的範圍關念~~

1240 *123=多少?

0x0253C8 可以 ,0x53C8 也對 , 0xC8 也行

先搞清楚你的數值範圍有多大~~你是如何存放資料的?

你用 2byte 來放 4680 *10 當然可以, 4680 * 16 就掛了

要放 4680 * 16 就得有 3BYTE 才得下

發表於: 2009/8/20 14:02
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 解決PWM亂開問題
#3
初級會員
初級會員


查看用戶資訊
謝謝edwardlee回答:
我再解釋一下,因為我們求出來Kp與Ki值就是這麼大,所以已經不需要Q格式的問題,現在我的規格就是要達到D_now=4680*(e_now-e_last)+195*e_now+D_last;,其實一開始就是用這個規格去測試,結果就是會造成我所謂的"亂開"因此將Kp與Ki值降到很小便不會出現"亂開",變大就會。

若以大的規格去測試,那我該從程式的哪方面去下手解決掉震盪的問題?麻煩了

發表於: 2009/8/20 13:32
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 解決PWM亂開問題
#2
資深會員
資深會員


查看用戶資訊
呵呵~~亂開? 真是口語化的說法!!
D_now=1*(e_now-e_last)+0.0097*e_now+D_last;
定點dsp可以這樣寫嗎? 不需Q格式?
這樣應該會變成下面這樣吧?
D_now=(e_now-e_last)+D_last;


我假設所謂亂開指的是PWM突變量很大, 那麼可能原因有兩個:
1. 你計算飽和了?
請問有16bits有號數最大值為32767, 那麼再加1答案是多少?
2. PI控制器震盪?
你可以用簡單的EXCEL, 丟一個弦波給他算, 看會不會振盪.

真的不需Q格式嗎?

發表於: 2009/8/20 13:01
Thanks,
Edward Lee
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


解決PWM亂開問題
#1
初級會員
初級會員


查看用戶資訊
請教各位
之前已有提問過PWM亂開這個問題,也請教過microchip的FAE,圖為亂開之波形,以下為部份程式碼
PTCONbits.EIPU=0;
PTCONbits.SYNCOEN = 1;
PTCONbits.SYNCSRC = 0;
PTCONbits.SEVTPS = 1;

long Vo;
long e_now,e_last;
long D_now,D_last;
long duty;
long Vref=3720; /*以1.5V當做參考電壓,1.5V顯示為3720 =>(1.5/3.3)*1023*8=3720*/

void __attribute__((interrupt, no_auto_psv)) _PWM2Interrupt()
{

IFS5bits.PWM2IF=0;
ADSTATbits.P1RDY=0;
ADSTATbits.P2RDY=0;
PHASE2=duty+380;


Vo=ADCBUF5*8;

e_now=Vref-Vo;

D_now=1*(e_now-e_last)+0.0097*e_now+D_last;

if(D_now>3773)
{
D_now=3773;
duty=3773;
}
else if(D_now<=0)
{
D_now=0;
duty=0;
}
else
{
duty=D_now;
}
e_last=e_now;
D_last=D_now;


// PHASE2=duty+380;
}
問題如下:
D_now=1*(e_now-e_last)+0.0097*e_now+D_last; /*PI Controller:Kp=1,KiTs=0.0097*/

不會亂開的原因就在於Kp與KiTS很小,所以測試是成功的,但現在的規格必須要為:
D_now=4680*(e_now-e_last)+195*e_now+D_last; /*PI Controller:Kp=4680,KiTs=195*/

就是只要Kp與KiTs數值過大,測試結果就會亂開,如果這樣要如何解決呢?

Attach file:



jpg  (0.00 KB)


發表於: 2009/8/19 15:16
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------