找回密码
 立即注册
楼主: 王昱顺

【STC-FOC】Fast-SVPWM输出!STC32F12K54实现,32位8051,全开源软件/硬件

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2023-9-20 22:30:58 | 显示全部楼层
仿真测试I2C读取耗时493us(波动较小)

===我不懂这些,但 STC32F12K54的 I2C 是有DMA支持的

点评

没有使用I2C-DMA的原因是稍微高一点速度的时候,会遇到磁编码器I2C接口传输速率限制。 此时就算打开了DMA,获取的数据仍然是存在相当大的延时的。 准备后续做一下磁编码器的脉冲输入解算,到达一定速度阈值后切换到  详情 回复 发表于 2023-9-21 07:56
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2218

回帖

5450

积分

版主

积分
5450
发表于 2023-9-21 07:56:00 | 显示全部楼层
神*** 发表于 2023-9-20 22:30
仿真测试I2C读取耗时493us(波动较小)

===我不懂这些,但 STC32F12K54的 I2C 是有DMA支持的

没有使用I2C-DMA的原因是稍微高一点速度的时候,会遇到磁编码器I2C接口传输速率限制。
此时就算打开了DMA,获取的数据仍然是存在相当大的延时的。
准备后续做一下磁编码器的脉冲输入解算,到达一定速度阈值后切换到纯脉冲控制。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2023-9-21 09:19:06 | 显示全部楼层
遇到磁编码器I2C接口传输速率限制
===对方限制到多少 ?
===另外 I2C用开漏,外部上拉电阻用 2K,提升I2C总线抗干扰能力

截图202309210920521115.jpg
STC32F12K54-52MHz, 工作在 52MHz  时,I2C的最慢速度:
I2C-SPEED = 52000000/2/(63*2+4) = 200,000 = 200K

后续的新MCU 会再增加 I2C 时钟的分频

点评

之间看技术手册粗心大意,少算了一个0,以为是100K的通讯速率限制,闹了大笑话。 现在被点拨一下,细细看过一遍发现竟然是1Mhz。 ==确实是十分高的速度 ==现在已经更改I2C部分通信速率到1Mhz,妥妥的高速。等待继  详情 回复 发表于 2023-9-21 21:19
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2218

回帖

5450

积分

版主

积分
5450
发表于 2023-9-21 21:19:04 | 显示全部楼层
神*** 发表于 2023-9-21 09:19
遇到磁编码器I2C接口传输速率限制
===对方限制到多少 ?
===另外 I2C用开漏,外部上拉电阻用 2K,提升I2C ...

之间看技术手册粗心大意,少算了一个0,以为是100K的通讯速率限制,闹了大笑话
现在被点拨一下,细细看过一遍发现竟然是1Mhz
==确实是十分高的速度


==现在已经更改I2C部分通信速率到1Mhz,妥妥的高速。等待继续优化程序架构,仍然有运行速度提升空间。
附上目前程序运行的速度截图,已经达到了477us一次完成程序运行
微信截图_20230921201729.png 微信截图_20230921201823.png


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-05-01 04:31:49

24

主题

515

回帖

986

积分

荣誉版主

积分
986
发表于 2023-9-22 10:37:32 | 显示全部楼层
大部分应用中,是使用SPI接口的磁编码器芯片。通讯速度达5mhz以上。10us就可以完成数据读写。

点评

现在使用的是成品磁编码器模块,仅仅引出了IIC接口,等后面测试高速车模电机的时候,可以尝试用一下SPI-DMA读取磁编码器,应该可以做到极小延迟。  详情 回复 发表于 2023-9-22 11:08
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2218

回帖

5450

积分

版主

积分
5450
发表于 2023-9-22 11:08:19 | 显示全部楼层
社区*** 发表于 2023-9-22 10:37
大部分应用中,是使用SPI接口的磁编码器芯片。通讯速度达5mhz以上。10us就可以完成数据读写。 ...
现在使用的是成品磁编码器模块,仅仅引出了IIC接口,
等后面测试高速车模电机的时候,可以尝试用一下SPI-DMA读取磁编码器,
应该可以做到极小延迟。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2023-9-22 13:02:01 | 显示全部楼层
告诉 I2C 外设厂家,当前趋势不应该限制 I2C 速度 !
我们 STC MCU 如跑40MHz, I2C 可以 5M bps

截图202309221302354955.jpg

STC32F12K54 如跑 52 MHz, I2C 可以 52M/8 = 6.5M bps
我们 STC 串口都跑 10M/9M/8M/7.5M/6M bps 了
截图202309221306488947.jpg


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2218

回帖

5450

积分

版主

积分
5450
发表于 2023-9-22 13:42:40 | 显示全部楼层
SVPWM输出成功!
==替换掉之前的SPWM,可以增加10%~20%母线电压利用效率
以下是实测到的端电压波形,示波器保存CSV格式文件,
通过Excel做了一下滑动均值滤波,可以看到拥有明显的马鞍波。
马鞍波.png
SVPWM实现使用了Fast-SVPWM算法,通过插入零序分量的方式直接计算生成,省略分辨扇区的方式.
  1. #define _Conv 1.15470053838f
  2. //Fast_Svpwm实现
  3. Max = Ua > Ub ? (Ua > Uc ? Ua : Uc) : (Ub > Uc ? Ub : Uc);
  4. Min = Ua < Ub ? (Ua < Uc ? Ua : Uc) : (Ub < Uc ? Ub : Uc);
  5. Adder = -(Max + Min) / 2;
  6. Ua = (Ua + Adder) * _Conv, Ub = (Ub + Adder) * _Conv, Uc = (Uc + Adder) * _Conv;
  7. setPwm(Ua, Ub, Uc);
复制代码
[参考文献]
[1]吴恒亮,陈艺峰,姚明,等.一种快速实用的电压空间矢量脉宽调制算法[J].大功率变流技术, 2012(1):2.DOI:CNKI:SUN:BLJS.0.2012-01-005.

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2023-9-22 14:06:29 | 显示全部楼层
前进

截图202309221443255827.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2218

回帖

5450

积分

版主

积分
5450
发表于 2023-9-23 16:27:42 | 显示全部楼层
三环闭环总算完成了,到此FOC驱动程序也算小有雏形。
接下来就是更新DEMO板的电路部分了。
感谢大家之前提出宝贵意见,一定会在下一个硬件版本中进行改正的!


==现在打算修改的硬件部分,大家看看还有没有想要加上的,方便进行电机驱动的学习和快速验证
(目前板子上大部分都是1206/0805贴片,方便调试和更换,现在验证驱动部分没有问题后,会同时出一版集成度高一些的小板子,可用于作为驱控一体电机实现)
1.修改PWM驱动为PWMA部分,方便与ADC同步触发联动,减小电流数据波动。
2.增加磁编码器SPI+IIC两种选择,可以提供更高速度的编码器读取。
3.5V-MCU供电电源部分采用XL1509增加输入电压耐压范围
4.输入电源端并入大电容抵消电机高速运行的反电动势尖刺
5.增加一个电位器用于无极调整速度/位置/电流
回复 支持 1 反对 0

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 19:26 , Processed in 0.235441 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表