在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于CW32的無刷直流空心杯電機無感方波控制驅動方案

CW32生態社區 ? 來源:CW32生態社區 ? 作者:CW32生態社區 ? 2024-04-24 15:38 ? 次閱讀

1. 方案概述

本方案采用CW32F030C8T6作為主控芯片,采用無感方波控制算法控制無刷直流空心杯電機。CW32F030C8T6是一款高性能、低功耗的32位微控制器,具有豐富的片上外設資源,可以適合用于電機控制。無感方波控制算法是一種簡單有效的電機控制算法,不需要使用霍爾傳感器,可以降低硬件成本。

本次采用的電機驅動板仍然為CW32_BLDC_EVA V5開發板,具體開發板的信息可以翻看上一節《基于CW32的無刷空心杯電機有感控制驅動方案》,采用的空心杯電機與上一節有所不同,這次使用的空心杯電機的額定電壓為 24 V。

由于本次采用無感方案,所以只需要將 U、V、W三相電源接上即可,并且三相的順序并無強制要求,下面我們重心將放在對于無感方波控制的原理部分。

2. 無感方波控制原理

無感方波控制(Sensorless Square Wave Control)是一種用于無刷直流電機(BLDC)驅動的控制方法。與傳統的有感控制方法相比,無感方波控制不需要使用位置或速度傳感器來反饋電機狀態,而是通過檢測電機自身的懸空相反電動勢變化(Back Electromotive Force,簡稱BEMF)來實現控制。

在無感方波控制中,通過檢測電機的懸空相電壓的過零點,可以推斷出電機轉子的位置,根據轉子位置進行步狀態的切換即可控制電機轉動。

2.1 梯形波電壓

無感方波的驅動電路采用三相全橋逆變電路,在理想的情況下,三相全橋逆變電路的電壓波形如下圖2-1所示,每相導通角度為120°,相與相之間相隔120°。


圖2-1 三相全橋逆變電壓波形

無刷直流電機驅動所需的電流波形也是上圖里的方波,因為電機存在漏感 L ,定子電流會有一定的上升和下降時間,所以使得理想的方波變成了梯形波。


圖2-2 BLDC運行三相電壓波形

從圖2-2中可以看出,無刷直流電機實際運行時的三相電壓波形并不是圖2-1里的方波,而是梯形波。由于采用了脈寬調制計數(PWM),所以波形看上去由一道道脈沖組成。

2.2 確定換相信號

無感方波驅動與有感最大的區別就在于獲取換相信號的方式不同,有感方波通過檢測三相霍爾信號的電平,再根據三相電平確定電機此時應該運行在的步狀態;無感方波是檢測梯形波“斜線”上的反電動勢電壓來確定換相時刻。霍爾信號對應的相是確定的,所以電機的供電相也要根據霍爾相的順序來連接,而無感方波驅動只需要檢測“斜線”上的“過零點”確定換相時刻后自動換相到下一步狀態,而每一個步狀態對應事先已經安排好的開關管通斷,所以電機的供電相可以隨意連接。


圖2-3 反電動勢采樣電路

PA0、PA1、PA5分別對應CW32F030 ADC的0、1、5通道,我們使用ADC采集三相的電壓,但在“過零點”比較中我們實際使用的是未導通相,即懸空相的電壓。

2.3 電機驅動思路

驅動電機旋轉的原理與上一章有感驅動的原理相同,本質上是對電機定子的通電情況進行控制,也稱為換相。這里我們結合上一章霍爾傳感器的信號波形與電機運行時的三相電壓波形來看,如下圖。

暫時無法在飛書文檔外展示此內容

我們將電機運行狀態分為三種: 停止、啟動、運行 ,其中停止狀態不需要過多關注。首先是電機的啟動,啟動狀態首先要對轉子進行定位,因為電機在停止時轉子可以在任何位置。確定轉子的位置可以給某一步狀態對應的 MOS 管通電,等待一小段轉子復位的時間后,轉子就在此步狀態中,然后進入啟動階段。

