2024年9月29日发(作者:侯珺琪)
简易数控直流电源
该电源系统以ATMEGA8单片机为核心控制芯片,实现数控直流稳压电源功能的方案。
设计采用8位精度的DA转换器DAC0832、精密基准源LM336-5.0、7805和两个CA3140运算
放大器构成稳压源,实现了输出电压范围为-5V~+5V,电压步进0.1V的数控稳压电源,最
大纹波只有6mV,具有较高的精度与稳定性。另外该方案只采用了3按键实现输出电压的方
便设定,显示部分我们采用了诺基亚3310手机夜晶显示器来显示输出电压值和电流值。
基本要求
1) 输出电压:范围-5V~+5V,步进0.1V,纹波≤10mV。
2) 输出电压可预置在-5V~+5V之间的任意一个值。
3) 输出电流≤500mA。
4) 数字显示输出电压值和电流值。
5) 为实现上述几部件工作,自制稳压直流电源,输出±15V,+5V。
1.2 系统基本方案
根据题目要求,系统可以划分为输出部分,人机接口部分和直流稳压电源。其中输出
部分是由D/A转换后再放大得到的,人机接口包括4个按键和液晶显示部分,直流稳压电
源包括两组电源。
方案一: 三端稳压电源
采用可调三端稳压电源构成直流可调电源的电路如图1.1所示。怎样实现数控呢?我们
把图1.1中的可变电阻RP用数字电位器来代替,就能实现数控了。但由于三端稳压芯片
LM317和LM337的输出电压不能从0V起调,输出公式:Vout=1.25×(1+R2/R1)。所以,可
以采用在输出的地方加两个二级管,利用PN节的固有电压来实现从0V起调,如图1.2所示。
+15VU1
Vin
GND
LM317
Vout
C1
1000u
C2
100u
R1
10
1K
RP
x9c102
C3
100u
C4
10u
R110
C4
10u
C3
100u
RP
x9c1021K
C2
100u
C1
1000u
U1
+15V
GND
Vout
LM337
Vin
图1-1
1
+15VU1
Vin
GND
LM317
Vout
D?D?
DiodeDiode
C1
1000u
C2
100u
R1
10
1K
RP
x9c102
C3
100u
C4
10u
图1.2
优点:该方案结构简单,使用方便,干扰和噪音小
缺点:数字电位器误差较大,控制精度不够高,误差电压较大。同时更重要的是几乎所有的
数字电位器能够容忍的电流都在20mA以下。所以,这种方案就被否决了。
方案二:采用A/D和D/A
采用A/D和D/A构成直流电源的电路如图1.3和图1.4所示。采用单片机构成直流电源
的电路如图1.3所示,利用AVR单片机自带的D/A口DAC0输出0-2.5V的电压,然后经一
级反相放大器和跟随器,此时可以输出0到-5V电压。但是因为A/D变换器只能采集0到
+2.56V的电压,所以再在跟随器后面加一级反相放大器器然后送回到A/D采样,MCU比较发
现DAC0输出为正确电压时,则从跟随器后直接输出电压,这样就可以输出0到-5V的电压
了。当需要正相电压时从DAC1口输出电压,这时就不需要反相,其它原理与DAC0相似。
+5V
R1
Op Amp
DAC0
DAC1
R1
10
2
6
3
2
R1
10
MCU
-5V
R110
A/D
Port
Port
-5V
VCC
AR?
AR?
3
6
2
2
Op Amp
Op Amp
R1
R1
10
10
3
6
V0
VCC
-5V
Op Amp
Op Amp
3
6
AR?
R1
10
2
6
3
10
AR?AR?
-5V
+5V
R1
10
图1.3
优点:精确度高,纹波小,
效率和密度比较高,可靠性也不错。
缺点:电路相对复杂,AVR单片机的IO口不能容忍负电压,否则会被损坏。所以,这种方
案也行不通。
方案三:采用数字电位器与运放到组合
如图1.4所示,在该方案中我们用两个数字电位器代替了MCU中的D/A,这样可以降低
成本,同时简化电路,从两个串连的数字电位器可以直接输出-5V到+5V的电压同上面方案
一样,当输出反相电压时在送电压回A/D采样时要先经过一次反相。但同样存在上面的问题。
2
+5V
+5V
R1
RPot1
AR?
1K
1K
R2
RPot1
R3
1K
Res1
3
6
2
Op Amp
-5V
-5V
MCU
Q2
2N3906
Vo
A/D
Port
Port
R4
10
6
3
R610
Op Amp
AR1
2
R5
10
+5V
Q1
2N3904
图1.4
优点:电路结构更简单,降低了成本
缺点:因为数字电位器电阻误差大,且单片机的A/D口容易损坏。
方案三:采用7805构成直流电源
采用7805构成直流电源的电路如图1.5所示,改变RP阻值使7805的公共端的电压在
0到-10V之间可调,则7805的输出端电压就可实现-5V-+5V之间可调了。这种方案是利
用了7805的输出端与公共端的电压固定为+5的特性来设计的。但同样存在不好数控的问题。
+15vU1
Vin
GND
7805
Vout
C1
1000u
C2
10u
-10V
Rp
X9C102
1K
C3
100u
C4
10u
图1.5
方案四 方案三与方案四结合,然后再以+5V为参考输出
显示
8
D/A转换器
电流-电
压转换
及放大
+15V
7805
Atmega8
键盘
输出
功率放大
-10V~0V
+5V
ADC0
放大
3
如上图所示,采用数模转换器输出电流,经电压转换和反向放大之后得到-10V~0V的电压,
把这个电压送到三端稳压器件7805的公共端,然后,再以+5V作为参考则输出的电压就能
实现在-5V~+5V任意可调。采样时,是对地采样的,就省去了负电压不好采样的麻烦,这也
是我们的创新之处。
1. 主要单元电路设计
电源电路单元
该电路用了7805、7815和7905、7915制成了两组稳压直流电源电路分别得到±15V和
±5V的电源。为了防止恒流源电路中的较大电流对控制部分产生干扰,将控制部分的电源
和恒流源电路电源分成独立的两部分,分别由两组变压器供电,并且,在电源的输出极加上
LC滤波电路。通过实际测量发现加LC滤波器之前的纹波高达50~60mV,但是通过滤波之后,
电压输出,有了明显的改善,纹波只有10mV左右了。
人机接口部分的单元电路设计 LCD显示界面
按键键盘:
:
数模转换电路:
4
DAC0832接口电路:
用单片机的P3口来控制DAC0832输出电压。
0832输出电路:
DAC0832输出的电压通过两个CA3140的两级放大,从Vout1 和Vout2两路输出实现输出
正负5V的电源。
精密基准源:
5
用LM334和一个10K的可调变阻构成了一个精密5V基准电压,提高系统的精密度。
纹波、尖峰干扰处理:
未加电源滤波器之前,从电源电路输出端测得的纹波有50~60mV,当加了电源滤波器之
后,电源电路输出端的纹波只有6~8mV了。在主控板的电源输入端分别再对±15V、±5V
加一级LC滤波,最后把纹波控制在6mV以下了。
主控电路保护二极管:
二极管用以防止电流倒灌,防止烧坏电源。
功率放大驱动电路
+15V
输出
输
入
-15V
上图是由OP放大器与推挽射极跟随器相组合的电路。因为使用将NPN与PNP晶体管
的共同连接的推挽射极跟随器,该电路在输出端不取电流时,发射极无电流流动,所以电路
的效率非常高。这是该电路的一大特点。没有反馈回路时,推挽射极跟随器的开关失真很大,
假如反馈后,开关失真变小,但仍然存在。为了解决这个问题我们加入了偏置电路,由于在
各自的晶体管上加两个二级管的V
F
电压(≈1.2V),所以在发射极电阻上分别加一个PN
节的电压(≈0.6V)。该电压用发射极设定电流(零点几至数毫安)来除就求出发射极电阻。
在偏置电路里流动的电流,是由比晶体管基极电流大得多的值来决定的,但若太大,
则OP放大器就不能驱动偏置电路,所以设定该电流在1mA以下是比较妥善的。
3.系统的软件设计
6
3.1 程序流程图
开 始
‘+’键按下还是
‘-’键按下?
‘+’键按下
‘-’键按下
Flag标志位置‘1’
Flag标志位清‘0’
扫描键盘,从键盘输入两
位数,作为输出电压值。
对应的值在0~50之间
启动键是否按下?
N
Y
显示设定的电压值,并将
起转换为相对应数字量,
送到DA,进行数模转换
N
判断‘↑’键是
否按下
判断‘↓’键是
否按下
Y
‘1’
判断flag标志位
为‘1’还是‘0’
‘0’
判断电压值是否
等于5V?
N
Y
电压值设为5V不变
电压绝对值减少0.1
的步进量
电压绝对值增加0.1
的步进量
7
4.2 指标测试
1、 输出电压:范围-5V~+5V,步进0.1V,纹波≤6mV。初始状态时,可以通过4
个按键输入-5.0V~+5.0V之间的任意电压值,并实时显示。显示值与实际测量
值同步,且在-5.0V~+5.0V之间的调节过程中最大误差为0.03V;
2、 输出电压可预置在-5V~+5V之间的任意一个值,并且设有电压步进0.1V的增
减键,实时可调,有自动扫描代替人工按键功能,步进0.1V ;
3、 输出电流≤500mA ;
5、 带负载时可以显示电流值,并通过功能键进行切换,换到电流控制档,可控制电
流在10mA~100mA自由调节。
4、 输出电压调整率≤0.5%(输入电压220V变化范围+15%~-20%下,空载到满载);
8
9
6、 线性度:(数据分析)
8.纹波测试结果:
不带负载时的纹波测试图:
带负载时的纹波测试图:
10
从波形图中可以看出,加负载后,纹波变得更加密集了。是因为,加了负载
之后,就在电路中形成了回路,在负反馈的过程中,相应的调整管就需要作调整,
以保证输出的电压的稳定性。所以,我们看到了以上的现象。但是,纹波的幅值
并没有增加,仍为5.44mV这也说明了电路的稳定性比较好。
附录1:程序清单
#include
#include
#include "lcd3310.h"
#define osccal 0x7d
void main(void)
{
uchar key,num_flag=0,gb_b=40,flag=0,dac_dat=0;
char theta=0;
short mid=0,midd=0,m_v=0;
port_init();
LCD_init(); //³õʼ»¯Òº¾§
LCD_clear();
LCD_write_chinese_string(0,0,12,3,0,0,0);//д¡±µçѹ:¡°
LCD_write_String(40,0,"0 00");
11
OSCCAL=osccal; //УÕý¾§ÕñƵÂÊ
LCD_write_chinese_string(0,4,16,5,0,0,1);//д¡±Êý¿ØµçÔ´¡°
LCD_draw_map(47,0,point,7,14);//СÊýµã
LCD_draw_map(73,0,voltge,12,12);//Êä³öV
LCD_write_chinese_string(0,2,12,3,0,0,2);//д¡±µçÁ÷:¡°
LCD_write_String(46,2,"123");
LCD_draw_map(68,2,current,16,12);//Êä³ömA
dac_wr_0;//ʹÄÜDAC Vo=(Êý×ÖÂë-128)*Vref/128
PORTD=0x7f;
while(1)//Õý¸ººÅÊäÈë¼ì²â£¬ÓÉÈ·Èϼü½áÊø
{
//¼üÅÌɨÃè
key=PINB&0x02; //PB1¶ÔÓ¦"+"
if(key==0x00)
{
delay_nms(85);
}
key=PINB&0x80; //PB7¶ÔÓ¦"-"
if(key==0x00)
{
delay_nms(85);
key=PINB&0x40; //PB6¶ÔÓ¦"È·ÈÏ"
if(key==0x00)
{
delay_nms(85);
key=PINB&0x40;
if(key==0x00)
{
key=PINB&0x80;
if(key==0x00)
{
LCD_draw_map(30,0,reduce,8,12);//Êä³ö-;
}
num_flag=1;//±íʾ¸ºÖµ
flag=1;
key=PINB&0x02;
if(key==0x00)
{
LCD_draw_map(30,0,plus,8,12);//Êä³ö+;
}
num_flag=0;//±íʾÕýÖµ
flag=1;
}
12
if(flag==1)
}
{
flag=0;
break;
}
else
{
}
}
}
while(1)
{
volt_disp();
delay_nms(80);
//¼üÅÌɨÃ裬Åжϼӻ¹ÊǼõ
key=PINB&0x02; //PB1¶ÔÓ¦"+"
if(key==0x00)
{
delay_nms(85);
}
key=PINB&0x80; //PB7¶ÔÓ¦"-"
if(key==0x00)
{
delay_nms(85);
key=PINB&0x80;
if(key==0x00)
{
dis_num[num_bit]--;
}
if((dis_num[num_bit]-'0')>=255)
{
dis_num[num_bit]=0+'0';
}
key=PINB&0x02;
if(key==0x00)
{
dis_num[num_bit]++;
}
if((dis_num[num_bit]-'0')>=9)
{
dis_num[num_bit]=9+'0';
}
13
);
}
key=PINB&0x40; //PB6¶ÔÓ¦"È·ÈÏ"
if(key==0x00)
{
delay_nms(85);
key=PINB&0x40;
if(key==0x00)
{
num_bit++;
if(num_bit==4)//µçѹÉèÖÃÍê±Ï
{
mid=(short)(100*(dis_num[0]-'0')+10*(dis_num[2]-'0')+(dis_num[3]-'0')
}
//½øÈëʵʱµ÷ѹ½×¶Î
while(1)//´Ó¸öλµ½Ê®·Öλ¡¢°Ù·ÖλÒÀ´ÎÉ趨ÊýÖµ£¬ÓÉ"+"¡¢"-"¼üÀ´½øÐÐÉ
}
}
else if(num_bit==1)
{
num_bit++;
}
if(mid>=500)//°ÑÉèÖõĵçѹֵÏÞ¶¨ÔÚ-5~+5V·¶Î§Ö®ÄÚ
{
}
if(num_flag==0)//É趨µÄÊÇÕýµçѹ
{
}
else //É趨µÄÊǸºµçѹ
{
mid=-mid;
}
dac_dat=(uchar)(0.25*mid+128);
PORTD=dac_dat;
volt_disp();
break;
dis_num[2]=dis_num[3]=0;
dis_num[0]=5;
}
14
{
key=PINB&0x02; //ÓÐ"+"¼ü°´ÏÂʱ
if(key==0x00)
{
delay_nms(85);
key=PINB&0x02;
if(key==0x00)
{
if(mid>=490)
{
mid=500;
}
else
{
mid+=10;
}
}
}
key=PINB&0x80; //ÓÐ"-"¼ü°´ÏÂʱ
if(key==0x00)
{
delay_nms(85);
key=PINB&0x80;
if(key==0x00)
{
if(mid<-490)
{
mid=-500;
}
else
{
mid-=10;
}
}
}
if(mid>=0)//ÊÇÕýµçѹ
{
LCD_draw_map(30,0,plus,8,12);//Êä³ö+;
}
else //ÊǸºµçѹ
{
LCD_draw_map(30,0,reduce,8,12);//Êä³ö-;
}
dac_dat=(uchar)(0.238*mid+128)+theta;//0.24938 132.80
15
}
midd=mid;////mid¶ÔÓ¦¸ø¶¨µçѹ µÄ100±¶
if(midd<0)
{
midd=-midd;
}
else
{
}
dis_num[0]=midd/100+'0';
dis_num[2]=midd/10%10+'0';
dis_num[3]=midd%10+'0';
m_v=volt_mesue(40,2,0);
current_mesue(40,4,1);
m_v=m_v-500;//ʵ²âµçѹ,Ïà¶ÔÓë5VµÄµçѹ //ʵ¼Êµçѹ µÄ100±¶
{
theta--;
}
else
{
theta++;
}
PORTD=dac_dat;
volt_disp();
if(m_v>mid)
}
附录2:系统使用说明
1、 系统上电;
2、 设置所需电压的正负号;
3、 设置-5.0V~+5.0V之间的任意电压值,先设置个位,按确认键后,在设置十分位,
再按确认键,最后同样的设置百分位;
4、 按确认键,从输出端口输出的电压即为所需电压;
5、 此时可以按‘+’‘-’来微调电压,按着不放,它会不断的按0.1V的步进增减或减
少。
16
2024年9月29日发(作者:侯珺琪)
简易数控直流电源
该电源系统以ATMEGA8单片机为核心控制芯片,实现数控直流稳压电源功能的方案。
设计采用8位精度的DA转换器DAC0832、精密基准源LM336-5.0、7805和两个CA3140运算
放大器构成稳压源,实现了输出电压范围为-5V~+5V,电压步进0.1V的数控稳压电源,最
大纹波只有6mV,具有较高的精度与稳定性。另外该方案只采用了3按键实现输出电压的方
便设定,显示部分我们采用了诺基亚3310手机夜晶显示器来显示输出电压值和电流值。
基本要求
1) 输出电压:范围-5V~+5V,步进0.1V,纹波≤10mV。
2) 输出电压可预置在-5V~+5V之间的任意一个值。
3) 输出电流≤500mA。
4) 数字显示输出电压值和电流值。
5) 为实现上述几部件工作,自制稳压直流电源,输出±15V,+5V。
1.2 系统基本方案
根据题目要求,系统可以划分为输出部分,人机接口部分和直流稳压电源。其中输出
部分是由D/A转换后再放大得到的,人机接口包括4个按键和液晶显示部分,直流稳压电
源包括两组电源。
方案一: 三端稳压电源
采用可调三端稳压电源构成直流可调电源的电路如图1.1所示。怎样实现数控呢?我们
把图1.1中的可变电阻RP用数字电位器来代替,就能实现数控了。但由于三端稳压芯片
LM317和LM337的输出电压不能从0V起调,输出公式:Vout=1.25×(1+R2/R1)。所以,可
以采用在输出的地方加两个二级管,利用PN节的固有电压来实现从0V起调,如图1.2所示。
+15VU1
Vin
GND
LM317
Vout
C1
1000u
C2
100u
R1
10
1K
RP
x9c102
C3
100u
C4
10u
R110
C4
10u
C3
100u
RP
x9c1021K
C2
100u
C1
1000u
U1
+15V
GND
Vout
LM337
Vin
图1-1
1
+15VU1
Vin
GND
LM317
Vout
D?D?
DiodeDiode
C1
1000u
C2
100u
R1
10
1K
RP
x9c102
C3
100u
C4
10u
图1.2
优点:该方案结构简单,使用方便,干扰和噪音小
缺点:数字电位器误差较大,控制精度不够高,误差电压较大。同时更重要的是几乎所有的
数字电位器能够容忍的电流都在20mA以下。所以,这种方案就被否决了。
方案二:采用A/D和D/A
采用A/D和D/A构成直流电源的电路如图1.3和图1.4所示。采用单片机构成直流电源
的电路如图1.3所示,利用AVR单片机自带的D/A口DAC0输出0-2.5V的电压,然后经一
级反相放大器和跟随器,此时可以输出0到-5V电压。但是因为A/D变换器只能采集0到
+2.56V的电压,所以再在跟随器后面加一级反相放大器器然后送回到A/D采样,MCU比较发
现DAC0输出为正确电压时,则从跟随器后直接输出电压,这样就可以输出0到-5V的电压
了。当需要正相电压时从DAC1口输出电压,这时就不需要反相,其它原理与DAC0相似。
+5V
R1
Op Amp
DAC0
DAC1
R1
10
2
6
3
2
R1
10
MCU
-5V
R110
A/D
Port
Port
-5V
VCC
AR?
AR?
3
6
2
2
Op Amp
Op Amp
R1
R1
10
10
3
6
V0
VCC
-5V
Op Amp
Op Amp
3
6
AR?
R1
10
2
6
3
10
AR?AR?
-5V
+5V
R1
10
图1.3
优点:精确度高,纹波小,
效率和密度比较高,可靠性也不错。
缺点:电路相对复杂,AVR单片机的IO口不能容忍负电压,否则会被损坏。所以,这种方
案也行不通。
方案三:采用数字电位器与运放到组合
如图1.4所示,在该方案中我们用两个数字电位器代替了MCU中的D/A,这样可以降低
成本,同时简化电路,从两个串连的数字电位器可以直接输出-5V到+5V的电压同上面方案
一样,当输出反相电压时在送电压回A/D采样时要先经过一次反相。但同样存在上面的问题。
2
+5V
+5V
R1
RPot1
AR?
1K
1K
R2
RPot1
R3
1K
Res1
3
6
2
Op Amp
-5V
-5V
MCU
Q2
2N3906
Vo
A/D
Port
Port
R4
10
6
3
R610
Op Amp
AR1
2
R5
10
+5V
Q1
2N3904
图1.4
优点:电路结构更简单,降低了成本
缺点:因为数字电位器电阻误差大,且单片机的A/D口容易损坏。
方案三:采用7805构成直流电源
采用7805构成直流电源的电路如图1.5所示,改变RP阻值使7805的公共端的电压在
0到-10V之间可调,则7805的输出端电压就可实现-5V-+5V之间可调了。这种方案是利
用了7805的输出端与公共端的电压固定为+5的特性来设计的。但同样存在不好数控的问题。
+15vU1
Vin
GND
7805
Vout
C1
1000u
C2
10u
-10V
Rp
X9C102
1K
C3
100u
C4
10u
图1.5
方案四 方案三与方案四结合,然后再以+5V为参考输出
显示
8
D/A转换器
电流-电
压转换
及放大
+15V
7805
Atmega8
键盘
输出
功率放大
-10V~0V
+5V
ADC0
放大
3
如上图所示,采用数模转换器输出电流,经电压转换和反向放大之后得到-10V~0V的电压,
把这个电压送到三端稳压器件7805的公共端,然后,再以+5V作为参考则输出的电压就能
实现在-5V~+5V任意可调。采样时,是对地采样的,就省去了负电压不好采样的麻烦,这也
是我们的创新之处。
1. 主要单元电路设计
电源电路单元
该电路用了7805、7815和7905、7915制成了两组稳压直流电源电路分别得到±15V和
±5V的电源。为了防止恒流源电路中的较大电流对控制部分产生干扰,将控制部分的电源
和恒流源电路电源分成独立的两部分,分别由两组变压器供电,并且,在电源的输出极加上
LC滤波电路。通过实际测量发现加LC滤波器之前的纹波高达50~60mV,但是通过滤波之后,
电压输出,有了明显的改善,纹波只有10mV左右了。
人机接口部分的单元电路设计 LCD显示界面
按键键盘:
:
数模转换电路:
4
DAC0832接口电路:
用单片机的P3口来控制DAC0832输出电压。
0832输出电路:
DAC0832输出的电压通过两个CA3140的两级放大,从Vout1 和Vout2两路输出实现输出
正负5V的电源。
精密基准源:
5
用LM334和一个10K的可调变阻构成了一个精密5V基准电压,提高系统的精密度。
纹波、尖峰干扰处理:
未加电源滤波器之前,从电源电路输出端测得的纹波有50~60mV,当加了电源滤波器之
后,电源电路输出端的纹波只有6~8mV了。在主控板的电源输入端分别再对±15V、±5V
加一级LC滤波,最后把纹波控制在6mV以下了。
主控电路保护二极管:
二极管用以防止电流倒灌,防止烧坏电源。
功率放大驱动电路
+15V
输出
输
入
-15V
上图是由OP放大器与推挽射极跟随器相组合的电路。因为使用将NPN与PNP晶体管
的共同连接的推挽射极跟随器,该电路在输出端不取电流时,发射极无电流流动,所以电路
的效率非常高。这是该电路的一大特点。没有反馈回路时,推挽射极跟随器的开关失真很大,
假如反馈后,开关失真变小,但仍然存在。为了解决这个问题我们加入了偏置电路,由于在
各自的晶体管上加两个二级管的V
F
电压(≈1.2V),所以在发射极电阻上分别加一个PN
节的电压(≈0.6V)。该电压用发射极设定电流(零点几至数毫安)来除就求出发射极电阻。
在偏置电路里流动的电流,是由比晶体管基极电流大得多的值来决定的,但若太大,
则OP放大器就不能驱动偏置电路,所以设定该电流在1mA以下是比较妥善的。
3.系统的软件设计
6
3.1 程序流程图
开 始
‘+’键按下还是
‘-’键按下?
‘+’键按下
‘-’键按下
Flag标志位置‘1’
Flag标志位清‘0’
扫描键盘,从键盘输入两
位数,作为输出电压值。
对应的值在0~50之间
启动键是否按下?
N
Y
显示设定的电压值,并将
起转换为相对应数字量,
送到DA,进行数模转换
N
判断‘↑’键是
否按下
判断‘↓’键是
否按下
Y
‘1’
判断flag标志位
为‘1’还是‘0’
‘0’
判断电压值是否
等于5V?
N
Y
电压值设为5V不变
电压绝对值减少0.1
的步进量
电压绝对值增加0.1
的步进量
7
4.2 指标测试
1、 输出电压:范围-5V~+5V,步进0.1V,纹波≤6mV。初始状态时,可以通过4
个按键输入-5.0V~+5.0V之间的任意电压值,并实时显示。显示值与实际测量
值同步,且在-5.0V~+5.0V之间的调节过程中最大误差为0.03V;
2、 输出电压可预置在-5V~+5V之间的任意一个值,并且设有电压步进0.1V的增
减键,实时可调,有自动扫描代替人工按键功能,步进0.1V ;
3、 输出电流≤500mA ;
5、 带负载时可以显示电流值,并通过功能键进行切换,换到电流控制档,可控制电
流在10mA~100mA自由调节。
4、 输出电压调整率≤0.5%(输入电压220V变化范围+15%~-20%下,空载到满载);
8
9
6、 线性度:(数据分析)
8.纹波测试结果:
不带负载时的纹波测试图:
带负载时的纹波测试图:
10
从波形图中可以看出,加负载后,纹波变得更加密集了。是因为,加了负载
之后,就在电路中形成了回路,在负反馈的过程中,相应的调整管就需要作调整,
以保证输出的电压的稳定性。所以,我们看到了以上的现象。但是,纹波的幅值
并没有增加,仍为5.44mV这也说明了电路的稳定性比较好。
附录1:程序清单
#include
#include
#include "lcd3310.h"
#define osccal 0x7d
void main(void)
{
uchar key,num_flag=0,gb_b=40,flag=0,dac_dat=0;
char theta=0;
short mid=0,midd=0,m_v=0;
port_init();
LCD_init(); //³õʼ»¯Òº¾§
LCD_clear();
LCD_write_chinese_string(0,0,12,3,0,0,0);//д¡±µçѹ:¡°
LCD_write_String(40,0,"0 00");
11
OSCCAL=osccal; //УÕý¾§ÕñƵÂÊ
LCD_write_chinese_string(0,4,16,5,0,0,1);//д¡±Êý¿ØµçÔ´¡°
LCD_draw_map(47,0,point,7,14);//СÊýµã
LCD_draw_map(73,0,voltge,12,12);//Êä³öV
LCD_write_chinese_string(0,2,12,3,0,0,2);//д¡±µçÁ÷:¡°
LCD_write_String(46,2,"123");
LCD_draw_map(68,2,current,16,12);//Êä³ömA
dac_wr_0;//ʹÄÜDAC Vo=(Êý×ÖÂë-128)*Vref/128
PORTD=0x7f;
while(1)//Õý¸ººÅÊäÈë¼ì²â£¬ÓÉÈ·Èϼü½áÊø
{
//¼üÅÌɨÃè
key=PINB&0x02; //PB1¶ÔÓ¦"+"
if(key==0x00)
{
delay_nms(85);
}
key=PINB&0x80; //PB7¶ÔÓ¦"-"
if(key==0x00)
{
delay_nms(85);
key=PINB&0x40; //PB6¶ÔÓ¦"È·ÈÏ"
if(key==0x00)
{
delay_nms(85);
key=PINB&0x40;
if(key==0x00)
{
key=PINB&0x80;
if(key==0x00)
{
LCD_draw_map(30,0,reduce,8,12);//Êä³ö-;
}
num_flag=1;//±íʾ¸ºÖµ
flag=1;
key=PINB&0x02;
if(key==0x00)
{
LCD_draw_map(30,0,plus,8,12);//Êä³ö+;
}
num_flag=0;//±íʾÕýÖµ
flag=1;
}
12
if(flag==1)
}
{
flag=0;
break;
}
else
{
}
}
}
while(1)
{
volt_disp();
delay_nms(80);
//¼üÅÌɨÃ裬Åжϼӻ¹ÊǼõ
key=PINB&0x02; //PB1¶ÔÓ¦"+"
if(key==0x00)
{
delay_nms(85);
}
key=PINB&0x80; //PB7¶ÔÓ¦"-"
if(key==0x00)
{
delay_nms(85);
key=PINB&0x80;
if(key==0x00)
{
dis_num[num_bit]--;
}
if((dis_num[num_bit]-'0')>=255)
{
dis_num[num_bit]=0+'0';
}
key=PINB&0x02;
if(key==0x00)
{
dis_num[num_bit]++;
}
if((dis_num[num_bit]-'0')>=9)
{
dis_num[num_bit]=9+'0';
}
13
);
}
key=PINB&0x40; //PB6¶ÔÓ¦"È·ÈÏ"
if(key==0x00)
{
delay_nms(85);
key=PINB&0x40;
if(key==0x00)
{
num_bit++;
if(num_bit==4)//µçѹÉèÖÃÍê±Ï
{
mid=(short)(100*(dis_num[0]-'0')+10*(dis_num[2]-'0')+(dis_num[3]-'0')
}
//½øÈëʵʱµ÷ѹ½×¶Î
while(1)//´Ó¸öλµ½Ê®·Öλ¡¢°Ù·ÖλÒÀ´ÎÉ趨ÊýÖµ£¬ÓÉ"+"¡¢"-"¼üÀ´½øÐÐÉ
}
}
else if(num_bit==1)
{
num_bit++;
}
if(mid>=500)//°ÑÉèÖõĵçѹֵÏÞ¶¨ÔÚ-5~+5V·¶Î§Ö®ÄÚ
{
}
if(num_flag==0)//É趨µÄÊÇÕýµçѹ
{
}
else //É趨µÄÊǸºµçѹ
{
mid=-mid;
}
dac_dat=(uchar)(0.25*mid+128);
PORTD=dac_dat;
volt_disp();
break;
dis_num[2]=dis_num[3]=0;
dis_num[0]=5;
}
14
{
key=PINB&0x02; //ÓÐ"+"¼ü°´ÏÂʱ
if(key==0x00)
{
delay_nms(85);
key=PINB&0x02;
if(key==0x00)
{
if(mid>=490)
{
mid=500;
}
else
{
mid+=10;
}
}
}
key=PINB&0x80; //ÓÐ"-"¼ü°´ÏÂʱ
if(key==0x00)
{
delay_nms(85);
key=PINB&0x80;
if(key==0x00)
{
if(mid<-490)
{
mid=-500;
}
else
{
mid-=10;
}
}
}
if(mid>=0)//ÊÇÕýµçѹ
{
LCD_draw_map(30,0,plus,8,12);//Êä³ö+;
}
else //ÊǸºµçѹ
{
LCD_draw_map(30,0,reduce,8,12);//Êä³ö-;
}
dac_dat=(uchar)(0.238*mid+128)+theta;//0.24938 132.80
15
}
midd=mid;////mid¶ÔÓ¦¸ø¶¨µçѹ µÄ100±¶
if(midd<0)
{
midd=-midd;
}
else
{
}
dis_num[0]=midd/100+'0';
dis_num[2]=midd/10%10+'0';
dis_num[3]=midd%10+'0';
m_v=volt_mesue(40,2,0);
current_mesue(40,4,1);
m_v=m_v-500;//ʵ²âµçѹ,Ïà¶ÔÓë5VµÄµçѹ //ʵ¼Êµçѹ µÄ100±¶
{
theta--;
}
else
{
theta++;
}
PORTD=dac_dat;
volt_disp();
if(m_v>mid)
}
附录2:系统使用说明
1、 系统上电;
2、 设置所需电压的正负号;
3、 设置-5.0V~+5.0V之间的任意电压值,先设置个位,按确认键后,在设置十分位,
再按确认键,最后同样的设置百分位;
4、 按确认键,从输出端口输出的电压即为所需电压;
5、 此时可以按‘+’‘-’来微调电压,按着不放,它会不断的按0.1V的步进增减或减
少。
16