最新基于51单片机恒压恒流源的设计Word文件下载.docx
- 文档编号:8539449
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:17
- 大小:279.15KB
最新基于51单片机恒压恒流源的设计Word文件下载.docx
《最新基于51单片机恒压恒流源的设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《最新基于51单片机恒压恒流源的设计Word文件下载.docx(17页珍藏版)》请在冰点文库上搜索。
而且,传统充电器的充电策略比较单一,只能进行简单的恒压或者恒流充电,以致充电时间很长,充电效率降低。
另外,充电即将结束时,电池发热量很大,从而造成电池极化,影响电池寿命。
针对上述问题,设计了一种智能充电器,尽量延长铅酸蓄电池的使用寿命。
第二章方案论证
一、方案论证与比较
1.1控制器的选择
方案1:
采用AT89S52单片机,该单片机做为经典单片机,方便使用,价格便宜,较长使用;
但其功能单一,使用中需要外加多个其他电路,增加外围电路的设计及成本;
方案2:
选择STC12C5A60S2单片机,此款作为本控制器自身带有AD转换、捕捉、PWM等功能,可减少外围设计且价格适中,开发周期短,编程及调试环境简单,容易实现;
方案3:
选择PIC16F1829单片机,本款控制器功能齐全,属于当前高端的8位MCU,其工作速度快,功耗低,可靠性高,但其开发调试环境都需要专门的调试器,不利于任务的完成。
综上所述,选择方案2;
1.2稳压电路选择
采用集成稳压模块,如LM7805、LM317等。
此种拓扑形式的稳压电路可控性较差,控制精度较低;
采用分离式元件,如大功率达林顿、场效应管等。
电路较复杂,但性能指标可通过自己设计其大小,利于根据单片机的需要设置工作环境,如短路保护定值,负载电流的测量等。
第三章整体设计思路
1)整体主电路框图
主电路框图
3、电源主体
3.1、辅助电源
直流电源部分的工作原理:
交流220V的市电经变压器TI降压、桥式整流电路进行整流,然后通过C1滤波,所得到的电压V=15V同时提供给BUCK变换器和7805,7805三端稳压器稳压后的输出为单片机提供5V的直流工作电源。
若电源准就绪,备发光二极管发亮,显示电源正常。
3.2、主电路
主控电路部分主要由开关型电流控制回路、检测取样电路、液晶显示电路组成。
主电路
4控制电路
4.1、主控电路
主控电路
第四章
单元电路
4.1、充电电流取样检测电路
该电路设置了过流保护,能达到恒流充电目的。
电流取样放大电路,是把取样后的电流以电压形式送回到PWM比较器中去比较,从而决定输出的占空比。
如图2.5所示:
图2.5电流取样检测电路
4.2、充电电压取样检测电路
当接入电池时,检测到电池两端有电压,充电器开始充电。
当检测到电池端电压已经达到最大值时,确定充电已满,调整PWM输出占空比,充电器自动转入浮充电状态,并发出声光报警。
如图2.6所示:
图2.6电压取样检测电路
4.3、检查及保护电路
过载检查及短路保护电路
4.4时钟芯片DS1302辅助电路
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×
8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
[6]
4.4.1引脚功能及结构
在DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768kHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;
其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc≧2.5V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数据输入输出端(双向),后面有详细说明。
SCLK始终是输入端。
4.4.2DS1302的控制字节
DS1302的控制字符表示。
控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;
位5至位1指示操作单元的地址;
最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
4.4.3数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
4.4.4DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。
DS1302与RAM相关的寄存器分为两类:
一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;
另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
4.4.5设计该模块完成的任务
用于为系统提供精确的时间
4.51602液晶显示屏
4.5.1液晶显示的原理
液晶显示材料最常见的用途是电子表和计算器的显示板,为什么会显示数字呢?
原来这种液态光电显示材料,利用液晶的电光效应把电信号转换成字符、图像等可见信号。
液晶在正常情况下,其分子排列很有秩序,显得清澈透明,一旦加上直流电场后,分子的排列被打乱,一部分液晶变得不透明,颜色加深,因而能显示数字和图象。
4.5.2基本用途
该点阵的屏显成本相对较低,适用于各类仪器,小型设备的显示领域。
4.5.3设计该模块的作用
用于显示当前系统信息,即输出电压、电流。
第五章软件设计
主流程图
第五章proteus仿真电路图
5.1仿真电路图
图5-1主电源仿真图
图5-1是本设计的主体部分。
Q4为大功率达林顿管,在此作为调整管,Q3选用2N5551,最为对调整管的一级驱动电路。
由上图可知,供电12V,调节2N5551的输入电压即可改变输出大小的电压。
图5-2电流检测放大电路
图5-2为电流检测放大电路,通过采集RV2上的电压,通过运放的放大到单片机AD转化后即可知道回路中的电流值,从而判断当前电路是否过载。
图5-4DS1302仿真电路图
U3是DS1302是该电子时钟的时钟芯片,它右侧是晶振电路,它的功能是给它提供时钟频率作为DS1302的工作频率。
51单片机不停的从DS1302中读取信息然后在1602液晶显示上显示出来。
EEPROM,它是用来存储时钟闹铃的。
6.1实物图
6.2使用方法
本设计通过液晶显示当前输出电压、电流值,并通过外界两点触按钮实现电压的高低调节,使用简单。
电路设计过流保护,自动控制电流上限。
6.3性能测试
1)纹波大小(测试环境:
负载20Ω/50W)输出12V纹波
输出波形
空载纹波
带载纹波
结论
自申请本设计以来经过分析问题,查找资料,制作实物,编写程序阶段工作,直到系统成型,一共经过了四个多月的时间,其间尝试了两种主电路设计(一是mos管作为开关电路,二是三极管作为开关电路),尝试了avr、51等系列的单片机控制,驱动电路的选择(用不用驱动芯片,光耦隔离)等,最后我们选择了TIP41作为开关电路,51单片机作为控制芯片,三极管放大电路作为驱动电路作为最终的方案。
本设计以单片机为核心设计一种智能恒压恒流电源,不但电路简单,结构紧凑,价格低廉,性能卓越。
本设计程序稍加修改便能够实现对铅酸蓄电池的快速充电,慢充以及涓流三个阶段充电。
输出电压采用数字显示,输人采用按键方式,操作使用方便,具有较高的使用价值。
由于水平有限,并且时间不足,有许多技术与算法都没有深入的研究,需要在以后继续研究中不断的完善,总结如下:
(1)、经过这次设计,它让我接触更多平时没有接触过的科学仪器设备、元器件以及获得相关的仪器调试经验,同时我也发现自己在这方面很多不足之处。
体会到理论知识对实践有很大的指导作用,她让我知道,只有在正确的理论指引下,才能设计出合乎实际需要的硬件电路。
(2)电路的硬件设计能力有待进一步提高。
(3)软件编程能力有待进一步提高。
(4)本设计程序稍加修改便能够实现对铅酸蓄电池的快速充电,慢充以及涓流三个阶段充电。
参考文献
[1]康华光等,电子技术基础模拟部分,北京:
高等教育出版社,1999,第四版,106-111。
[2]康华光等,电子技术基础数字部分,北京:
高等教育出版社,2000,第四版,40-57
[3]李全利,单片机原理及接口技术,北京:
高等教育出版社,2004.1。
[4]张毅刚等,单片机原理及应用,北京:
高等教育出版社,2004。
[6]全国大学生电子设计竞赛组委会,全国大学生电子设计竞赛获奖作品汇编(第一届~第五届),
北京:
北京理工大学出版社,2004,12-50。
[7]STC12C5A60S2官方提供单片机详情介绍
[8]龚运新,单片机C语言开发技术北京:
清华大学出版社2206.10。
[9]唐颖,单片机原理与应用及C51程序设计,北京大学出版社,2008第一版。
[10]王水平等,单片机开关电源集成电路应用设计实例,人民邮电出版社,2008第一版。
[11]网络资料。
附页:
#include<
reg52.h>
intrins.h>
#defineuintunsignedint
#defineucharunsignedchar
#defineNop()_nop_()
sbitlcd_rs_port=P2^1;
/*定义LCD控制端口*/
sbitlcd_rw_port=P2^2;
sbitlcd_en_port=P2^3;
#definelcd_data_portP0/*定义LCD控制端口*/
sbitDQ=P1^3;
//定义DS18B20通信端口
sbita=P2^5;
sbitb=P2^6;
sbitALE=P2^7;
sbitEOC=P3^2;
sbitST=P2^0;
sbitOE=P3^6;
uintinfo;
ucharda[]="
000a000b000c000d000"
;
/*1MS为单位的延时程序*/
voidinit()/*串口定时器外部中断初始化*/
{
//TMOD=0x21;
//TH1=0xfd;
//TL1=0xfd;
/*9600*/
//TR1=1;
//SCON=0x50;
/*工作在方式1*/
P0=0x00;
P1=0x00;
P2=0x00;
P3=0x00;
EOC=1;
ALE=0;
ST=0;
OE=0;
}
//AD检测的实现
voidinitADC()
{
P1ASF=0X03;
ADC_RES=0;
ADC_CONTR=0XC8;
//p00,开电源
AUXR1=0X00;
voidADC1()
ADC_CONTR=0XC9;
//p00,开电源
//高八位高放
while(ADC_CONTR&
0X10==0);
ADC_CONTR&
=0xef;
shijiliu=ADC_RES;
shijiliu<
<
=2;
shijiliu+=ADC_RESL;
yu=(float)shijiliu*2.2;
//换算到毫安数
//DA功能即PWM功能的实现
voidinit_pwm()
CCON=0;
CCAPM0=0X42;
CMOD=0;
CL=CH=0;
CCAP0H=0X80;
CCAP0L=0X80;
CR=1;
CCAP0H=t1;
//t1控制占空比
CCAP0L=t1;
//1602液晶显示
voidLCD_SetDisplay(unsignedcharDisplayMode)
LCD_Write(LCD_COMMAND,0x08|DisplayMode);
#defineLCD_AC_UP0x02
#defineLCD_AC_DOWN0x00//default
#defineLCD_MOVE0x01//画面可平移
#defineLCD_NO_MOVE0x00//default
voidLCD_SetInput(unsignedcharInputMode)
LCD_Write(LCD_COMMAND,0x04|InputMode);
#defineLCD_CURSOR0x02
#defineLCD_SCREEN0x08
#defineLCD_LEFT0x00
#defineLCD_RIGHT0x04
voidLCD_Initial()
LcdEn=0;
LCD_Write(LCD_COMMAND,0x38);
//8位数据端口,2行显示,5*7点阵
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);
//开启显示,无光标
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);
//清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);
//AC递增,画面不动
voidGotoXY(unsignedcharx,unsignedchary)
if(y==0)
LCD_Write(LCD_COMMAND,0x80|x);
if(y==1)
LCD_Write(LCD_COMMAND,0x80|(x-0x40));
voidPrint(unsignedchar*str)
while(*str!
='
\0'
)
{
LCD_Write(LCD_DATA,*str);
str++;
}
//按键扫描
voidjianpan()
{
if(P02==0)
Delay1ms(10);
if(P02==0)
{
t1++;
}
if(P00==0)
{
t1--;
//数据处理
voidIntToStr(uintt,uchar*str)
uchara[4];
uchari=0,j;
a[0]=(t/1000)+0x30;
//取得整数值到数组
a[1]=(t/100)%10+0x30;
a[2]=(t/10)%10+0x30;
//a[3]=(t/10)%10+0x30;
a[3]=t%10+0x30;
for(i=0;
i<
5;
i++)//转成ASCII码
a[i]=a[i];
a[i]=='
0'
&
&
=0;
i++);
for(j=5-5;
j<
i;
j++)//填充空格
{*str='
'
str++;
}
for(;
4;
i++)
{*str=a[i];
}//加入有效的数字
*str='
if/whether引导的宾语从句
一、由if或whether引导的宾语从句。
if/whether“是否”,说明对陈述的事物不明确或不清楚。
常用在ask,wonder,can(could)youtellme等后,二者通常可以互换。
例如:
Lilyaskedif/whethershelikedit.莉莉问她是否喜欢它。
Iwanttoknowif(whether)helivesthere.我想知道他是否住在这儿。
Heaskedmewhether(if)Icouldhelphim.他问我是否可以帮助他。
小试牛刀:
1、Mr.Dingasked.Couldhecomeatseven?
2、Shewantedtoknow.Didyouhaveagoodtime?
二、只能用whether不能用if的情况
(1)在介词后面:
I’mthinkingofwhetherweshouldgofishing.
Weareworriedaboutwhetheritwillraintomorrow.
(2)在动词不定式前(whethertodosth.):
Theyaskedmewhethertogoskating.
(3)当与ornot连用,或提出两种选择时:
Idon’tknowwhetherhe’sfreeornot.
MaryaskedwhetherIwasdoingmyhomeworkornot.
(4)宾语从句提前时:
Whetherthisistrueornot,Ican’tsay.
请用if、whether填空
1.Iaskedher___________shehadabike.
2.We’reworriedabout___________heissafe.
3.Iwonder___________heiswell.
4.Idon’tknow___________ornotheiswell.
5.Idon’tknow___________togo.
三、宾语从句的语序:
引导词+主语+谓语+其他成分
Ithinkthatwecanbegoodfriends.
Ican’trememberifIpostedtheletter.
Mayweaskwhatyouaredoing?
四、特殊的宾语从句———间接引语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 基于 51 单片机 恒压恒流源 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)