2009年3月3日 星期二

SPWM



這學期上的課很有趣,要控制比較難的馬達:如單相交流馬達,三相感應馬達。


首先要先製作SPWM(Sinusoidal Pulse Width Modulation)


製作之前,先看懂SPWM的意義,這是從Microchip BLDC 應用手冊內的資料。


利用PWM產生一個Sine的波形。



不過要讓PWM變成Sine波需要利用低通濾波器。


利用最簡單的RC來濾波



這是實作的結果,可以看出產生一個約60Hz的sine波。



如果之後馬達速度需要50%時,只需要將110v/60hz,轉變成55v/30hz即可


為了之後方便控速,只要將110hz/60v設為定值,做交叉相乘,即可以不同頻率所需要的電壓。



原本利用sin函數,共需時138uS



如果使用線性內插查表法,將可以把時間優化到53uS。




不過因為是用查表的,當然沒有辦法和sin函式那麼準,不過也要確認一下誤差值。


誤差值最大約正負1(1/500(pwm的最大值)),是可以接受的數值。


實作的話,就拿之前H-Bridge來使用。


由於要產生sine波,需要先處理過訊號。


將sin波分成2邊。當正值時導通左上臂和右下臂。



當負值時導通右上臂和左下臂。



這樣子就可以組成一個完整的sin波 。



先將訊號整理出來。



合在一起的樣子。


經過gate driver 和MOSFET後的波形。



合在一起的波形。



照這樣子控AC單相馬達的準備大概已經完成了。


4 則留言:

  1. 送到馬達的信號和我認知的不同。
    因為馬達是電流驅動元件,所以應是將電流波型做成Sin波。
    PWM使用並接電容是轉成電壓波型,要轉成電流波型要使用串接電感。
    剛好馬達就是電感元件,所以應是將PWM直接送去MOS的閘級,然後量馬達電流是否呈現Sin波型。

    [版主回覆03/06/2009 16:40:28]因為還尚未把訊號寫完整,要等到整個準備程式都完成後,才會接馬達,現在都還在準備中。
    先將SPWM送到MOSFET的Gate腳這沒有爭議,不過為了方便觀察送出的訊號是否有呈現Sin 波,因為馬達本身就可以視為一個低通濾波器,所以使用RC低通濾波,就以這樣的想法在做測試。因為量電壓比較方便,量電流就麻煩多了。

    回覆刪除
  2. 您好,我想請問一下,如果要用SPWM驅動無刷馬達的話,需要幾組PWM呢?
    是三組就好,只需要驅動上臂的MOS?
    還是說要六組,上下臂都需要?
    小弟非本科系,已經可以讓馬達運轉,想嘗試看看弦波輸入的方式驅動
    希望可以教導我一下替我解惑,感謝您
    [版主回覆05/06/2013 07:35:18]您好,事實上這和你的driver架構有關係, 如果是上下臂都是N-MOS, 那就需要2倍的PWM,因為上臂的MOS需要做充電的動作,如果不是的話,那或許只需要1倍的PWM就行了,讓下臂都是ON/OFF的狀況就行了。
    題外話,現在的控制器原則上都會支援互補式的PWM,所以在選控制器的時後,就挑這種的就可以了。
    B/R

    回覆刪除
  3. 我上下臂皆是用N-MOS沒錯,所以我應該用6組PWM控制嗎?
    關於您提到的互補式,是指輸入一組PWM其duty cycle為80%的話,其上臂MOS為80%下臂MOS為20%這樣的嗎?
    如果是我舉例的這樣,只要三組就好了嗎?
    感謝您的回覆
    [版主回覆05/07/2013 21:11:32]如果都是N-MOS的DRIVER的話,是需要6組PWM, 建議你可以找專門的PWM, 現在很多控制器都支援這類的PWM,事實上互補式指的是上臂是HI 時,下臂是LO。 你說的80%與20%,有點灰色地帶, 這點需要您注意一下。 畢竟下下臂都為HI時,DRIVER有可能就會燒掉了。
    題外話, 因為N-MOS DRIVER 架構的問題,所以還需要加入Dead Time 來防止上下臂同時導通,導致燒毀的困擾。 所以還是建議使用專門在做馬達控制的PWM 會更好。
    B/R

    回覆刪除
  4. 前輩您好:
    小弟剛才逛到您的blog真的讓我大開眼界,也讓我學到不少知識!
    另外,想請教您,您上面所貼出之單向馬達控制的開關電壓波形,看似驅動能力稍顯不足。不知道您是否有採用類似totem pole的驅動電路改善。還是說效果並不會有太大差異?抱歉問了如此愚蠢問題。謝謝您

    回覆刪除