dsPIC33FJ64GS610如何撰寫Modbus通訊
|
|
|||
---|---|---|---|---|
初級會員
|
發表於: 2011/1/12 16:13
|
|||
|
解決PWM亂開問題
|
||||
---|---|---|---|---|
初級會員
|
請教各位
之前已有提問過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: (0.00 KB)
發表於: 2009/8/19 15:16
|
|||
|
關於dsPIC33F並聯問題
|
||||
---|---|---|---|---|
初級會員
|
請教各位:
1.現在要開發並聯的架構,要使用4顆dsPIC33FJ16GS502來做,若要達到同步執行的動作,在程式上要做些什麼設定,可提供相關範例參考嗎? 2.在並聯模式下,要作均流的動作,例如大於3KW啟動2組、大於6KW啟動3組,這類的動作一樣有相關範例參考嗎?
發表於: 2009/8/17 8:52
|
|||
|
關於dsPIC33FJ16GS502的soft-start問題
|
||||
---|---|---|---|---|
初級會員
|
請教各位
現在我要設計一個當dsPIC啟動時要慢慢的讓電壓上升不要一次就達到設定的值,這應該是有關soft-start的部份,有這方面的資料或程式範例嗎?
發表於: 2009/7/21 13:38
|
|||
|
Re: 請教用dsPIC33F撰寫PI控制器
|
||||
---|---|---|---|---|
初級會員
|
謝謝Ryang的答覆:
透過Microchip FAE協助後,已解決PWM亂開的問題,解決方式是透過將宣告為long的函數改為int的函數,再透過計算時間的方式應該類似您提共的方法。 但解決之後卻發生了波型不動的狀況,等於是停住的現象,而FAE提共的解決方向為,寫一個能將ADC轉換後的數值,透過ADC中斷,將此值轉存到一個自訂的buffer中,如此將它成為一個完整轉換過的值,之後當PWM產生中斷時便讀取buffer中的值,請問這種方式要如何實現,可否提供簡單的範例。謝謝
發表於: 2009/7/3 16:28
|
|||
|
請教用dsPIC33F撰寫PI控制器
|
||||
---|---|---|---|---|
初級會員
|
請教各位:
以下的程式碼是我參考TI所寫的PI控制器程式碼,之前是用在dsPIC30系列,如今要改用在dsPIC33FJ16GS502上,測試結果發現會有PWM亂開的現象,請問是哪裡出問題嗎?有啥解決方式可以提供給我參考,謝謝。 void __attribute__((interrupt, no_auto_psv)) _PWM2Interrupt() { long Vo; long e_now,e_last; long D_now,D_last; long duty; long Vref=3720; /*以1.5V當做參考電壓,*/ IFS5bits.PWM2IF=0; ADSTATbits.P2RDY=0; ADSTATbits.P3RDY=0; Vo=ADCBUF5*8; e_now=Vref-Vo; D_now=4680*(e_now-e_last)+195*e_now+D_last; /*PI Controller:Kp=4680,KiTs=195*/ if(D_now>3773) { D_now=3773; duty=3773; /*限制 PWM1L(PWM1H) 與PWM2L(PWM2H) 相移量最小時,Duty重疊限制為40%*/ } else if(D_now<=0) { D_now=0; duty=0; /*限制 PWM1L(PWM1H) 與PWM2L(PWM2H) 相移量最大時,Duty重疊限制為0%*/ } else { duty=D_now; } D_last=D_now; e_last=e_now; PHASE2=duty+283; }
發表於: 2009/6/29 10:09
|
|||
|
使用單晶片設計數位電錶
|
||||
---|---|---|---|---|
初級會員
|
請問各位使用單晶片的高手,有人使用單晶片設計數位電表嗎?此數位電表並非一般拿來量電壓或電阻的那種電表,而是有可以用來監控負載端或電力品質的改善那種。
有此方面的訊息可否提供一下,謝謝
發表於: 2009/6/5 15:31
|
|||
|
Re: 請問有關於撰寫PI控制器的範例嗎?
|
||||
---|---|---|---|---|
初級會員
|
發表於: 2009/5/25 8:10
|
|||
|