神农鼎 发表于 2023-9-20 22:30:58

仿真测试I2C读取耗时493us(波动较小)

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

王昱顺 发表于 2023-9-21 07:56:00

神农鼎 发表于 2023-9-20 22:30
仿真测试I2C读取耗时493us(波动较小)

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


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

神农鼎 发表于 2023-9-21 09:19:06

遇到磁编码器I2C接口传输速率限制
===对方限制到多少 ?
===另外 I2C用开漏,外部上拉电阻用 2K,提升I2C总线抗干扰能力

STC32F12K54-52MHz, 工作在 52MHz时,I2C的最慢速度:
I2C-SPEED = 52000000/2/(63*2+4) = 200,000 = 200K
后续的新MCU 会再增加 I2C 时钟的分频

王昱顺 发表于 2023-9-21 21:19:04

神农鼎 发表于 2023-9-21 09:19
遇到磁编码器I2C接口传输速率限制
===对方限制到多少 ?
===另外 I2C用开漏,外部上拉电阻用 2K,提升I2C ...

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


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



社区闲人 发表于 2023-9-22 10:37:32

大部分应用中,是使用SPI接口的磁编码器芯片。通讯速度达5mhz以上。10us就可以完成数据读写。

王昱顺 发表于 2023-9-22 11:08:19

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

神农鼎 发表于 2023-9-22 13:02:01

告诉 I2C 外设的厂家,当前趋势不应该限制 I2C 速度 !
我们 STC MCU 如跑40MHz, I2C 可以 5M bps



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



王昱顺 发表于 2023-9-22 13:42:40

SVPWM输出成功!
==替换掉之前的SPWM,可以增加10%~20%母线电压利用效率
以下是实测到的端电压波形,示波器保存CSV格式文件,
通过Excel做了一下滑动均值滤波,可以看到拥有明显的马鞍波。

SVPWM实现使用了Fast-SVPWM算法,通过插入零序分量的方式直接计算生成,省略分辨扇区的方式.
#define _Conv 1.15470053838f
//Fast_Svpwm实现
Max = Ua > Ub ? (Ua > Uc ? Ua : Uc) : (Ub > Uc ? Ub : Uc);
Min = Ua < Ub ? (Ua < Uc ? Ua : Uc) : (Ub < Uc ? Ub : Uc);
Adder = -(Max + Min) / 2;
Ua = (Ua + Adder) * _Conv, Ub = (Ub + Adder) * _Conv, Uc = (Uc + Adder) * _Conv;
setPwm(Ua, Ub, Uc);[参考文献]
吴恒亮,陈艺峰,姚明,等.一种快速实用的电压空间矢量脉宽调制算法.大功率变流技术, 2012(1):2.DOI:CNKI:SUN:BLJS.0.2012-01-005.

神农鼎 发表于 2023-9-22 14:06:29

{:4_196:}前进



王昱顺 发表于 2023-9-23 16:27:42

三环闭环总算完成了,到此FOC驱动程序也算小有雏形。
接下来就是更新DEMO板的电路部分了。
感谢大家之前提出宝贵意见,一定会在下一个硬件版本中进行改正的!


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