STM32CubeMX-电机控制2-电机相关配置部分

前言:

  1. 因为工作原因,所以内容偏向于BLDC控制方面;
  2. 刚使用STM32CubeMX,难免出现错误或者语言不专业的情况,希望大家能指正;
  3. 同样因为刚入门,自己琢磨走了弯路,写下来希望能给相同处境的人一些参考;
  4. 目前使用的STM32CubeMX版本为5.6.1,不同版本之间配置稍微有些区别;

1、本篇主要介绍带霍尔反馈的电机配置问题,STM32CubeMX其它外设基本配置可以参考STM32CubeMX-电机控制1-STM32CubeMX配置部分;
2、本篇使用了以下外设,主要是为了实现基于霍尔的六步换相控制(其余控制方法会在后续篇中写出来):

外设 Value 备注
定时器 TIM1 ①输出三相互补PWM,驱动电机;②产生中断,用于计算电流环、转速环输出
定时器 TIM3 采集霍尔传感器值,控制TIM1实现换相
通信 USART1 与电脑通信,输出速度、电流值,用于调试
采样 ADC1 电机相电流、母线电压采样
步骤一:定时器TIM1配置

1、先开启TIM1的时钟源,选择内部时钟Internal Clock。
2、选择输出三相PWM的IO口,我这里使用的是H_PWM、L_PWM模式,所以有:

名称 IO
U相 PA8->CH1 / PB13->CH1N
V相 PA9->CH2 / PB14->CH2N
W相 PA10->CH3 / PB15->CH3N

如果使用的是H_PWM、L_ON模式,可以参照下面设置:

名称 IO
U相 PA8->CH1 / PB13->GPIO_OUTPUT
V相 PA9->CH2 / PB14->GPIO_OUTPUT
W相 PA10->CH3 / PB15->GPIO_OUTPUT

在这里插入图片描述3、下面是对TIM1的具体参数进行配置,在前面已经把系统时钟设定成72M了(STM32CubeMX-电机控制1-STM32CubeMX配置部分),可以看到TIM1的时钟频率也是72M(TIM1挂在APB1上)。我选定的输出PWM频率是20KHz,所以我设定的是Prescaler=35,Counter Period=99。还要开启自动重载,保证TIM1不会输出一次就停止工作。
在这里插入图片描述
4、接下来对PWM输出进行配置,先决定死区时间,也就是Dead Time的值,具体计算方法可以参考stm32关于PWM死区(Dead Zone)。再配置PWM输出极性,我这设置Mode:PWM mode1和CH Polarity:High,最终结果就是占空比设定20,实际输出20高电平,80低电平。也可以设置成 PWM mode2和Low,结果是一样的。Pulse一栏设为0了,主要是保证上电瞬间不输出PWM,电机不误动作。
在这里插入图片描述
5、因为需要在输出一个完整的PWM之后进行电流环速度环计算,更新PWM占空比,所以需要开启TIM1的更新中断,也即update interrupt那里勾选上。
在这里插入图片描述

步骤二:定时器TIM3配置

到此TIM1部分配置完成,接下来配置采集霍尔传感器信号的TIM3了。实际上,PC6/7/8三个IO可以配置成TIM3或TIM8,两个定时器均有霍尔传感器的XOR功能。因为我只是把定时器的霍尔接口当作自带XOR功能的捕获,所以TIM3或TIM8都同样使用。如果需要配置成复杂一点的硬件触发TIM1、影子寄存器之类的,目前在能力范围外,就不误导大家了。
1、首先,配置PC6/7/8为TIM3的CH1/2/3;然后,开启TIM3的时钟源为内部时钟;再次,选择组合通道功能为XOR ON/ Hall Sensor Mode。
在这里插入图片描述2、接着还要配置一下TIM3的参数,①Prescaler部分TIM1部分说过了就不赘述了;②Counter Period部分与TIM1有些不同,使用霍尔模式时,程序里可以调用出不同扇区的停留时间,如果Counter Period值取小、停留时间长,那可能就自动更新了,停留时间也就不准确了,所以建议取最大值;③同样开启自动加载;④触发事件好像没办法选择,只能是OC2REF;⑤选择上升沿触发(实际应该是双沿触发,不知道为什么没法选择);⑥选择滤波系数,我控制板带硬件滤波,所以选的值很小。
在这里插入图片描述
3、最后开TIM3的中断,同样没法选择类型,只有全局中断global interrupt。
在这里插入图片描述

步骤三:通信USART1配置

通信部分较为简单,①首先把RX和TX的IO口设置为USART;②设置为异步通信,无硬件流控制;③波特率等参数设置;
在这里插入图片描述通信接收建议使用DMA,①首先选择接收DMA,再选择DMA流;②选择DMA模式为Circular
在这里插入图片描述

步骤四:采样ADC1配置

电流采样部分比较繁琐,写起来比较长,单独开一篇叙述。