• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

今天构思了个程序,stc51单片机除了产生SPWM波形外,再替代掉sg3525

生成单极性SPWM只用了一个定时器,还剩一个定时器,打算用剩下的这个定时器生成2路互补带死区的PWM波,用于替代sg3525,基本功能和SG3525类似,占空比连续可调。

打算用定时器、中断和指针来实现,用中断来保持实时性,用指针来保存工作状态,

用尽量简洁的语句实现,执行一个中断子程序看看能不能在100纳秒内完成。

尽量避免打扰SPWM波形的生成。

如仿真成功上个图。

全部回复(45)
正序查看
倒序查看
hnzkwz
LV.7
2
2013-02-19 09:14
这个有难度
0
回复
2013-02-19 10:39
@hnzkwz
这个有难度
呵呵,看stc的潜力有多大。
0
回复
Kira
LV.6
4
2013-02-19 12:02
@westkinger
呵呵,看stc的潜力有多大。
0
回复
2013-02-19 13:19
@Kira
[图片]
12mhz 51单片机的一个机器周期是1微秒,35mhz 51单片机一个机器周期是0.3微秒,stc比51平均快6倍,平均指令周期是50纳秒,估计有点悬。
0
回复
2013-02-20 09:31
@westkinger
12mhz51单片机的一个机器周期是1微秒,35mhz51单片机一个机器周期是0.3微秒,stc比51平均快6倍,平均指令周期是50纳秒,估计有点悬。

从仿真的结果来看,这事靠谱,

最早编的一个实验程序,因为spwm脉宽的时间太短只有30个机器周期,所以和推挽的用的pwm脉宽产生冲突,导致两边输出的波形都不稳定,

经过多次实验把spwm的脉宽加大到60个机器周期,推挽用的两路pwm信号改成120机器周期,死区用两个机器周期,用24mhz 51仿真,结果两边的波形都很稳定,当然不能说没有一点干扰,不过能接受。

耗时最短的pwm推挽必须放在最高中断优先级别。

下一步给两路推挽加上反馈,带少许斜坡控制。

一共有两路spwm,两路工频,两路互补推挽,一个51就能跑了。
 

如用增强型51stc指令执行效率平均快6倍估计干扰更小,因为花在加减乘除上的时间更少。

更新:下图是仿真,软件自带的51性能有点弱,将就看,

两路推挽波形通过调节占空比来实现稳压。

图中的SPWM波是随手填的,不是按照sin生成的,直接填1.2.3.4.5.....

 

0
回复
tinge
LV.4
7
2013-02-21 02:03
@westkinger
从仿真的结果来看,这事靠谱,最早编的一个实验程序,因为spwm脉宽的时间太短只有30个机器周期,所以和推挽的用的pwm脉宽产生冲突,导致两边输出的波形都不稳定,经过多次实验把spwm的脉宽加大到60个机器周期,推挽用的两路pwm信号改成120机器周期,死区用两个机器周期,用24mhz51仿真,结果两边的波形都很稳定,当然不能说没有一点干扰,不过能接受。耗时最短的pwm推挽必须放在最高中断优先级别。下一步给两路推挽加上反馈,带少许斜坡控制。一共有两路spwm,两路工频,两路互补推挽,一个51就能跑了。 如用增强型51stc指令执行效率平均快6倍估计干扰更小,因为花在加减乘除上的时间更少。更新:下图是仿真,软件自带的51性能有点弱,将就看,两路推挽波形通过调节占空比来实现稳压。图中的SPWM波是随手填的,不是按照sin生成的,直接填1.2.3.4.5.....[图片] 
建议你还是用 STM32F103 吧,也是几块钱的东西,性能比 STC 强 N 十倍。产生三相 SPWM 25KHz 的脉冲,占空比能轻松精确到 0.04% 以上。用一片 STM32F103 可完成整台纯软件实施的全闭环逆变器。包括软件实现 UCC3895 前级闭环+后级三相调制+全方位的保护,然后还有空闲的 CPU 时间来实现各种显示和通信等等。
0
回复
2013-02-21 10:37
@tinge
建议你还是用STM32F103 吧,也是几块钱的东西,性能比STC 强N 十倍。产生三相SPWM25KHz 的脉冲,占空比能轻松精确到0.04% 以上。用一片STM32F103 可完成整台纯软件实施的全闭环逆变器。包括软件实现UCC3895 前级闭环+后级三相调制+全方位的保护,然后还有空闲的CPU 时间来实现各种显示和通信等等。
已经在买arm的书了,高低搭配,stc也不会放弃,使用51就是因为它简单。
0
回复
tinge
LV.4
9
2013-02-21 14:50
@westkinger
已经在买arm的书了,高低搭配,stc也不会放弃,使用51就是因为它简单。

