APP009實習板控制無刷馬達問題
|
||||
---|---|---|---|---|
新會員
|
請問我目前學習用APP009的PWM輸出與QEI介面將馬達的霍爾信號3個當輸入
程式部份採用MC LV WIB的Lab5 pid控制24V的BLDC 馬達的輔助電源我是自己作的IPM的電壓我定在150Vdc,PWM訊號從dsPIC30F4011出來,透過光耦合器輸出給IGBT-ipm 參照lad 5的程式 我改了下列硬體的按鈕啟動與轉速設定period 現在問題是: 執行Programmer後,按下按鈕S9馬達無法順利轉動只有狀態停在6個狀態的其中一個轉子位置馬達才可順利啟動 然後啟動後 用VR1去調轉速,轉到中間時轉速以最高,轉到快底轉速卻慢了下來 還有加載時速度明顯掉了下來,無法達成閉迴路控制. lab 5 的foo.s作速度控制與速動計算的檔案,也有加入了 以下是我用lad5的程式做了下列修改讓APP009可以去控制 #define S9 (!PORTBbits.RB6) //我的馬達為4級 //MINPERIOD (Timer 1 時脈) x 60/(最大轉速3000rpm) x (馬達級數)=(20,000,000/64)*60/(3000rpm)x(4)=1563 //MAXPERIOD (Timer 1 時脈) x 60/(最小轉速100rpm) x (馬達級數)=(20,000,000/64)*60/(100rpm)x(4)=46875 #define MINPERIOD 1563 // For 3000 max rpm and 4 poles motor #define MAXPERIOD 46875 // For 100 min rpm and 4 poles motor #define MINABSSPEED 327 #define MAXABSSPEED 32663 int main(void) { for(;;) { if ((S9) && (!Flags.MotorRunning)) //APP009的按鈕S9為RB6 { while(S9); RunMotor(); // Run motor if push button is pressed and motor is stopped } else if ((S9) && (Flags.MotorRunning)) //APP009的按鈕S9為RB6 { while(S9); StopMotor(); // Stop motor if push button is pressed and motor is running } } return 0; void InitADC10(void) { ADCHS = 0x0002; // 將APP009的JP27短路第2跟3隻接腳用AN2當輸入,用VR1調速 } void InitUserInt(void) { TRISB |= 0x0040; // APP009的馬達啟動按鈕S9為RB6 return; }
發表於: 2008/4/29 15:01
|
|||
|