無感電機的啟動也稱為“強拖”,以復位時的步狀態為基準,手動換步,之后若檢測到 “過零點”,則切入第三種正常運行的狀態,如果沒有檢測到,則提高占空比再手動換步,嘗試一定次數后如果沒有成功則電機啟動失敗。

正常運行狀態時,在每次輸出 PWM 脈沖時由比較器觸發 ADC 采樣,根據當前步狀態確定要使用的反電動勢在哪一相。取得反電動勢后需要判斷是否已經來到 “過零點”,這里還需要判斷當前步狀態是電壓上升還是下降狀態:上升狀態需要判斷反電動勢大于 “過零點” 值,下降狀態需要判斷反電動勢小于 “過零點”值。還需要注意的是,ADC的采樣時刻的選擇會影響到 “過零點”值的大小:如果是在 PWM 高電平時采集,則過零點值為電源電壓的一半;低電平時的比較值需要自己根據實際大小去調試。通常在 PWM 占空比大于 50% 時采樣高電平,低于 50%時采樣低電平。
image.png

圖2-5 采樣點比較值選擇

在檢測到 “過零點” 之后,需要延遲一定的時間再進行換相,以保證電機的轉矩。延遲時間由定時器記錄的上次換相到本次換相的時間間隔,取其部分大小作為延遲時間。

注意,電機在換相時由于新的電流通路的建立,電壓在換相處會產生尖峰毛刺,此時進行 ADC 電壓采集到的數據是不準確的,所以在換相后還需要進行退磁狀態的判斷,如果處于退磁狀態,則本次不采樣。

3. 軟件設計

3.1 MCU資源分配

本次使用到的CW32內部資源如下:

  • ATIM :CH1、CH2、CH3 三個通道比較產生 PWM 波用于驅動電機,CH4為芯片內部通道,無外部引腳,只有一路比較捕獲寄存器 (ATIM_CH4CCR),且只能用于比較,不能用來捕獲。我們使用 CH4 的比較功能觸發 DMA 傳輸。
  • DMA :使用4路 DMA 通道:CH1、CH2、CH3、 CH4:
  1. CH1 將 ADC 單次單通道的采樣結果傳入 RAM
  2. CH2 將 ADC 的 CR1 寄存器的配置值從 RAM 傳入寄存器
  3. CH3 將 ADC 的 START 寄存器的配置值從 RAM 傳入寄存器
  4. CH1、CH2、CH3由 ADC 硬件觸發,CH4 由 ATIM 硬件觸發,啟動 ADC
  • ADC :ADC 采樣的時鐘設置需要與 PWM 載波頻率結合,計算采樣時間;采用單通道單次采樣,首次采樣由 ATIM 硬件觸發,ADC 轉換完畢后觸發 DMA 傳輸,通過 DMA 傳輸自動改變采樣通道。這樣設置可以實現 ATIM 觸發一次就采樣五個數據(U、V、W 相電壓、母線電壓、外部電位器調速電壓)
  • BTIM1 :BTIM1 設置 1ms 進入一次中斷,在中斷里改變標志位實現主程序的控制
  • BTIM2 :BTIM2 作為換相時間間隔的記錄定時器,決定延遲多長時間后換相
  • BTIM3 :BTIM3 設置中斷,在中斷里完成退磁和換相

3.2 部分重要程序介紹

操作 ATIM CH4 的 CCR 寄存器,可以選擇 ADC 在一個 PWM 周期內不同位置的采樣:

CW_ATIM- >CH4CCR=(數字);

首先是核心函數:調制換相

