• 歡迎光臨東莞東昊電機有限公司官方網站!
    電話:13790393797
    • 無刷電機 > 公司動態 > 大神純手工打造無刷電機控制器:畫板、打樣、焊接、調速...

    大神純手工打造無刷電機控制器:畫板、打樣、焊接、調速...

    時間:03-23 15:42 點擊:414

    東昊電機一直從事無刷電機無刷電機控制器的研發生產,最近東昊電機的大神們又開始從畫板,打樣,焊接,調試,總算順利的轉起來,特意寫個總結。

     

    板子外觀100*60mm中等大小。DC12V輸入,設計最大電流10A(實際沒試過那么大的電機,手頭的電機也就5、6A的樣子)硬件上可以切換有感(HALL)和無感(EMF)兩種模式,外部滑動變阻器調速 預留有 PWM輸入、剎車、正反轉、USB和uart等接口。

     

    先來說下原理無刷電機其實就是直流電機,和傳統的DC電機是一樣的,只是把有刷的電滑環變成了電子換向器。

     

    直流無刷電機工作原理


    因為少了電滑環的摩擦所以壽命靜音方面有了很大的提升,轉速也更高。

     

    永磁直流無刷電機


    當然難點就在如何獲取當前轉子的位置好換相,所以又分為兩種有感和無感。有感就是在電機端蓋的部位加裝霍爾傳感器分別相隔30度或60度或120度。無感就是靠檢測懸浮相的感應電動勢過零點。當然各有各的優缺點,有感在低速方面好,可以頻繁啟停換相。無感的結構簡單成本低,航模上應用居多。

     

    先說有感,電源首先被分成了3個繞組U、V、W這個交流電還是有區別的。它只是3個h橋按一定的順序導通模擬出來的,本質還是直流電。電機靠hall位置按一定順序換相,轉速與電壓電流有關。這一點切記,不是換的越快轉的越快。(位置決定換相時刻,電壓決定轉速)一般調速就是調電壓,6步PWM方式是目前常用的。當然后續還有FOC等更好算法。

     

    硬件部分網上基本都是成熟的方案。三相H橋,H橋一般有上臂mos和下臂mos組成,如果只是簡單的做演示上臂選pmos下臂選nmos控制電路簡單直接用單片機的io就可以驅動。但是pmos低內阻的價格高。功率上面很難做大。

     

    這也就是為什么基本所有的商業控制器全是nmos的原因。但是上臂用nmos存在一個問題vgs控制電壓大與vcc 4v以上才能完全導通。為了簡化電路采用了ir公司出的驅動ic,     它內部有自舉升壓電路。外部僅需一個續流的二極管及儲能電容即可。

     

    直流無刷電機控制電路圖

    直流無刷電機全橋式驅動電路

    有感模式控制相對簡單,3個霍爾傳感器輸出一般都是數字信號,分壓后直接接單片機io。

     

    直流無刷電機霍爾接線圖


    當然控制方式上也就簡單很多,三個霍爾接中斷輸入,在中斷處理程序中根據組合狀態換相,程序上也沒什么復雜的。主程序 一直檢測ad值,改變pwm占空比,及電流保護等。

     

    如下一個典型的換相代碼。Stm32 有兩個高級定時器tim1 tim8 可以輸出4組互補型pwm,還可以設定死區時間等,使用上非常方便。

     

    switch(step)

    {

    case 4: //B+ C-

    /* Next step: Step 2 Configuration -------------------------------------- */

    TIM_CCxCmd(BLDC_TIMx,TIM_Channel_1,TIM_CCx_Disable);

    TIM_CCxNCmd(BLDC_TIMx,TIM_Channel_1,TIM_CCxN_Disable);

    }

    直流無刷電機驅動程序

    直流無刷電機控制程序


    下圖為uvw三相的霍爾檢測到的電平及w相的波形。

     

    直流無刷電機曲線圖


    下圖為 uvw三相波形及w相霍爾電平

     

    三相直流無刷電機波形圖


    下圖為 w相電平, w相上臂on 下臂pwm ,w相霍爾信號。

     

    直流無刷電機波形曲線圖


    下圖為w相ir2304芯片輸出,上臂電壓可明顯看到已高于vcc,下臂為pwm信號

     

    直流無刷電機PWM波形圖


    在說說無感模式,由于沒有了霍爾,無刷電機無法知道轉子當前的位置所以就無法換相,而感應電動勢也只有在轉起來之后才有,所以無感模式的啟動是個難點。

     

    一般方法都是分三段法:1.預定位;2.啟動;3.進入閉環反饋。

    1、預定為就是強制給某一相通電一段時間,讓電機定位到這個位置。占空比30-50%不要太大,可能會發熱。

    2、啟動,就是逐步的強制換相,當然要有個加速的過程,使電機轉起來。

     

    這個過程太慢會抖動反轉,太快會丟步。參數需要一點點試,有點像控制步進電機。要能使電機轉的能產生電動勢,我也是參照的德國MK 電調的算法。

     

    每次延時時間比上一次少1/25,形成一個加速的過程,直到電機完全轉起來產生足夠的電動勢。

     

    3、閉環反饋控制換相跟有感差不多一樣。

     

    speed_duty=30; //30% start

    BLDC_PHASE_CHANGE(Step[Phase]); //固定一相

    Delay_MS(200);

     

    speed_duty=pwm;

    timer = 300;

    while(1)

    {

    for(i=0;i

    {

    Delay_US(120);   //等待

    }

    timer-= timer/25+1;

    if(timer < 25)

    {   

    if(TEST_MANUELL)

    {

    timer = 25;   //開環強制換向

    }

    else

    {

    bldc_dev.motor_state=RUN;

    break;

    }    

    }

    Phase++;

    Phase %= 6;

    BLDC_PHASE_CHANGE(Step[Phase]); //

    }

    說到感應電動勢很多人不明白,先來說說電流,電機線圈的內阻通常很小比如0.2歐,電機的電壓比如10v,按理來說電流100a為何電機不燒哪?


    其實電機線圈在通電的一瞬間并不是完全導通的,因為有反向電動感應勢的存在,可能有-9.8v。10v-9.8v = 0.2v /0.2 = 1A.這樣算起來電流還合理。


    在說說那個初中學習的法拉第 ,當線圈切割磁場時會產生感應電動勢,根據右手定則。

    直流無刷電機右手定則

    如下圖當ac相在通電12v的情況下,靜止狀態下正中間中性點理論為6v,但是轉起來就不一定了,因為b相實際是在切割磁場,是會產生電動勢的。而電動勢的大小正負取決與當前在磁場ns極的位置。當切割ns時為-1,切割sn時為1,平行時為0.

    直流無刷電機電磁切割圖

    利用這一特性不就剛好可以獲得轉子的位置嗎?

    首先檢測電路網上已經一大很成熟了。

    如下圖,當然很多時候需要在4.7k對地的電阻上并一個100nf的電容,做一個低通濾波。也可以在軟件中做濾波處理。

    直流無刷電機驅動電路懸浮相

    我們所要做的就是檢測這個懸浮相的電動勢過零點。

    網上常用的兩種方法:1 單片機ad采集;2 比較器比較。我選擇了比較器lm339價格已經很便宜了,在高速上比ad有明顯優勢,只要比較cin bin ain 與n點的壓差即可獲得零點。


    直流無刷電機各繞組電流和感生電動勢


    理想很完美,現實很殘酷,實際中根本得不到這么完美的波形。

    如下圖,這個已經是比較好的了,還是有很多毛刺。這個給單片機中斷,肯定一大堆問題,嚴重的換錯相燒mos管。


    直流無刷電機波形圖

    直流無刷電機波形圖 01


    為什么會有這些毛刺呢,有些還挺有規律。

    參考了網上的介紹,這中間還有一個叫消磁的東西。


    直流無刷電機-曲線圖

    原理不深究了,反正時間很短,軟件上做一個濾波消掉就可以了。


    進入中斷函數后做如下處理 ,定時器的中斷我暫時用的20us。

     

    const unsigned int FilterNums = 0xff;

    static unsigned int nums =0;

    static unsigned int Queue_UStatus =0;

    static unsigned int Queue_VStatus =0;

    static unsigned int Queue_WStatus =0;

    static unsigned char EMF_SVal =0;

    unsigned char Filter_U_Status=0;

    unsigned char Filter_V_Status=0;

    unsigned char Filter_W_Status=0;

    unsigned char EMF_Val=0;

    unsigned int status_h;

    unsigned int status_l;

    unsigned int Delay30deg =0;

     

    /* 清除中斷標志位 */

    if ( TIM_GetITStatus(TIM3 , TIM_IT_Update) != RESET )

    {

    TIM_ClearITPendingBit(TIM3 , TIM_FLAG_Update);


    直流無刷電機驅動程序-01

    直流無刷電機控制程序-02


    至于網上說檢測到過零點后,延時30度換相,對電源效率有影響。我試了下,好像沒什么明顯的差異。也有人說在大功率的電機下不延時反而更平滑等等。真實怎樣有待各位實際實驗了。


    純手工直流無刷電機控制板

    直流無刷電機控制板

    首頁
    電話
    聯系
    cache
    Processed in 0.010251 Second.
    性饥渴寡妇肉乱