用M8与LM2576制作可调数控开关电源【恢复】
电源的输出电压从0-30V,电流1.5A(设计3A)输出电流保护0-3A连续调整
输出电流分两档0-300mA,0-3A
电源的输入电压从12-35V(电源输入电压决定电源的最高输出电压,这是一个降压开关电源。)
这是不同输入输出电压电流下电源效率
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_477938.GIF
(原文件名:效率.GIF)
电源控制原理可参考我另一贴:实验用0-20V数控电源
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=996115&bbs_page_no=1&bbs_id=9999
这个制作存的一个问题:当电源的输出电压大于9V时,电源关闭后(LM2576第五脚TTL电平)不能重新启动,它与负载大小没有关系,不知什么原因,只要不关闭全程调压正常。我把这个不完善的制作发表,希望与网友们共同研究。
源程序我整理好后会放上来
这是原理图
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_477940.gif
(原文件名:Schematic M8.gif)
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_477941.gif
(原文件名:Schematic Lm2576.gif)
这是完成后的样子
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_477945.jpg
(原文件名:DSCF3691-1.jpg)
可热转印的电路板
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_477946.jpg
(原文件名:DSCF3692-1.jpg)
这是实验系统
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_477947.jpg
(原文件名:DSCF3695-1.jpg)
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_477948.jpg
(原文件名:DSCF3696-1.jpg)
这是源代码:
'///////////////////////////////////////////////////////////////////////////////
'/ /
'/ 用M8与LM2576制作可调数控开关电源 /
'/ 输出电压 0-30V /
'/ 最大输出电流 3.0A /
'/ 截止型过电流保护 0-3.0A 连续调节 /
'/ 程序设计:吕军省 /
'/ junsheng427@126.com20081003 天津大港 /
'///////////////////////////////////////////////////////////////////////////////
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.0 , Rs = Portd.2
Config Lcd = 16 * 2
'定义LED是16字符,2行
Config Adc = Single , Prescaler = Auto , Reference = Internal
'定义ADC为单次运行模式,转换时钟-自动,内部参考电压
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Prescale = 1
'PWM1A配置,用于数模转换,
Ddrb.1 = 1 'PWM1A输出端子
'定义所需要变量 ////////////////////////////////////////////////////////////////
Dim V_dc As Long , V_dc1 As Long , A_dc As Long , A_dc1 As Long
Dim V1_dc As Word , V2_dc As Word
Dim A1_dc As Word , A2_dc As Word , A As Word , C As Word , A1 As Word
Dim V1 As String * 5
Dim V2 As String * 5
Dim V3 As String * 5
Dim V4 As String * 5
Dim C1 As String * 4
Dim Va1 As Byte
Dim N As Byte , B2 As Byte , B3 As Byte , B4 As Byte , B5 As Byte
'初始化设置/////////////////////////////////////////////////////////////////////
Ddrd.3 = 0 '定义PD.3~PD.7为输入,上拉电阻有效 .按键初始化
Ddrd.4 = 0
Ddrd.5 = 0
Ddrd.6 = 0
Ddrd.7 = 0
Portd.3 = 1
Portd.4 = 1
Portd.5 = 1
Portd.6 = 1
Portd.7 = 1
Start Timer1
Start Adc
Cls
Cursor Off
Locate 1 , 14
Lcd "ON-"
A = 0
C = 3000
Ddrc.4 = 1 '初始化电源开关
Portc.4 = 0
'主程序/////////////////////////////////////////////////////////////////////////
Do
Pwm1a = A
N = 1
V1_dc = 0
V_dc = 0
V2_dc = 0
V_dc1 = 0
A1_dc = 0
A_dc = 0
A2_dc = 0
A_dc1 = 0
For N = 1 To 60 'ADC采样60次
V1_dc = Getadc(0) '电源输出电压
V_dc = V_dc + V1_dc 'ADC的原始值累加
A1_dc = Getadc(1) '电流300mA档
A_dc = A_dc + A1_dc
A2_dc = Getadc(2) '电流3A档
A_dc1 = A_dc1 + A2_dc
V2_dc = Getadc(3) '电源输入电压
V_dc1 = V_dc1 + V2_dc
Next
V_dc = V_dc / 60 '还原各测量值
A_dc = A_dc / 60
A_dc1 = A_dc1 / 60
V_dc1 = V_dc1 / 60
V_dc = 3040 * V_dc '标准3040
V_dc = V_dc / 1023
A_dc = 3120 * A_dc '标准3040
A_dc = A_dc / 1023
A_dc1 = 3040 * A_dc1
A_dc1 = A_dc1 / 1023
V_dc1 = 4025 * V_dc1
V_dc1 = V_dc1 / 1023
If A_dc>= C Then '截止型电流保护300mA档
Waitms 500
If A_dc>= C Then
Portc.4 = 1
Locate 1 , 14
Lcd "OC "
Gosub Mu
End If
End If
If A_dc1>= C Then '截止型电流保护3A档
Waitms 500
If A_dc1>= C Then
Portc.4 = 1
Locate 1 , 14
Lcd "OC "
Gosub Mu
End If
End If
If V_dc1 <= 1200 Then '输入电压范围低端保护
Cls
Lcd "Input U<12V"
Portc.4 = 1
Gosub Mu
End If
If V_dc1>= 3500 Then '输入电压范围高端保护
Cls
Lcd "Input U>35V"
Portc.4 = 1
Gosub Mu
End If
Gosub Lp_lcd
Gosub Lp_key
Loop
End
'显示处理///////////////////////////////////////////////////////////////////////
Lp_lcd:
V1 = Str(v_dc) '输出电压
Va1 = Len(v1) '读字符串
If Va1 <= 3 Then
V1 = Format(v1 , "0.00") '定位小数点
Else
V1 = Format(v1 , " 0.00")
End If
V2 = Str(a_dc) '电流300mA档
Va1 = Len(v2)
If Va1 <= 2 Then
V2 = Format(v2 , "0.0")
Else
V2 = Format(v2 , " 0.0")
End If
V3 = Str(a_dc1) '电流3A档
V3 = Format(v3 , "0.000")
V4 = Str(v_dc1) '输入电压
V4 = Format(v4 , " 0")
C1 = Str(c) '设定电流
C1 = Format(c1 , " 0")
Locate 1 , 8
Lcd " "
Locate 1 , 1
Lcd "U:" ; V1 ; "V"
Locate 2 , 1
Lcd "I:"
If A_dc> A_dc1 Then
Locate 2 , 8
Lcd ""
Locate 2 , 1
Lcd "I:" ; V2 ; "mA"
End If
If A_dc < A_dc1 Then
Locate 2 , 1
Lcd "I:" ; V3 ; "A"
End If
If A_dc = A_dc1 Then
Locate 2 , 3
Lcd "0.0 "
End If
'Locate 1 , 9
'Lcd V4
Locate 2 , 10
Lcd "<" ; C1 ; "mA"
Return
'按键处理//////////////////////////////////////////////////////////////////////
Lp_key:
If Pind.3 = 0 Then '启动
Waitms 20
If Pind.3 = 0 And Portc.4 = 1 Then
Portc.4 = 0 'Portc.4控制LM2576开/关
Locate 1 , 14
Lcd "ON "
Waitms 250
End If
End If
If Pind.3 = 0 Then '停止
Waitms 20
If Pind.3 = 0 And Portc.4 = 0 Then
Portc.4 = 1 '控制LM2576开/关
Locate 1 , 14
Lcd "OFF"
End If
End If
If Pind.4 = 1 Then B2 = 0 '电压+
If Pind.4 = 0 And Portc.4 = 0 Then
Waitms 20
If Pind.4 = 0 Then
If A < 1023 Then
A = A + 1
B2 = B2 + 1
If B2> 20 And A < 1013 Then
A = A + 10
End If
End If
End If
End If
If Pind.5 = 1 Then B3 = 0 '电压-
If Pind.5 = 0 And Portc.4 = 0 Then
Waitms 20
If Pind.5 = 0 Then
If A> 1 Then
A = A - 1
B3 = B3 + 1
If B3> 20 And A> 10 Then
A = A - 10
End If
End If
End If
End If
If Pind.6 = 1 Then B4 = 0 '电流+
If Pind.6 = 0 Then
Waitms 20
If Pind.6 = 0 Then
If C < 3000 Then
C = C + 1
B4 = B4 + 1
If B4> 20 And C < 2980 Then
C = C + 20
End If
End If
End If
End If
If Pind.7 = 1 Then B5 = 0 '电流-
If Pind.7 = 0 Then
Waitms 20
If Pind.7 = 0 Then
If C> 1 Then
C = C - 1
B5 = B5 + 1
If B5> 20 And C> 20 Then
C = C - 20
End If
End If
End If
End If
Return
'报警声音///////////////////////////////////////////////////////////////////////
Mu:
Sound Portc.5 , 100 , 1000
Waitms 20
Sound Portc.5 , 100 , 1000
Waitms 20
Sound Portc.5 , 100 , 1000
Return
'///////////////////////////////////////////////////////////////////////////////
HEX文件ourdev_478900.rar(文件大小:4K) (原文件名:KG01.rar)
装配图 ourdev_478901.pdf(文件大小:30K) (原文件名:装配图.pdf)
PCB+热转印 ourdev_478902.rar(文件大小:32K) (原文件名:PCB+热转印.rar)
本贴被 jun427 编辑过,最后修改时间:2008-11-02,09:20:28. 改进后的BAS源码 太漂亮了。 酷,加油 cool! 弓虽
还未看到LZ是用什么方法测电流。 楼主用了3个0.15欧的电阻并在一起测电流.
不知道楼主的机下次开机的电压电流是多少?像老外那个用EEP保存最好.下次开机就是上次断电时的电流和电压. 好~~~~~~~~~ 做的不错 做得太漂亮了.楼主看来是个做事完美的人!学习一下,有空也仿一个. 有过这个想法,没想到高手先做出来了,先顶一个 持续关注中。。。。。。 狂顶...... 楼主把HEX和热转印图也放出来解解谗吧! 做的不错!!
学习了 不错,顶一个!! 已上传了代码 PCB 支持楼主,漂亮!顶完再仔细看。 楼主强悍啊!
楼主这套东东,能否制作成品(不需要外壳,图中的那样子就行,甚至就是这样热转印也行)?
可以放在邮购部代销售的。 价格由你定。 你负责供货给我们,我们负责销售与做服务(当然有解决不了的问题仍需要你协助)。利润大家对半分?如何?
如果你有资金上的问题,我可以先付货款。
对有参考价值的网友产品,我是比较有兴趣推广的 :) PCB图,可以上传protel格式的更好!那个电感,能够说明一下制作的参数(磁芯+铜线)更方便DIY!
本贴被 lljyes 编辑过,最后修改时间:2008-11-02,12:25:47. 漂亮。
支持下。 bascom-avr
本贴被 gxll 编辑过,最后修改时间:2008-11-02,13:13:23. 感谢站长的支持
我会进一步完善这个制作,到时我会积极与站长联系. pcb用什么软件打开啊? 用这个打开
开始--->Microsoft Office --->Microsoft Office 工具--->Microsoft Office Document Imaging
如果没有是没有安装,再次安装就行 【20楼】 jun427,
好的。等待你的消息。到时发个手机短信给我就最好 :) 13925800119 楼主 人真好!!!赞一个! 板做的好漂亮啊!啥时候我也能做出这样的析啊 MARK LZ的东西做的不错,看上去很舒服。
请问一个参数指标:输入13V,输出3V/1.5A的时候,输出纹波(Ripple & Noise)有多大?
本贴被 ywl0409 编辑过,最后修改时间:2008-11-03,11:08:57. mark MARK 很不错,也彷一个
谢谢楼主! 楼主强悍! 没有装微软的office,哪个转个图片出来看看 漂亮,做个记号。 太好了!谢谢 “这个制作存的一个问题:当电源的输出电压大于9V时,电源关闭后(LM2576第五脚TTL电平)不能重新启动,”
看图LM2576第五脚是由I/O控制的。高电平接近5V,当电源的输出电压大于9V时,5V的电压已不是高电平了。也就出现了“电源关闭后(LM2576第五脚TTL电平)不能重新启动”的现象。 MARK! 棒! 楼主强人 看得出35楼是位高手.......能否帮楼主解决:“电源关闭后(LM2576第五脚TTL电平)不能重新启动”的现象。
也好造福我们这些菜鸟啊! 在此:先表示感谢! 如果是35楼所说的原因,用个三极管拉一下,就可以解决了。如果是这么简单的问题。LZ一定知道的。具体可以参照手册的figure 12,那样的接法.
我建议LZ测一下当Vout>9V和<9V时,当ON/OFF关断时IC的FD的电压是否大于0。<font color=#699bcd>本贴被 ywl0409
编辑过,最后修改时间:2008-11-04,21:43:09. 做得不错哈! 感谢【35楼】 HSP8031 【40楼】 ywl0409 老黄牛的提案, 今晚回来作实验, 看能否解决问题. 好啊 我作了实验,这样连接一个开关来控制都不行,看来只有有软件来解决了.
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_484001.GIF <font color=green>(原文件名:开关.GIF) bascom-avr 不知道汶波怎么样 建议LZ看一下4脚FD的电压是否正常。
ON/OFF 的门限电平大约是在1--2V,所以不会是35楼所说的问题。 恩,目前的一个参与完的项目里有个就是LM2576,我在学习使用方法呢! 学习 楼主是个认真的人,做的东西很精致 请问楼主用的整流桥堆是什么型号的????? MARK!谢谢! MARK mark 好东西 mark 记号好东西,有时间要研究下 cool M8的PWM可以直接做开关电源,何必再弄个2576?
郁闷! 好东西啊,刚好可以用得上,谢谢楼主,不知道能否调到36V 请问楼主能否提供你的jtag的制作资料???感激不尽.
我也做了一个,不过还没试能否使用 http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=3264447&bbs_page_no=1&bbs_id=1000
我是个avr菜鸟,请楼主指点下我的作品,看是否有问题,先谢了 顶 强啊 mark! 不错,不知道能不能提供邮购了 学习中 我仿制了一个,但不是很好.电压不能从0起调(起始6.92V),最高调到30.4V就死了,电压+ - 全无效了.望有做出来的高手指点.谢谢!!
改天发图片上来... 楼主用了3个0.15欧的电阻并在一起测电流.
不知道楼主的机下次开机的电压电流是多少?像老外那个用EEP保存最好.下次开机就是上次断电时的电流和电压.
-----------------------------------------------------------------------------------------------------
我原来设计电源的时候有用24C32存储,但是后来裁掉了,还是上电是0才安全,不然外面新接了什么东西就有可能烧掉. 俺不是学电子的 只是业余的 水平有限
想问下楼主 Schematic Lm2576这张图片里面的U2B起什么作用啊
怎么还从输出端接了反馈到正输入端呢?
用U2A直接输出到LM2576上不就得了么?(如果不是因为lm324有4个比较器 用不完的话) 很好的作品,难怪阿莫能看上。把它放到网站上来卖是件很好的事情,站长的想法是很不错的。这样我们即学习了知识,又节约了时间。 有没有元器件清单想做个,我的邮箱是mghdk2005@163.com,楼主可以帮个忙吗 真是厉害,顶啊~~
我也想做个呢,就是不知道怎么开关形式0电压起调~~~~
学习了... 很好,很强大。带记忆功能吗?就是记住上次的电压 用到2576
顶 mark 好东西!! 这个电路,请问下2576的4脚反馈电压是否会保持在1.23V正负0.05V, 我做的调压电路反馈脚电压有3.5V,请问这样会不会有问题啊. 太漂亮了!强啊lz,加油 哎呀!!!我也刚做了一套,呵呵,不过我不是用的LM2576,我直接用的MOS管开关做的,呵呵,等会我也把图弄上来哈!谢谢楼主分享! 记号 楼主,你太强悍了~~~~~~ 真的很不错。等我做个好东东也上传,大家分享,哈哈 mark 有没有元器件清单想做个,我的邮箱是277279116@qq.com,楼主可以帮个忙吗 mark 记号 LZ,我按着你的电路图在面包板上搭建了个LM2576电路,不过那个FD反馈看不大懂,能否讲解一下。而且在调整输出电压时,电压上升很快,但下降很慢,从最大到最小起码要几十秒钟;这个是LM2576的问题还是外围电路弄得不好? cool!太漂亮了,我有时间也搞一个传上来 哪位高手给解释下FD反馈的U2B是怎么工作的???好几个人问也没人给解答下。 顶,楼主强,向你学习啦 顶,mark 楼主很强,顶一下。 cool! 楼主做的太好了,欣赏。能否卖一个给我,联系电话13580592497。期待着。。。。 hao!顶一个! 学习一下! 学习一下,有空也仿一个. 请问楼主:从ADC0检测电压有什么讲究吗,如果直接从324的5脚检测电压有什么问题吗?另外我觉得324可以不用双电源供电,可以少加一个7660,只是电源不能从0V起调了,但通过改变324第一个运入的放大倍数,也可以做到1V以下起调的。 请教各位:由R12和R13组成的分压网络是做什么用的?不加这里对电路会有什么影响?
对这个问题:
U2B起什么作用啊
怎么还从输出端接了反馈到正输入端呢? --反馈到负输入端吧
用U2A直接输出到LM2576上不就得了么?(如果不是因为lm324有4个比较器 用不完的话)
发表点意见吧。不一定对。
这个设计的巧妙之处就在这里,理想情况下,流过R8的电流应该为0,FD端的电压等于U2B正负输入端的电压,都取决于U2A输出端的电压。 留