/*step,為當前換相序號,PWM_ON_flag=1時啟動PWM輸出
**Step_Last,記錄上一次步狀態用于 PWM 占空比的刷新
**Step_Time,記錄上一次換相時間
**Flag_Start_OK,判斷電機是否啟動成功
**Flag_Demagnetize_State,判斷退磁狀態,1:需要退磁;2:退磁完成;3:檢測到過零點,可以換相
**HALLcount,記錄換相次數用于轉速計算
*/
void Commutation(uint32_t step,uint32_t PWM_ON_flag)
{
  if(PWM_ON_flag==0) //不啟動則關閉輸出
  {
    CW_ATIM- >CH1CCRA=0;CW_ATIM- >CH2CCRA=0;CW_ATIM- >CH3CCRA=0;        
    PWM_AL_OFF; PWM_BL_OFF;PWM_CL_OFF;
    CW_ATIM- >CH4CCR=PWM_TS-800;                                        
    return;
  }                         
  //關閉下管           
       if(step==0||step==5){PWM_AL_OFF;PWM_CL_OFF;}
  else if(step==1||step==2){PWM_AL_OFF;PWM_BL_OFF;}
  else if(step==3||step==4){PWM_BL_OFF;PWM_CL_OFF;}
  //打開上管                
  if(step==0||step==1){CW_ATIM- >CH2CCRA=0;CW_ATIM- >CH3CCRA=0;CW_ATIM- >CH1CCRA=OutPwm;}
  if(step==2||step==3){CW_ATIM- >CH1CCRA=0;CW_ATIM- >CH3CCRA=0;CW_ATIM- >CH2CCRA=OutPwm;}
  if(step==4||step==5){CW_ATIM- >CH1CCRA=0;CW_ATIM- >CH2CCRA=0;CW_ATIM- >CH3CCRA=OutPwm;}
  //打開下管                            
  if(step==0||step==5){PWM_BL_ON;}//AB
  else if(step==1||step==2){PWM_CL_ON;}//AC
  else if(step==3||step==4){PWM_AL_ON;}//BA
                
  Step_Last=step;
  //判斷占空比修改采樣時刻      
  if(OutPwm >=1200&&Flag_ON_or_OFF==0){Flag_ON_or_OFF=1;CW_ATIM- >CH4CCR=300;}        
  else  if(OutPwm< 1200&&Flag_ON_or_OFF==1){Flag_ON_or_OFF=0;CW_ATIM- >CH4CCR=PWM_TS-600;        }
  //記錄上一次的換相時間                  
  Step_Time=BTIM_GetCounter(CW_BTIM2);
  BTIM_SetCounter(CW_BTIM2,0);
  //電機未啟動則快速換相                
  if(Flag_Start_OK==0)
  BTIM_SetAutoreload(CW_BTIM3,Step_Time/8);        
  else 
  BTIM_SetAutoreload(CW_BTIM3,Step_Time/6);//退磁延遲時間
   
  BTIM_SetCounter(CW_BTIM3,0);
  BTIM_Cmd(CW_BTIM3, ENABLE);
  //啟動退磁 
  Flag_Demagnetize_State=1;//退磁狀態 
        
  HALLcount++;                  
}

接著是第二個核心:換相。

/*Direction,電機運行方向,0:步狀態012345,1:步狀態054321
**Cur_Step,電機目前的步狀態,步狀態正常運行順序為 012345、543210。0:AB、1:AC ……
*/
void BTIM3_IRQHandler(void)
{
  if(BTIM_GetITStatus(CW_BTIM3, BTIM_IT_OV))
  {  
    BTIM_ClearITPendingBit(CW_BTIM3, BTIM_IT_OV);
                
    if(Flag_Demagnetize_State == 1)  //說明退磁結束后第一次進入BTIM3中斷
    {
      Flag_Demagnetize_State = 2;    //退磁結束標志
      BTIM_Cmd(CW_BTIM3, DISABLE);
    }
    else if(Flag_Demagnetize_State == 3 && Flag_Start_OK == 1) //退磁完成和啟動成功后,決定下一次換相
    {
      BTIM_Cmd(CW_BTIM3, DISABLE);
      
      if(Direction == 0)          //與RisingFalling的順序要對應
      {
        Cur_Step++;
        if(Cur_Step == 6)Cur_Step = 0;
      }
      else
      {
        if(Cur_Step == 0)Cur_Step = 5;
        else Cur_Step--;
      }
      Commutation(Cur_Step,Motor_Start_F);
    }
  }
}

過零點比較函數如下,此函數在 ADC 完成五次采樣后調用。

