前言
电机控制单电阻采样机制收集PWM 波形内的两相电流ADC 数据。然而,在某些扇区边界条件下,只能获得一个电流ADC数据,并且需要对PWM波形进行变形来构建电流采样区域。
背景介绍
根据电机控制拓扑,单电阻采样可在一个PWM 控制周期内获得两相电流数据:
在扇区边缘无法获得两相电流信号。
波形生成
ST的专利方法是在波形的中间部分产生变形波形,在变形波形上可以获得两相电流ADC数据;
当然,还有目前流行的波形平移方法也能达到同样的效果。波形如下:
STM32系列单片机Timer有足够的功能来产生上述两种波形。其机制如下:
PWM波中间变形
1、设置CCR4的DMA通道,此时将Timer1的预载设置为禁用状态;
TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Disable);
2、CCR4比较值部分产生DMA事件;
DMA_InitStructure.DMA_PeripheralBaseAddr=(uint32_t)((TIM1-CCR1));
DMA_InitStructure.DMA_MemoryBaseAddr=(uint32_t)(uint32_t)(hDmaBuff2);
DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralDST;
DMA_InitStructure.DMA_BufferSize=2u;
……
TIM_DMACmd(TIM1,TIM_DMA_CC4,启用);
3、直接修改CCR1数据为1点周期数据+1;
4、将CCR1数据修改为CCR1’2点数据;
5.按照上图设置时间计算。中间凹陷时间是两侧补充波形时间之和。
波形偏移变形
1.设置Timer1的更新事件的DMA通道
DMA_InitStructure.DMA_PeripheralBaseAddr=(uint32_t)((TIM1-CCR1));
DMA_InitStructure.DMA_MemoryBaseAddr=(uint32_t)(uint32_t)(hDmaBuff2);
DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralDST;
DMA_InitStructure.DMA_BufferSize=2u;
……
TIM_DMACmd(TIM1,TIM_DMA_Update,启用);
2、将CCR1数据更新为1点的CCR1数据;
3、2点将CCR1数据更新为CCR1’数据;
4、保证前后换档时间相同。