伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HPM知識庫 | BLDC 無傳感器過零控制技術(shù)指南

先楫半導(dǎo)體HPMicro ? 2026-03-27 08:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

無刷直流電機(jī)BLDC)的無傳感器控制技術(shù)是現(xiàn)代電機(jī)控制領(lǐng)域的重要技術(shù)方向,通過檢測反電動勢過零點(diǎn)來確定轉(zhuǎn)子位置,實(shí)現(xiàn)無位置傳感器的精確控制。本文將基于HPMicro SDK中的bldc_over_zero示例,詳細(xì)介紹BLDC電機(jī)的無傳感器過零控制技術(shù),包括控制原理、軟件架構(gòu)和實(shí)際應(yīng)用。

1. BLDC無傳感器控制基礎(chǔ)理論

1.1 反電動勢產(chǎn)生機(jī)理與數(shù)學(xué)模型

當(dāng)BLDC電機(jī)轉(zhuǎn)動時(shí),轉(zhuǎn)子永磁體在定子繞組中運(yùn)動,根據(jù)法拉第電磁感應(yīng)定律產(chǎn)生反電動勢。這一現(xiàn)象的物理本質(zhì)是磁通量的時(shí)間變化率:

85586964-2974-11f1-96ea-92fbcf53809c.png

其中:

  • ?m為磁鏈幅值,取決于永磁體強(qiáng)度和繞組匝數(shù)
  • ω為轉(zhuǎn)子電角速度
  • θ為轉(zhuǎn)子電角度位置

三相反電動勢表達(dá)式

對于理想的三相BLDC電機(jī),三相反電動勢具有120°相位差:

8565a0ac-2974-11f1-96ea-92fbcf53809c.png

其中856fe4d6-2974-11f1-96ea-92fbcf53809c.png為反電動勢幅值。

反電動勢常數(shù)的物理意義

反電動勢常數(shù) Ke與電機(jī)的物理結(jié)構(gòu)密切相關(guān):

857c5c20-2974-11f1-96ea-92fbcf53809c.png

中:

N為每相串聯(lián)導(dǎo)體數(shù)

  • Br為永磁體剩磁密度
  • l為導(dǎo)體有效長度
  • r 為電機(jī)半徑

1.2 過零檢測的物理原理與數(shù)學(xué)推導(dǎo)

懸浮相電壓的構(gòu)成

在三相BLDC電機(jī)的六步換相控制中,任意時(shí)刻都有一相處于懸浮狀態(tài)(未導(dǎo)通)。該相的端電壓由反電動勢和中性點(diǎn)電壓共同決定:

8584e46c-2974-11f1-96ea-92fbcf53809c.png

中性點(diǎn)電壓的計(jì)算:

理論上,三相中性點(diǎn)電壓為:

85909e10-2974-11f1-96ea-92fbcf53809c.png

但在實(shí)際系統(tǒng)中,無法直接測量中性點(diǎn)電壓。HPM MCL庫采用"虛擬中性點(diǎn)"方法,通過導(dǎo)通兩相的電壓均值來估算:

859991a0-2974-11f1-96ea-92fbcf53809c.png

過零點(diǎn)的數(shù)學(xué)條件:

當(dāng)懸浮相反電動勢過零時(shí):

85a4b4ea-2974-11f1-96ea-92fbcf53809c.png

即:

85b005d4-2974-11f1-96ea-92fbcf53809c.png

30度延遲的理論依據(jù):

過零點(diǎn)對應(yīng)轉(zhuǎn)子磁極軸線與定子繞組軸線垂直的瞬間,此時(shí)轉(zhuǎn)子位于兩個(gè)換相點(diǎn)的中間位置。為獲得最大轉(zhuǎn)矩,需要在過零點(diǎn)后延遲30°電角度再進(jìn)行換相:

85b9da5a-2974-11f1-96ea-92fbcf53809c.png

對應(yīng)的時(shí)間延遲為:

85c5b348-2974-11f1-96ea-92fbcf53809c.png

其中 85ceed00-2974-11f1-96ea-92fbcf53809c.png為上一次換相間隔時(shí)間。

1.3 六步換相序列的理論基礎(chǔ)

換相序列的磁場原理

六步換相控制的本質(zhì)是在定子中產(chǎn)生旋轉(zhuǎn)磁場,與轉(zhuǎn)子永磁體相互作用產(chǎn)生轉(zhuǎn)矩。每個(gè)換相步驟對應(yīng)60°電角度的磁場位置:

85d84648-2974-11f1-96ea-92fbcf53809c.png

換相序列與過零檢測的對應(yīng)關(guān)系

85e71812-2974-11f1-96ea-92fbcf53809c.png

磁通鏈與轉(zhuǎn)矩分析

在每個(gè)換相區(qū)間內(nèi),轉(zhuǎn)矩可表示為:

85f259d4-2974-11f1-96ea-92fbcf53809c.png

其中:

  • P 為極對數(shù)
  • ?pm 為永磁磁鏈
  • Ia為相電流幅值
  • θe為轉(zhuǎn)子電角度
  • θi 為電流矢量角度

為獲得最大轉(zhuǎn)矩,需要保持θe?θi=90°,這正是 30° 延遲換相的理論依據(jù)。

2. 軟件架構(gòu)分析

2.1 系統(tǒng)架構(gòu)概述

85ff6b56-2974-11f1-96ea-92fbcf53809c.png

2.2 核心數(shù)據(jù)結(jié)構(gòu)

系統(tǒng)使用hpm_mcl_over_zero_cfg_t結(jié)構(gòu)體封裝過零控制相關(guān)數(shù)據(jù):

