MM32SPIN2x PWM模塊使用——電流補(bǔ)償和電流保護(hù)
上一章節(jié)中已經(jīng)教大家如何使用MM32SPIN2x的PWM控制模塊使用自動(dòng)換相屏蔽功能,本章節(jié)將與大家一起配置PWM控制模塊的電路補(bǔ)償和電流保護(hù)功能。
PWM進(jìn)行自動(dòng)換相過程中,PWM的突變會(huì)引起電流的劇烈變化進(jìn)而造成電機(jī)旋轉(zhuǎn)的抖動(dòng),為了電機(jī)在換相過程能夠平滑順暢的運(yùn)行我們需要在電機(jī)換相的過程加入電流補(bǔ)償。
MM32SPIN2x的PWM脈沖寬度調(diào)制能夠控制電流補(bǔ)償模塊在換相后進(jìn)行換相補(bǔ)償,濾除電流的波動(dòng)。為了補(bǔ)償換相過程中的電壓下降,換相后立即將PWM輸出直接設(shè)置為有效電平,然后一直檢測換相后的電流,直到換相后的電流恢復(fù)到換相前的電流值就把PWM恢復(fù)為換相前 PWM的值。具體實(shí)現(xiàn)波形如下:
下面將教大家如何使用MM32SPIN2x的PWM控制模塊實(shí)現(xiàn)電流補(bǔ)償功能。
先使能電流觸發(fā)功能 (CCE = 1),換相后 PWM 會(huì)輸出有效電平,直到檢測電流恢復(fù)正常,觸發(fā) PWM 恢復(fù)正常方波輸出。由上文PWM控制模塊框圖可以看出,電流補(bǔ)償觸發(fā)信號(hào)有三種選擇,可通過 PWM_CSR 寄存器的 CC_TRGSEL 選擇:軟件觸發(fā)電流補(bǔ)償,在 CC_STRG 寫 1 后觸發(fā) PWM 恢復(fù)正常輸出;ADC1 或者 ADC2 的數(shù)位比較器觸發(fā)電流補(bǔ)償功能;比較器 COMP4 觸發(fā)電流補(bǔ)償功能。
使用軟件觸發(fā)電流補(bǔ)償功能配置如下:
- 使能電流補(bǔ)償功能,設(shè)置PWM_CSR寄存器CCE = 1
- 配置電流補(bǔ)償觸發(fā)方式,設(shè)置PWM_CSR寄存器CC_TRGSEL = 11(軟件觸發(fā)電流補(bǔ)償功能)。
- 在電流恢復(fù)正常時(shí)使用軟件觸發(fā)電流補(bǔ)償,設(shè)置PWM_CSR寄存器CC_STRG = 1
程序中配置如下:
//使能電流補(bǔ)償功能,配置電流補(bǔ)償觸發(fā)方式為軟件觸發(fā)
PWM ->CSR|= PWM_CSR_CC_TRGSEL_1 | PWM_CSR_CC_TRGSEL_0 | PWM_CSR_CCE;//軟件觸發(fā)電流補(bǔ)償(當(dāng)檢測到電流恢復(fù)時(shí)使用)PWM ->CSR |= PWM_CSR_CC_STRG;
協(xié)議分析儀采集波形如下:
每次PWM換相后都會(huì)持續(xù)輸出一段有效電平,等到電流恢復(fù)后PWM波形恢復(fù)正常。
電機(jī)運(yùn)行過程中,不可避免的會(huì)出現(xiàn)過流現(xiàn)象,當(dāng)出現(xiàn)過流現(xiàn)象時(shí)我們會(huì)選擇關(guān)閉PWM輸出,使輸出引腳輸出無效電平。MM32SPIN2x將COMP 1/2/3/4/5連接到PWM脈沖寬度調(diào)制模塊的電流保護(hù)模塊上。當(dāng)檢測到 COMP 1/2/3/4/5 端的高電平觸發(fā)電流保護(hù)功能,電流保護(hù)將關(guān)閉 PWM 輸出 (引腳輸出無效電平),防止電機(jī)燒毀。
下面將教大家如何使用MM32SPIN2x的PWM控制模塊實(shí)現(xiàn)電流保護(hù)功能。
先使能電流保護(hù)功能(CPE = 1),再選擇電流保護(hù)的觸發(fā)信號(hào)由哪個(gè)比較器產(chǎn)生。當(dāng)電流過大的時(shí)候,PWM 輸出關(guān)閉,在電流恢復(fù)在正常區(qū)間后,PWM 輸出自動(dòng)打開。
注意:在選擇比較器 COMP 1/2/3 作為電流保護(hù)的觸發(fā)信號(hào)時(shí),只檢測一個(gè)電流值。在選擇比較器 COMP 4/5 作為電流保護(hù)的觸發(fā)信號(hào),并且在 PWM_CSR 寄存器的 CP_MDSEL 設(shè)置打開輪詢通道保護(hù)功能時(shí),可以同時(shí)監(jiān)測三個(gè)電流值,或者同時(shí)監(jiān)測三個(gè)電流值的上限和下限。
使用COMP 3觸發(fā)電流保護(hù)功能配置如下:
• 使能電流保護(hù)功能,設(shè)置PWM_CSR寄存器CPE = 1
• 配置電流保護(hù)觸發(fā)方式,設(shè)置PWM_CSR寄存器CP_TRGSEL[2:0] = 010(比較器 3 觸發(fā)電流保護(hù)功能)。
• 配置電流保護(hù)模式,設(shè)置PWM_CSR寄存器CP_MDSEL = 0(全通道關(guān)閉功能)
• 配置比較器3
程序中配置如下:
//使能電流保護(hù),配置電流保護(hù)為比較器3輸出,全通道關(guān)閉
PWM ->CSR |= PWM_CSR_CP_TRGSEL_1 | PWM_CSR_CPE;
//配置PC14、PC15為模擬輸入引腳,做為比較器輸入,中速、無遲滯
void Comp_Conf(void)
{
COMP_InitTypeDef COMP_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
//使能比較器的時(shí)鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_CPT, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
配置PC14/15為模擬輸入口
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOC, &GPIO_InitStructure);
COMP_InitStructure.COMP_InvertingInput = COMP_InvertingInput_IO2;
COMP_InitStructure.COMP_NonInvertingInput = COMP_NonInvertingInput_IO2;
COMP_InitStructure.COMP_Output = COMP_Output_None;
COMP_InitStructure.COMP_OutputPol = COMP_OutputPol_NonInverted;
COMP_InitStructure.COMP_Hysteresis = COMP_Hysteresis_No;
COMP_InitStructure.COMP_Mode = COMP_Mode_MediumSpeed;
COMP_Init(COMP_Selection_COMP3, &COMP_InitStructure);
COMP_Cmd(COMP_Selection_COMP3, ENABLE);
}
協(xié)議分析儀采集波形如下:
當(dāng)出現(xiàn)電流過大的現(xiàn)象時(shí),PWM輸出無效電平,避免電機(jī)燒壞,等到電流恢復(fù)后PWM波形恢復(fù)正常。
電流補(bǔ)償功能在電機(jī)應(yīng)用中是不可或缺的,通常我們是直接操作TIM1控制PWM輸出有效電平,檢測到電流恢復(fù)時(shí)再去控制TIM1輸出PWM波形。這樣一來增加了算法的復(fù)雜性,二來實(shí)時(shí)性不能夠得到保障。而MM32SPIN2x的PWM控制模塊通過硬件控制可以實(shí)現(xiàn)自動(dòng)控制電流補(bǔ)償,避免MCU使用軟件處理電流補(bǔ)償,減少了代碼空間、算法復(fù)雜度、運(yùn)行時(shí)間,且實(shí)時(shí)性也能夠得到保證,使得電機(jī)換相能夠平滑穩(wěn)定的進(jìn)行。而電流保護(hù)功能則能很好的保護(hù)我們的電機(jī),避免過流造成電機(jī)燒毀。
編輯:admin 最后修改時(shí)間:2018-12-27