/*SampleData[5] U反電動勢 V反電動勢 母線電壓 W反電動勢 電位器調速電壓值
**TAB_BEMFChannel[6]={3,1,0,3,1,0};
**TAB_RisingFalling[2][6]={//判斷此刻電壓為上升沿還是下降沿,Rising=1;Falling=2
  {FALLING,RISING,FALLING,RISING,FALLING,RISING},
  {RISING,FALLING,RISING,FALLING,RISING,FALLING} }
**Flag_ON_or_OFF,高低電平采樣標志位 
**RisingFalling,上升沿下降沿比較標志位  
**Count_0V,過零點檢測計數  STCount = 15
**Flag_Confirm,啟動確認標志位  
*/
void ADC_Process(void)
{
  static uint8_t count = 0;  //過零檢測計數
  uint32_t Voltage_Bus = 0;  //母線電壓
  uint8_t Flag_0V = 0;       //成功檢測到過零點標志
        
  if(Flag_Demagnetize_State != 2)return; //說明退磁未結束
        
  BEMFConvertedValue =SampleData[TAB_BEMFChannel[Cur_Step]];  //取得反電動勢
  RisingFalling=TAB_RisingFalling[Direction][Cur_Step];       //判斷上升沿還是下降沿
        
  if(Flag_ON_or_OFF == 0)Voltage_Bus = 50//在PWM低電平時采樣則與地比較電壓              
  else Voltage_Bus = SampleData[2];          //在PWM高電平時采樣則與電源正極比較電壓
        
  if(RisingFalling == FALLING)
  {
    if(BEMFConvertedValue < Voltage_Bus)
    {
      count++;
      if(count >= 2)                        //連續兩次都檢測到過零,則認為確實過零了
      {
        count = 0;
        Flag_Demagnetize_State = 3;        //退磁完成,可以換相
                                
        Count_0V++;
        Flag_Confirm = 1;
        Flag_0V = 1;                      //成功檢測到過零點
      }
    }
    else count = 0;
  }
  else if(RisingFalling == RISING)
  {
    if(BEMFConvertedValue > Voltage_Bus)
    {
      count++;
      if(count >= 2)
      {
        count = 0;
        Flag_Demagnetize_State = 3;
                                
        Count_0V++;
        Flag_Confirm = 1;
        Flag_0V = 1;
      }
    }
    else count = 0;
  }
        
  if(Count_0V >= STCount && Flag_Start_OK == 0)   
  {  
    Flag_Start_OK = 1;    //連續檢測到固定數量的過零時,認為啟動成功
  }        
        
  if(Flag_Start_OK == 1 && Flag_0V == 1)
  {
    Flag_0V = 0;
                
    BTIM_SetAutoreload(CW_BTIM3,Step_Time/8); //換相延遲時間                        
    BTIM_SetCounter(CW_BTIM3,0);
    BTIM_Cmd(CW_BTIM3, ENABLE);
  }  
}

最后是電機的啟動部分:

/*TimeCountTemp,計時,1ms增加1
**Com_time,     啟動次數
**RAMP_TABLE[64],存儲時間的數組
*/
do
  {                                                
    if(Direction == 0)               //與RisingFalling的順序要對應
    {
      Cur_Step++;
      if(Cur_Step >= 6)Cur_Step = 0; //以復位時的步狀態為基準,手動換步
    }
    else
    {
      if(Cur_Step == 0)Cur_Step = 5;
      else Cur_Step--;
    }

    Flag_Confirm = 0;
    if(Flag_Start_OK == 0)        
    {
      Commutation(Cur_Step,Motor_Start_F); 
    }  
    TimeCountTemp = 0;
    while(TimeCountTemp < RAMP_TABLE[Com_time]) //等待過零點檢測
    {
      if(Flag_Confirm == 1 || Flag_Start_OK == 1)break;  //啟動成功則不再執行do.....while里的內容
    }

    Com_time++;
    OutPwm+=10;  //沒有啟動則依次提高占空比
  }while(Flag_Start_OK==0 && Com_time< 60 && ErrorCode==0);  
  //跳出循環則 啟動成功/超出啟動次數/啟動報錯

