第六章 實測結果
6.2 實測及結果
量測的內容包括霍爾訊號、
PWM輸出波形、上下臂輸入波形、三 相變頻器產生之相電壓、六步方波及不同轉速下的六步方波。
6.2.1 電壓偵測元件的霍爾信號量測 電壓偵測元件的霍爾信號量測 電壓偵測元件的霍爾信號量測 電壓偵測元件的霍爾信號量測
下圖 6-1 為無刷直流電動機中的霍爾效應偵測元件外接出來的三 條霍爾信號線的每相對地的電壓信號量測。由於單晶片輸入最大電壓 為 5.5V,所以在提升電阻前加入 5V 的電壓,其
Ha,
Hb,
Hc皆為 5V。
因為訊號輸出有雜訊干擾,導致示波器顯示不太正確。
由示波器量測的周期推算得知頻率為:
a相為 31.25HZ;
b相為
31.25HZ;
c相為 31.25HZ。
6.2.2 dsPIC 之 之 之 PWM 輸出量測 之 輸出量測 輸出量測 輸出量測
圖 6-2 只量測
a相的 PWM 輸出,其餘兩相波形各與
a相相差 120°。
圖 6-2 a相 PWM 輸出 : CH1 為 PWM1 的電壓與頻率波形,CH2 則為 PWM0。
6.2.3 功率級電晶體上 功率級電晶體上 功率級電晶體上、 功率級電晶體上 、 、 、下臂輸入量測 下臂輸入量測 下臂輸入量測 下臂輸入量測
圖 6-3 只量測
a相的閘極輸入電壓,其餘兩相波形各與
a相相差 120°。
圖 6-3 上、下臂輸入量測 : CH1 為a相上臂的閘極輸入電壓與頻率,
CH2 則為a相下臂的閘極輸入電壓與頻率。
6.2.4 三相變頻器產生之相電壓 三相變頻器產生之相電壓 三相變頻器產生之相電壓 三相變頻器產生之相電壓
下圖 6-4 為三相變頻器產生之相電壓所量測的波形,其中
a相電 壓為 32.4V,
b相電壓為 32.4
,c相電壓為 35.2V。
圖 6-4 三相變頻器之相電壓穩態響應 :
CH1 為a相對地的電壓波形,CH2 為b相對地,CH3 為c相對地。
6.2.5 無載六步方波 無載六步方波 無載六步方波(三相變頻器之線對線電壓 無載六步方波 三相變頻器之線對線電壓 三相變頻器之線對線電壓 三相變頻器之線對線電壓)
下圖 6-5 為三相變頻器產生之線對線電壓所量測的波形,其 中
a相電壓為 48V,
b相電壓為 48V
,c相電壓為 48V。因為訊號輸出 有雜訊干擾,導致示波器顯示不太正確。以週期推算出頻率:CH1 為 143HZ;CH2 為 143HZ;CH3 為 143HZ。
圖 6-5 六步方波之電壓大小 說明圖 6-5. CH1 為a相對b相的線對線電壓波形
CH2 為b相對c相的線對線電壓波形 CH3 為c相對a相的線對線電壓波形
6.2.6 最大轉速之下的六步方波 最大轉速之下的六步方波 最大轉速之下的六步方波 最大轉速之下的六步方波
命令加速至最大 命令加速至最大 命令加速至最大 命令加速至最大: : : :
下圖 6-6 為調速手把命令值調至最大時,三相變頻器產生之 線對線電壓所量測的波形,其中
a相電壓為 48V,
b相電壓為 48V
,c相 電壓為 48V。因為訊號輸出有雜訊干擾,導致示波器顯示不太正確。
由示波器量測的周期推算頻率得知:CH1 為 250HZ;CH2 為 250HZ;CH3 為 250HZ。
圖 6-6 六步方波之電壓大小
CH1 為a相對b相的線對線電壓波形 CH2 為b相對c相的線對線電壓波形 CH3 為c相對a相的線對線電壓波形
6.3 結語 結語 結語 結語
在經過多次的重複測量跟不斷校正之後,本專題現在可以根據實
測波形的結果,看出理論跟實際上的互相呼應,同時也驗證了本專題
所應用的六步方波控制理論的正確性。雖然目前都是以空載的狀態去
測量波形跟數據,尚未使用到加載跟測量兩用的儀器,但實測結果跟
電動自行車實際運轉負重加載的結果到目前為止仍在穩定的狀態。
第七 第七 第七
b. 第二組為利用 LM324 組成的迴授訊號放大電路。
3. 用人力踩的時候,經過升壓的功率轉換器使直流無刷馬達當成 發電機使用,能有充電效果回充到電池,一方面也是響應環保 節能的觀念。同時電動自行車也達到健身跟便利性的雙贏。
4. 由於目前電路設計在測試階段,所以分為五塊電路板,體積仍 然龐大,因此待各項功能均成熟完備後,規劃將所有使用到電 路板合在一起洗成正式的電路板。
5. 目前使用傳統的脈波寬調變法則(
PWM),若能改用弦式脈寬調 變法則(
SPWM)或電壓空間向量脈寬調變法則(
VSVPWM),更 能減少
PWM信號之輸出總諧波失真,效率更高,噪音更小,
可利用於各方面控制無刷直流馬達之場合。
參考文獻 參考文獻 參考文獻 參考文獻
[1] Microchip,“dsPIC30F4011/4012 Data Sheet”,Microchip Technology lnc 2007。
[2] Microchip,”Sensored BLDC Motor Control Using dsPIC30F2010”
,Microchip Technology lnc 2005。
[3] Microchip,”Motor Control Sensor Feedback Circuits” ,Microchip Technology lnc 2003。
[4] Microchip,”Using the dsPIC30F for Sensorless BLDC Control” , Microchip Technology lnc 2006。
[5] Microchip,”APP009 dsPIC30F4011/4012/2010 Motor Control
Family”Evaluation Board 使用說明” ,Microchip Technology lnc 2004。
[6] 曾百由,”dspic 數位訊號控制器原理及應用”,宏友圖書有限公 司,2006 年 10 月。
[7] http://www.alldatasheet.com/,“US1K Data Sheet”。
[8] http://www.irf.com/,“IR2101S/IR2102S Data Sheet”。
[9] 台灣科技大學電機工程系,”電動自行車驅動系統之製作” 九五
學年度專題報告。
附錄 附錄 附錄 附錄 A A A A 電動自行車法令條文 電動自行車法令條文 電動自行車法令條文 電動自行車法令條文
附錄 附錄 附錄
JP21(3)> Pin21 > PortB.bit2,CN4
JP21(2)> Pin20 > PortB.bit1,CN3
JP21(1)> Pin19 > PortB.bit0,CN2
JP16(1-2),
JP28(1)> Pin27 >PortB.bit8,AN8,
JP19(5)> Pin25 > PortB.bit6,RB6
JP2(6)> Pin18 > /MCLR
JP2(2),JP3(1) > Pin1 > PortF.bit2,
PGC
JP2(2),JP4(1)> Pin44 > PortF.bit3,
PGD
附錄 附錄
附錄 附錄 附錄
線上串列燒錄時脈輸入腳位。
RB0-RB8 I/O ST PORTB 雙向輸出入埠
RC13-RC15 I/O ST PORTC 雙向輸出入埠
RD0-RD3 I/O ST PORTD 雙向輸出入埠
RE0-RE5, RE8
I/O ST PORTE 雙向輸出入埠
RF0-RF6 I/O ST PORTF 雙向輸出入埠
VDD P - 邏輯及輸出入腳位電源供應正端
VSS P - 邏輯及輸出入腳位電源供應接地參
考點
VREF+ I Analog 類比模組參考電壓正端
VREF− I Analog 類比模組參考電壓負端
符號註解: CMOS=CMOS 相容的輸出或輸入 Analog=類比輸入 ST=附 CMOS 層次的 Schimitter 觸發器 O=輸出
I=輸入 P=電源
附錄 附錄
附錄 附錄 E E E E 轉速閉迴路程式碼及註解 轉速閉迴路程式碼及註解 轉速閉迴路程式碼及註解 轉速閉迴路程式碼及註解
//轉速閉迴路程式碼及註解
#define _dsPIC30F4011_ //含入標頭檔
#include <p30F4011.h> //以下三行為以 p30f4011.h 內之函式鎖定工作環境控制模式
#include "C30EVM_LCD.h"
_FOSC(CSW_FSCM_OFF & HS); //選擇使用外接之振盪器(20Mhz),選擇 HS 無倍頻之起盪模式 _FWDT(WDT_OFF); //關閉看門狗功能
_FBORPOR(MCLR_EN & PWMxH_ACT_HI & PWMxL_ACT_HI);
//設定電路有重置工能,上 PWM 為正電源動作,下 PWM 為負電源動作
unsigned int HallValue; //霍爾狀態值
unsigned int StateLoTable[]={0x0000, 0x0210,0x2004,0x0204,0x0801,0x0810,0x2001, 0x0000};
//若環境設定內設定上 PWM 與下 PWM 皆為正電源動作則要改用下表
//unsigned int StateLoTable[]={0x0000, 0x0205, 0x2011, 0x0211,0x0814, 0x0805, 0x2014, 0x0000};
//---變數宣告區結束---
{ //前三個為抓由電流取樣電阻取得之電壓經反向放大電路與濾波電路得到之值 if(0.8<= DesiredSpeed < 1.0)
DesiredSpeed=0;
//if(0.9<= DesiredSpeed < 1.0) //DesiredSpeed=0.15;
if(1.0<= DesiredSpeed < 1.1) DesiredSpeed=0.3;
if(1.1<= DesiredSpeed < 1.2) DesiredSpeed=0.45;
if(1.2<= DesiredSpeed < 1.3) DesiredSpeed=0.6;
DesiredSpeed=0.75;
if(1.4<= DesiredSpeed < 1.5) DesiredSpeed=0.9;
if(1.5<= DesiredSpeed < 1.6) DesiredSpeed=1.05;
if(1.6<= DesiredSpeed < 1.7) DesiredSpeed=1.20;
if(1.7<= DesiredSpeed < 1.8) DesiredSpeed=1.35;
if(1.8<= DesiredSpeed < 1.9) DesiredSpeed=1.50;
if(1.9<= DesiredSpeed < 2.0) DesiredSpeed=1.65;
if(2.0<= DesiredSpeed < 2.1) DesiredSpeed=1.80;
if(2.1<= DesiredSpeed < 2.2) DesiredSpeed=1.95;
if(2.2<= DesiredSpeed < 2.3) DesiredSpeed=2.10;
if(2.3<= DesiredSpeed < 2.4) DesiredSpeed=2.25;
if(2.4<= DesiredSpeed < 2.5) DesiredSpeed=2.40;
if(2.5<= DesiredSpeed < 2.6) DesiredSpeed=2.55;
if(2.6<= DesiredSpeed < 2.7) DesiredSpeed=2.70;
if(2.7<= DesiredSpeed < 2.8) DesiredSpeed=2.85;
if(2.8<= DesiredSpeed < 2.9) DesiredSpeed=3.0;
if(2.9<= DesiredSpeed < 3.0) DesiredSpeed=3.15;
if(3.0<= DesiredSpeed < 3.1)
if(3.3<= DesiredSpeed < 3.4) DesiredSpeed=3.75;
if(3.4<= DesiredSpeed < 3.5) DesiredSpeed=3.90;
if(3.5<= DesiredSpeed < 3.6) DesiredSpeed=4.05;
if(3.6<= DesiredSpeed < 3.7) DesiredSpeed=4.20;
if(3.7<= DesiredSpeed < 3.8) DesiredSpeed=4.35;
if(3.8<= DesiredSpeed < 3.9) DesiredSpeed=4.50;
if(3.9<= DesiredSpeed < 4.0) DesiredSpeed=4.65;
if(4.0<= DesiredSpeed < 4.1) DesiredSpeed=4.80;
if(4.1<= DesiredSpeed < 4.2) DesiredSpeed=5.0;
IEC0bits.CNIE = 1; //將輸入改變中斷致能設為 1 表示允許此中斷發生
}
PDC1 = 50; //給定 PDC 初始值
ActualSpeed =ActualSpeed >> 1;
if (ActualSpeed > DesiredSpeed) {
SpeedError=ActualSpeed - DesiredSpeed;
} else {
SpeedError= DesiredSpeed - ActualSpeed;
Flags.Minus = 1;
}
SpeedIntegral += SpeedError; //誤差值積分計算 if (SpeedIntegral > 4500)
SpeedIntegral = 0;
{ //減速以消除過電流情行 PDC1=10 ;
PDC2=PDC1;
PDC3=PDC1;
}
else //若未發生過電流則把新的 DutyCycle 載入 PDC {
PDC1= DutyCycle;
PDC2=PDC1;
PDC3=PDC1;
} return;
}
//---其他功能副程式區結束--- //---此為延遲副程式--- int N=1;
void DelayNmSec(unsigned int N) //此為延遲副程式 DelayNmSec 延遲 1ms 的一個參數;
{ //注意不是只以迴圈數計算,C 語言一個語法可能有多個動 作,須較多工作時間
unsigned int j ; while (N--)
for(j = 0;j < MILLISEC;j++);
}