stm32最小系统_完成一个最小FOC矢量控制系统所需的基本模块和功能配置

stm32最小系统_完成一个最小FOC矢量控制系统所需的基本模块和功能配置_第1张图片
当我们读懂 FOC 矢量控制的基本原理之后,便迫不及待的想动手尝试,去实现一个矢量控制系统,让电机先转起来,有一个直观的感受。

因此,我们需要设计实现一个矢量控制的最小系统,具备矢量控制的基本功能,满足电机矢量运行的基本条件。

首先,看一下矢量控制的基本架构:

stm32最小系统_完成一个最小FOC矢量控制系统所需的基本模块和功能配置_第2张图片
矢量控制架构

如上图所描述,矢量控制系统包括实时电流的采集、clarke 变换、park 变换、SVPWM 、实时角度的反馈和计算以及电流环和速度环等。满足最小条件的矢量控制运行,可以不加速度环,只实现电流环,当电流环调试成功之后,再加速度环,以及后期的位置环。

因此一个最小的 FOC 矢量控制系统包含以下必要的几部分功能模块:

  • ADC 电流采集
  • 坐标变换与 SVPWM
  • 位置估算,霍尔、编码器或者状态观测器
  • 电流环PI控制

ADC 模块用于电流的采样,因为要根据合成矢量所在扇区,灵活的配置采样通道与采样点,所以 ADC 通常配置为注入通道模式,它可以打断规则通道的采样,优先采集注入通道。

以常用芯片意法半导体的 STM32 为例,ADC 的触发模式常常设置为 PWM 定时器的 CH4 触发,再根据桥臂的打开状态,配合电流的上升和稳定时间,准确的计算采样点的时刻,进行有效的采样。

坐标变换可以采用全浮点实现,也可以采用标幺化处理,以 Q15 格式进行运算,三角函数可以采用查表实现,减少运算复杂度,节省运算时间。

SVPWM 的实现一般涉及到硬件 PWM 模块的配置,矢量合成扇区的判断以及作用时间的计算等,常采用 STM32 的两个高级定时器 TIM1 和 TIM8 实现。高级定时器相对于通用定时器添加了可编程死区、重复计数器以及刹车等功能。

因为要产生互补对称的方波, PWM 定时器一般设置为中央对齐模式,且需要加入一定时间的死区,防止同一桥臂上的上下两个 MOS 管同时导通,造成系统短路。

位置估算可以采用有感实现,常见的霍尔传感器与光电编码器,当然也可以不采用传感器,使用状态观测器估计系统的位置以及速度计算等。本着由简到难的原则,建议先从有感入手,先使用带霍尔或者编码器的无刷电机,实现位置的反馈和计算。

霍尔接口可以使用 STM32 的 TIM2-TIM5 通用定时器实现,三路霍尔接口接入定时器的三个通道,并打开定时器的异或功能,选择双边沿触发模式,这样,可以细分到 60° 扇区,只要有霍尔变化,就会触发定时器。

之后根据霍尔的状态去判断旋转的方向,计算霍尔转过 60° 扇区的时间得出角速度,并在 FOC 核心算法中执行细分角度的插值计算,得到实时估算的转子位置。

STM32 也支持常见的增量式正交编码器,采用编码器代替霍尔的区间位置估算,计算更准确。速度的计算可以采用常见的 M/T 法实现。

电机启动时,可以通过霍尔传感器获得转子的位置信息,虽然这个误差为±30°,直接给电流启动是没有问题的。也有的方案中,先给方波,再切到FOC。如果是编码器,可以给一个角度为 -90° 的电压矢量进行预定位即 d 轴为 0,q轴给一个值;或者给一个角度为0的电压矢量,q轴给0,d轴给一个值,由于磁场力的作用,转子最终会转到与给定矢量相同的位置。

实现电流环的PI控制器,给定 q轴电流,经过PI控制器调节,输出调节量,经过坐标变换后,送到 SVPWM 模块,驱动电机的三相。

最后实现 FOC 矢量控制两个大的任务模块,一个是 FOC 核心算法,这个核心算法需要在每个 FOC 执行周期中执行一次,一般放到 ADC 中断中执行;另外一个任务模块负责状态机的轮询和系统保护,这个模块通常放在系统滴答定时器中断中。

完成以上模块基本上可以实现一个 FOC 的最小控制系统,当然为了调试方便,可以配置 DAC 功能、USART 功能、CAN 功能等等。

你可能感兴趣的:(stm32最小系统)