A. 基于单片机的可调直流电源设计
我给你一个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
B. 基于单片机的数控直流稳压电源设计 翻译成英文是什么
Design of CNC DC power supply based on singlechip .
自我感觉非常标准,呵呵!
C. 基于8051单片机和DAC0832的可调直流稳压电源设计的汇编语言
51单片机数控直流电源的设计2:
#include <REG52.H>
#include <STDIO.H>
#include <INTRINS.H>
#include <MATH.H>
#define uchar unsigned char
#define uint unsigned int
#define _Nop() _nop_()
#define DAT P0
uchar go;
sbit K1=P3^1;//
第一个键
sbit K2=P3^2;//
第二个键
sbit K3=P3^3;//
第三个键
sbit WR2 = P3^0; //DAC
的控制端
//
位定义
#define Lcd_Data P0 //
定义数据端口
sbit RS = P2 ^ 0; //
定义连接端口
sbit RW = P2 ^ 1;
sbit E = P2 ^ 2;
sbit Busy = P0 ^ 7;
bit hold=0;
bit _Int=0;
bit k =0;
bit m=0; 惠州学院毕业论文bit fushu=0;
bit q=0;
//
全局变量定义
uint DAdat;//
存放送到
DA
的数据 32uint x;
//uchar ADdat;//
存放从
ADC
读出的数据
uchar vol; //
存放输入电压值
uchar keynum;
uchar kyreg;
uchar temp;//
存放功能状态
uchar hh;
///
数组定义
static code uchar Disp[]="0123456789-";
static code uchar Disp2[]="Error! ";
static code uchar Disp3[]="Vol is:";
//
函数声明
uchar keyread(void); //
读键函数
uchar keyread2(void); //
读键函数
2
uchar keyread3(void); //
读键函数
3
void reADC(void); //AD
反馈读数函数
uchar cmp(uchar ADdat,uchar DAdat); //
反馈比较函数基于51单片机数控直流电源的设计void lcdinit(); // LCD
初始化函数
void lcdcmd(uchar cmd); //LCD
写控制字函数
void lcddata(uchar dat); //LCD
写数据函数
void seDAC(uchar DAdata);// DAC
送数函数
void delay(uchar t); //
延时函数
void extint(void);
void volchange(); //
输出电压自增自减函数
/***********************DAC
送数
*********************/
main() //
主程序
{
unsigned int vol;
uchar i,j,l=0,a=0,b=0,e=0; 33 bit dian=0;
bit o=0,p=0;//
负数标志位、确认标志位
delay(255);
EA=1;
EX0=1;
PX0=1;
IT0=1;
//EX1=1;
//IT1=1;
pp:
a=b=0;dian=0;o=p=0,x=0;
P1=0;
lcdinit();
lcdcmd(0x80);
for(j=0;j<7;j++) //
开机送
0V
并显示到
LCD
{
lcddata(Disp3[j]);
}
seDAC(128);
DAdat=128;
lcddata('0');
lcddata('0');
lcddata('.');
lcddata('0');
lcddata('V');
while(1)
{
while(!k)
{ delay(200); 34 i=keyread();
if(!m)
{
lcdcmd(0x1);
for(j=0;j<7;j++)
lcddata(Disp3[j]);
m=1;
}
else if(i==11){m=0;goto pp;} //
复位
D. 基于单片机的数控直流稳压电源
看来有些复杂呀,不过我的思路是,通过变压器,滤波电路将交流变为一个电压宽度很大的者流电压,然后通过改变电位器的位置改变输出电压,电位器可以用步进电机控制,单片机控制步进电机的正转反转来控制电位器的位置,从而改变电压,至于精度就得慢慢调节参数改变到合适的。我能想到的是这些了,希望对你有帮助。
E. 我用单片机设计数控直流稳压电源需要买那些器件啊
最简单的是变压器+LM317+DA+AD,就是效率低,网上有这种Proteus的仿真
复杂点的可以把LM317换成集成的DCDC芯片,比如常见的LM2596adj,输出更稳定的可以用ST的L5972或者TI的STP5430等等都可以做到,当然用分离元件也是可以的,
再难点的可以做隔离式开关电源,没有基础还是建议别做这种隔离的。
F. 基于单片机的pi控制直流稳压电源设计
用单片机,确实可以控制电压,但是速度很低。
当电压有所波动的时候,由单片机把它调整回来,就慢的太多了。
那么,就是:电压不稳。
因此,不适合作为“稳压电源”。
G. 单片机做数控直流稳压电源
http://v.youku.com/v_show/id_XMzg3ODIzNTAw.html,借鉴这个视频,是0-9.9v的,0.1步进,1v步进的也有,先看看吧
H. 单片机的数控直流稳压电源最好学哪种单片机啊能不能发个参考数据啊
最简单的是用最普通的51,足够了。
1、输出电压范围很大,需要使用大功率三极管来做,场效应管也可以。
2、步进0.1V,这个很容易,程序设计问题。
3、最大电流3A,这个要求很高,决定了大功率晶体管的选型,估计得用金属封装的才好(比如TO3封装的2N3055)。场效应管需要注意工作点的状态(TO247封装的,IRFP150这类的)。
4、纹波电压10mV,这个决定了必须考虑线性电源的方法来做。
5、可预置输出电压,这个是程序的问题。
器件:AD可以考虑10位或12位AD,前者是TLC1549,后者是TLC2543。用16位AD,比如AD7705有点浪费。不建议使用单片机自带AD,精度比较差。
还需要用到DA,可以考虑TLC5615,10位DA。
做这个题目,对于刚刚学完单片机,没有太多基础和经验的人来说,保守一点估计,需要1-2个月。单片机没有基础的,就不好说了。以上都是没有高手指导的状态。
I. 基于单片机的可调直流电源设计
我给你一个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