4. 調試心得

  • 在調試電機的過程中要做好限流保護,電機換相失敗會導致其停在某一相,對應的MOS 管持續導通。
  • 退磁延遲時間和延遲換相時間的設置會影響電機的性能,過早地換相會降低電機轉矩,過晚地換相會使電機電流過大,效率較低發熱嚴重。
  • 電壓比較值的設置同樣會造成上一條的影響,在低電平時采樣比較的值如果設置過小,會造成上升沿處換相過早、下降沿處換相過晚的后果。
  • 電機的啟動需要緩慢進行,不可以將 PWM 的占空比增加過快,否則電機容易換相失敗。
  • BTIM3中斷服務程序里的方向檢測設置要與數組 TAB_RisingFalling 里的 Rising 和 Falling 順序對應,否則會啟動失敗。
  • 由于空心杯電機的內部為三角形接線,在 PWM 低電平時仍保有較多的能量,所以在 MOS 管關斷期間的反電動勢較高,并且隨著轉速的增加此電壓的大小呈上升態勢。對于 “過零點” 電壓數據的設置也需要適應這種變化,下圖展示了空心杯電機運行在 35000 rpm 時的一相電壓波形。


圖4-1 空心杯電機運行電壓波形

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電機
    +關注

    關注

    142

    文章

    9021

    瀏覽量

    145491
  • 無刷直流電機

    關注

    61

    文章

    689

    瀏覽量

    46158
  • 控制驅動
    +關注

    關注

    0

    文章

    11

    瀏覽量

    8478
  • 方波控制
    +關注

    關注

    0

    文章

    10

    瀏覽量

    4985
  • CW32
    +關注

    關注

    1

    文章

    203

    瀏覽量

    641