ARM 有很多体系,低成本的芯片中早期应用最多的是 ARM7TDMI,现在最好是 CM3,所以买书也要买对了。

CM3 的体系比 ARM7TDMI 科学太多了,性价比非常高。我用了十年 51 芯片,早两年开始全面采用 CM3,基本上不用 51 了。

以前用 51,以 C 编程为主,代码重用的机会很低,每次重用以前的代码都需要修改才能用。现在用 CM3,全面使用操作系统,加上 C++ 对象化编程,一次编程调试后,以后基本上拿来即用。

0
回复
wangshujun
LV.8
10
2013-02-21 16:54
@westkinger
已经在买arm的书了,高低搭配,stc也不会放弃,使用51就是因为它简单。

做这种应用放弃古董的51吧

新的arm不仅仅是处理速度和存储容量提升

外设提升才是最大幅度的,丰富的外设使得变成便利程度大幅度提高,软件可靠性也会好很多。

再说了相比于逆变器的总成本,mcu的份额是在是小的可怜,多花一点,换来更快的相应和更好的波形会很划算。

0
回复
westkinger
LV.4
11
2013-02-22 14:15
@tinge
建议你还是用STM32F103 吧,也是几块钱的东西,性能比STC 强N 十倍。产生三相SPWM25KHz 的脉冲,占空比能轻松精确到0.04% 以上。用一片STM32F103 可完成整台纯软件实施的全闭环逆变器。包括软件实现UCC3895 前级闭环+后级三相调制+全方位的保护,然后还有空闲的CPU 时间来实现各种显示和通信等等。

今天看了stc的文档仔细算了一下,35mhz的stc比老51 的12mhz快35倍,12mhz的51一个机器周期1微秒,那35mhz的sct一个机器周期就是相当于28纳秒。好像arm的机器周期也是20多纳秒,只不过32位的mcu指令执行效率要高些,一条指令是不是顶8位的几条指令。

假如stc出一款能跑100m晶振的mcu那不是赶超16位的mcu了。要定时器分频多搞几种,定时器多几个,呵呵无敌了。

改天砸个48mhz的晶振上去看看能不能跑。

0
回复
tinge
LV.4
12
2013-02-22 16:37
@westkinger
今天看了stc的文档仔细算了一下,35mhz的stc比老51的12mhz快35倍,12mhz的51一个机器周期1微秒,那35mhz的sct一个机器周期就是相当于28纳秒。好像arm的机器周期也是20多纳秒,只不过32位的mcu指令执行效率要高些,一条指令是不是顶8位的几条指令。假如stc出一款能跑100m晶振的mcu那不是赶超16位的mcu了。要定时器分频多搞几种,定时器多几个,呵呵无敌了。改天砸个48mhz的晶振上去看看能不能跑。

不是这样算的,ARM CM3 的外设十分丰富,基本上大部分工作都是硬件实现,另外指令速度很高,例如乘法只需要一个周期。

我用 DMA 处理 SPWM 调制,电压 399 级分辨率、占空比 3600 级分辨率,平均每输出三个脉冲需要 CPU 处理一次,每处理一次大约二十个指令周期。即每秒需要占用 399 / 3 * 20 * 50 = 133000 个指令周期,而 72MHz 的 CM3 第秒可执行 75000000 个指令。可以说 CPU 完全是空转状态。

