王昱顺 发表于 2024-11-22 19:12:44

Ai8051U通过HSPWM-DMA方式实现三相互差120°SPWM波形

Ai8051U, 同时输出三相50Hz的SPWM,相位互差120°,可做逆变器
使用内部IRC时钟40MHz给CPU,PLL倍频120MHz给高速PWM和TFPU使用
PWM输出的基频为100Khz,经过RC滤波后输出为50Hz正弦波,使能HSPWM功能
采用400点分辨率正弦数据表,纵向电压可调分辨率最小单位为(母线电压/1200)
正弦波电压变化幅度每路独立可调。
调节使用的是计算标准正弦数据表的数据填入PWM-DMA的数据缓冲区,
每隔1ms进行一次计算,使用环形跟踪计算方式。
分别调整以下变量的值即可,也可以用写其他的程序动态改变这个值,
完成PID电压闭环

float Set_Out_Gain1 = 0.5;                         // 范围0~1,1是最大值
float Set_Out_Gain2 = 0.5;                         // 范围0~1,1是最大值
float Set_Out_Gain3 = 0.5;                         // 范围0~1,1是最大值



这里只测量了两相,正弦波变化幅度为0.5(范围0~1)
同一时间内,波形存在相位差


调整两相为:

float Set_Out_Gain1 = 0.2;                         // 范围0~1,1是最大值
float Set_Out_Gain2 = 0.7;                         // 范围0~1,1是最大值
使用示波器测量PWM1P和PWM2P,并且打开余晖模式,可以看到波动幅度均为设定值。


程序在这里下载,输出口为P20,P21,P22,P23,P24,P25,互补输出,带死区


王昱顺 发表于 2024-11-22 19:57:40

补充测试:


将试验箱上的J1B跳线帽接上,
允许P23(PWM2N)输出到RC滤波电路
同时将拨动开关拨到正弦波上,测量J16引脚上的电压,
即可得到通过I/O输出的SPWM滤波产生的正弦波
可以看到是一个非常标准的50HZ正弦波



蓝鹰 发表于 2024-12-21 05:47:11

<p><img alt="baoquan" class="emoji" src="https://www.stcaimcu.com/static/image/smiley/default/baoquan.gif" title="baoquan" /></p>
<p>厉害!</p>

香河英茂工作室 发表于 2025-1-3 14:04:51

感谢分享,开发板是哪个型号呀?

王昱顺 发表于 2025-1-3 14:39:55

香河英茂工作室 发表于 2025-1-3 14:04
感谢分享,开发板是哪个型号呀?

是STC官方的AI8051U试验箱

香河英茂工作室 发表于 2025-1-4 17:30:39

王昱顺 发表于 2025-1-3 14:39
是STC官方的AI8051U试验箱

V1.2可用吗?

王昱顺 发表于 2025-1-4 19:26:54

香河英茂工作室 发表于 2025-1-4 17:30
V1.2可用吗?

可用,我正是基于此试验箱做的

jwd 发表于 2025-1-13 15:20:39

{:4_250:}{:4_250:}{:4_250:}

雾山大叔 发表于 2025-2-22 14:30:44

厉害呀

hhhhhht 发表于 2025-4-2 10:16:05

看了您例程,采用HSPWM-DMA方式,DMA相关寄存器不用间接寻址方式吗?
页: [1] 2
查看完整版本: Ai8051U通过HSPWM-DMA方式实现三相互差120°SPWM波形