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