用M8与LM2576制作可调数控开关电源
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用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