本章节将与大家一起配置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使用软件处理电流补偿,减少了代码空间、算法复杂度、运行时间,且实时性也能够得到保证,使得电机换相能够平滑稳定的进行。而电流保护功能则能很好的保护我们的电机,避免过流造成电机烧毁。
灵动微电子即将参加于2018年12月20-22日在深圳会展中心召开的“2018深圳国际电子展暨深圳国际嵌入式系统展”,届时灵动会给大家带来很多意想不到的惊喜,展位号:1C16,敬请期待!
关于灵动微电子
灵动微电子股份有限公司(股票代码:833448,股票简称:灵动微电)是国内专注于MCU产品与MCU应用方案的领先供应商,是中国工业及信息化部和上海市信息化办公室认定的集成电路设计企业,同时也是上海市认定的高新技术企业。自2011年3月成立至今,灵动微电子已经成功完成数百余MCU产品的设计及推广,灵动微电子目前已批量供货的基于ARMCortex-M0及Cortex-M3 内核的MCU产品包括:针对通用高性能市场的MM32F系列,针对超低功耗及安全应用的MM32L系列,具有多种无线连接功能的MM32W系列,电机驱动及控制专用的MM32SPIN系列,以及针对超小尺寸及超高集成度的MM32P系列等,以满足客户及市场多领域、多层次的丰富应用场景需求。
作者:wldiwadw
来源:CSDN
原文:https://blog.csdn.net/wldiwadw/article/details/86707148
版权声明:本文为博主原创文章,转载请附上博文链接!