打印
[其他ST产品]

最小FOC矢量控制系统所需的基本模块和功能配置

[复制链接]
747|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stm32最小系统_完成一个最小FOC矢量控制系统所需的基本模块和功能配置
当我们读懂 FOC 矢量控制的基本原理之后,便迫不及待的想动手尝试,去实现一个矢量控制系统,让电机先转起来,有一个直观的感受。


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

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



使用特权

评论回复
沙发
花间一壶酒sd|  楼主 | 2022-6-30 13:55 | 只看该作者
矢量控制架构
如上图所描述,矢量控制系统包括实时电流的采集、clarke 变换、park 变换、SVPWM 、实时角度的反馈和计算以及电流环和速度环等。满足最小条件的矢量控制运行,可以不加速度环,只实现电流环,当电流环调试成功之后,再加速度环,以及后期的位置环。

使用特权

评论回复
板凳
花间一壶酒sd|  楼主 | 2022-6-30 13:56 | 只看该作者
因此一个最小的 FOC 矢量控制系统包含以下必要的几部分功能模块:

ADC 电流采集
坐标变换与 SVPWM
位置估算,霍尔、编码器或者状态观测器
电流环PI控制
ADC 模块用于电流的采样,因为要根据合成矢量所在扇区,灵活的配置采样通道与采样点,所以 ADC 通常配置为注入通道模式,它可以打断规则通道的采样,优先采集注入通道。

使用特权

评论回复
地板
花间一壶酒sd|  楼主 | 2022-6-30 13:58 | 只看该作者
以常用芯片意法半导体的 STM32 为例,ADC 的触发模式常常设置为 PWM 定时器的 CH4 触发,再根据桥臂的打开状态,配合电流的上升和稳定时间,准确的计算采样点的时刻,进行有效的采样。

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

使用特权

评论回复
5
花间一壶酒sd|  楼主 | 2022-6-30 13:59 | 只看该作者
SVPWM 的实现一般涉及到硬件 PWM 模块的配置,矢量合成扇区的判断以及作用时间的计算等,常采用 STM32 的两个高级定时器 TIM1 和 TIM8 实现。高级定时器相对于通用定时器添加了可编程死区、重复计数器以及刹车等功能。

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

使用特权

评论回复
6
花间一壶酒sd|  楼主 | 2022-6-30 14:00 | 只看该作者
位置估算可以采用有感实现,常见的霍尔传感器与光电编码器,当然也可以不采用传感器,使用状态观测器估计系统的位置以及速度计算等。本着由简到难的原则,建议先从有感入手,先使用带霍尔或者编码器的无刷电机,实现位置的反馈和计算。

使用特权

评论回复
7
花间一壶酒sd|  楼主 | 2022-6-30 14:01 | 只看该作者
霍尔接口可以使用 STM32 的 TIM2-TIM5 通用定时器实现,三路霍尔接口接入定时器的三个通道,并打开定时器的异或功能,选择双边沿触发模式,这样,可以细分到 60° 扇区,只要有霍尔变化,就会触发定时器。

使用特权

评论回复
8
花间一壶酒sd|  楼主 | 2022-6-30 14:05 | 只看该作者
之后根据霍尔的状态去判断旋转的方向,计算霍尔转过 60° 扇区的时间得出角速度,并在 FOC 核心算法中执行细分角度的插值计算,得到实时估算的转子位置。

使用特权

评论回复
9
花间一壶酒sd|  楼主 | 2022-6-30 14:06 | 只看该作者
STM32 也支持常见的增量式正交编码器,采用编码器代替霍尔的区间位置估算,计算更准确。速度的计算可以采用常见的 M/T 法实现。

使用特权

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

使用特权

评论回复
11
花间一壶酒sd|  楼主 | 2022-6-30 14:07 | 只看该作者
实现电流环的PI控制器,给定 q轴电流,经过PI控制器调节,输出调节量,经过坐标变换后,送到 SVPWM 模块,驱动电机的三相。

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

使用特权

评论回复
12
花间一壶酒sd|  楼主 | 2022-6-30 14:08 | 只看该作者
完成以上模块基本上可以实现一个 FOC 的最小控制系统,当然为了调试方便,可以配置 DAC 功能、USART 功能、CAN 功能等等。

使用特权

评论回复
13
Uriah| | 2022-10-5 12:22 | 只看该作者

因为小灯中不会有电流通过

使用特权

评论回复
14
Bblythe| | 2022-10-5 15:21 | 只看该作者

跟那个施密特触发器的配置有关

使用特权

评论回复
15
Pulitzer| | 2022-10-5 18:20 | 只看该作者

该函数执行完后继续后续

使用特权

评论回复
16
公羊子丹| | 2023-4-1 07:17 | 只看该作者

微探针技术都属于侵入型攻击

使用特权

评论回复
17
Wordsworth| | 2023-4-1 08:20 | 只看该作者

可以在印制线边上再布一根工作地线

使用特权

评论回复
18
Clyde011| | 2023-4-1 09:23 | 只看该作者

断优先级有冲突导致UART-RX的正常接收

使用特权

评论回复
19
万图| | 2023-4-1 11:19 | 只看该作者

根据实际需求选择用哪种方式

使用特权

评论回复
20
Uriah| | 2023-4-1 12:22 | 只看该作者

现实中make_youtiao()这个函数需要处理的数据非常庞大

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

84

主题

1129

帖子

2

粉丝