基于单片机的可调直流电源设计

2024年11月22日 02:40
有2个网友回答
网友(1):

我给你一个0~10可调的吧。我刚做的
图貌似出不来了

北京交通大学

思源0702

设计要求及技术指标

数控直流稳压电源

(2)输出电压Vo=±12V,最大输出电流Iomax=1A

(3)输出纹波电压ΔVop-p≤5mV

可控部分:

• 1)输出电压:0~9.9V步进可调,调整步距0.1V。

• 2)输出电流:≤500mA。

• 3)精度:静态误差≤1%FSR,纹波≤10mV。

• 4)显示:输出电压用LED数码管显示。

• 5)电压调整:由“+”、“-”两键分别控制输出电压步进增减。

数显、控制部分:

查阅网上的数显可控直流稳压电源资料,得到以下电路图:

这种方案不仅对变压器要求高,而且使用了7块芯片,连接复杂,其中参数选择有多处错误。我们决定应用其原理,从新设计一套方案。

电路图如下:

此电路由6部分组成:

(1) 正负12V直流稳压输出

(2) 数字电路供电电源

(3) 单片机控制系统

(4) D/A转换及其输出

(5) 数字显示

(6) 负反馈可控直流输出

一、正负12V直流稳压输出

电路图及仿真结果如下:(带1千欧负载)

交流信号:

二、数字电路供电电源

通过正12V直流稳压电源与两个大电阻分压,得到4V参考电压,在通过电压跟随器为数字电路供电。

其中所选电阻为

电压跟随器为LM324

三、单片机控制系统

包括最小系统及各引脚引线。单片机:STC12C4051AD,20引脚DIP封装,与AT89C2051通用。11.059MHz晶体振荡。

程序原理:设置电压初始值为5.1V,由P1口的低7位输出,连接到DAC0832的高8位地址,最低位接电源。然后连接DAC0832的选片线到单片机P3.7口,由P3.7口输出负跳变,实现DAC的数据锁存。由于单片机指令周期过短,小于DAC0832的最小负跳变时间间隔。加入de1延时,使芯片输出正确的模拟电压。

按加号键加0.1V,按减号键减0.1V,按键扫描时间间隔0.2秒。

完成DA转换后输出BCD码,输入数显部分。

程序原码:

org 0000h

st: mov r0,#33h ;初始电压为参考电压的一半

ljmp st1

ss: call de ;扫描,等待按键

jnb p3.4,i0

jnb p3.5,i1

sjmp ss

i0:inc r0 ;r0加一,并调用st1

cjne r0,#100,st1

dec r0

ljmp st1

i1:cjne r0,#0,i11 ;r0减一,并调用st1

ljmp st1

i11: djnz r0,st1

ljmp ss

st1:mov a,r0 ;输出的函数

mov p1,r0

clr p3.7

call de1 ;等待芯片接受数据

setb p3.7

mov b,#10

div ab

mov r1,b

rl a

rl a

rl a

rl a

add a,r1

mov p1,a

ljmp ss

de: mov r7,#200

a3: mov r1,#250

a2: mov r2,#2

a1: djnz r2,a1

djnz r1,a2

djnz r7,a3

ret

de1:mov r1,#200

b1: mov r2,#50

b2: djnz r2,b2

djnz r1,b1

ret

end

四、D/A转换及其输出

DA转换芯片的输出只能为负,所以经过反向比例放大,输出正向控制电压。

五、数字显示

使用了两块BCD七段数码管驱动芯片,分别驱动两个八段数码管。(使用A型数码管,即共阴极)其中第一个数码管的小数点接电源。

六、负反馈可控直流输出

采用大功率三极管的共集极组态作为输出,由LM324进行控制。由DA转换所得的电压作为LM324的参考电压,通过调节反馈电阻来使输出电压与数字显示的电压一致。

实际电路中,由于三极管选购失误,暂时不能获得大功率三极管。我们用一个普通的NPN型三极管来代替,调节反馈电阻的值,实现了功能,误差在0.05伏特以内,通过四舍五入,可认为数显电压值就是实际电压值。若与实际有偏差,还可以现场调节反馈电阻,校准数显。

改进:

(1)为使结构紧凑合理、美观大方,我们准备重新设计电路结构,新的电路板将吸取这次的教训,提高稳定性和健壮性。

(2)为提高电源的效率,我们准备使用开关型直流电源,降低对功率的要求,提高对效率的要求。

(3)为减少芯片数量,降低成本,降低焊接难度,我们决定使用单片机直接驱动数显,使用动态显示。程序如下:(未进行仿真,准备进行硬件仿真。)

org 0000h

bcd:mov a,#12 ;BCD转换

mov b,#10

div ab

mov r0,a

add a,r0

add a,r0

call dis

mov r4,a

mov a,b

add a,b

add a,b

call dis

mov r5,a

call de

ajmp bcd

dis:mov dptr,#tab

jmp @a+dptr

tab:mov a,#01111110b

ret

mov a,#00110000b

ret

mov a,#01101101b

ret

mov a,#01111001b

ret

mov a,#00110011b

ret

mov a,#01011011b

ret

mov a,#01011111b

ret

mov a,#01110000b

ret

mov a,#01111111b

ret

mov a,#01111011b

ret

de: clr p3.0

setb p3.1

mov p1,r4

call de1

setb p3.0

clr p3.1

mov p1,r5

call de1

ret

de1:mov r1,#200

b1: mov r2,#50

b2: djnz r2,b2

djnz r1,b1

ret

end

网友(2):

首先要用变压器变压,只实现那么简单的功能的话,单片机的选择上就简单了,用PIC单片机控制是最好的了,只要会用PIC单片机,应该就不会有什么问题了