一、內(nèi)容
1.無傳感無刷直流馬達(dá)控制原理
2.無傳感無刷直流馬達(dá)開發(fā)板部份硬件電路剖析
3.無傳感無刷直流馬達(dá)部份代碼剖析與運(yùn)行結(jié)果
二、知識點(diǎn)1.無傳感無刷直流馬達(dá)控制原理1.1無傳感無刷直流馬達(dá)相比于有傳感的優(yōu)勢:
①硬件上,降低了馬達(dá)本身的質(zhì)量和規(guī)格,不易安裝與維護(hù),且霍爾傳感本身存在著一定的磁不敏感區(qū);
②應(yīng)用上,霍爾傳感安裝的精度和靈敏度會影響馬達(dá)的運(yùn)行性能,且傳感不能挺好的適應(yīng)惡劣的工作環(huán)境。
1.2反電動勢法——檢測定子位置信息進(jìn)行換相
直流電動機(jī)最初起動時(shí),電樞定子構(gòu)建一個(gè)磁場,集電極電壓形成另一個(gè)磁場,兩磁場互相作用,起動電動機(jī)運(yùn)行。定子定子在磁場中旋轉(zhuǎn),因而形成發(fā)電機(jī)效應(yīng)。實(shí)際上旋轉(zhuǎn)定子形成一個(gè)感應(yīng)電動勢,與定子電流極性相反,這些自感應(yīng)電動勢稱為反電動勢。同理,在無刷直流馬達(dá)中,受定子定子形成的合成磁場的作用,定子順著一定的方向連續(xù)轉(zhuǎn)動。馬達(dá)繞組上放有電刷定子。因而,定子一旦旋轉(zhuǎn),都會在空間產(chǎn)生導(dǎo)體切割磁力線的情況。依據(jù)電磁感應(yīng)定理可知,導(dǎo)體切割磁力線會在導(dǎo)體中形成感應(yīng)電勢。所以,在定子旋轉(zhuǎn)的時(shí)侯才會在轉(zhuǎn)子定子中形成感應(yīng)電勢,即反電動勢。
同有傳感無刷直流馬達(dá)一樣,無傳感無刷直流馬達(dá)也采用六步換相控制,每一個(gè)換相周期,將有一相定子處于不導(dǎo)通狀態(tài)。因而通過測量第單相反電動勢訊號,可測量到定子微極在該定子經(jīng)過的時(shí)刻。反電動勢檢查原理圖右圖所示反電動勢,在AB定子通電時(shí)應(yīng)檢查C相反電動勢電流。
1.3反電動勢法過零點(diǎn)檢查
對于120°有傳感無刷直流馬達(dá),其反電勢和傳感訊號右圖所示,須要注意的點(diǎn)如下:
①有傳感和無傳感無刷直流馬達(dá)的控制都采用六步換相控制;
②使用無傳感無刷直流馬達(dá)控制,當(dāng)測量到過零點(diǎn)時(shí),須要提早30個(gè)角度再換相。
1.4無傳感無刷直流馬達(dá)三段式啟動
無傳感無刷直流馬達(dá)須要采用三段式啟動的緣由:
①硬件上,對于小功率馬達(dá),直接上電啟動時(shí)電壓是特別大的,容易造成硬件電路漏電或則降低電子元件的壽命;電壓過大容易造成過熱去磁問題,容易造成馬達(dá)啟動失??;啟動過快就會造成機(jī)械負(fù)載的沖擊等。
②應(yīng)用上,電樞定子的反電動勢同馬達(dá)的怠速成反比,也就是說,當(dāng)馬達(dá)未上電時(shí),未能按照反電動勢檢查定子的狀態(tài),也就難以達(dá)到馬達(dá)的控制療效。
三段式啟動包括:定子預(yù)定位、加速和運(yùn)動狀態(tài)轉(zhuǎn)換三步反電動勢,三段式啟動的用處是,可以是馬達(dá)達(dá)到可控療效,提升馬達(dá)控制的穩(wěn)定性,同時(shí)也是對馬達(dá)本身的一種合理應(yīng)用,降低其使用周期。下邊是對三段式啟動的具體剖析:
1)定子預(yù)定位
剛開始馬達(dá)在靜止情況下,并且開始不曉得定子的情況下,可以進(jìn)行通過對單相馬達(dá)的其中兩相通電,等待一段時(shí)間,之后再對馬達(dá)相鄰狀態(tài)的兩相通電,此時(shí)定子會轉(zhuǎn)動,但是會轉(zhuǎn)動到當(dāng)前兩相合成磁場的所在的位置。注意預(yù)定位中pwm以及的通電的等待時(shí)間,須要依照實(shí)際情況選定。
2)加速運(yùn)行階段
pwm的開始信噪比,應(yīng)當(dāng)從克服外界負(fù)載的最小扭力開始,逐步提升,pwm信噪比的減小作用似乎等效于加在通電兩相的電流減小,逐步提升馬達(dá)換相的頻度,此時(shí)馬達(dá)才會加速上去。常見加速有三種形式,恒頻升壓法恒壓升頻法,升頻升壓法。
①恒頻升壓法:馬達(dá)換相頻度不變,馬達(dá)供電的電流逐步提升,借此達(dá)到加速療效。
②恒壓升頻法:馬達(dá)供電的電流不變,馬達(dá)換相時(shí)間逐步提升,借此達(dá)到加速療效。
③升壓升頻法:馬達(dá)供電的電流與馬達(dá)換相頻度都漸漸進(jìn)行提升,達(dá)到加速療效。
升壓升頻法實(shí)現(xiàn)上去相比上面兩種方式實(shí)現(xiàn)較為復(fù)雜。須要協(xié)調(diào)好電流與頻度的遞增,換相信號的頻度須要依照實(shí)際馬達(dá)的馬達(dá)極對數(shù)以及馬達(dá)相內(nèi)阻等其他原生參數(shù)確定。換相頻度太低,馬達(dá)加速不上去;換相頻度太高,馬達(dá)運(yùn)行上去容易失步,造成加速失敗。
3)運(yùn)動狀態(tài)轉(zhuǎn)換——開環(huán)切入閉環(huán)
當(dāng)馬達(dá)加速到一定速率,最好直至當(dāng)前速率下馬達(dá)反電動勢要呈矩形波,可以用示波器觀察。當(dāng)反電動勢測量通過ADC連續(xù)穩(wěn)定采集到3個(gè)過零點(diǎn)的情況,說明當(dāng)前馬達(dá)的運(yùn)行速率達(dá)到無位置傳感的運(yùn)行要求。此時(shí)可以切入到閉環(huán)狀態(tài)。當(dāng)注意的一個(gè)細(xì)節(jié)是,相同pwm信噪比馬達(dá)在開環(huán)時(shí)對應(yīng)的速率與步入閉環(huán)時(shí)對應(yīng)的速率相差越小,切換成功的概率越大,并且切換的也越平滑。
值得注意的是,馬達(dá)從開環(huán)切入閉環(huán)的過程是馬達(dá)啟動最為困難的一個(gè)階段,難度系數(shù)比較高。并且這個(gè)環(huán)節(jié)是馬達(dá)啟動最重要的一個(gè)階段,它決定著馬達(dá)是否能步入旁邊的閉環(huán)操作。
1.5PID控制原理
將誤差的比列()、積分()和微分()通過線性組合構(gòu)成控制量,用這一控制量對被控對象進(jìn)行控制,這樣的控制器稱PID控制器。在模擬控制系統(tǒng)中,控制器常用的控制規(guī)律是PID控制。右圖所示是一個(gè)小功率直流馬達(dá)的調(diào)速原理圖。給定速率與實(shí)際怠速進(jìn)行比較,其差值經(jīng)過PID控制器調(diào)整后輸出電流控制訊號,經(jīng)過功率放大后,驅(qū)動直流電動機(jī)改變其怠速。
常規(guī)的模擬PID控制系統(tǒng)原理框圖右圖所示。該系統(tǒng)由模擬PID控制器和被控對象組成。圖中,r(t)是給定值,y(t)是系統(tǒng)的實(shí)際輸出值,給定值與實(shí)際輸出值構(gòu)成控制誤差e(t),有:e(t)=r(t)-y(t)。
e(t)作為PID控制的輸入,u(t)作為PID控制器的輸出和被控對象的輸入。所以模擬PID控制器的控制規(guī)律為:
u(t)=Kp[e(t)+1/Ti∫0te(t)dt+Td*de(t)/dt]
其中:Kp為控制器的比列系數(shù)、Ti控制器的積分時(shí)間,俗稱積分系數(shù)、Td控制器的微分時(shí)間,俗稱微分系數(shù)。
PID控制系統(tǒng)物理表達(dá)式如下:
①比例部份的物理式表示是:Kp*e(t)

