文号
t46345
阅读
27171
回复
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:未同步
407037
3楼
回 2楼(科学人) 的帖子
你帮我买的单片机啊   当时我还不懂   全靠你帮我选的
引用
评论
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:未同步
430846
8楼
回 7楼(twelveboy) 的帖子
好的 最近会抽时间写文章
引用
评论
12年2个月前IP:澳大利亚
726775
25楼
现在升级到STM8S103F了 这种芯片更便宜功能更强大
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的