0
回复
westkinger
LV.4
13
2013-02-22 18:34
@tinge
不是这样算的,ARMCM3的外设十分丰富,基本上大部分工作都是硬件实现,另外指令速度很高,例如乘法只需要一个周期。我用DMA处理SPWM调制,电压399级分辨率、占空比3600级分辨率,平均每输出三个脉冲需要CPU处理一次,每处理一次大约二十个指令周期。即每秒需要占用399/3*20*50=133000个指令周期,而72MHz的CM3第秒可执行75000000个指令。可以说CPU完全是空转状态。

现在正在看mdk4的书和cm0的书还有一本arm电机控制的书。
dma是不是电脑里面的直接内存访问类似的含义?

cm0和cm3有多大差别?尽量从低配置做起。

0
回复
2013-02-23 22:35
@westkinger
现在正在看mdk4的书和cm0的书还有一本arm电机控制的书。dma是不是电脑里面的直接内存访问类似的含义?cm0和cm3有多大差别?尽量从低配置做起。
0
回复
wangshujun
LV.8
15
2013-02-24 10:25
@westkinger
现在正在看mdk4的书和cm0的书还有一本arm电机控制的书。dma是不是电脑里面的直接内存访问类似的含义?cm0和cm3有多大差别?尽量从低配置做起。

对于现在单片机的主流工艺来说,内核的价钱几乎都是可以忽略的,从51到cm3差距不到1块钱的。

集成的外设和存储器才是更具有价值的,以stm32f103rct6为例

不算内核仅仅算集成的资源:

3个最大20路输入的12位ad,速度达到1msps

2个12为的da,速度1msps

10个以上的定时器,其中1和8可以出3对互补的波形,带刹车信号,2345有4路输入或输出,简单说可以输出超过20路不同频率任意占空比的pwm。或者用来捕获pwm也可以

串口应该是5个

can接口1个

硬件spi2个,速度可以达到36兆的

flash有256k,ram有20k

还有dma支持最大14路,可以实现内存到外设或者反过来的自动连续操作

这一款芯片现在零售不过是16块左右,想想单独购买能买到这些外设的1/3不?


0
回复
westkinger
LV.4
16
2013-02-24 22:54
@westkinger
今天看了stc的文档仔细算了一下,35mhz的stc比老51的12mhz快35倍,12mhz的51一个机器周期1微秒,那35mhz的sct一个机器周期就是相当于28纳秒。好像arm的机器周期也是20多纳秒,只不过32位的mcu指令执行效率要高些,一条指令是不是顶8位的几条指令。假如stc出一款能跑100m晶振的mcu那不是赶超16位的mcu了。要定时器分频多搞几种,定时器多几个,呵呵无敌了。改天砸个48mhz的晶振上去看看能不能跑。

stc 48Mhz已经跑起来了,正在测试稳定性,在ARM熟悉之前STC还要大力钻研。

SPWM和前级互补脉冲已经出来了,正在调试前级的反馈。


更新:前级脉冲40K占空比可调,脉宽调到最小后可关闭输出,但是两路最大占空比还是不够大只有80%多,真是对主频的要求越来越强烈了。

后级H桥也可调压。

48M晶振的STC对线路的要求相对严格,电路用洞洞板搭的,没什么特别,但是0插拔力插座有时候没插稳会出现不稳定现象,要重新插拔一下。

48M晶振的好处就是能把载波推高到20K,不过我觉得16K就差不多了。

0
回复
loudianxin
LV.7
17
2013-02-25 19:57
@westkinger
stc48Mhz已经跑起来了,正在测试稳定性,在ARM熟悉之前STC还要大力钻研。SPWM和前级互补脉冲已经出来了,正在调试前级的反馈。更新:前级脉冲40K占空比可调,脉宽调到最小后可关闭输出,但是两路最大占空比还是不够大只有80%多,真是对主频的要求越来越强烈了。后级H桥也可调压。48M晶振的STC对线路的要求相对严格,电路用洞洞板搭的,没什么特别,但是0插拔力插座有时候没插稳会出现不稳定现象,要重新插拔一下。48M晶振的好处就是能把载波推高到20K,不过我觉得16K就差不多了。

