一、內(nèi)容
1.無(wú)傳感無(wú)刷直流馬達(dá)控制原理
2.無(wú)傳感無(wú)刷直流馬達(dá)開(kāi)發(fā)板部份硬件電路剖析
3.無(wú)傳感無(wú)刷直流馬達(dá)部份代碼剖析與運(yùn)行結(jié)果
二、知識(shí)點(diǎn)1.無(wú)傳感無(wú)刷直流馬達(dá)控制原理1.1無(wú)傳感無(wú)刷直流馬達(dá)相比于有傳感的優(yōu)勢(shì):
①硬件上,降低了馬達(dá)本身的質(zhì)量和規(guī)格,不易安裝與維護(hù),且霍爾傳感本身存在著一定的磁不敏感區(qū);
②應(yīng)用上,霍爾傳感安裝的精度和靈敏度會(huì)影響馬達(dá)的運(yùn)行性能,且傳感不能挺好的適應(yīng)惡劣的工作環(huán)境。
1.2反電動(dòng)勢(shì)法——檢測(cè)定子位置信息進(jìn)行換相
直流電動(dòng)機(jī)最初起動(dòng)時(shí),電樞定子構(gòu)建一個(gè)磁場(chǎng),集電極電壓形成另一個(gè)磁場(chǎng),兩磁場(chǎng)互相作用,起動(dòng)電動(dòng)機(jī)運(yùn)行。定子定子在磁場(chǎng)中旋轉(zhuǎn),因而形成發(fā)電機(jī)效應(yīng)。實(shí)際上旋轉(zhuǎn)定子形成一個(gè)感應(yīng)電動(dòng)勢(shì),與定子電流極性相反,這些自感應(yīng)電動(dòng)勢(shì)稱為反電動(dòng)勢(shì)。同理,在無(wú)刷直流馬達(dá)中,受定子定子形成的合成磁場(chǎng)的作用,定子順著一定的方向連續(xù)轉(zhuǎn)動(dòng)。馬達(dá)繞組上放有電刷定子。因而,定子一旦旋轉(zhuǎn),都會(huì)在空間產(chǎn)生導(dǎo)體切割磁力線的情況。依據(jù)電磁感應(yīng)定理可知,導(dǎo)體切割磁力線會(huì)在導(dǎo)體中形成感應(yīng)電勢(shì)。所以,在定子旋轉(zhuǎn)的時(shí)侯才會(huì)在轉(zhuǎn)子定子中形成感應(yīng)電勢(shì),即反電動(dòng)勢(shì)。
同有傳感無(wú)刷直流馬達(dá)一樣,無(wú)傳感無(wú)刷直流馬達(dá)也采用六步換相控制,每一個(gè)換相周期,將有一相定子處于不導(dǎo)通狀態(tài)。因而通過(guò)測(cè)量第單相反電動(dòng)勢(shì)訊號(hào),可測(cè)量到定子微極在該定子經(jīng)過(guò)的時(shí)刻。反電動(dòng)勢(shì)檢查原理圖右圖所示反電動(dòng)勢(shì),在AB定子通電時(shí)應(yīng)檢查C相反電動(dòng)勢(shì)電流。
1.3反電動(dòng)勢(shì)法過(guò)零點(diǎn)檢查
對(duì)于120°有傳感無(wú)刷直流馬達(dá),其反電勢(shì)和傳感訊號(hào)右圖所示,須要注意的點(diǎn)如下:
①有傳感和無(wú)傳感無(wú)刷直流馬達(dá)的控制都采用六步換相控制;
②使用無(wú)傳感無(wú)刷直流馬達(dá)控制,當(dāng)測(cè)量到過(guò)零點(diǎn)時(shí),須要提早30個(gè)角度再換相。
1.4無(wú)傳感無(wú)刷直流馬達(dá)三段式啟動(dòng)
無(wú)傳感無(wú)刷直流馬達(dá)須要采用三段式啟動(dòng)的緣由:
①硬件上,對(duì)于小功率馬達(dá),直接上電啟動(dòng)時(shí)電壓是特別大的,容易造成硬件電路漏電或則降低電子元件的壽命;電壓過(guò)大容易造成過(guò)熱去磁問(wèn)題,容易造成馬達(dá)啟動(dòng)失敗;啟動(dòng)過(guò)快就會(huì)造成機(jī)械負(fù)載的沖擊等。
②應(yīng)用上,電樞定子的反電動(dòng)勢(shì)同馬達(dá)的怠速成反比,也就是說(shuō),當(dāng)馬達(dá)未上電時(shí),未能按照反電動(dòng)勢(shì)檢查定子的狀態(tài),也就難以達(dá)到馬達(dá)的控制療效。
三段式啟動(dòng)包括:定子預(yù)定位、加速和運(yùn)動(dòng)狀態(tài)轉(zhuǎn)換三步反電動(dòng)勢(shì),三段式啟動(dòng)的用處是,可以是馬達(dá)達(dá)到可控療效,提升馬達(dá)控制的穩(wěn)定性,同時(shí)也是對(duì)馬達(dá)本身的一種合理應(yīng)用,降低其使用周期。下邊是對(duì)三段式啟動(dòng)的具體剖析:
1)定子預(yù)定位
剛開(kāi)始馬達(dá)在靜止情況下,并且開(kāi)始不曉得定子的情況下,可以進(jìn)行通過(guò)對(duì)單相馬達(dá)的其中兩相通電,等待一段時(shí)間,之后再對(duì)馬達(dá)相鄰狀態(tài)的兩相通電,此時(shí)定子會(huì)轉(zhuǎn)動(dòng),但是會(huì)轉(zhuǎn)動(dòng)到當(dāng)前兩相合成磁場(chǎng)的所在的位置。注意預(yù)定位中pwm以及的通電的等待時(shí)間,須要依照實(shí)際情況選定。
2)加速運(yùn)行階段
pwm的開(kāi)始信噪比,應(yīng)當(dāng)從克服外界負(fù)載的最小扭力開(kāi)始,逐步提升,pwm信噪比的減小作用似乎等效于加在通電兩相的電流減小,逐步提升馬達(dá)換相的頻度,此時(shí)馬達(dá)才會(huì)加速上去。常見(jiàn)加速有三種形式,恒頻升壓法恒壓升頻法,升頻升壓法。
①恒頻升壓法:馬達(dá)換相頻度不變,馬達(dá)供電的電流逐步提升,借此達(dá)到加速療效。
②恒壓升頻法:馬達(dá)供電的電流不變,馬達(dá)換相時(shí)間逐步提升,借此達(dá)到加速療效。
③升壓升頻法:馬達(dá)供電的電流與馬達(dá)換相頻度都漸漸進(jìn)行提升,達(dá)到加速療效。
升壓升頻法實(shí)現(xiàn)上去相比上面兩種方式實(shí)現(xiàn)較為復(fù)雜。須要協(xié)調(diào)好電流與頻度的遞增,換相信號(hào)的頻度須要依照實(shí)際馬達(dá)的馬達(dá)極對(duì)數(shù)以及馬達(dá)相內(nèi)阻等其他原生參數(shù)確定。換相頻度太低,馬達(dá)加速不上去;換相頻度太高,馬達(dá)運(yùn)行上去容易失步,造成加速失敗。
3)運(yùn)動(dòng)狀態(tài)轉(zhuǎn)換——開(kāi)環(huán)切入閉環(huán)
當(dāng)馬達(dá)加速到一定速率,最好直至當(dāng)前速率下馬達(dá)反電動(dòng)勢(shì)要呈矩形波,可以用示波器觀察。當(dāng)反電動(dòng)勢(shì)測(cè)量通過(guò)ADC連續(xù)穩(wěn)定采集到3個(gè)過(guò)零點(diǎn)的情況,說(shuō)明當(dāng)前馬達(dá)的運(yùn)行速率達(dá)到無(wú)位置傳感的運(yùn)行要求。此時(shí)可以切入到閉環(huán)狀態(tài)。當(dāng)注意的一個(gè)細(xì)節(jié)是,相同pwm信噪比馬達(dá)在開(kāi)環(huán)時(shí)對(duì)應(yīng)的速率與步入閉環(huán)時(shí)對(duì)應(yīng)的速率相差越小,切換成功的概率越大,并且切換的也越平滑。
值得注意的是,馬達(dá)從開(kāi)環(huán)切入閉環(huán)的過(guò)程是馬達(dá)啟動(dòng)最為困難的一個(gè)階段,難度系數(shù)比較高。并且這個(gè)環(huán)節(jié)是馬達(dá)啟動(dòng)最重要的一個(gè)階段,它決定著馬達(dá)是否能步入旁邊的閉環(huán)操作。
1.5PID控制原理
將誤差的比列()、積分()和微分()通過(guò)線性組合構(gòu)成控制量,用這一控制量對(duì)被控對(duì)象進(jìn)行控制,這樣的控制器稱PID控制器。在模擬控制系統(tǒng)中,控制器常用的控制規(guī)律是PID控制。右圖所示是一個(gè)小功率直流馬達(dá)的調(diào)速原理圖。給定速率與實(shí)際怠速進(jìn)行比較,其差值經(jīng)過(guò)PID控制器調(diào)整后輸出電流控制訊號(hào),經(jīng)過(guò)功率放大后,驅(qū)動(dòng)直流電動(dòng)機(jī)改變其怠速。
常規(guī)的模擬PID控制系統(tǒng)原理框圖右圖所示。該系統(tǒng)由模擬PID控制器和被控對(duì)象組成。圖中,r(t)是給定值,y(t)是系統(tǒng)的實(shí)際輸出值,給定值與實(shí)際輸出值構(gòu)成控制誤差e(t),有:e(t)=r(t)-y(t)。
e(t)作為PID控制的輸入,u(t)作為PID控制器的輸出和被控對(duì)象的輸入。所以模擬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.無(wú)傳感無(wú)刷直流馬達(dá)開(kāi)發(fā)板部份硬件電路剖析(無(wú)霍爾傳感)2.1電源及變壓部份
首先,借助變壓器使220V交流電轉(zhuǎn)化為24V直流電,通入馬達(dá)開(kāi)發(fā)板,按照馬達(dá)開(kāi)發(fā)板上各個(gè)模塊的電流需求(如芯片、按鍵模塊須要3.3V供電),通過(guò)系列芯片,以及芯片,依次實(shí)現(xiàn)直流電源24V到15V、15V到12V、12V到5V、5V到3.3V的轉(zhuǎn)換,達(dá)到供電療效。其中,各個(gè)電流轉(zhuǎn)換電路原理圖右圖所示。
2.2主控芯片
馬達(dá)開(kāi)發(fā)板所使用的主控芯片為,其引腳為64個(gè),flash為128kb。主控芯片原理圖右圖所示,圖中包括晶振、復(fù)位鍵、程序下載口等部件。另外,主控芯片的部份引腳與相對(duì)應(yīng)的模塊相聯(lián)接,控制著馬達(dá)的運(yùn)動(dòng)、運(yùn)動(dòng)狀態(tài)監(jiān)測(cè)等功能。
2.3反電動(dòng)勢(shì)法馬達(dá)控制電路
同有傳感無(wú)刷直流馬達(dá)相比,無(wú)傳感無(wú)刷直流馬達(dá)的控制電路只多了一個(gè)狀態(tài)數(shù)字取樣模塊,即右圖中紅框部份。狀態(tài)數(shù)字取樣模塊是反電動(dòng)勢(shì)法馬達(dá)控制的核心,它的主要作用在于測(cè)量定子的位置信息,并通過(guò)PB11/口返回給主控芯片,使其對(duì)其運(yùn)動(dòng)狀態(tài)進(jìn)行控制,因而取代傳感的工作療效。
3.無(wú)傳感無(wú)刷直流馬達(dá)部份代碼剖析與運(yùn)行結(jié)果3.1主函數(shù)代碼及注釋
首先對(duì)中斷、時(shí)鐘、IO口、A/D端口、按鍵及定時(shí)器等模塊進(jìn)行初始化,并給相關(guān)參數(shù)賦終值,在如下主程序中,實(shí)現(xiàn)的功能是通過(guò)判定key1的狀態(tài),控制馬達(dá)轉(zhuǎn)動(dòng),判定key2的狀態(tài),控制馬達(dá)停止,其對(duì)應(yīng)的主控芯片端口為PC5、PC15,另外,通過(guò)調(diào)用()函數(shù),控制馬達(dá)轉(zhuǎn)動(dòng)的加減速。馬達(dá)轉(zhuǎn)動(dòng)實(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ū)動(dòng)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反電動(dòng)勢(shì)法相關(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檢測(cè)BEMF,過(guò)零點(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è)月以來(lái),主要是在學(xué)習(xí)了有傳感無(wú)刷直流馬達(dá)相關(guān)內(nèi)容的基礎(chǔ)上,對(duì)無(wú)傳感無(wú)刷直流馬達(dá)相關(guān)內(nèi)容進(jìn)行一個(gè)學(xué)習(xí)。其中,學(xué)習(xí)的成果主要是對(duì)無(wú)傳感無(wú)刷直流馬達(dá)控制原理有了較為深刻認(rèn)識(shí),而且比較了有、無(wú)傳感在馬達(dá)控制上的不同,加深了硬件原理圖部份的理解,并且在程序方面,還沒(méi)有完全吃透,須要進(jìn)一步的學(xué)習(xí)。