48735|185

299

帖子

3814

TA的资源

纯净的硅(初级)

楼主
 

从零开始做数控开关电源【附图,制作过程,PCB图,源代码】 [复制链接]

 

用M8与LM2576制作可调数控开关电源

电源的输出电压从0-30V,电流1.5A(设计3A)
输出电流保护0-3A连续调整
输出电流分两档0-300mA,0-3A
电源的输入电压从12-35V(电源输入电压决定电源的最高输出电压,这是一个降压开关电源。)

这是不同输入输出电压电流下电源效率



文件名:效率


这个制作存的一个问题:当电源的输出电压大于9V时,电源关闭后(LM2576第五脚TTL电平)不能重新启动,它与负载大小没有关系,不知什么原因,只要不关闭全程调压正常。我把这个不完善的制作发表,希望与网友们共同研究。
源程序我整理好后会放上来

这是原理图



文件名: Schematic M8



文件名: Schematic Lm2576

下面回复说是原理图不清楚,现在补发一下原理图:

这是完成后的样子



文件名: DSCF3691-1


可热转印的电路板



文件名: DSCF3692-1


这是实验系统



文件名: DSCF3695-1



文件名: DSCF3696-1


这是源代码:


'///////////////////////////////////////////////////////////////////////////////
'/                                                                                        /
'/ 用M8与LM2576制作可调数控开关电源                          /
'/ 输出电压 0-30V                                                              /
'/ 最大输出电流 3.0A                                                         /
'/ 截止型过电流保护 0-3.0A 连续调节                                /
'///////////////////////////////////////////////////////////////////////////////




$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

////////////////////////////////////////////////////////////////////////////////

游客,如果您要查看本帖隐藏内容请回复



此帖出自电源技术论坛

最新回复

好东西,值得看看。。  详情 回复 发表于 2017-1-11 10:40

点评

最近正在研究  详情 回复 发表于 2013-11-18 20:20
谢谢分享  详情 回复 发表于 2013-8-22 04:21
真心不错  详情 回复 发表于 2013-8-11 23:40
好东西 强烈支持一下。:)  详情 回复 发表于 2013-6-23 08:15
从0开始数控电源,其实一直搞不懂,为啥从DA接个运放就可以控制电压  详情 回复 发表于 2013-6-18 09:36
点赞 关注(6)
 
 

回复
举报

1万

帖子

16

TA的资源

版主

沙发
 

好东东,顶下

此帖出自电源技术论坛
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 
 

回复

196

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
牛人。。。顶起。。。。。
此帖出自电源技术论坛
 
 
 

回复

7230

帖子

195

TA的资源

五彩晶圆(高级)

4
 
好东西 强烈支持下
此帖出自电源技术论坛
 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

5
 
排板排得好好看啊
此帖出自电源技术论坛
 
 
 

回复

210

帖子

0

TA的资源

一粒金砂(中级)

6
 
原理图确实看不见。。。。
此帖出自电源技术论坛
 
 
 

回复

4138

帖子

0

TA的资源

五彩晶圆(中级)

7
 
嘿嘿来看看支持一下
此帖出自电源技术论坛
 
 
 

回复

3404

帖子

6

TA的资源

裸片初长成(初级)

8
 
恭喜做完了,东西不错!
但我想说一下你这样做电源的思路就不对,虽然你做的也叫电源,也实现了数控,也实现恒压,但这些只算是对于LM2576的应用。希望楼主以后多关注一些电源的东西。在这个基础上做真正的电源!!
此帖出自电源技术论坛
 
 
 

回复

978

帖子

0

TA的资源

一粒金砂(高级)

9
 
似曾相识啊,不错
此帖出自电源技术论坛
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

10
 
ourdev上搞过来的吧
此帖出自电源技术论坛
 
 
 

回复

144

帖子

0

TA的资源

一粒金砂(中级)

11
 

回复 楼主 莫妮卡 的帖子

good !!太厉害了!!学习!!
此帖出自电源技术论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

12
 
呢, 厉害,学习就是要自己动手全部经历这个过程!
此帖出自电源技术论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

13
 

非常棒,学习了

此帖出自电源技术论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

14
 
我什么时候也能这样搞件作品啊?
此帖出自电源技术论坛
 
 
 

回复

39

帖子

0

TA的资源

一粒金砂(中级)

15
 
谢谢 刚好目前在做
此帖出自电源技术论坛
 
 
 

回复

114

帖子

0

TA的资源

一粒金砂(高级)

16
 
学习
此帖出自电源技术论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

17
 

xie昔日

ourdev上搞过来的吧
此帖出自电源技术论坛
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

18
 

卡卡卡卡卡卡卡卡

此帖出自电源技术论坛
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

19
 
牛………………顶…………………………66
此帖出自电源技术论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

20
 
似曾相识啊,不错
此帖出自电源技术论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表