收藏 人收藏

    評論

    相關推薦

    空心電機類型有哪些?工作原理是什么?

    空心電機是一種直流電機,具有體積小、重量輕、轉速高、效率高、噪音低等特點。它廣泛應用于各種
    的頭像 發表于 10-25 10:27 ?746次閱讀

    探索吸塵器直流電機驅動板的精妙控制方案

    在現代家居清潔領域,吸塵器無疑是一款備受青睞的神器。而在吸塵器的核心組件中,直流電機驅動板的控制方案
    的頭像 發表于 10-21 17:54 ?382次閱讀

    探索 MS37549 直流馬達驅動方案的奧秘

    方案的神奇之處。 一、MS37549 直流馬達驅動方案的簡介 MS37549
    的頭像 發表于 10-18 17:55 ?188次閱讀

    ACM6754 24V/4.8A三相直流BLDC電機驅動芯片方案

    深圳市永阜康科技有限公司現在大力推廣一顆全集成三相直流(BLDC)電機ASIC-ACM6754.該芯片工作電壓5V-28V,相電流4.8A,支持 180?
    的頭像 發表于 08-19 17:31 ?1069次閱讀
    ACM6754     24V/4.8A三相<b class='flag-5'>無</b><b class='flag-5'>感</b><b class='flag-5'>無</b><b class='flag-5'>刷</b><b class='flag-5'>直流</b>BLDC<b class='flag-5'>電機</b><b class='flag-5'>驅動</b>芯片<b class='flag-5'>方案</b>

    空心電機應用領域及用途

    空心電機,又稱為直流電機(BLDC),是一種具有高效率、高可靠性、低噪音和低振動等優點的
    的頭像 發表于 06-13 09:10 ?1576次閱讀

    空心電機的結構原理是什么

    、醫療設備等。本文將詳細介紹空心電機的結構原理。 一、空心電機的基本概念 1.1
    的頭像 發表于 06-12 17:33 ?3597次閱讀

    空心電機效率高嗎為什么

    探討其在不同應用中的優勢。 空心電機的工作原理 空心電機是一種
    的頭像 發表于 06-12 15:38 ?907次閱讀

    空心電機是有還是

    空心電機空心
    的頭像 發表于 06-12 15:00 ?2136次閱讀

    永磁直流電機控制方法

    永磁直流電機(BLDCM)因其高效率、高功率密度、低維護成本等優點,在電動汽車、航空航天、工業自動化等領域得到了廣泛應用。為了充分發揮永磁
    的頭像 發表于 06-03 18:21 ?1381次閱讀

    求一種基于CW32直流空心電機方波控制驅動方案

    方案采用CW32F030C8T6作為主控芯片,采用方波控制算法
    的頭像 發表于 05-28 10:47 ?857次閱讀
    求一種基于<b class='flag-5'>CW32</b>的<b class='flag-5'>無</b><b class='flag-5'>刷</b><b class='flag-5'>直流</b><b class='flag-5'>空心</b><b class='flag-5'>杯</b><b class='flag-5'>電機</b><b class='flag-5'>無</b><b class='flag-5'>感</b><b class='flag-5'>方波</b><b class='flag-5'>控制</b><b class='flag-5'>驅動</b><b class='flag-5'>方案</b>

    淺析基于CW32直流空心電機有感控制驅動方案

    空心電機(Hollow-Cup Motor)是一種特殊類型的微型直流電機,具有
    的頭像 發表于 05-21 10:39 ?1656次閱讀
    淺析基于<b class='flag-5'>CW32</b>的<b class='flag-5'>無</b><b class='flag-5'>刷</b><b class='flag-5'>直流</b><b class='flag-5'>空心</b><b class='flag-5'>杯</b><b class='flag-5'>電機</b>有感<b class='flag-5'>控制</b><b class='flag-5'>驅動</b><b class='flag-5'>方案</b>

    基于CW32直流空心電機有感控制驅動方案

    一、概述 空心電機(Hollow-Cup Motor)是一種特殊類型的微型直流電機,具有
    的頭像 發表于 04-24 15:28 ?2270次閱讀
    基于<b class='flag-5'>CW32</b>的<b class='flag-5'>無</b><b class='flag-5'>刷</b><b class='flag-5'>直流</b><b class='flag-5'>空心</b><b class='flag-5'>杯</b><b class='flag-5'>電機</b>有感<b class='flag-5'>控制</b><b class='flag-5'>驅動</b><b class='flag-5'>方案</b>

    FOC直流電機全集成驅動芯片-XM2619產品概述

    XM2619 采用傳感器矢量控制FOC)技術驅動三相
    的頭像 發表于 04-15 15:51 ?1097次閱讀

    直流電機驅動單元

    NEWUnitBLDCDriverUnitBLDCDriver是一款專為直流電機(BLDC)設計的驅動單元,采用I2C通信接口,可同時掛載多路
    的頭像 發表于 04-13 08:29 ?701次閱讀
    <b class='flag-5'>無</b><b class='flag-5'>刷</b><b class='flag-5'>直流電機</b><b class='flag-5'>驅動</b>單元

    基于CW32F030C8T7永磁同步電機FOC控制方案全新亮相!

    近日,武漢芯源半導體基于CW32F030C8T7永磁同步電機FOC控制方案全新亮相! 隨著
    發表于 02-27 11:18
    主站蜘蛛池模板: www.avtt天堂网| 手机看片中文字幕| 久久久久久久国产| 欧美一区视频| 日本老师xxxxxxxxx79| 亚洲视频精品| 91视频www| 日韩xx00| 天天爱天天做久久天天狠狼| 一区二区不卡视频在线观看| 日本五十交尾在线观看| 永久看免费bbbbb视频| 27pao强力打造高清免费高| 色老头在线精品视频在线播放| 9999毛片免费看| 32pao强力打造免费高速高清| 色噜噜亚洲精品中文字幕| 午夜老湿影院| 美女又黄又www| 黄色一级毛片在线观看| 国产精品资源网站在线观看| 亚洲 欧美 动漫| 97影院理论片在线观看| 69日本xxⅹxxxxx19| 欧美成人生活片| 久久天天| 特级毛片免费视频观看| 夜夜狠狠操| 国产尤物在线视频| 国产在线一卡| 国产操视频| 免费国产不卡午夜福在线| 国产国拍亚洲精品mv在线观看| 四虎影视在线看| 午夜寂寞视频在线观看| 成人国产精品一级毛片了| 国产国产人免费人成成免视频| 欧美黄免在线播放| 欧美video free xxxxx| 精品亚洲综合在线第一区| 四虎永久精品免费观看|