typedefstructhpm_mcl_over_zero_cfg{ int32_tadc_u; // U相ADC采樣值 int32_tadc_v; // V相ADC采樣值 int32_tadc_w; // W相ADC采樣值 uint32_tnumber_consecutive_zeros;// 連續(xù)過零次數(shù) uint32_tdelay_degree_30; // 30度延遲值 uint32_tinterval_tick; // 換相間隔時(shí)間 hpm_mcl_dir_tmotor_dir; // 電機(jī)方向 hpm_mcl_over_zero_interval_tnext_interval;// 下一換相區(qū)間 uint8_tpole_num; // 極對數(shù) floatloop_time_in_sec; // 控制周期 hpm_mcl_over_zero_fsm_tfsm; // 狀態(tài)機(jī)}hpm_mcl_over_zero_cfg_t;

2.3 關(guān)鍵參數(shù)配置

電機(jī)物理參數(shù)

sensorless_cfg.pole_num= MOTOR0_POLE_PAIR; // 極對數(shù):2sensorless_cfg.loop_time_in_sec=0.0001; // 控制周期:100μssensorless_cfg.motor_dir= motor_dir; // 電機(jī)方向

PI控制器參數(shù)

pi_para.kp= PI_P_VAL; // 比例系數(shù):124pi_para.ki= PI_I_VAL; // 積分系數(shù):0.15pi_para.integral_max= PI_PWM_OUT_MAX; // 積分限幅pi_para.output_max= PI_PWM_OUT_MAX; // 輸出限幅

速度濾波參數(shù)

speed_para.filter_coef=0.0304; // 濾波系數(shù)(100Hz)speed_para.kp=0.2814; // 速度環(huán)比例系數(shù)speed_para.ki=0.0145; // 速度環(huán)積分系數(shù)

3. 外設(shè)初始化詳解

3.1 ADC外設(shè)初始化

ADC用于采集三相電壓信號,實(shí)現(xiàn)反電動勢檢測:

voidadc_init(void){ adc_config_tcfg; adc_channel_config_tch_cfg; // ADC基本配置 cfg.module= BOARD_BLDC_ADC_MODULE; #ifBOARD_BLDC_ADC_MODULE == ADCX_MODULE_ADC12 cfg.config.adc12.res = adc12_res_12_bits; // 12位分辨率 cfg.config.adc12.conv_mode = adc12_conv_mode_preemption;// 搶占模式 cfg.config.adc12.adc_clk_div =2; // 時(shí)鐘分頻 #else cfg.config.adc16.res = adc16_res_16_bits; // 16位分辨率 cfg.config.adc16.conv_mode = adc16_conv_mode_preemption;// 搶占模式 cfg.config.adc16.adc_clk_div = adc16_clock_divider_4; // 時(shí)鐘分頻 #endif // 初始化三相ADC hpm_adc_init(&cfg);}

ADC觸發(fā)配置

voidinit_trigger_cfg(uint8_ttrig_ch,boolinten){ adc_pmt_config_tpmt_cfg; pmt_cfg.config.adc12.trig_ch = trig_ch; // 觸發(fā)通道 pmt_cfg.config.adc12.trig_len = BOARD_BLDC_ADC_PHASE_PREEMPT_TRIG_LEN; pmt_cfg.config.adc12.adc_ch[0] = BOARD_BLDC_ADC_PHASE_CH_U;// U相通道 pmt_cfg.config.adc12.adc_ch[1] = BOARD_BLDC_ADC_PHASE_CH_V;// V相通道 pmt_cfg.config.adc12.adc_ch[2] = BOARD_BLDC_ADC_PHASE_CH_W;// W相通道 hpm_adc_set_preempt_config(&pmt_cfg);}

3.2 PWM外設(shè)初始化

PWM負(fù)責(zé)產(chǎn)生六步換相所需的驅(qū)動信號:

PWM模塊初始化

voidpwm_init(void){ pwm_cmp_config_tcmp_config[3] = {0}; pwm_config_tpwm_config = {0}; // 停止PWM計(jì)數(shù)器 pwm_stop_counter(MOTOR0_BLDCPWM); // 設(shè)置PWM重載值 pwm_set_reload(MOTOR0_BLDCPWM,0, PWM_RELOAD); pwm_set_start_count(MOTOR0_BLDCPWM,0,0); // 配置比較器 cmp_config[0].mode = pwm_cmp_mode_output_compare; cmp_config[0].cmp = PWM_RELOAD >>1; // 50%占空比 cmp_config[0].update_trigger = pwm_shadow_register_update_on_shlk; // PWM輸出配置 pwm_config.enable_output =true; pwm_config.dead_zone_in_half_cycle =0; // 無死區(qū)時(shí)間 pwm_config.invert_output =false; // 配置所有PWM通道 pwm_setup_waveform(MOTOR0_BLDCPWM, BOARD_BLDC_UH_PWM_OUTPIN, &pwm_config, cmp_index, cmp_config,2); // ... 其他五個(gè)通道配置}

關(guān)鍵配置參數(shù)說明

  • PWM頻率:PWM_FREQUENCY = 20000(20kHz)
  • 重載值:PWM_RELOAD = (motor_clock_hz/PWM_FREQUENCY) - 1
  • 強(qiáng)制輸出模式:初始狀態(tài)下所有PWM輸出強(qiáng)制為0

3.3 定時(shí)器初始化

定時(shí)器用于控制算法的周期執(zhí)行:

voidtimer_init(void){ gptmr_channel_config_t config; // 時(shí)鐘配置 clock_add_to_group(BOARD_BLDC_TMR_CLOCK,0); gptmr_channel_get_default_config(BOARD_BLDC_TMR_1MS, &config); // 定時(shí)器參數(shù)配置 config.reload=SENSORLESS_TMR_RELOAD+1; // 重載值 config.cmp[0] =SENSORLESS_TMR_RELOAD; // 比較值 // 使能中斷 gptmr_enable_irq(BOARD_BLDC_TMR_1MS,GPTMR_CH_CMP_IRQ_MASK(BOARD_BLDC_TMR_CH,BOARD_BLDC_TMR_CMP)); gptmr_channel_config(BOARD_BLDC_TMR_1MS,BOARD_BLDC_TMR_CH, &config,true); intc_m_enable_irq_with_priority(BOARD_BLDC_TMR_IRQ,1);}

定時(shí)器參數(shù)計(jì)算

860e711e-2974-11f1-96ea-92fbcf53809c.png

4. 軟件結(jié)構(gòu)框架

4.1 狀態(tài)機(jī)設(shè)計(jì)

系統(tǒng)采用狀態(tài)機(jī)管理過零控制流程:

86188c58-2974-11f1-96ea-92fbcf53809c.png

狀態(tài)定義

typedefenum{ hpm_mcl_over_zero_fsm_init =0, // 初始化狀態(tài) hpm_mcl_over_zero_fsm_location =1, // 定位狀態(tài) hpm_mcl_over_zero_fsm_running =2 // 運(yùn)行狀態(tài)}hpm_mcl_over_zero_fsm_t;

4.2 初始化流程

步驟1:硬件初始化

board_init(); // 板級初始化motor_clock_hz =clock_get_frequency(BOARD_BLDC_QEI_CLOCK_SOURCE);init_pwm_pins(MOTOR0_BLDCPWM); // PWM引腳初始化init_motor_over_zero_sensorless_adc_pins();// ADC引腳初始化

步驟2:外設(shè)初始化

pwm_init(); // PWM初始化adc_init(); // ADC初始化timer_init(); // 定時(shí)器初始化

步驟3:控制參數(shù)初始化

init_over_zero_para(&sensorless_cfg); // 過零控制參數(shù)初始化

4.3 運(yùn)行時(shí)框架

// 主循環(huán):速度變化控制while(1) { motor_run =true; if(isadd) { user_setspeed++; // 加速 }else{ user_setspeed--; // 減速 } board_delay_ms(100);}// 定時(shí)器中斷:控制算法執(zhí)行voidisr_gptmr(void){ step_delay =hpm_mcl_over_zero_step_get(&sensorless_cfg); // 獲取換相步驟 if(motor_run ==true) { speed_para.speed=hpm_mcl_over_zero_cal_speed(&sensorless_cfg);// 計(jì)算速度 current_speed =hpm_mcl_over_zero_speed_filter(&speed_para); // 速度濾波 pi_para.target= user_setspeed; // 設(shè)置目標(biāo)速度 pi_para.cur= current_speed; // 當(dāng)前速度 hpm_mcl_over_zero_pi_contrl(&pi_para); // PI控制 block_pwm_out =pival_to_pwmoutput(pi_para.outval); // 轉(zhuǎn)換為PWM輸出 bldc_block_motor0_duty_set(block_pwm_out); // 設(shè)置PWM占空比 hpm_mcl_over_zero_pwm_ctrl(BLDC_MOTOR0_INDEX, step_delay); // PWM控制輸出 }}

5. HPM MCL過零檢測算法深度分析

5.1 HPM MCL過零檢測的核心實(shí)現(xiàn)

虛擬中性點(diǎn)計(jì)算方法

HPM MCL庫采用創(chuàng)新的虛擬中性點(diǎn)方法,簡化了過零檢測的復(fù)雜度:

// 核心檢測函數(shù)中的關(guān)鍵代碼int8_thpm_mcl_over_zero_step_get(hpm_mcl_over_zero_cfg_t*cfg){ int32_tadc_over_zero_u, adc_over_zero_v, adc_over_zero_w; // 計(jì)算三相虛擬中性點(diǎn)電壓 adc_over_zero_u = (cfg->adc_w + cfg->adc_v) >>1; // U相過零檢測用 adc_over_zero_v = (cfg->adc_w + cfg->adc_u) >>1; // V相過零檢測用 adc_over_zero_w = (cfg->adc_u + cfg->adc_v) >>1; // W相過零檢測用}

檢測原理解析

  • 當(dāng)檢測U相過零時(shí),U相懸浮,用V相和W相電壓的均值作為中性點(diǎn)
  • 比較:8625f7d0-2974-11f1-96ea-92fbcf53809c.png的符號變化
  • 過零條件:該值從正變負(fù)或從負(fù)變正

5.2 三狀態(tài)機(jī)的深度實(shí)現(xiàn)分析

5.2.1 初始化狀態(tài)(hpm_mcl_over_zero_fsm_init)

casehpm_mcl_over_zero_fsm_init: cfg->last_interval = hpm_mcl_interval_init; cfg->delay_degree_30 =0; cfg->number_consecutive_zeros_w =0; cfg->adc_zero_ph =0; // 過零檢測階段標(biāo)志 cfg->last_interval_tick =0; cfg->number_consecutive_zeros =0; cfg->interval_tick =0; cfg->speed_tick =0; cfg->interval = hpm_mcl_interval_init; cfg->fsm = hpm_mcl_over_zero_fsm_location; // 轉(zhuǎn)入定位狀態(tài) break;

初始化的關(guān)鍵參數(shù)

  • adc_zero_ph:過零檢測階段標(biāo)志,用于多階段驗(yàn)證
  • number_consecutive_zeros:連續(xù)過零檢測計(jì)數(shù)器
  • delay_degree_30:30度延遲計(jì)數(shù)器

5.2.2 定位狀態(tài)(hpm_mcl_over_zero_fsm_location)

定位階段采用三階段驗(yàn)證機(jī)制,確保初始轉(zhuǎn)子位置檢測的可靠性:

case hpm_mcl_over_zero_fsm_location: adc_over_zero_w = (cfg->adc_u + cfg->adc_v) >>1; // 計(jì)算W相虛擬中性點(diǎn) if(cfg->adc_zero_ph ==0) { // 第一階段:等待W相反電動勢從負(fù)變正 if(adc_over_zero_w - cfg->adc_w >0) { cfg->number_consecutive_zeros_w++; if(cfg->number_consecutive_zeros_w > HPM_OVER_ZERO_INIT_FILTER_TIMES) { cfg->adc_zero_ph =1; // 進(jìn)入第二階段 cfg->number_consecutive_zeros_w =0; } }else{ cfg->number_consecutive_zeros_w =0; return-1; // 繼續(xù)等待 } }elseif(cfg->adc_zero_ph ==1) { // 第二階段:再次檢測過零,確保穩(wěn)定 if(adc_over_zero_w - cfg->adc_w >0) { cfg->number_consecutive_zeros_w++; if(cfg->number_consecutive_zeros_w > HPM_OVER_ZERO_INIT_FILTER_TIMES) { cfg->adc_zero_ph =2; // 進(jìn)入第三階段 } }else{ cfg->number_consecutive_zeros_w =0; return-1; } }elseif(cfg->adc_zero_ph ==2) { // 第三階段:定位完成,設(shè)置初始換相區(qū)間 cfg->last_interval = hpm_mcl_interval_w_down; cfg->interval = cfg->last_interval; cfg->next_interval = hpm_mcl_interval_w_down; // 根據(jù)電機(jī)方向設(shè)置下一個(gè)換相區(qū)間 if(cfg->motor_dir == hpm_motor_dir_forward) { cfg->next_interval = (cfg->interval %6) +1; }else{ cfg->next_interval -=1; if(cfg->next_interval ==0) { cfg->next_interval = hpm_mcl_interval_u_up; } } cfg->fsm = hpm_mcl_over_zero_fsm_running; // 轉(zhuǎn)入運(yùn)行狀態(tài) } break;

定位算法的關(guān)鍵特點(diǎn)

  • 連續(xù)性驗(yàn)證:HPM_OVER_ZERO_INIT_FILTER_TIMES = 15,需連續(xù)15次檢測到相同結(jié)果
  • 二次確認(rèn)機(jī)制:確保轉(zhuǎn)子位置檢測的準(zhǔn)確性
  • 方向適應(yīng):根據(jù)電機(jī)方向設(shè)置不同的換相序列

5.2.3 運(yùn)行狀態(tài)(hpm_mcl_over_zero_fsm_running)

運(yùn)行狀態(tài)是核心算法,實(shí)現(xiàn)六步換相的過零檢測:

casehpm_mcl_over_zero_fsm_running: cfg->interval_tick++; // 換相間隔計(jì)時(shí) cfg->delay_degree_30++; // 30度延遲計(jì)時(shí) // 計(jì)算三相虛擬中性點(diǎn) adc_over_zero_u = (cfg->adc_w + cfg->adc_v) >>1; adc_over_zero_v = (cfg->adc_w + cfg->adc_u) >>1; adc_over_zero_w = (cfg->adc_u + cfg->adc_v) >>1; // 根據(jù)當(dāng)前區(qū)間和電機(jī)方向進(jìn)行過零檢測 switch(HPM_OVER_ZERO_INDEX_GET(cfg->next_interval, cfg->motor_dir)) { caseHPM_OVER_ZERO_INDEX_GET(hpm_mcl_interval_w_down, hpm_motor_dir_forward): if (adc_over_zero_w - cfg->adc_w >0) { // W相從負(fù)過零到正 cfg->number_consecutive_zeros++; }else{ cfg->number_consecutive_zeros =0; } break; caseHPM_OVER_ZERO_INDEX_GET(hpm_mcl_interval_w_up, hpm_motor_dir_forward): if (adc_over_zero_w - cfg->adc_w number_consecutive_zeros++; }else{ cfg->number_consecutive_zeros =0; } break; // ... 其他五個(gè)區(qū)間的檢測邏輯 } // 過零檢測成功處理 if(cfg->number_consecutive_zeros >= HPM_OVER_ZERO_FILTER_TIMES) { cfg->number_consecutive_zeros =0; cfg->last_interval_tick = cfg->interval_tick; // 保存上次換相間隔 cfg->interval_tick =0; // 重置計(jì)數(shù)器 cfg->delay_degree_30 = HPM_OVER_ZERO_FILTER_TIMES; // 設(shè)置30度延遲 // 計(jì)算下一個(gè)換相區(qū)間 if(cfg->motor_dir == hpm_motor_dir_forward) { cfg->next_interval = (cfg->interval %6) +1; }else{ cfg->next_interval -=1; if(cfg->next_interval ==0) { cfg->next_interval = hpm_mcl_interval_u_up; } } } // 30度延遲判斷和換相執(zhí)行 if(cfg->delay_degree_30 > (cfg->last_interval_tick >>1)) { cfg->speed_tick = cfg->last_interval_tick; // 保存速度計(jì)算用數(shù)據(jù) cfg->interval = cfg->next_interval; // 執(zhí)行換相 } break;

運(yùn)行狀態(tài)的關(guān)鍵算法

1. 雙重計(jì)時(shí)器機(jī)制

  • interval_tick換相間隔計(jì)時(shí)器
  • delay_degree_3030度延遲計(jì)時(shí)器

2. 過零檢測的數(shù)學(xué)條件

ParseError: KaTeX parse error: Expected & or \\ or \cr or \end at end of input: …erval\_tick}{2}

5.3 HPM MCL的高精度速度計(jì)算算法

理論基礎(chǔ)與數(shù)學(xué)推導(dǎo)

基于換相間隔時(shí)間計(jì)算電機(jī)轉(zhuǎn)速的數(shù)學(xué)模型:

862fbd7e-2974-11f1-96ea-92fbcf53809c.png轉(zhuǎn)換為每分鐘轉(zhuǎn)數(shù)(rpm):863942cc-2974-11f1-96ea-92fbcf53809c.png轉(zhuǎn)換為每秒轉(zhuǎn)數(shù)(rps):8644356a-2974-11f1-96ea-92fbcf53809c.png

HPM MCL庫的實(shí)際實(shí)現(xiàn)

floathpm_mcl_over_zero_cal_speed(hpm_mcl_over_zero_cfg_t*cfg){ // 原始實(shí)現(xiàn):基于換相間隔計(jì)算轉(zhuǎn)速 return((float)((60.0f/ cfg->pole_num) /360.0f))/(cfg->loop_time_in_sec * (cfg->speed_tick +1));}

算法分析與優(yōu)化

單位統(tǒng)一化

8651d652-2974-11f1-96ea-92fbcf53809c.png

其中:

  • :將每分鐘轉(zhuǎn)數(shù)轉(zhuǎn)換為每秒轉(zhuǎn)數(shù)
  • :采樣周期(秒)
  • :換相間隔的采樣次數(shù)

精度優(yōu)化技巧

  • 使用speed_tick + 1避免除零錯(cuò)誤
  • 通過last_interval_tick保存上次有效測量值
  • 采用浮點(diǎn)運(yùn)算提高計(jì)算精度

速度計(jì)算的時(shí)序分析

865b04b6-2974-11f1-96ea-92fbcf53809c.png這種設(shè)計(jì)確保了速度計(jì)算的實(shí)時(shí)性和準(zhǔn)確性。

5.4 HPM MCL的高級PI控制算法

雙環(huán)PI控制系統(tǒng)架構(gòu)

HPM MCL實(shí)現(xiàn)了雙層PI控制系統(tǒng):外環(huán)PI控制器 + 內(nèi)環(huán)PWM輸出控制。

外環(huán):速度PI控制器

floathpm_mcl_over_zero_speed_filter(hpm_mcl_over_zero_spd_para_t*par){ floatportion_asp =0; floatportion_asi =0; // 低通濾波器預(yù)處理 par->err = par->speed - par->speedout; par->err_last = par->filter_coef * par->err + (1- par->filter_coef) * par->err_last; // PI控制計(jì)算 portion_asp = par->kp * par->err_last; // 比例項(xiàng) portion_asi = par->ki * par->err_last; // 積分項(xiàng) portion_asi += par->mem; // 積分累加 // 積分限幅 if(portion_asi > par->integral_max) { portion_asi = par->integral_max; }elseif(portion_asi < par->integral_min) { portion_asi = par->integral_min; } par->mem = portion_asi; // 組合PI輸出 portion_asi += portion_asp; // 輸出限幅 if(portion_asi > par->output_max) { portion_asi = par->output_max; }elseif(portion_asi < par->output_min) { portion_asi = par->output_min; } par->speedout = portion_asi; returnpar->speedout;}

內(nèi)環(huán):PWM占空比PI控制器

floathpm_mcl_over_zero_pi_contrl(hpm_mcl_over_zero_pi_para_t*par){ floatresult =0; floatcurerr =0; floatportion_asp =0; floatportion_asi =0; curerr = par->target - par->cur; // 計(jì)算誤差 portion_asp = curerr * par->kp; // 比例項(xiàng) portion_asi = curerr * par->ki + par->mem; // 積分項(xiàng) // 積分限幅(防止積分飽和) if(portion_asi < par->integral_min) { portion_asi = par->integral_min; }elseif(portion_asi > par->integral_max) { portion_asi = par->integral_max; } par->mem = portion_asi; // PI輸出組合 result = portion_asi + portion_asp; // 輸出限幅(防止PWM超出范圍) if(result < par->output_min) { result = par->output_min; }elseif(result > par->output_max) { result = par->output_max; } par->outval = result; returnresult;}

PI控制器的高級特性分析

8667d59c-2974-11f1-96ea-92fbcf53809c.jpg

控制參數(shù)的自適應(yīng)調(diào)優(yōu)

系統(tǒng)在實(shí)際應(yīng)用中采用了經(jīng)驗(yàn)參數(shù):

// 速度環(huán)PI參數(shù)speed_para.kp=0.2814; // 比例系數(shù)speed_para.ki=0.0145; // 積分系數(shù)speed_para.integral_max=1000; // 積分上限speed_para.integral_min= -1000; // 積分下限// PWM環(huán)PI參數(shù)pi_para.kp=PI_P_VAL; // 124pi_para.ki=PI_I_VAL; // 0.15pi_para.integral_max=PI_PWM_OUT_MAX; // PWM最大值pi_para.integral_min= -PI_PWM_OUT_MAX; // PWM最小值

這些參數(shù)通過大量實(shí)驗(yàn)優(yōu)化,可以在大多數(shù)BLDC電機(jī)上直接使用。

5.5 HPM MCL的多級濾波系統(tǒng)

濾波系統(tǒng)的分層設(shè)計(jì)

HPM MCL采用多級濾波架構(gòu),提高系統(tǒng)的抗干擾能力:

  1. 硬件濾波層:過零檢測的連續(xù)性驗(yàn)證
  2. 軟件濾波層:數(shù)字低通濾波器
  3. 控制濾波層:PI控制器的積分作用

連續(xù)性驗(yàn)證濾波器

這是一種獨(dú)特的數(shù)字濾波方法,通過計(jì)數(shù)器實(shí)現(xiàn):

// 運(yùn)行狀態(tài)下的濾波參數(shù)#defineHPM_OVER_ZERO_FILTER_TIMES 5// 初始化狀態(tài)下的濾波參數(shù)#defineHPM_OVER_ZERO_INIT_FILTER_TIMES 15// 濾注邏輯:只有連續(xù)檢測到相同結(jié)果才認(rèn)為有效if(zero_crossing_detected) { cfg->number_consecutive_zeros++; if(cfg->number_consecutive_zeros >= HPM_OVER_ZERO_FILTER_TIMES) { // 過零檢測有效 trigger_commutation(); }}else{ cfg->number_consecutive_zeros =0; // 重置計(jì)數(shù)器}

傳遞函數(shù)分析
連續(xù)性驗(yàn)證濾波器的傳遞函數(shù)可表示為:

86739468-2974-11f1-96ea-92fbcf53809c.png

其中NN為連續(xù)檢測次數(shù)。

數(shù)字低通濾波器

在速度環(huán)中集成的IIR低通濾波器:

867e1096-2974-11f1-96ea-92fbcf53809c.png

截止頻率計(jì)算

滾動均值濾波器的截止頻率為:

868935de-2974-11f1-96ea-92fbcf53809c.png8695d154-2974-11f1-96ea-92fbcf53809c.png

這接近于設(shè)計(jì)目標(biāo)的100Hz。

濾波器的性能優(yōu)化

  1. 相位延遲最小化采用一階IIR結(jié)構(gòu)減少相位延遲
  2. 計(jì)算復(fù)雜度優(yōu)化避免浮點(diǎn)乘法,使用位移操作
  3. 參數(shù)自適應(yīng)根據(jù)轉(zhuǎn)速動態(tài)調(diào)整濾波參數(shù)

濾波器的實(shí)際效果

  • 噪聲抑制有效抑制ADC采樣噪聲和電磁干擾
  • 過零檢測穩(wěn)定性防止誤判斷導(dǎo)致的換相錯(cuò)誤
  • 速度控制穩(wěn)定性平滑速度反饋信號,減少控制震蕩

5.6 HPM MCL六步換相序列的深度實(shí)現(xiàn)

換相序列與過零檢測的對應(yīng)關(guān)系

HPM MCL庫的六步換相序列實(shí)現(xiàn)了精確的PWM控制邏輯:

86a1e93a-2974-11f1-96ea-92fbcf53809c.png

HPM MCL的PWM控制函數(shù)實(shí)現(xiàn):

voidhpm_mcl_over_zero_pwm_ctrl(uint8_tmotorindex,uint8_tstep){ switch(step) { case2: // UH+WL:U相上橋?qū)ǎ琖相下橋?qū)ǎ琕相懸浮 hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_UL); // U相下橋關(guān)閉 hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_VH); // V相上橋關(guān)閉 hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_VL); // V相下橋關(guān)閉 hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_WH); // W相上橋關(guān)閉 hpm_mcl_bldc_pwm_enable(motorindex, BLDC_PWM_PIN_UH); // U相上橋?qū)? hpm_mcl_bldc_pwm_enable(motorindex, BLDC_PWM_PIN_WL); // W相下橋?qū)? break; case1: // UH+VL:U相上橋?qū)ǎ琕相下橋?qū)ǎ琖相懸浮 hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_UL); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_VH); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_WH); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_WL); hpm_mcl_bldc_pwm_enable(motorindex, BLDC_PWM_PIN_UH); hpm_mcl_bldc_pwm_enable(motorindex, BLDC_PWM_PIN_VL); break; case6: // VL+WH:V相下橋?qū)ǎ琖相上橋?qū)ǎ琔相懸浮 hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_UH); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_UL); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_VH); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_WL); hpm_mcl_bldc_pwm_enable(motorindex, BLDC_PWM_PIN_VL); hpm_mcl_bldc_pwm_enable(motorindex, BLDC_PWM_PIN_WH); break; case5: // UL+WH:U相下橋?qū)ǎ琖相上橋?qū)ǎ琕相懸浮 hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_UH); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_VH); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_VL); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_WL); hpm_mcl_bldc_pwm_enable(motorindex, BLDC_PWM_PIN_UL); hpm_mcl_bldc_pwm_enable(motorindex, BLDC_PWM_PIN_WH); break; case4: // UL+VH:U相下橋?qū)ǎ琕相上橋?qū)ǎ琖相懸浮 hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_UH); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_VL); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_WH); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_WL); hpm_mcl_bldc_pwm_enable(motorindex, BLDC_PWM_PIN_UL); hpm_mcl_bldc_pwm_enable(motorindex, BLDC_PWM_PIN_VH); break; case3: // VH+WL:V相上橋?qū)ǎ琖相下橋?qū)ǎ琔相懸浮 hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_UH); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_UL); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_VL); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_WH); hpm_mcl_bldc_pwm_enable(motorindex, BLDC_PWM_PIN_WL); hpm_mcl_bldc_pwm_enable(motorindex, BLDC_PWM_PIN_VH); break; }}

PWM強(qiáng)制輸出的底層實(shí)現(xiàn):

voidhpm_mcl_bldc_pwm_enable(uint8_tmotor_index,uint8_tpin_name){ motor_index -=1; // 轉(zhuǎn)換為數(shù)組索引 #ifdefined(HPMSOC_HAS_HPMSDK_PWM) pwm_disable_pwm_sw_force_output(motor_pwm_tbl[motor_index], pwm_uvw_conversion_tbl[motor_index][pin_name]); #endif #ifdefined(HPMSOC_HAS_HPMSDK_PWMV2) pwmv2_disable_software_force(motor_pwm_tbl[motor_index], pwm_uvw_conversion_tbl[motor_index][pin_name]); #endif}voidhpm_mcl_bldc_pwm_disable(uint8_tmotor_index,uint8_tpin_name){ motor_index -=1; #ifdefined(HPMSOC_HAS_HPMSDK_PWM) pwm_enable_pwm_sw_force_output(motor_pwm_tbl[motor_index], pwm_uvw_conversion_tbl[motor_index][pin_name]); #endif #ifdefined(HPMSOC_HAS_HPMSDK_PWMV2) pwmv2_enable_software_force(motor_pwm_tbl[motor_index], pwm_uvw_conversion_tbl[motor_index][pin_name]); #endif}

引腳映射表的實(shí)現(xiàn):

constuint8_tpwm_uvw_conversion_tbl[4][6] = { { BOARD_BLDC_UH_PWM_OUTPIN, // U相上橋引腳 BOARD_BLDC_UL_PWM_OUTPIN, // U相下橋引腳 BOARD_BLDC_VH_PWM_OUTPIN, // V相上橋引腳 BOARD_BLDC_VL_PWM_OUTPIN, // V相下橋引腳 BOARD_BLDC_WH_PWM_OUTPIN, // W相上橋引腳 BOARD_BLDC_WL_PWM_OUTPIN // W相下橋引腳 }};

換相序列的數(shù)學(xué)模型

每個(gè)換相步驟對應(yīng)的磁場矢量可表示為:

86b187fa-2974-11f1-96ea-92fbcf53809c.png

方向控制的實(shí)現(xiàn)

HPM MCL支持雙向運(yùn)行,通過改變換相序列實(shí)現(xiàn):

// 正向運(yùn)行:1→2→3→4→5→6→1...if(cfg->motor_dir == hpm_motor_dir_forward) { cfg->next_interval = (cfg->interval %6) +1;}// 反向運(yùn)行:6→5→4→3→2→1→6...else{ cfg->next_interval -=1; if(cfg->next_interval ==0) { cfg->next_interval = hpm_mcl_interval_u_up; // 6 }}

換相時(shí)序的精確控制

HPM MCL實(shí)現(xiàn)了精確的換相時(shí)序控制:

86bcee06-2974-11f1-96ea-92fbcf53809c.png

這種設(shè)計(jì)確保了換相的實(shí)時(shí)性和準(zhǔn)確性,同時(shí)避免了換相過程中的競態(tài)條件。

5.7 完整的執(zhí)行流程分析

HPM MCL過零控制的完整執(zhí)行流程

86caaa1e-2974-11f1-96ea-92fbcf53809c.png

性能特點(diǎn)總結(jié)

  1. 實(shí)時(shí)性50μs控制周期,確保系統(tǒng)響應(yīng)速度
  2. 可靠性多級濾波和驗(yàn)證機(jī)制,提高系統(tǒng)穩(wěn)定性
  3. 適應(yīng)性支持不同電機(jī)參數(shù)和應(yīng)用場景
  4. 易用性提供完整的API接口和參數(shù)配置

6. 中斷服務(wù)程序

6.1 ADC中斷處理

voidisr_adc(void){ uint32_t status =hpm_adc_get_status_flags(&hpm_adc_u); if((status &BOARD_BLDC_ADC_PHASE_TRIG_FLAG) !=0) { hpm_adc_clear_status_flags(&hpm_adc_u,BOARD_BLDC_ADC_PHASE_TRIG_FLAG); // 獲取三相ADC采樣值 sensorless_cfg.adc_u= ((adc_buff[0][BOARD_BLDC_ADC_PHASE_TRG*4] &0xffff) >>4) &0xfff; sensorless_cfg.adc_v= ((adc_buff[0][BOARD_BLDC_ADC_PHASE_TRG*4+1] &0xffff) >>4) &0xfff; sensorless_cfg.adc_w= ((adc_buff[0][BOARD_BLDC_ADC_PHASE_TRG*4+2] &0xffff) >>4) &0xfff; }}

ADC中斷在每個(gè)PWM周期觸發(fā)一次,采集三相電壓信號用于過零檢測。

6.2 定時(shí)器中斷處理

voidisr_gptmr(void){ if(gptmr_check_status(BOARD_BLDC_TMR_1MS,GPTMR_CH_CMP_IRQ_MASK(BOARD_BLDC_TMR_CH,BOARD_BLDC_TMR_CMP))) { gptmr_clear_status(BOARD_BLDC_TMR_1MS,GPTMR_CH_CMP_IRQ_MASK(BOARD_BLDC_TMR_CH,BOARD_BLDC_TMR_CMP)); // 獲取換相步驟 step_delay =hpm_mcl_over_zero_step_get(&sensorless_cfg); if(motor_run ==true) { timer_times++; if(timer_times >=TIMER_TIMES_1MS) { timer_times =0; // 速度計(jì)算和控制 speed_para.speed=hpm_mcl_over_zero_cal_speed(&sensorless_cfg); current_speed =hpm_mcl_over_zero_speed_filter(&speed_para); // PI控制 pi_para.target= user_setspeed; pi_para.cur= current_speed; hpm_mcl_over_zero_pi_contrl(&pi_para); // PWM輸出 block_pwm_out =pival_to_pwmoutput(pi_para.outval); bldc_block_motor0_duty_set(block_pwm_out); } } // PWM控制輸出 if(motor_run ==true) { hpm_mcl_over_zero_pwm_ctrl(BLDC_MOTOR0_INDEX, step_delay); } }}

定時(shí)器中斷執(zhí)行核心控制算法,周期為100μs。

7. PWM驅(qū)動實(shí)現(xiàn)

7.1 六步換相控制

無傳感器控制采用六步換相方式,每60°電角度換相一次:

voidhpm_mcl_over_zero_pwm_ctrl(uint8_tmotorindex,uint8_tstep){ switch(step) { case1:// AH+BL: A相上橋?qū)ǎ珺相下橋?qū)? hpm_mcl_bldc_pwm_enable(motorindex, BLDC_PWM_PIN_UH); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_UL); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_VH); hpm_mcl_bldc_pwm_enable(motorindex, BLDC_PWM_PIN_VL); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_WH); hpm_mcl_bldc_pwm_disable(motorindex, BLDC_PWM_PIN_WL); break; case2:// AH+CL: A相上橋?qū)ǎ珻相下橋?qū)? // ... 類似配置 break; // ... 其他步驟 }}

7.2 占空比控制

系統(tǒng)通過調(diào)整PWM占空比實(shí)現(xiàn)速度控制:

voidbldc_block_motor0_duty_set(uint32_tduty){ #ifdefined(HPMSOC_HAS_HPMSDK_PWM) pwm_update_raw_cmp_central_aligned(MOTOR0_BLDCPWM, BOARD_BLDCPWM_CMP_INDEX_0, BOARD_BLDCPWM_CMP_INDEX_1, (PWM_RELOAD - duty) >>1, (PWM_RELOAD + duty) >>1); pwm_issue_shadow_register_lock_event(MOTOR0_BLDCPWM); #endif #ifdefined(HPMSOC_HAS_HPMSDK_PWMV2) pwmv2_shadow_register_unlock(MOTOR0_BLDCPWM); pwmv2_set_shadow_val(MOTOR0_BLDCPWM, (BOARD_BLDCPWM_CMP_INDEX_0 +1), (PWM_RELOAD - duty) >>1,0,false); pwmv2_set_shadow_val(MOTOR0_BLDCPWM, (BOARD_BLDCPWM_CMP_INDEX_1 +1), (PWM_RELOAD + duty) >>1,0,false); pwmv2_shadow_register_lock(MOTOR0_BLDCPWM); #endif}

7.3 PWM強(qiáng)制輸出模式

當(dāng)需要關(guān)閉特定相的輸出時(shí),使用強(qiáng)制輸出模式:

voidhpm_mcl_bldc_pwm_disable(uint8_tmotor_index,uint8_tpin_name){ motor_index -=1; #ifdefined(HPMSOC_HAS_HPMSDK_PWM) pwm_enable_pwm_sw_force_output(motor_pwm_tbl[motor_index], pwm_uvw_conversion_tbl[motor_index][pin_name]); #endif #ifdefined(HPMSOC_HAS_HPMSDK_PWMV2) pwmv2_enable_software_force(motor_pwm_tbl[motor_index], pwm_uvw_conversion_tbl[motor_index][pin_name]); #endif}

8. 使用指南

8.1 硬件準(zhǔn)備

  1. MCU開發(fā)板支持HPMicro芯片的開發(fā)板
  2. BLDC電機(jī)三相無刷直流電機(jī)(推薦雷賽智能BLM57050-1000)
  3. 功率驅(qū)動三相逆變器模塊,支持相電壓檢測
  4. 電源24V直流電源
  5. ADC電路用于采集三相電壓信號

8.2 軟件配置

步驟1:參數(shù)配置
根據(jù)實(shí)際電機(jī)參數(shù)修改以下定義:

#defineMOTOR0_POLE_PAIR (2) // 電機(jī)極對數(shù)#definePWM_FREQUENCY (20000) // PWM頻率20kHz#definePI_P_VAL (124) // PI比例系數(shù)#definePI_I_VAL (0.15) // PI積分系數(shù)

步驟2:編譯下載
使用支持的IDE編譯工程并下載到目標(biāo)板。

步驟3:運(yùn)行測試
系統(tǒng)啟動后會自動進(jìn)行預(yù)定位,然后開始速度測試。

8.3 操作特點(diǎn)

  1. 預(yù)定位過程:系統(tǒng)啟動時(shí)會進(jìn)行強(qiáng)制換相預(yù)定位,持續(xù)約500ms
  2. 自動測試:電機(jī)在5-40轉(zhuǎn)/秒范圍內(nèi)自動變速運(yùn)行
  3. 無傳感器啟動:無需外部位置傳感器,完全基于反電動勢檢測

9. 調(diào)試與優(yōu)化

9.1 常見問題

問題1:電機(jī)無法啟動

  • 檢查ADC采集電路是否正常
  • 確認(rèn)三相電壓檢測信號連接正確
  • 驗(yàn)證PWM輸出波形

問題2:速度不穩(wěn)定

  • 調(diào)整PI控制器參數(shù)
  • 修改速度濾波器系數(shù)
  • 檢查過零檢測閾值

問題3:換相不平滑

  • 優(yōu)化30度延遲計(jì)算
  • 調(diào)整過零檢測靈敏度
  • 檢查PWM驅(qū)動時(shí)序

9.2 參數(shù)調(diào)優(yōu)

PI參數(shù)調(diào)整

86d53e84-2974-11f1-96ea-92fbcf53809c.png

濾波器參數(shù)

86dfd09c-2974-11f1-96ea-92fbcf53809c.png

9.3 性能優(yōu)化

提高啟動成功率

  • 優(yōu)化預(yù)定位時(shí)間和強(qiáng)度
  • 調(diào)整初始換相頻率
  • 改善過零檢測算法

提高運(yùn)行穩(wěn)定性

  • 增加反電動勢濾波
  • 優(yōu)化換相時(shí)機(jī)預(yù)測
  • 實(shí)現(xiàn)自適應(yīng)控制參數(shù)

10. 移植指南

10.1 硬件移植步驟

步驟1:板級定義修改

// ADC相關(guān)定義#defineBOARD_BLDC_ADC_PHASE_U_BASE HPM_ADC0 // U相ADC#defineBOARD_BLDC_ADC_PHASE_V_BASE HPM_ADC1 // V相ADC#defineBOARD_BLDC_ADC_PHASE_W_BASE HPM_ADC2 // W相ADC#defineBOARD_BLDC_ADC_PHASE_CH_U (5U) // U相通道#defineBOARD_BLDC_ADC_PHASE_CH_V (6U) // V相通道#defineBOARD_BLDC_ADC_PHASE_CH_W (7U) // W相通道// PWM相關(guān)定義#defineMOTOR0_BLDCPWM HPM_PWM0 // PWM模塊#defineBOARD_BLDC_UH_PWM_OUTPIN (0U) // U相上橋臂#defineBOARD_BLDC_UL_PWM_OUTPIN (1U) // U相下橋臂// ... 其他引腳定義

步驟2:引腳配置

voidinit_motor_over_zero_sensorless_adc_pins(void){ // 配置ADC輸入引腳 // 設(shè)置引腳復(fù)用功能為ADC // 配置引腳特性(如輸入阻抗等)}

10.2 電機(jī)參數(shù)適配

基本參數(shù)修改

voidinit_over_zero_para(hpm_mcl_over_zero_cfg_t *cfg){ cfg->pole_num =MOTOR0_POLE_PAIR; // 根據(jù)電機(jī)極對數(shù)修改 cfg->loop_time_in_sec =0.0001; // 控制周期,根據(jù)定時(shí)器頻率 // 速度濾波參數(shù)(根據(jù)電機(jī)特性調(diào)整) speed_para.filter_coef=0.0304; // 濾波系數(shù) speed_para.kp=0.2814; // 速度環(huán)P參數(shù) speed_para.ki=0.0145; // 速度環(huán)I參數(shù) // PI控制器參數(shù)(根據(jù)負(fù)載特性調(diào)整) pi_para.kp=PI_P_VAL; // 比例系數(shù) pi_para.ki=PI_I_VAL; // 積分系數(shù)}

10.3 ADC電路適配

電壓檢測電路要求

  • ADC輸入電壓范圍:0-3.3V
  • 相電壓檢測電路:需要電壓分壓和偏置
  • 噪聲抑制:添加RC濾波電路

典型檢測電路

86ea1ba6-2974-11f1-96ea-92fbcf53809c.png

11. 安全注意事項(xiàng)

電氣安全

  • 確保功率電路與控制電路隔離
  • 實(shí)現(xiàn)過流、過壓保護(hù)
  • 正確接地,避免地環(huán)路

啟動安全

  • 無傳感器啟動時(shí)電機(jī)可能產(chǎn)生抖動
  • 預(yù)定位過程中避免外部干擾
  • 設(shè)置合理的啟動電流限制

運(yùn)行安全

  • 監(jiān)控ADC采集信號質(zhì)量
  • 實(shí)現(xiàn)失步檢測和保護(hù)
  • 設(shè)置最大運(yùn)行速度限制

12. 性能對比

12.1 與有傳感器控制對比

86f30f90-2974-11f1-96ea-92fbcf53809c.png

12.2 適用場景

適合無傳感器控制的應(yīng)用

  • 成本敏感的應(yīng)用
  • 惡劣環(huán)境(傳感器易損壞)
  • 高速運(yùn)行為主的應(yīng)用
  • 空間受限的應(yīng)用

不適合的應(yīng)用

  • 需要精確位置控制
  • 頻繁啟停的應(yīng)用
  • 超低速運(yùn)行要求
  • 極高可靠性要求

13. 總結(jié)

BLDC無傳感器過零控制技術(shù)通過檢測反電動勢過零點(diǎn)實(shí)現(xiàn)轉(zhuǎn)子位置估計(jì),具有成本低、結(jié)構(gòu)簡單的優(yōu)勢。HPMicro SDK提供的bldc_over_zero示例展示了完整的實(shí)現(xiàn)方案,包括:

  • 過零檢測算法:基于ADC采集的相電壓信號
  • 換相控制邏輯:六步換相with 30度延遲
  • 速度閉環(huán)控制:PI控制器實(shí)現(xiàn)精確調(diào)速
  • 濾波和穩(wěn)定性:多級濾波保證系統(tǒng)穩(wěn)定

主要技術(shù)特點(diǎn):

  • 無需外部位置傳感器,降低系統(tǒng)成本
  • 采用梯形波控制,實(shí)現(xiàn)簡單可靠
  • 支持雙向運(yùn)行和寬速度范圍控制
  • 提供完整的移植和調(diào)試指南

在實(shí)際應(yīng)用中,開發(fā)者需要根據(jù)具體的電機(jī)參數(shù)和應(yīng)用需求,對控制參數(shù)進(jìn)行優(yōu)化調(diào)整,以獲得最佳的控制性能。通過本文提供的詳細(xì)分析和指導(dǎo),可以快速掌握無傳感器過零控制技術(shù),并成功應(yīng)用到實(shí)際項(xiàng)目中。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • BLDC
    +關(guān)注

    關(guān)注

    220

    文章

    937

    瀏覽量

    100512
  • 無傳感器
    +關(guān)注

    關(guān)注

    0

    文章

    66

    瀏覽量

    13734
  • HPM
    HPM
    +關(guān)注

    關(guān)注

    2

    文章

    54

    瀏覽量

    8286
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    BLDC位置傳感器控制方式介紹

    BLDC根據(jù)轉(zhuǎn)子的位置進(jìn)行換向控制,而轉(zhuǎn)子位置要靠位置傳感器獲取,那么這期就為大家介紹BLDC位置
    的頭像 發(fā)表于 12-30 07:55 ?1.1w次閱讀
    <b class='flag-5'>BLDC</b><b class='flag-5'>無</b>位置<b class='flag-5'>傳感器</b><b class='flag-5'>控制</b>方式介紹

    開發(fā)知識庫測試添加知識庫

    文檔類型的知識要等待數(shù)據(jù)校驗(yàn)完成后才能上架 可以點(diǎn)擊知識名稱查看知識詳情 等待后端處理完成可以點(diǎn)擊知識列表的上架 在智能體中知識庫的位置點(diǎn)
    發(fā)表于 03-06 15:07

    采用56F801X的3相刷直流電機(jī)傳感器控制參考設(shè)計(jì)

    的三相BLDC電機(jī),帶有反電動勢感應(yīng)用于傳感器控制的ADC檢測使用PI
    發(fā)表于 07-18 14:13

    傳感器BLDC電機(jī)控制引入低成本應(yīng)用

    ,使用可軟件編程的控制器通常會使這些挑戰(zhàn)更容易解決,就像本文提及的兩個(gè)問題的解決方案一樣。  通過示例進(jìn)行研究和實(shí)驗(yàn)使得學(xué)習(xí)新技術(shù)更為容易。專為傳感器
    發(fā)表于 11-08 16:08

    傳感器控制基礎(chǔ)知識和要點(diǎn)

    電機(jī),控制算法必須經(jīng)由以下狀態(tài):? 對齊 ( 初始位置設(shè)置 )? 啟動 (強(qiáng)制換相)? 運(yùn)行 ( 傳感器運(yùn)行,提供反電動勢 AD 采樣和
    發(fā)表于 02-28 09:11

    關(guān)于BLDC電機(jī)控制的所有信息:傳感器刷直流電機(jī)控制器

    了解傳感器刷直流電動機(jī)控制器,一些示例IC以及使用此類電動機(jī)的一些缺點(diǎn)。有刷和刷直流電動機(jī)的快速回顧
    發(fā)表于 10-25 09:51

    基于PSoC4的傳感器BLDC控制

    個(gè)或多個(gè)轉(zhuǎn)子位置傳感器確定電機(jī)轉(zhuǎn)子相對于電機(jī)定子的位置。采用位置傳感器BLDC控制方案較為簡單,根據(jù)位置傳感器的輸出確定轉(zhuǎn)子所處的區(qū)間,并
    發(fā)表于 05-05 07:27

    傳感器BLDC控制應(yīng)用筆記分享

    傳感器BLDC控制應(yīng)用筆記
    發(fā)表于 12-14 07:03

    基于知識庫的智能策略翻譯技術(shù)

    提出基于知識庫的策略翻譯方法,設(shè)計(jì)策略翻譯組成結(jié)構(gòu),分析策略知識及其表示形式,建立動態(tài)可擴(kuò)展的策略知識庫,開發(fā)可擴(kuò)展的策略編譯和策略組裝
    發(fā)表于 04-22 09:42 ?11次下載

    傳感器BLDC電機(jī)控制

    傳感器BLDC電機(jī)控制:The SPMC75F2413A digital motor controller developed by SUNPLUS is well suitabl
    發(fā)表于 09-19 11:11 ?69次下載

    領(lǐng)域知識庫的研究與設(shè)計(jì)

    領(lǐng)域知識庫的構(gòu)建有利于知識的檢索和共享。分析了領(lǐng)域知識庫應(yīng)具備的條件,指出構(gòu)建領(lǐng)域知識庫的有效方法;介紹了構(gòu)建知識庫的一般步驟,并設(shè)計(jì)出領(lǐng)域
    發(fā)表于 08-29 14:39 ?0次下載

    NXP NFC知識庫

    NXP NFC知識庫
    發(fā)表于 12-30 17:32 ?49次下載

    本體知識庫的模塊與保守?cái)U(kuò)充

    模塊化是軟件工程的一種方法,近年來被引入到本體領(lǐng)域,用以支持本體的重用和本體的整合。已有的工作沒有討論同時(shí)含有TBox和ABox的本體知識庫的模塊化的相關(guān)問題。在定義本體知識庫的模塊和知識庫的保守
    發(fā)表于 11-24 09:58 ?0次下載

    單片機(jī)C868實(shí)現(xiàn)傳感器BLDC電機(jī)控制

    單片機(jī)C868實(shí)現(xiàn)傳感器BLDC電機(jī)控制(電源技術(shù)作業(yè) 電力/水利工程科技 答案)-單片機(jī)C868實(shí)現(xiàn)
    發(fā)表于 09-18 17:24 ?26次下載
    單片機(jī)C868實(shí)現(xiàn)<b class='flag-5'>無</b><b class='flag-5'>傳感器</b><b class='flag-5'>BLDC</b>電機(jī)<b class='flag-5'>控制</b>

    BLDC電機(jī)的傳感器梯形控制

    電子發(fā)燒友網(wǎng)站提供《BLDC電機(jī)的傳感器梯形控制.pdf》資料免費(fèi)下載
    發(fā)表于 10-12 11:32 ?2次下載
    <b class='flag-5'>BLDC</b>電機(jī)的<b class='flag-5'>無</b><b class='flag-5'>傳感器</b>梯形<b class='flag-5'>控制</b>