关注一下!!

0
回复
ker304
LV.4
18
2013-05-15 18:07
@wangshujun
对于现在单片机的主流工艺来说,内核的价钱几乎都是可以忽略的,从51到cm3差距不到1块钱的。集成的外设和存储器才是更具有价值的,以stm32f103rct6为例不算内核仅仅算集成的资源:3个最大20路输入的12位ad,速度达到1msps2个12为的da,速度1msps10个以上的定时器,其中1和8可以出3对互补的波形,带刹车信号,2345有4路输入或输出,简单说可以输出超过20路不同频率任意占空比的pwm。或者用来捕获pwm也可以串口应该是5个can接口1个硬件spi2个,速度可以达到36兆的flash有256k,ram有20k还有dma支持最大14路,可以实现内存到外设或者反过来的自动连续操作这一款芯片现在零售不过是16块左右,想想单独购买能买到这些外设的1/3不?

弱弱的问一句,本人有 51+C 基础,以前一直使用C8051的片子。貌似外设也相当的多,据自己称呼为独立的片上系统。

不知51与CM3有何本质上的区别(除了位数X4以外),学习起来是否容易?应该从何处下手?没有C++基础使用ARM 操作系统是否会有困难?还请不吝赐教!

0
回复
westkinger
LV.4
19
2013-05-17 15:31
@ker304
弱弱的问一句,本人有51+C基础,以前一直使用C8051的片子。貌似外设也相当的多,据自己称呼为独立的片上系统。不知51与CM3有何本质上的区别(除了位数X4以外),学习起来是否容易?应该从何处下手?没有C++基础使用ARM操作系统是否会有困难?还请不吝赐教!

51的优势就是编程简单,出产品快,arm要出产品要比51难10倍。
这点是无可否认的。

0
回复
wangshujun
LV.8
20
2013-05-17 16:23
@westkinger
51的优势就是编程简单,出产品快,arm要出产品要比51难10倍。这点是无可否认的。

入门难一些,不代表完成起来就更难

用arm,原本用51需要各种技巧的东西,arm轻松就解决的,对于逆变的死去产生,绝大多数51 都是需要技巧的,但是大多数arm都直接支持了。

0
回复
lgxixi
LV.5
21
2013-08-21 10:42
LZ最近搞得怎么样了,关注+支持!
0
回复
westkinger
LV.4
22
2013-10-02 14:45
@lgxixi
LZ最近搞得怎么样了,关注+支持!
经过大半年的学习,stm32 M3的水平基本上和使用stc 51的水平差不多了,现在已经把大部分51的程序移植到ARM里面了,ARM的优点就是算乘除法比STC快很多,所以我用软件做出来的程序波形更好了。ARM的入门很难,但是过了某些拐点进步就很快了。
0
回复
mways
LV.1
23
2013-11-19 14:43
@westkinger
经过大半年的学习,stm32M3的水平基本上和使用stc51的水平差不多了,现在已经把大部分51的程序移植到ARM里面了,ARM的优点就是算乘除法比STC快很多,所以我用软件做出来的程序波形更好了。ARM的入门很难,但是过了某些拐点进步就很快了。
请问:用普通的ARM(例如 NXP/LPC2103)就可以生成SVPWM吗?需要FPGA配合吗?实现起来跟TI的DSP有什么区别呢?
0
回复
tnyq1314
LV.1
24
2016-02-04 11:54
真不错
0
回复
若不A烦
LV.1
25
2016-02-04 20:41

有用么?

0
回复
2016-02-04 22:23
123456789
0
回复
2016-02-05 07:49
支持楼主
0
回复
2016-02-05 14:32
楼主人才也
0
回复
p6564171
LV.3
29
2016-02-05 16:20
回复?
0
回复
2016-02-06 16:46
看看
0
回复
45280
LV.4
31
2016-02-06 17:48
本身就有PWM模块和PCA模块
0
回复