MM32SPIN2x PWM模块使用——电流补偿和电流保护
上一章节中已经教大家如何使用MM32SPIN2x的PWM控制模块使用自动换相屏蔽功能,本章节将与大家一起配置PWM控制模块的电路补偿和电流保护功能。
PWM进行自动换相过程中,PWM的突变会引起电流的剧烈变化进而造成电机旋转的抖动,为了电机在换相过程能够平滑顺畅的运行我们需要在电机换相的过程加入电流补偿。
MM32SPIN2x的PWM脉冲宽度调制能够控制电流补偿模块在换相后进行换相补偿,滤除电流的波动。为了补偿换相过程中的电压下降,换相后立即将PWM输出直接设置为有效电平,然后一直检测换相后的电流,直到换相后的电流恢复到换相前的电流值就把PWM恢复为换相前 PWM的值。具体实现波形如下:
下面将教大家如何使用MM32SPIN2x的PWM控制模块实现电流补偿功能。
先使能电流触发功能 (CCE = 1),换相后 PWM 会输出有效电平,直到检测电流恢复正常,触发 PWM 恢复正常方波输出。由上文PWM控制模块框图可以看出,电流补偿触发信号有三种选择,可通过 PWM_CSR 寄存器的 CC_TRGSEL 选择:软件触发电流补偿,在 CC_STRG 写 1 后触发 PWM 恢复正常输出;ADC1 或者 ADC2 的数位比较器触发电流补偿功能;比较器 COMP4 触发电流补偿功能。
使用软件触发电流补偿功能配置如下:
- 使能电流补偿功能,设置PWM_CSR寄存器CCE = 1
- 配置电流补偿触发方式,设置PWM_CSR寄存器CC_TRGSEL = 11(软件触发电流补偿功能)。
- 在电流恢复正常时使用软件触发电流补偿,设置PWM_CSR寄存器CC_STRG = 1
程序中配置如下:
//使能电流补偿功能,配置电流补偿触发方式为软件触发
PWM ->CSR|= PWM_CSR_CC_TRGSEL_1 | PWM_CSR_CC_TRGSEL_0 | PWM_CSR_CCE;//软件触发电流补偿(当检测到电流恢复时使用)PWM ->CSR |= PWM_CSR_CC_STRG;
协议分析仪采集波形如下:
每次PWM换相后都会持续输出一段有效电平,等到电流恢复后PWM波形恢复正常。
电机运行过程中,不可避免的会出现过流现象,当出现过流现象时我们会选择关闭PWM输出,使输出引脚输出无效电平。MM32SPIN2x将COMP 1/2/3/4/5连接到PWM脉冲宽度调制模块的电流保护模块上。当检测到 COMP 1/2/3/4/5 端的高电平触发电流保护功能,电流保护将关闭 PWM 输出 (引脚输出无效电平),防止电机烧毁。
下面将教大家如何使用MM32SPIN2x的PWM控制模块实现电流保护功能。
先使能电流保护功能(CPE = 1),再选择电流保护的触发信号由哪个比较器产生。当电流过大的时候,PWM 输出关闭,在电流恢复在正常区间后,PWM 输出自动打开。
注意:在选择比较器 COMP 1/2/3 作为电流保护的触发信号时,只检测一个电流值。在选择比较器 COMP 4/5 作为电流保护的触发信号,并且在 PWM_CSR 寄存器的 CP_MDSEL 设置打开轮询通道保护功能时,可以同时监测三个电流值,或者同时监测三个电流值的上限和下限。
使用COMP 3触发电流保护功能配置如下:
? 使能电流保护功能,设置PWM_CSR寄存器CPE = 1
? 配置电流保护触发方式,设置PWM_CSR寄存器CP_TRGSEL[2:0] = 010(比较器 3 触发电流保护功能)。
? 配置电流保护模式,设置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);
}
协议分析仪采集波形如下:
当出现电流过大的现象时,PWM输出无效电平,避免电机烧坏,等到电流恢复后PWM波形恢复正常。
电流补偿功能在电机应用中是不可或缺的,通常我们是直接操作TIM1控制PWM输出有效电平,检测到电流恢复时再去控制TIM1输出PWM波形。这样一来增加了算法的复杂性,二来实时性不能够得到保障。而MM32SPIN2x的PWM控制模块通过硬件控制可以实现自动控制电流补偿,避免MCU使用软件处理电流补偿,减少了代码空间、算法复杂度、运行时间,且实时性也能够得到保证,使得电机换相能够平滑稳定的进行。而电流保护功能则能很好的保护我们的电机,避免过流造成电机烧毁。
编辑:admin 最后修改时间:2018-12-27