基于单片机的数控直流稳压电源Word格式文档下载.docx
- 文档编号:17398604
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:10
- 大小:258.99KB
基于单片机的数控直流稳压电源Word格式文档下载.docx
《基于单片机的数控直流稳压电源Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的数控直流稳压电源Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
3、显示模块:
本来准备使用液晶显示,可是想想我们的层次不够,液晶现实的额程序不会写,只能退而其次,选择使用单片机通过锁存器控制8段LED数码管直接显示,这样可以精确的显示输出电压。
系统结构设计图如上图所示。
该系统主要由单片机最小控制系统、显示电路、独立按键、D/A转换电路、放大电路和稳压电路组成。
单片机设定预输出值,并可以通过独立键盘改变单片机的预设值。
然后通过DAC0832转化为模拟量,再经过运算放大和稳压稳流电路最后输出预设电压值,通过LED显示能够直观的看到预设值。
因为器材原因,我们设计的稳压电源采用的是外部稳压器提供的电源。
这样虽然算不上是一个完整的数控直流稳压电源,但是,除了这点,我们设计的电源基本已经复合要求。
1、最小系统控制电路设计:
最小控制系统由STC单片机、晶振、独立键盘和复位电路等组成。
如下图所示。
AT89C51的管脚排列如上图所示,9管脚接复位电路,18、19管脚为晶振的两个输入端,20管脚接地,40管脚接+5V。
晶振Y1和两个电容C2、C3构成自激震荡,连接到单片机的X1和X2端,电解电容C4、电阻R5和按键S5构成复位电路,连接到单片机的复位端。
当按键S5按下后,复位端通过R5与+5V电源接通,电容迅速放电,使RST管脚为高电平;
当复位按键S5弹起后,+5V电源通过R6对电容C4重新充电,RST管脚出现复位正脉冲。
2、D/A转换电路设计:
如上图所示,DA0832的8位数据线D0~D7与单片机的P1口连接,1管脚(CS)和17管脚(Xfer)接地,8管脚(Vref)的参考电压为5V,则LSB=5V/2^8=0.02V,即最小分表率为0.02V。
11管脚(Iout1)和12管脚(Iout2)为电流输出端。
3、放大电路与稳压稳流电路设计:
如上图所示,本设计中将DAC0832的Iout2接地,采用Iout1输出,然后接运算放大LM358P将输出电流转化为电压。
经过LM358P转化后的电压值也为5V。
为了达到与单片机预设电压范围2~15V同步,输出端电压需要经过二级放大。
第一级不放大,直接将D/A输出的电流转化为电压,第二级放大,放大倍数
=R2/R1=5.5K/1.1K=5。
这里的R2由于找不到5.5K的电阻,所以用电位器代替。
因为DA0832转换后的电压的范围为0~5V,即DA0832的8位输入端全为高电平1时,输出电压为5V,输入端全为低电平0时,输出电压为0V,且呈线性变化。
为此为了使输出与LED显示同步,必须经过放大倍数
=5的二级放大。
再经过运放放大后的电压已经复合要求,可是电流却没有复合要求,这就要用到了三段稳压器LM317。
在这里,LM317作为电流稳压器,其应用电路如下图所示,其中
所以R1的值应该为2.5Ω。
可是,我们在实验室能找到的最小电阻是200Ω,这还是远远大于2.5Ω。
所以我们的输出电流才6ma。
这里还要说的是,本来我们采用的运算放大器是Lm324n,可是,因为我的不小心,在测试运放放大的时候,把芯片烧坏了。
并且我们手头没有多余的芯片,幸亏和我们做同一方案的同学有运放Lm358p,所以我们也采用了Lm358p。
4、显示模块设计:
如上图所示,显示部分采用数码管sr410561k,锁存器74HC573。
数码管段码A~DP接锁存器1的Q0~Q7,数码管的位选1~3接锁存器2的Q0~Q3。
P0接锁存器1、2的D0~D7。
锁存器1的LE接单片机P2^2,锁存器2的LE接单片机P2^3。
数码管的a~dp接锁存器1的Q0~Q7,数码管的位选1~3分别接锁存器2的Q0~Q3。
在使用数码管的过程中,我们发现数码管的位选直接接到单片机的P2口上,会使数码管的亮度不够。
现在我们有2种方法解决。
第一,接上拉电阻,经计算,200Ω左右的电阻可使数码管达到最亮,为了保险起见,可以使用400Ω的电阻。
但当时我们手头刚好没有400Ω的电阻,所以我们采用了第二种方法,把数码管的位选接锁存器上。
(4)软件设计:
程序流程图设计:
程序设计流程图下图所示。
程序开始以后,首先程序初始化,显示LED预设的初始电压值。
然后进行按键检测,如果没有按键按下,LED显示的电压不变;
如果有按键按下,确认当前LED的调整值。
接着启动D/A转换,将转换后的模拟量送给系统最终输出端。
程序代码:
在附录
(5)系统调试:
显示模块调试:
算出数码管的段码,位选,使数码管能正确的显示预设值。
按键模块调试:
消除抖动,使我们按一下按键的加、减键时,能实现显示程序的步进0.1。
放大稳压电路调试:
为了使输出电压和显示模块对应,我们要调节放大电路的方法倍数。
假使显示的电压为11.3v,那么因为三端稳压器的自带电压为1.25v,所以放大电路输出电压因为11.3-12.5≈10v,所以一级放大的输出电压应为-2v,二级放大的电压应为10v。
稳流方面,因为器材的原因,我们只能把电流稳定在6ma。
(6)系统测试:
各个模块连接起来后,因为电路的改变,可能会改变输出值的大小,所以我们要进行整体的测试:
先测试放大电路的第一级放大,然后调整LM358P和DAC0832连接的那个电位器,使输出电压再次达到预想值。
再调整第二级放大,把放大倍数再次调为5倍。
把程序下载到硬件电路,测试最后输出值,是否为我们的预想值
三、总结
附录:
#include<
reg51.h>
#defineuintunsignedint
#defineucharunsignedchar
#defineDAC0832_PORTP1
sbitduanxuan=P2^6;
sbitweixuan=P2^5;
sbitcs=P2^2;
sbitwr1=P2^3;
sbitS1=P2^0;
//加
sbitS2=P2^1;
//减
ucharnum=20;
ucharcodetable[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
voiddelay(uintz)//延时zms子程序
{
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
}
init()//初始化子函数
{
P1=num;
}
ucharkeyscan()//键盘扫描程序
if(S1==0)
{
delay(10);
//键盘按键消抖
if(S1==0)
{
if(num==150)
{
num=20;
}
else
{
num++;
}
while(!
S1);
//松手检测
}
if(S2==0)
if(S2==0)
if(num==20)
num=150;
num--;
S2);
return(num);
voiddisplay()//显示程序
duanxuan=1;
P0=table[num/100];
//十位
duanxuan=0;
weixuan=1;
P0=0x80;
weixuan=0;
delay
(1);
P0=((table[num%100/10])&
0xfe);
//个位
P0=0x40;
P0=table[num%10];
//小数
P0=0x20;
uchardazh(ucharn)//D/A转换子程序
{cs=0;
选定芯片
wr1=0;
允许写入
n=num-13;
输出电压值
DAC0832_PORT=n;
//把n送给給DA
//主程序//
voidmain()
init();
while
(1)
{keyscan();
display();
dazh();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数控 直流 稳压电源
![提示](https://static.bdocx.com/images/bang_tan.gif)