STM32CubeMx 配置三相互补PWM + 死区时间计算
在使用STM32作为控制器去开发电机FOC的时候,往往需要配置三相互补PWM的死区时间,如何快速确认死区时间的范围和配置呢?
(1)死区的概念:
在STM32中死区时间是由 CKD[1:0] 和 DTG[7:0] 这两个寄存器共同决定,CKD其实就是由于给时钟进行二次分频的使用的。
而DTG[7:0]是用于配置死区时间的计算值。
(2)死区时间的计算:
第一步:先计算Tdts = 1/Ft
而这个Ft其实就是分频后的时钟频率。先明确你的定时器的时钟时钟输入大小,如下图所示,我的TIM1的时钟输入是170MHz,而Internal Clock Division CKD = No Division表示不分频,那么 Tdts = 1/170000000 = 5.88ns
第二步:死区范围判断
明确自己的需要配置的死区时间是否在寄存器配置的范围内,如果达不到,需要回到上一步对CKD[1:0]进行分频,下面是DTG[7:0]寄存器表示的死区范围。
用你需要配置的死区时间去除以Tdts的值,比如我需要的死区大小是1us,Tdts = 1000/5.88 = 170左右,所以我的计算值是170左右。那么就是很快速明确了使用DTG[7:5] = 10x这个选项了。
第三步:计算DT值(DT = 计算值/倍频值 - 范围值)
这个计算值就是第而步计算出来的值,计算值 = 170。我需要的倍频值是2,范围值是64。所以我需要的DT = 170 / 2 - 64 = 21。
第四步:利用计算器去计算Dead Time时间
下面使用了逻辑分析仪去抓了一下死区时间,符合配置的大小。
(3)三相互补PWM + ADC中断配置:
下面开始解析一下一些与定时器配置相关的概念,个人认为还是很重要的,只有知道这些概念才能把需要的定时器模式配置好。
3.1中心对齐模式:
Center Aligned mode1对应着下溢出中断。
Center Aligned mode2对应上溢出中断。
Center Aligned mode3对应着上下溢出中断。
3.2Repetition Counter(RCR):
更新事件延后1周期。
建议:在实际配置CubeMX的过程中要避免使用定时器的更新中断,我个人的建议是使用定时器的第四个通道是触发ADC的采样。通过调整通道4的值去调整ADC采样是在上溢出采样还是下溢出采样。
3 .3 PWM Config配置:
这个互补PWM的输出是由PWM mode和CH/CHN Polarity共同决定的。
下面的波形中黄色的为CH(高侧MOS)、橙色为CHN(低MOS输出)。
、
建议:在实际开发过程中,在互补PWM的输出应该配置为PWM mode 1,然后再根据自己实际的逆变器电路去调整CH Polarity、CHN Polarity。
一般情况下我们的使能的逆变器都是上下都是NMOS,即高电平导通,配置PWM时候选择PWM mode 1、CH Polarity = High CHN Polarity = High即可。
其实到这里我要表达的意思差不多表达完成的,有些东西不太好描述,不知道大家能不能理解。
(4)STM32CubeMX的配置:
下面是定时器的配置
下面是ADC的配置
HAL_ADCEx_InjectedStart_IT(&hadc1); __HAL_ADC_ENABLE_IT(&hadc1, ADC_IT_JEOC); HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4); HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2); HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_3); HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1); HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_2); HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_3); __HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_1,0.8*5312); __HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,0.8*5312); __HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_3,0.8*5312);正常情况下,只要你的逆变器是高电压导通的都是这个配置,唯一的区别就是你需要根据的实际情况去调整一下FOC的执行频率和SVPWM控制时的ADC触发时刻。
https://zhuanlan.zhihu.com/p/572855026https://www.bilibili.com/read/cv25671144/?opus_fallback=1
