Re: 想請教一下關於30F4011的馬達控制PWM模組
|
||||
---|---|---|---|---|
資深會員
|
至始至終好像沒看到你是用什麼馬達?
我覺得你既然有明顯的應用目標, 直接設定使用比較好, 直接了當, 不然會花很多時間在看可能用不上的程式. 我寫馬達控制時沒看過範例程式(可見dsPIC多簡單), 所以我來猜猜看, 既然寫"ChargeBootstraps", 可見是要做Boot-strap功能, 這牽涉到硬體方面知識, 你若是沒聽過, 可用google找一下"bootstrap電路"就可以明白大概. 因此就是為了Delay一段時間,讓上臂驅動電容有時間充飽, 與相移完全無關, 不過沒聽過馬達會使用PWM相移功能!!?? 你也想做零切嗎? 馬達感量那麼大, 怎麼振? 若是想用來產生正弦之間的相移120度, 那你就想太多嚕!!(頻率差太多!!)
發表於: 2009/3/6 14:58
|
|||
Thanks,
Edward Lee |
||||
|
Re: 想請教一下關於30F4011的馬達控制PWM模組
|
||||
---|---|---|---|---|
新會員
|
您好,
有一點誤差沒關係,我現在只是在練習,還沒真的要驅動馬達。 我在原公司網站看到30f3010的範例 void ChargeBootstraps(void) { unsigned int i; OVDCON = 0x0015; // Turn ON low side transistors to charge for (i = 0; i < 33330; i++) // 10 ms Delay at 20 MIPs ; PWMCON2bits.UDIS = 1; PDC1 = PTPER; // Initialize as 0 voltage PDC2 = PTPER; // Initialize as 0 voltage PDC3 = PTPER; // Initialize as 0 voltage OVDCON = 0x3F00; // Configure PWM0-5 to be governed by PWM module PWMCON2bits.UDIS = 0; return; } 其中的一段 for (i = 0; i < 33330; i++);// 10 ms Delay at 20 MIPs 這段我有點看不懂,不知道是不是delay的意思? 希望看懂的大大幫我解答一下>"<
發表於: 2009/3/6 9:50
|
|||
|
Re: 想請教一下關於30F4011的馬達控制PWM模組
|
||||
---|---|---|---|---|
資深會員
|
這就是Phase Shift的功能, 只有SMPS 系列才有直接支援, 其他系列只能透過人為Delay觸發各PWMx所屬的Timer.
題外話, 現在DSP內頻越來越高, 要Delay msec等級不太容易, 使用內建模組更難, 不過你說過1KHz只是實驗, 應該不會這樣用, 僅是提醒你嚕! ps:若是需要相移, 使用delay觸發會有一點點誤差, 雖然不大, 但也只能用在"固定相移量", 若為隨時可變場合是不建議的.
發表於: 2009/3/4 15:03
|
|||
Thanks,
Edward Lee |
||||
|
Re: 想請教一下關於30F4011的馬達控制PWM模組
|
||||
---|---|---|---|---|
新會員
|
您好,我想再問一個問題
比如說我的三相PWM波是 #define FCY 7372800 * 2 #define FPWM 1000 PTPER = (FCY/FPWM - 1)/2 ; PDC1 = PTPER ; PDC2 = PTPER; PDC3 = PTPER ; 這樣PWM是1kHz,所以週期為1ms 我該如何讓第2組PWM信號(PDC2)延遲一些時間再出現 比如說PDC2延遲0.33ms PDC3延遲0.66ms
發表於: 2009/3/3 23:18
|
|||
|
Re: 想請教一下關於30F4011的馬達控制PWM模組
|
||||
---|---|---|---|---|
新會員
|
感謝"救世主"大大的指教,呵呵。
看來我要好好的上一下MCHP辦的耍寶課程,這樣學會快很多^^
發表於: 2009/2/27 21:03
|
|||
|
Re: 想請教一下關於30F4011的馬達控制PWM模組
|
||||
---|---|---|---|---|
資深會員
|
呵呵~~我也希望我是救世主, 但其實只是跳梁小丑, 耍寶AE而已啦~~
Niques您必須先知道, 你需要的這種三相輸出, 乃屬於三相正弦輸出的範疇. 因此, 你需先了解兩個名詞: SPWM & SVPWM 查表是指SPWM, SVPWM則無法使用查表法, 須由解向量的方式計算出對應該臂所需的Duty. 最大差異是, SVPWM的等效PWM頻率等於實際PWM的兩倍, 硬體設計上存在很多好處. 簡單説明你所需要知道的幾點: 1.查表法 -> Sin Table 你先用google搜尋一下"正弦查表", 找幾個網頁看一下就知道了, 我用打的手指會扭傷...大致原理就是不希望使用計算方式產生正弦波的參考命令, 而直接將一整個正弦波以數值方式存在ROM, 再以查表還原. 2.想讓它有相位差(比如說:0度 +120度 -120度或0度 +120度 +240度) 方法就是利用查表方式, 假設你是建立0~360的table, 且共360點, 使用三個Index 變數, 一個從第零點開始, 一個從第120點開始, 一個從第240點開始, 那麼不就產生各相差120度ㄟSin PWM? 當然你要先記得一件事, 0V = 0% Duty? 想一下, 免的建了一個耍寶專用ㄟ表格!! 由衷建議, 你可能需要上一下MCHP辦的課程, 你不知道的太多, 會昏頭轉向. PS:(數位訊號控制器,曾百由 著)常聽到, 我是不是該去認識一下這位曾老大, 呵呵~還是買來看看? 印象中只有二技時期買過DSP的書.
發表於: 2009/2/27 17:00
|
|||
Thanks,
Edward Lee |
||||
|
Re: 想請教一下關於30F4011的馬達控制PWM模組
|
||||
---|---|---|---|---|
版主
|
救世主是網友寫多少信件的代稱,前面的網友代號是 edwardlee 他本人是 Microchip 的應用設計工程師,專長在於 Digital Switching Mode Power Supply and PV Inverter.
發表於: 2009/2/27 15:30
|
|||
|
Re: 想請教一下關於30F4011的馬達控制PWM模組
|
||||
---|---|---|---|---|
新會員
|
感謝救世主的指教,比如說我的三相PWM波是
#define FCY 7372800 * 2 PTPER = 7372 ; PDC1 = 7372 ; PDC2 = 7372 ; PDC3 = 7372 ; 這樣出來是3組無相位差的PWM輸出, 但是我想讓它有相位差(比如說:0度 +120度 -120度或0度 +120度 +240度),來控制6個開關(Mosfet),作為馬達的inverter。 如果可以,我想問相位差的程式概念該如何著手,謝謝! 另外1KHz沒有特別意義,我只是練習改範例程式的頻率而已。 小弟剛學microchip幾天,還沒上過課,目前只會改改課本範例(數位訊號控制器,曾百由 著),對於查表法、sin table、相移諧振DC/DC,或是Multi phase PFC,都是第一次看到,我的課本好像找不到這些名詞,希望可以提供我參考的書名或範例程式,感謝您。
發表於: 2009/2/27 15:07
|
|||
|
Re: 想請教一下關於30F4011的馬達控制PWM模組
|
||||
---|---|---|---|---|
資深會員
|
您這問題存在一些些語病:
1."我想知道如何讓3組PWM產生互差120度的結果" 看不出來你要的是PWM單一週期相差120度, 還是產生相差120度之正弦輸出? 2."也就是三相PWM" 你知道嗎? 只要三臂輸出, 都可以稱為三相PWM, 還是一樣沒說明你是要怎樣相移? 我來猜測一下你的問題, 你要的是三相正弦輸出, 也就是三相SPWM或是SVPWM, 再假設你是要使用最簡單的SPWM方式, 那麼使用查表是對的, 不過一般只建一個表格, 可建90度或是360度. 只使用一個表格好處是省程式空間, 以及預防三相之間相位誤差變大, 甚至漂移. 另外回答您Phase Shift問題, 4011是沒有這功能的, 但是好玩的事來了, 此相移非彼相移, 也就是語病1, 這部份指的是PWM單一週期相差120度使用, 經典應用就是相移諧振DC/DC, 或是Multi phase PFC. 題外話, 雖說馬達控制PWM頻率不用太高, 但是1KHz似乎不太合理, 有何原因嗎? 能力夠的話, 可以試試SVPWM, 衍生的效益是SPWM所沒有的.
發表於: 2009/2/26 10:36
|
|||
Thanks,
Edward Lee |
||||
|