②積分部份的物理式表示是:Kp/Ti∫0te(t)dt
③微分部份的物理式表示是:(t)/dt
2.無傳感無刷直流馬達(dá)開發(fā)板部份硬件電路剖析(無霍爾傳感)2.1電源及變壓部份
首先,借助變壓器使220V交流電轉(zhuǎn)化為24V直流電,通入馬達(dá)開發(fā)板,按照馬達(dá)開發(fā)板上各個(gè)模塊的電流需求(如芯片、按鍵模塊須要3.3V供電),通過系列芯片,以及芯片,依次實(shí)現(xiàn)直流電源24V到15V、15V到12V、12V到5V、5V到3.3V的轉(zhuǎn)換,達(dá)到供電療效。其中,各個(gè)電流轉(zhuǎn)換電路原理圖右圖所示。
2.2主控芯片
馬達(dá)開發(fā)板所使用的主控芯片為,其引腳為64個(gè),flash為128kb。主控芯片原理圖右圖所示,圖中包括晶振、復(fù)位鍵、程序下載口等部件。另外,主控芯片的部份引腳與相對應(yīng)的模塊相聯(lián)接,控制著馬達(dá)的運(yùn)動、運(yùn)動狀態(tài)監(jiān)測等功能。
2.3反電動勢法馬達(dá)控制電路
同有傳感無刷直流馬達(dá)相比,無傳感無刷直流馬達(dá)的控制電路只多了一個(gè)狀態(tài)數(shù)字取樣模塊,即右圖中紅框部份。狀態(tài)數(shù)字取樣模塊是反電動勢法馬達(dá)控制的核心,它的主要作用在于測量定子的位置信息,并通過PB11/口返回給主控芯片,使其對其運(yùn)動狀態(tài)進(jìn)行控制,因而取代傳感的工作療效。
3.無傳感無刷直流馬達(dá)部份代碼剖析與運(yùn)行結(jié)果3.1主函數(shù)代碼及注釋
首先對中斷、時(shí)鐘、IO口、A/D端口、按鍵及定時(shí)器等模塊進(jìn)行初始化,并給相關(guān)參數(shù)賦終值,在如下主程序中,實(shí)現(xiàn)的功能是通過判定key1的狀態(tài),控制馬達(dá)轉(zhuǎn)動,判定key2的狀態(tài),控制馬達(dá)停止,其對應(yīng)的主控芯片端口為PC5、PC15,另外,通過調(diào)用()函數(shù),控制馬達(dá)轉(zhuǎn)動的加減速。馬達(dá)轉(zhuǎn)動實(shí)物圖右圖所示。
int main (void )
{
//ClockDir=0;
ClockDir=1;
SystemInit();
NVIC_Configuration();//中斷設(shè)置
RCC_GetClocksFreq(&RCC_Clocks);
GPIO_Configuration();//GPIO 初始化
ADC_Configuration();//模擬端口初始化
TIM_Configuration2();//Tim1定時(shí)器初始化
BLDC_Init();
KEY_Init();
ShowMenu_init();
//My_PWM=1250;
My_PWM=250;
BEMF_Cnt = 0;
BEMF_ADC_Cnt = 0;
MotorA.Step = 0;
ucMotorStep=MotorA.Step;
ucMotorAD=0;
//BLDC_SwitchStep();//采用6步法驅(qū)動BLDC
MENOFF();
MENON();//芯片端使能
LcdReset();
fgDispMode=1;
while(1)
{
if(KEY_Read(KEY1))
{
//CoTickDelay(5);
Delay1Us();
if(KEY_Read(KEY1))
{
//BLDC_Init();
My_PWM=250;
TIM_Configuration1();
TIM_Configuration2();//Tim1定時(shí)器初始化
}
}
if(KEY_Read(KEY2))
{
//CoTickDelay(5);
Delay1Us();
if(KEY_Read(KEY2))
{
BLDC_Stop();
if(ucT10S>=1) //每秒的事件處理
{
My_PWM=250;
if(ClockDir==1)ClockDir=0;
else ClockDir=1;
ucT10S=0;
}
}
}
Timeproc();
}
}
3.2反電動勢法相關(guān)代碼
unsigned long
BEMF(void)
{
// unsigned short VoltBEMF = 0;
unsigned long dir = 0;
if (ucMotorStep!=MotorA.Step)
{
ucMotorStep=MotorA.Step;
ucMotorAD=0;
}
switch (MotorA.Step)
{
case 0:VoltBEMF[ucMotorAD] =ADCConvertedValue_2[2]; dir = 1;/*下降*/ break;
case 1:VoltBEMF[ucMotorAD] =ADCConvertedValue_2[1]; break;
case 2:VoltBEMF[ucMotorAD] =ADCConvertedValue_2[0]; dir = 1; break;
case 3:VoltBEMF[ucMotorAD] = ADCConvertedValue_2[2]; break;
case 4:VoltBEMF[ucMotorAD] =ADCConvertedValue_2[1]; dir = 1; break;
case 5:VoltBEMF[ucMotorAD] =ADCConvertedValue_2[0]; break;
default: break;
}
if(ucMotorAD<2)
{
ucMotorAD++;
}
else
{
//ucMotorAD=0;
if (((dir ==1)&&(ClockDir==0))||((dir == 0)&&(ClockDir==1))) //下降,PWM-OFF檢測BEMF,過零點(diǎn)標(biāo)志是BEMF電壓為0
{
if((VoltBEMF[0]>0)&&(VoltBEMF[1]==0))
{
usOZTimeS++;
return 1;
}
}
else
{
if((VoltBEMF[0]==0)&&(VoltBEMF[1]>0))
{
usOZTimeS++;
return 1;
}
}
}
VoltBEMF[0]=VoltBEMF[1];
VoltBEMF[1]=VoltBEMF[2];
return 0;
}
3.3馬達(dá)加減速相關(guān)代碼
void Timeproc()
{
if(fgT10Ms ==0)
{
return;
}
//SendFrame();
fgT10Ms = 0;
ucT100ms++;
ucT1S++;
if(ucT100ms>=10)
{
if((My_PWM<1000)&&(flag== 0))
{
My_PWM=My_PWM+10;
}
if(My_PWM>=1000)flag = 1;
if(My_PWM>=200)
{
if(flag== 1) My_PWM=My_PWM-10;
}
else
{
flag= 0;
}
MENON();
ucT100ms=0;
}
if(ucT1S>=100) //每秒的事件處理
{
speed_1=My_PWM;//計(jì)算速度
//aim_speed=0;
ShowMenuMain();//菜單顯示
//ShowMenu_init();
ucT10S++;
ucT1S=0;
}
if(ucT10S>=10) //每秒的事件處理
{
//if(flag11== 1)flag12 = 1;
//ShowMenuMain();//菜單顯示
//ShowMenu_init();
ucT10S=0;
}
}
三、總結(jié)
這半個(gè)月以來,主要是在學(xué)習(xí)了有傳感無刷直流馬達(dá)相關(guān)內(nèi)容的基礎(chǔ)上,對無傳感無刷直流馬達(dá)相關(guān)內(nèi)容進(jìn)行一個(gè)學(xué)習(xí)。其中,學(xué)習(xí)的成果主要是對無傳感無刷直流馬達(dá)控制原理有了較為深刻認(rèn)識,而且比較了有、無傳感在馬達(dá)控制上的不同,加深了硬件原理圖部份的理解,并且在程序方面,還沒有完全吃透,須要進(jìn)一步的學(xué)習(xí)。
