文号
t46345
阅读
27168
回复
31
收藏
26
51单片机SPWM程序发布(C语言)
2012/06/13
IP:河南
本人之前一直在研究纯硬件逆变器,但是这东西越到后来越复杂,而且功能也不丰富,于是我产生了用单片机实现SPWM的方法

单片机我手上只有STC12C5410AD带PWM模块,于是就用他了.在此感谢科学人同志,半年前他帮我选型了这款既带PWM又带AD又小巧的单片机,简直是小型单片机逆变器不可多得的神物啊!

这次实现的功能如下:
1.SPWM波输出(两路,外部需要俩CD4011加死区和反向后驱动H桥)
2.闭环稳压(DC反馈)
3.输出电压检测(输出电压偏差过大报警)
4.输出电流检测(输出电流过大报警)
5.输出短路保护(拟采用先进的管压降短路检测法,检测到短路后每个工频周期只输出一个很窄的检测脉冲,短路消失后立即恢复输出)
6.电池电压检测(电池电压不正常的提醒和报警甚至关闭逆变器)
7.串口通信功能(方便连接计算机查看逆变器工作状态)
8.外部关断功能(可使用外部信号关断单片机,提高拓展性)

程序采用C语言编写,这是源程序:
attachment icon spwm.zip 35.96KB ZIP 594次下载
现在还差串口通信功能的完善和根据硬件确定输出电流电压的计算公式中的系数
其他功能在面包板上模拟测试都有效

由于今天晚了,先睡了,明天为大家详细讲解单片机的SPWM过程
+15
科创币
科学人
2012/06/13
Well done!
+49
科创币
任某人
2012/06/14
靠你真写出来了。。强烈建议加1602显示状态。。
+200
科创币
科创网
2012/06/14
赞
+50
科创币
justinpiggy
2012/06/16
要是有Arduino版本就好了。。。我上次写了个Arduino的SPWM,只能输出波形,没有其他功能
+21
科创币
土豆
2012/06/16
考完试就仿制。。嘎嘎
+25
科创币
chaily94520
2012/09/15
不错啊!又是一玩硬件的高手
14年7个月前IP:未同步
407026
1楼
占楼讲解[s:274]
引用
评论
14年7个月前IP:未同步
407028
2楼
。。。谢我干嘛
引用
评论
14年7个月前IP:未同步
407037
3楼
回 2楼(科学人) 的帖子
你帮我买的单片机啊   当时我还不懂   全靠你帮我选的
引用
评论
14年7个月前IP:未同步
407116
4楼
坐等简介111111111111
引用
评论
14年7个月前IP:未同步
407262
5楼
由于今天突然被告知明天Software Design课有考试,所以抓紧复习去了,找时间一定讲

今天还是忍不住调了调程序,把SPWM频率提高了5倍,达到了20多KHz!
用RC滤波器测试波形(直接接单片机PWM输出):
IMG_4159.jpg
用示波器运算功能意淫出来的正弦波:
IMG_4160.jpg   

这是程序,修正了软启动和短路保护的Bug:
attachment icon spwm.zip 36.36KB ZIP 161次下载
引用
评论
14年6个月前IP:未同步
407811
6楼
通报进展:
昨天晚上熬夜到2点半终于把电路用万能板焊好了,电路图是上课时随便意淫出来的......
这是电路图和实物图
IMG_4168.png
程序也修改了下以适应硬件(只修改了AD通道的序号和STOPO改成了低电平关断):

attachment icon spwm.zip 36.33KB ZIP 231次下载
+10
科创币
坚持and突破
2012/06/16
单片机的电路的确简洁很多啊。我也想仿制!
+10
科创币
twelveboy
2012/07/31
讲讲详细过程呗
引用
评论
14年5个月前IP:未同步
430721
7楼
讲讲详细过程呗
引用
评论
14年5个月前IP:未同步
430846
8楼
回 7楼(twelveboy) 的帖子
好的 最近会抽时间写文章
引用
评论
14年5个月前IP:未同步
432369
9楼
回 8楼(金坷居士) 的帖子
请楼主快点讲讲详细过程呗,重点讲讲AD和SPWM程序部分,大家在等待哦。。
引用
评论
14年5个月前IP:未同步
433746
10楼
等待中+1 期待講解SPWM原理 [s:228]
引用
评论
14年5个月前IP:未同步
435355
11楼
金坷博士,好久没来了,是不是太忙了?我们还在等待讲解AD和SPWM程序部分哦。。。。
引用
评论
14年3个月前IP:未同步
451913
12楼
牛B,我最近也在研究SPWM。学习下……
引用
评论
14年3个月前IP:未同步
452016
13楼
这是干吗用的呢,逆变器吗?
引用
评论
14年3个月前IP:未同步
455470
14楼
用DSP的话出来的波形会更漂亮。
引用
评论
14年1个月前IP:未同步
470444
15楼
mark了.  哈哈,早该这样了.  直接软件PWM 是最好的解决方案
引用
评论
14年1个月前IP:未同步
476171
16楼
回 楼主(金坷居士) 的帖子
谢谢了 正在学习这个
引用
评论
14年0个月前IP:未同步
486671
17楼
谢谢你的帮助,最近我正在研究SPWM的问题呢
引用
评论
13年8个月前IP:未同步
517685
18楼
最美的哼哈。我先拿走了
引用
评论
13年1个月前IP:未同步
655235
19楼
好东西,请讲解!
引用
评论
13年1个月前IP:未同步
656545
20楼
都一年多了,估计没希望了。
引用
评论
12年7个月前IP:未同步
688987
21楼
等下面的内容
引用
评论
12年4个月前IP:未同步
710824
22楼
等待中,,,
引用
评论
12年2个月前IP:未同步
726502
23楼
还在吗?VB遮羞路过
引用
评论
12年2个月前IP:上海
726740
24楼
牛逼  快些文章吧
引用
评论
12年2个月前IP:澳大利亚
726775
25楼
现在升级到STM8S103F了 这种芯片更便宜功能更强大
引用
评论
12年2个月前IP:未同步
727530
26楼
发一下PC与单片机的串口通信代码
引用
评论
12年1个月前IP:广西
732403
27楼
很好玩的样子
引用
评论
12年1个月前IP:北京
732427
28楼
引用 金坷居士:
现在升级到STM8S103F了 这种芯片更便宜功能更强大
量产003就ok。。
引用
评论
11年6个月前IP:湖北
775990
29楼
谢谢分享!!!!
引用
评论
11年4个月前IP:湖南
784680
30楼
谢谢分享~~~~~~~~~~~~~~~~~~~~
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的