可输出电源课程设计.docx
《可输出电源课程设计.docx》由会员分享,可在线阅读,更多相关《可输出电源课程设计.docx(25页珍藏版)》请在冰豆网上搜索。
可输出电源课程设计
目录
一、设计题目………………………………………2
二、具体要求………………………………………2
三、总体方案制定…………………………………2
四、控制系统原理分析……………………………3
五、相关器件的选择原则…………………………14
六、程序流程………………………………………15
七、程序……………………………………………18
八、参考书目………………………………………26
九、心得体会………………………………………26
控制技术课程设计说明书
一、设计题目
电压可调输出电源控制系统设计
二、具体要求
输出电压0-20V连续可调,最大输出电流1.5A,调节精度为0.1V。
了解电源可调控制系统的特点、组成和接口电路;掌握微机或单片机等与D/A芯片、RS232串口的接口电路;掌握C语言设计控制程序的方法;应用各种控制算法,实现电压的稳态输出。
设计内容包括:
控制方案选择及比较;控制原理图;系统组成;硬件选择及设计(包括微机、电路、各元器件等);软件选择及设计(支持平台,开发工具);控制程序设计;与控制系统相关的必要的机械图;其他。
三、总体方案制定
基于单片机的直流数控电压源设计方案。
该方案采用单片机控制,计算机上位机与单片机通过RS232串口总线连接实现通讯,单片机的端口与DA转换芯片DAC0832芯片连接,DAC0832输出的电压经过电压放大、电流放大然后输出。
这样通过给上位机软件发送数据,单片机就可以接收到数据,单片机内部的程序将数据采集、分析、判断、处理之后,就可以将结果给寄存器,从而相应的端口就有对应的数据(具体显示为00000000到11111111这256种组合),而端口与DAC0832连接,从而数据传输给DAC0832,从而DAC0832输出相应的电压。
此电压经过LM358电压放大、三极管电流放大最后可作为输出电压输出。
四、控制系统原理分析
(一)、算机与单片机串口通讯电路
图2、C机与单片机通讯电路图
单片机实现与PC机之间的通讯时,必须使用电平转换接口芯片,因为单片机输出的是TTL电平,必须经过转换才能与PC机一致。
本方案采用的是RS-232协议,所以单片机需要采用RS-232接口。
MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5V单电源供电。
1、RS-232协议
目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。
RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。
RS-232采取不平衡传输方式,即所谓单端通讯。
收、发端的数据信号是相对于信号地,如从DTE设备发出的数据在使用DB25连接器时是2脚相对7脚(信号地)的电平。
典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5~+15V,负电平在-5~-15V电平。
当无数据传输时,线上为TTL,从开始传送数据到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。
接收器典型的工作电平在+3~+12V与-3~-12V。
由于发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。
RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为3~7kΩ。
2、MAX232:
MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。
引脚介绍:
第一部分是电荷泵电路。
由1、2、3、4、5、6脚和4只电容构成。
功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。
第二部分是数据转换通道。
由7、8、9、10、11、12、13、14脚构成两个数据通道。
其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。
8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。
TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。
第三部分是供电。
15脚GND、16脚VCC(+5v)。
特点:
(1)符合所有的RS-232C技术标准
(2)只需要单一+5V电源供电
(3)片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V- (4)功耗低,典型供电电流5mA (5)内部集成2个RS-232C驱动器 (6)内部集成两个RS-232C接收器。
相关原理说明:
计算机所发出的信号传到RS232接口的发送脚即3脚,此信号经MAX232进行电平转换后发送到单片机的接收脚。
单片机相应的寄存器就可将信号接收并处理,同样单片机也可以发送数据给计算机,这样实现计算机和单片机的通讯。
计算机和单片机通讯有两部分,一是在计算机开发环境中编译好的程序下载到单片机中,一是用计算机通过串口调试助手发送数据给单片机。
下载软件是使用的STC公司推出的STCISP下载软件。
下载程序时需要冷启动,即先给单片机不上电,然后下载程序,然后给单片机上电。
因为STC单片机是只有在冷启动的时候才会检查下载指令,这样才能和PC通讯。
(二)、单片机最小系统介绍
单片机最小系统主要由电源、复位、振荡电路以及扩展部分等部分组成。
最小系统原理图如图6所示。
对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源模块的稳定可靠是系统平稳运行的前提和基础。
51单片机虽然使用时间最早、应用范围最广,但是在实际使用过程中,一个和典型的问题就是相比其他系列的单片机,51单片机更容易受到干扰而出现程序跑飞的现象,克服这种现象出现的一个重要手段就是为单片机系统配置一个稳定可靠的电源供电模块。
此最小系统中的电源供电模块的电源可以通过计算机的USB口供给,也可使用外部稳定的5V电源供电模块供给。
电源电路中接入了电源指示LED,图中R11为LED的限流电阻。
S1为电源开关。
图4、最小系统电路图
1、电源供电模块
图5、电源模块电路图
对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源模块的稳定可靠是系统平稳运行的前提和基础。
51单片机虽然使用时间最早、应用范围最广,但是在实际使用过程中,一个和典型的问题就是相比其他系列的单片机,51单片机更容易受到干扰而出现程序跑飞的现象,克服这种现象出现的一个重要手段就是为单片机系统配置一个稳定可靠的电源供电模块。
此最小系统中的电源供电模块的电源可以通过计算机的USB口供给,也可使用外部稳定的5V电源供电模块供给。
电源电路中接入了电源指示LED,图中R11为LED的限流电阻。
S1为电源开关。
2、复位电路
图6、复位电路图
片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。
单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。
当复位电平持续两个机器周期以上时复位有效。
复位电平的持续时间必须大于单片机的两个机器周期。
具体数值可以由RC电路计算出时间常数。
复位电路由按键复位和上电复位两部分组成。
(1)上电复位:
STC89系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10uF。
(2)按键复位:
按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。
3、振荡电路
图7、振荡电路图
单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。
在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。
高级的精度更高。
有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。
晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
单片机晶振的作用是为系统提供基本的时钟信号。
通常一个系统共用一个晶振,便于各部分保持同步。
有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。
晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。
如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。
STC89C51使用11.0592MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。
(三)、DA转换器DAC0832
1、D/A转换器原理
DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。
如图4-82所示,它由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。
运算放大器输出的模拟量V0为:
图8
由上式可见,输出的模拟量与输入的数字量(
)成正比,这就实现了从数字量到模拟量的转换。
在DAC电路结构中,最简单而实用的是采用T型电阻网络来代替单一的权电阻网络,整个电阻网络只需要R和2R两种电阻。
在集成电路中,由于所有的组件都做在同一芯片上,电阻的特性可以做得很相近,而且精度与误差问题也可以得到解决。
图10.8是采用T型电阻网络的4位D/A转换器。
4位元待转换资料分别控制4条支路中开关的倒向。
在每一条支路中,如果(资料为0)开头倒向左边,支路中的电阻就接到地;如果(资料为1)开关倒向右边,电阻就接到虚地。
所以,不管开关倒向哪一边,都可以认为是接“地”。
不过,只有开关倒向右边时,才能给运算放大器输入端提供电流。
T型电阻网络中,节点A的左边为两个2R的电阻并联,它们的等效电阻为R,节点B的左边也是两个2R的电阻并联,它们的等效电阻也是R,…,依次类推,最后在D点等效于一个数值为R的电阻接在参考电压VREF上。
这样,就很容易算出,C点、B点、A点的电位分别为-VREF/2,-VREF/4,-VREF/8。
在清楚了电阻网络的特点和各节点的电压之后,再来分析一下各支路的电流值。
开关S3,S2,S1,S0分别代表对应的1位二进制数。
任一资料位Di=1,表示开关Si倒向右边;Di=0,表示开关Si倒向左边,接虚地,无电流。
当右边第一条支路的开关S3倒向右边时,运算放大器得到的输入电流为-VREF/(2R),同理,开关S2,S1,S0倒向右边时,输入电流分别为-VREF/(4R),-VREF/(8R),-VREF/(16R)。
如果一个二进制数据为1111,运算放大器的输入电流
I=-VREF/(2R)-VREF/(4R)-VREF/(8R)-VREF/(16R)
=-VREF/(2R)(20+2-1+2-2+2-3)
=-VREF/(24R)(23+22+21+20)
相应的输出电压
V0=IR0=-VREFR0(24R)(23+22+21+20)
将资料推广到n位,输出模拟量与输入数字量之间关系的一般表达式为:
V0=-VREFR0/(2nR)(Dn-12n-1+Dn-22n-2+…+D121+D020)(Di=1或0)
上式表明,输出电压V0除了和待转换的二进制数成比例外,还和网络电阻R、运算放大器反馈电阻R0、标准参考电压VREF有关。
一个8位D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。
输入可有28=256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。
2、DAC0832芯片介绍
DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。
所以这个芯片的应用很广泛。
结果采用电流形式输出。
若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现。
运放的反馈电阻可通过RFB端引用片内固有电阻,也可外接。
DAC0832逻辑输入满足TTL电平,可直接与TTL电路或微机电路连接。
DAC0832引脚功能说明:
DI0~DI7:
数据输入线,TLL电平。
ILE:
数据锁存允许控制信号输入线,高电平有效。
DAC0832管脚图
CS:
片选信号输入线,低电平有效。
WR1:
为输入寄存器的写选通信号。
XFER:
数据传送控制信号输入线,低电平有效。
WR2:
为DAC寄存器写选通输入线。
Iout1:
电流输出线。
当输入全为1时Iout1最大。
Iout2:
电流输出线。
其值与Iout1之和为一常数。
Rfb:
反馈信号输入线,芯片内部有反馈电阻.
Vcc:
电源输入线(+5v~+15v)
Vref:
基准电压输入线(-10v~+10v)
AGND:
模拟地,摸拟信号和基准电源的参考地.
DGND:
数字地,两种地线在基准电源处共地比较好
3、DA应用
在本方案中,DA的应用电路如上所示。
单片机P0口数据传输到DAC0832后,DA转换器内部将其转换成相应的电流。
因本方案中要求实现电压变化故用5V稳压芯片接在11脚和12脚之间,这样DA芯片8脚输出0到2.5V连续变化的电压。
此电压经过集成运放LM358就会放大相应的倍数,放大的倍数可以通过电阻来调节。
这样通过调节电阻就可以实现0到20V之间连续变化的电压。
因为要求的最大电压是20V,故LM358芯片8脚应加24V,否则不能产生高于15V的电压。
4、三极管放大电路
放大电路的功能是利用三极管的电流控制作用,或场效应管电压控制作用,把微弱的电信号(简称信号,指变化的电压、电流、功率)不失真地放大到所需的数值,实现将直流电源的能量部分地转化为按输入信号规律变化且有较大能量的输出信号。
放大电路的实质,是一种用较小的能量去控制较大能量转换的能量转换装置。
放大电路组成的原则是必须有直流电源,而且电源的设置应保证三极管或场效应管工作在线性放大状态;元件的安排要保证信号的传输,即保证信号能够从放大电路的输入端输入,经过放大电路放大后从输出端输出;元件参数的选择要保证信号能不失真地放大,并满足放大电路的性能指标要求。
五、相关器件的选择原则
(一)、TIP122基本信息
类型:
晶体管 电压, Vceo:
100V 功耗, Pd:
65W 集电极直流电流:
5A 直流电流增益hFE:
1000 封装类型:
TO-220 针脚数:
3 总功率, Ptot:
65W 晶体管数:
1 晶体管类型:
功率 最大连续电流, Ic:
5A 温度:
25°C 电压, Vcbo:
100V 电流, Ic hFE:
3A 电流, Ic最大:
5A 直流电流增益hfe,最小值:
1000 表面安装器件:
通孔安装 集电极电流, Ic平均值:
5A 饱和电压, Vce sat最大:
2V 功能:
TIP120/121/122,Medium Power Linear Switching Applications,中等功率线性开关器件,常用在低速开关电路之中。
(二)、STC89C52单片机简介
TC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35Mhz,6T/12T可选。
六、程序流程
(一)、主控程序
(二)、数据判断及处理流程
返回字符程序
返回字符串程序
七、程序
/********INCLUDE**********/
#include
/***********宏定义*************/
#defineucharunsignedchar
#defineuintunsignedint
/*********位声明***********/
sbitcsda=P1^0;
sbitwr=P1^1;
/***********定义变量***********/
uinta,m,n,num;
ucharflag,LOGO;
ucharreceive[20];
/***********返回字符程序***********/
voidcharacter_send(ucharx)
{
SBUF=x;
while(!
TI);
TI=0;
}
/************返回字符串程序**********/
voidstring_send(uchar*string)
{
while(*string!
=0)
{
character_send(*string);
string++;
}
}
/********延时函数**********/
voiddelay(ucharz)
{
uintx,y;
for(x=0;xfor(y=0;y<120;y++);
}
/********串口初始化**********/
voiduart_ini()
{
TMOD=0x21;//定时器工作方式寄存器设置,定时器一工作在自动重装模式
TH1=0xfd;//波特率设置
TL1=0xfd;//波特率设置
TR1=1;//启动定时器一
SM0=0;//SCON寄存器设置
SM1=1;//SCON寄存器设置
REN=1;//SCON寄存器设置
PCON|=0x80;//PCON寄存器设置,波特率倍增位,此处波特率倍增
}
/********定时器初始化**********/
voidtimer0_ini()
{
TMOD=0x21;//定时器工作方式寄存器设置,定时器0工作在方式一
TH0=(65536-1)/256;//定时器赋初值
TL0=(65536-1)%256;//定时器赋初值
TR0=1;//启动定时器0
ET0=1;//开定时器0中断
}
/********主函数**********/
voidmain()
{
uinti;
uart_ini();
timer0_ini();
while
(1)
{
while(!
RI);//等待每一个字节接受完毕
EA=0;//关总中断
RI=0;//RI清零
a=SBUF;//将接收缓冲器SBUF中接收的数据读出来,放到a中
//SBUF=a;
receive[i++]=a;//将a中的数据依次放到数组receive[]中
if((receive[i-1]==0x0d)&&(i>=4))//判断当接收的最后一个字节为0d且字节数大于等于四时满足条件
{
if(receive[0]==0x01)//第一个字节是01时满足条件
{
if(receive[i-2]==i)//计数指针的值和所接收到的计数字节中的数如果相等则满足条件
{
if(receive[1]==0x02)//数据码为02时满足条件启动
{
string_send("AA55GOON");//给下位机发送握手信号AA55GOON并且使DA的片选和WR有效,以便
num=0x00;//发送控制电压字符。
并且将num清零,以便在进入中断时P0变为0,最终
csda=0;//保证发送启动码时,DA的输出为0
wr=0;
}
elseif(receive[1]==0x01)//数据码为01时满足条件
{
string_send("AA55STOP");//给下位机发送握手信号AA55STOP并且使DA的片选和WR无效,
P0=0x00;//并且使DA的输入立刻为0,防止DA锁存时电压不为0
csda=1;
wr=1;
}
else
string_send("INPUTAGAIN");//如果发送的数据码不是01或者02,则发送错误
}
else
string_send("ERROR");//如果计数字节中的数和计数指针不一致,则发送错误通知下位机重新新发送
}
elseif(receive[0]==0x02)//如果功能码为02满足条件
{
if(i==receive[i-2])//计数指针的值和所接收到的计数字节中的数如果相等则满足条件
{
if(i==4)//如果发送字节数是四满足条件
{
num=receive[1]*0.1275;//处理数据
string_send("AA55");
}
elseif(i==5)//如果发送字节数是五满足条件
{
num=receive[1]<<8;//处理数据
num=num+receive[2];
num=num*0.1275;
if(num>0xff)
num=0xff;
string_send("AA55");
}
}
else//如果计数字节中的数和计数指针不一致,则发送错误
string_send("ERROR");
}
else//如果功能码不是01或者02则发送错误通知下位机重新新发送
string_send("INPUTAGAIN");
i=0;
}
elseif((i==4)&&(receive[0]!
=0x02))//判断发送数据如果功能码是01并且字节数为四但