成都信息工程学院电子工程学院
[电子技术综合设计]
总结报告
题 目: 程控电流电压信号源
专 业: 电子信息工程(信号处理)
班 级: 信号处理
姓 名:
指导教师: 陆 庆 老师
评 分:
2011年 11 月 22日
摘 要
电源技术尤其是数控电源技术是一门实践性很强的工程技术,服务于各行各业。电力电子技术是电能的最佳应用技术之一。当今电源技术融合了电气、电子、系统集成、控制理论、材料等诸多学科领域。随着计算机和通讯技术发展而来的现代信息技术,给电力电子技术提供了广阔的发展前景,同时也给电源提出了更高的要求。随着数控电源在电子装置中的普遍使用,普通电源在工作时产生的误差,会影响整个系统的精确度。电源在使用时会造成很多不良后果,世界各国纷纷对电源产品提出了不同要求并制定了一系列的产品精度标准。只有满足产品标准,才能够进入市场。数控电源由此产生并发展,其中基于单片机的数控电源有着明显的优势:首先它使电源的智能化程度更高,性能更完美。本文介绍了利用数/模转换电路、辅助电源电路、去抖电路等组成的数控直流稳压电源电路,详述了电源的基本电路结构和控制策略;它与传统的稳压电源相比,具有操作方便、电压稳定度高的特点,其结构简单、制作方便、成本低,输出电压在5~10V之间连续可调,输出电流0~10ma,其输出电压和电流大小以0.1V步进,输出电压的大小调节是通过“+” “-”两键操作的,而且可根据实际要求组成具有不同输出电压值的稳压源电路。该电源控制电路选用C51单片机控制主电路采用串联调整稳压技术具有线路简单、响应迅速、稳定性好、效率高等特点。
关键字: 电源 数控 单片机(MCU)
1项目计划
1.1方案可行性分析
1.1.1市场分析
随着电子技术的迅速发展,各种电子产品层出不穷。不过不管是哪种电子产品或设备,都需要电源供电才能进行正常的工作,有时电源的好坏直接关系到产品的性能,并且对于不同的产品或者设备来说,其需要的电源是不同的。但是往往市面上的很多电源都只能输出固定而单一的电压,适应范围太窄,不能满足不同客户的需求。
在现代家庭中各种电器的不断出现,并要求者各种不同电源的出现,使得家庭购买不同种类的电源。数字化的电子产品更加贴近人们的生活,因为它更加的直观,易被接受,大家都开始追求数字化的各类电子产品。数控直流电源有着直观、易操作、各种电压集一身、输出精度和稳定性都较高等优点,所以越来越受广大人们的喜爱。数控电源的应用也越来越广泛。
1.1.2可行性分析
本设计中的主控芯片为51单片机,这正基于我们以前学习的课程《微处理器微计算机系统》。DAC0832是一块通用的8位数模转换芯片,并且价格低廉、接口简单、转换控制容易。技术层面我们完全有能力去实现数控电源的功能,甚至于提高其性能。
1.2项目执行计划
1.2.1工作任务的分解与人员分工
2011.9.27 ~ 2011.10.1
首先 ***析题目“数控电压电流源”,大概确定主题分析方向。确定以51单片机为主控芯片,dac0832为数模转换芯片的方案。然后通过图书馆和互联网查询资料确定基本方案。负责人:***。
2011.9.27 ~ 2011.10.01
***行方案的市场分析和方案的可行性分析,综合实际情况得出数控电源的市场前景和主流趋势。负责人:***
2011.10.01 ~ 2011.10.03
***进行数控电源的原理图的设计,期间进行仿真和实验得出确切方案。然后通过protel99se进行原理图和PCB的绘制。负责人:***。
2011.10.03~2011.10.04
***进行元器件的采购。负责人:***。
2011.10.03~2011.10.04
***拿到PCB,到实验室进行硬件电路的实际制作。打印、转印、腐蚀以及板子的焊接。负责人:***。
2011.10.03~2011.10.05
***在仿真软件proteus中进行软件的编程和调试,保证在硬件完成前完善软件,最大程度的节约工程时间。负责人:***。
2011.10.05~2011.10.07
***一起进行板子的硬件调试和测试。完成后把程序的初稿下载到芯片中进行调试,并以此发现硬件的问题并解决,调试完成后进行数据的测量和记录以备查询。负责人:***。
2011.10.05~2011.10.07
***在我们进行硬件和软件的测试的同时,进行数控电源的项目报告的的编写,并完成初稿。负责人:***
2011.10.08~2011.10.09
我们三个人一起把自己在项目中所做的事情进行整理,并以文字的形式整理出来。最后填写到电子系统设计的实验总结报告中,完成项目并交由老师审核。负责人:***。
1.2.2项目预算
表1–1 项目预算表
器件 | 单价(元) | 数量(只) | 总共(元) |
1602 | 10.00 | 1 | 10.00 |
Stcc52 | 5.00 | 2 | 10,00 |
DAC0832 | 10.00 | 1 | 10.00 |
LM324 | 0.6 | 1 | 0.60 |
其他(其他材料和制板) | 5 | 3 | 5 |
2设计说明
2.1各单元模块设计原理
2.1.1系统方案
本系统由硬件和软件两大部分组成。硬件部分主要完成数字显示、、数控电源的调节和D/A转换等电路组成,数控电源的系统图2-1所示。软件主要完成信号的扫描和处理、芯片的驱动和输出控制、调节等功能。我们通过调节“+、- ”两个按键从而达到控制输出电压和电流的的升降。该系统输出电压、电流通过LCD1602显示。
图 2–1 数控电源系统图
ATS52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得ATS52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。ATS52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
ATS52的I/O具体分配如下表所示:
表 2 - 1 单片机 I/0口分配
ATS52的I/O口 | 对外接口 | 功能 |
P00~P07 | Lcd1602 | 液晶数据口 |
P16~P17 | Lcd1602 | 液晶控制口 |
P20~P27 | DAC0832 | 控制DAC输出电压 |
P10~P13 | 键盘 | 功能控制 |
P21 | 继电器 | 控制切换 |
由单片机输出经数模转换后得到0~5 V的电压控制信号,此电压信号输入到LM7805公共端(即把LM7805的2脚接成悬浮)。在LM7805的输出端3脚得到Ui = 5~10 V的电压信号,用按键控制电压增大还是减小,改变单片机输出信号,使Ui在5 ~ 10 V之间变化,达到要求输出电压范围,如图2–2所示。
图2–2 电压源模块
2.1.3电流源模块
电流方面采用下面恒流源电路,V2通过DA产生的电压信号接到后面的运放。输出电流恒为电流为:IOUT = (VA-VB) / R6 = VDA / R6。
图2–3 电流源模块
2.1.4 显示模块
由于液晶显示质量高,和单片机系统接口更加简单可靠,操作更加方便,体积小,质量轻,功耗低,所以直接采用1602字符型液晶显示器来显示单片机输出的电压和电流量。如图2–4所示。
图2–4 显示模块
2.1.5 数模转换模块
DAC0832跟单片机的连接方式采用单级缓存的方式,连接方式如图2–5所示,其中外部数据存储的地址为0x7fff,当数据赋给该地址时,单片机传输过来的数字量经过DAC832的数模转换,转换成模拟电压量,来输入电流源和电压源模块来得到所要求的电压范围和电流范围。
图2–5 数模转换模块
2.1.6 最终实物图
图2–7 实物图
2.2各单元模块设计流程
图2-8 主函数流程图
图2-9 切换按键检测
图2-10 电源加减函数
2.3部分源程序及注解
/*********主函数*******/
void main()
{
uchar ii;
LCD1602Init();
P2 = 0;
JDQ = 0;
while(1)
{
ii = FLAG;
LCD1602Write_com(0x80);
key();//按键检测 电压电流切换按键
if (ii != FLAG)
{
display();//显示函数
}
keyPLUS();//检测加函数
keyMINUS(); //检测减函数
}
display();//液晶显示函数,显示实时数据
}
/*****按键检测函数:初始为电压源 按下按键后切换为电流源*******/
void key()
{
if(JC == 0)
{
while(JC == 0);
FLAG = ~FLAG;
}
if (FLAG == 1)
{
voltout();
}
else
{
curout();
}
}
/******显示函数*******/
void display()
{
uchar j;
disya[0] = table[CHUYA / 100];//分别取出数据的各位和十位
disya[1] = table[CHUYA /10 % 10];
disya[3] = table[CHUYA % 10];
disliu[0] = table[CHULIU / 100];
disliu[1] = table[CHULIU /10 % 10];
disliu[3] = table[CHULIU % 10];
LCD1602Write_com(0x);
if (FLAG == 1)
{
for (j = 0; j < 7; j ++)
{
LCD1602Write_data(disya[j]);
}
P2 = CHUP2;
}
else
{
for (j = 0; j < 7; j ++)
{
LCD1602Write_data(disliu[j]);
}
P2 = CHUP2;
}
}
3安装和调试说明
3.1安装说明
首先要熟悉所焊印制电路板的装配图,并按图纸配料,检查元器件型号、规格及数量是否符合图纸要求,并做好装配前元器件引线成型等准备工作。电路安装要注意先装矮后装高、先装小后装大、先装耐焊的等; 布线尽量使电源线和地线靠近实验电路板的周边,以起一定的屏蔽作用。
对电路进行组装:按照自己设计的电路,在在通用板上焊接。焊接完毕后,应对照电路图仔细检查,看是否有错接、漏接、虚焊的现象。对安装完成的电路板的参数及工作状态进行测量,以便提供调整电路的依据。经过反复的调整和测量,使电路的性能达到要求。
安装前应检查元器件的质量,安装是特别要注意电解电容、集成芯片等主要器件的引脚和极性,不能接错。从输入级开始向后级安装。
安装注意事项:
1)检查元器件看是否有损坏,或者不符合规格的,要及时更换。
2)安装一个元器件,先要用尖嘴钳将其引脚成型,然后用镊子把引脚放入孔内.高度要适中,符合电气标准.完毕后,要用万用表测量元器件引脚和电路板之间是否接触良好,然后再安装下一个元器件。
3)对于导线要用斜口钳切成适当的长度,然后成型安装.安装时必须采用绝缘良好的绝缘导线,在画连线的时候要取好元件与元件的距离.连接的时候线与线之间不能交叉。
4)应该避免元器件损坏的发生,插元器件时候要垂直插拔以免行成不必要的损坏。
3.2调试方法及步骤
调试时应小心谨慎,电路安装完毕后,首先应检查电路各部分的接线是否正确,检查电源、地线、信号线、元器件的引脚之间有无短路,器件有无接错。再接入电路所要求的电源电压,观察电路中各部分器件有无异常现象。如果出现异常现象,应立即关电源,待排除故障后方可重新通电。
故障一:芯片不能正常工作
分析:[1]芯片本身就是坏的;
[2]未给芯片通电,接电源和接地处的导线出现断路;
[3]芯片未插好,在安装芯片过程中将管脚折断或扭曲;
[4]接线错误,如将输入端和输出端接反
故障二: 液晶显示器不亮
分析:[1]液晶显示器原本就是坏的;
[2]通电情况不好,电源未接通,接地未接好;
[3]接线错误,接线过程中出现短路、断路
故障三:液晶显示器能正常工作但出现乱跳现象
分析: [1]芯片Stcc52与液晶显示器未接好,导线接触不良;
[2]程序错误
3.3调试数据
表3–1 电压源测试数据
显示电压 | 5.0 | 5.1 | 5.2 | 5.3 | 5.4 | 5.5 | 5.6 | 5.7 | 5.8 |
实测电压 | 5.03 | 5.13 | 5.23 | 5.33 | 5.42 | 5.52 | 5.62 | 5.72 | 5.81 |
显示电压 | 5.9 | 6.0 | 6.1 | 6.2 | 6.3 | 6.4 | 6.5 | 6.6 | 6.7 |
实测电压 | 5.91 | 6.03 | 6.13 | 6.23 | 6.32 | 6.42 | 6.52 | 6.62 | 6.71 |
显示电压 | 6.8 | 6.9 | 7.0 | 7.1 | 7.2 | 7.3 | 7.4 | 7.5 | 7.6 |
实测电压 | 6.81 | 6.91 | 7.03 | 7.12 | 7.22 | 7.32 | 7.42 | 7.52 | 7.62 |
显示电压 | 7.7 | 7.8 | 7.9 | 8.0 | 8.1 | 8.2 | 8.3 | 8.4 | 8.5 |
实测电压 | 7.71 | 7.81 | 7.91 | 8.03 | 8.13 | 8.22 | 8.32 | 8.42 | 8.52 |
显示电压 | 8.6 | 8.7 | 8.8 | 8.9 | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 |
实测电压 | 8.62 | 8.71 | 8.81 | 8.91 | 9.03 | 9.12 | 9.22 | 9.32 | 9.42 |
显示电压 | 9.5 | 9.6 | 9.7 | 9.8 | 9.9 | 10.0 | |||
实测电压 | 9.52 | 9.61 | 9.71 | 9.81 | 9.91 | 10.03 |
显示电流 | 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 |
实测电流 | 0.02 | 0.12 | 0.23 | 0.33 | 0.44 | 0.54 | 0.65 | 0.70 | 0.81 |
显示电流 | 0.9 | 1.0 | 1.1 | 1.2 | 1.3 | 1.4 | 1.5 | 1.6 | 1.7 |
实测电流 | 0.92 | 1.02 | 1.13 | 1.23 | 1.34 | 1.40 | 1.50 | 1.61 | 1.72 |
显示电流 | 1.8 | 1.9 | 2.0 | 2.1 | 2.2 | 2.3 | 2.4 | 2.5 | 2.6 |
实测电流 | 1.82 | 1.93 | 2.03 | 2.09 | 2.19 | 2.30 | 2.41 | 2.51 | 2.62 |
显示电流 | 2.7 | 2.8 | 2.9 | 3.0 | 3.1 | 3.2 | 3.3 | 3.4 | 3.5 |
实测电流 | 2.73 | 2.78 | 2. | 3.00 | 3.10 | 3.21 | 3.32 | 3.42 | 3.48 |
显示电流 | 3.6 | 3.7 | 3.8 | 3.9 | 4.0 | 4.1 | 4.2 | 4.3 | 4.4 |
实测电流 | 3.58 | 3.69 | 3.79 | 3.90 | 4.00 | 4.11 | 4.17 | 4.28 | 4.38 |
显示电流 | 4.5 | 4.6 | 4.7 | 4.8 | 4.9 | 5.0 | 5.1 | 5.2 | 5.3 |
实测电流 | 4.49 | 4.59 | 4.70 | 4.81 | 4.86 | 4.97 | 5.08 | 5.18 | 5.29 |
显示电流 | 5.4 | 5.5 | 5.6 | 5.7 | 5.8 | 5.9 | 6.0 | 6.1 | 6.2 |
实测电流 | 5.40 | 5.50 | 5.56 | 5.66 | 5.77 | 5.88 | 5.99 | 6.09 | 6.20 |
显示电流 | 6.3 | 6.4 | 6.5 | 6.6 | 6.7 | 6.8 | 6.9 | 7.0 | 7.1 |
实测电流 | 6.25 | 6.36 | 6.47 | 6.57 | 6.68 | 6.79 | 6.90 | 6.95 | 7.06 |
显示电流 | 7.2 | 7.3 | 7.4 | 7.5 | 7.6 | 7.7 | 7.8 | 7.9 | 8.0 |
实测电流 | 7.17 | 7.27 | 7.38 | 7.49 | 7.59 | 7.65 | 7.76 | 7.85 | 7.97 |
显示电流 | 8.1 | 8.2 | 8.3 | 8.4 | 8.5 | 8.6 | 8.7 | 8.8 | 8.9 |
实测电流 | 8.07 | 8.18 | 8.29 | 8.34 | 8.45 | 8.56 | 8.67 | 8.77 | 8.88 |
显示电流 | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 | 9.7 | 9.8 |
实测电流 | 8.99 | 9.04 | 9.14 | 9.25 | 9.36 | 9.47 | 9.57 | 9.68 | 9.74 |
显示电流 | 9.9 | 10.0 | |||||||
实测电流 | 9. | 9.99 |
这次电子系统综合设计课基本实现了任务中的各项要求和目标,达到了此次电子系统设计的目的。但更重要的是培养了我们的动手能力,使我们进一步了解电子设计的基本知识,能领会和灵活运用电子设计中目标任务、计划、过程控制、总结反馈等各个环节所涉及的内容,并且具备了迅速接受新知识的能力,对新挑战具有一定的适应能力。
经过本次的课程设计,将书本上学到的知识应用于实践,学会了一些电子电路仿真设计能力,虽然过程中遇到了一些困难,但是在解决这些问题的过程无疑也是对自己自身专业素质的一种提高与肯定。此次设计不仅增强了自己在专业设计方面的信心,鼓舞了自己,更是一次兴趣的培养。另外理论知识和实践相结合是教学环节中相当重要的一个环节,只有这样才能提高自己的实际操作能力,并且从中培养自己的思考、勇于克服困难、团队协作的精神,我还认识到自己应该在平时养成良好的习惯,如:做事认真、仔细等。我们现在还存在还多不足的地方,在以后的学习中应积极努力提高自己各方面的能力,使我们自己得到全面的发展,为将来打下坚实的基础!
电子综合设计,是以学生自己动手动脑,从通过理论设计,到软件仿真,再到确定具体方案,再到安装实际电路,最后到调试电路、成型。通过对课程的学习,使我们对电子工艺的理论有了更深的了解。这些知识不仅在课堂上有效,在今后的工作中更是有着现实意义,也对自己的动手能力是个很大的锻炼。在学习中,我们锻炼了自己动手能力,提高了自己解决问题的能力。在这次的课程设计中不仅检验了我所学习的知识,也培养了我们如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处事。
同时感谢对我们帮助过的同学们,谢谢你们对我们的帮助和支持,让我们感受到同学的友谊。
由于设计能力有限,在设计过程中难免出现错误,老师的理解让我倍受鼓舞,同时,老师的指导对我们顺利完成这次课程设计是有着莫大的帮助,感谢老师!
5参考文献
【1】李东生·PROTEL 99SE电路设计技术入门与应用·北京:电子工业出版社,2002
6附录
6.1附程序
#include #define uint unsigned int #define uchar unsigned char sbit E = P1^7; sbit RS = P1^6; sbit JC = P1^0; //检测按键 切换电压电流源 sbit PLUS = P1^1; //电压电流的 ++ sbit MINUS = P1^2; //电压电流的 -- sbit JDQ = P3^3; uchar CHUP2 = 0x00; //初始值设为0 uchar CHUYA = 50; uchar CHULIU = 0; uchar FLAG = 1; uchar code table[] = //码表 { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; uchar code ya[] = "dian ya:"; // 电压源的初始显 uchar code liu[] = "dian liu:"; // uchar disya[7]= "00.0 V"; uchar disliu[7]= "00.0 MA"; //延迟函数: 延迟i ms void delayms(uint i) { uint j,e; for(e=i;e>0;e--) for(j=110;j>0;j--); } /*******LCD1602液晶写数据函数: 通过 i 值传递数据******/ void LCD1602Write_data(uchar i) { RS=1; P0=i; delayms(11); E=1; delayms(11); E=0; //先写入,再开使能端 delayms(11); } //LCD1602液晶写命令函数: 通过 i 值传递数据 void LCD1602Write_com(uchar i) { RS=0; P0=i; delayms(11); E=1; delayms(11); E=0; delayms(11); } //液晶初始化函数:设置 光标 和显示的初始位置 void LCD1602Init() { RS=0; E = 0; LCD1602Write_com(0x38); LCD1602Write_com(0x0F); LCD1602Write_com(0x06); LCD1602Write_com(0x0d); LCD1602Write_com(0x01); } void voltout() //电压源 函数 { uchar i ; JDQ = 1; CHUP2 = 0x00; CHUYA = 50; for (i = 0; i < 8; i ++) { LCD1602Write_data(ya[i]); } } void curout() //电流源函数 { uchar i; JDQ = 0; CHUP2 = 0; CHULIU = 0; for (i = 0; i < 9; i ++) { LCD1602Write_data(liu[i]); } } //按键检测函数:初始为电压源 按下按键后切换为电流源 void key() { if(JC == 0) { while(JC == 0); FLAG = ~FLAG; } if (FLAG == 1) { voltout(); } else { curout(); } } /******显示函数*******/ void display() { uchar j; disya[0] = table[CHUYA / 100]; disya[1] = table[CHUYA /10 % 10]; disya[3] = table[CHUYA % 10]; disliu[0] = table[CHULIU / 100]; disliu[1] = table[CHULIU /10 % 10]; disliu[3] = table[CHULIU % 10]; LCD1602Write_com(0x); if (FLAG == 1) { for (j = 0; j < 7; j ++) { LCD1602Write_data(disya[j]); } P2 = CHUP2; } else { for (j = 0; j < 7; j ++) { LCD1602Write_data(disliu[j]); } P2 = CHUP2; } } //按键 加检测函数:检测到按键按下后,判断是电压还是电流,从而进行相应的操作。 void keyPLUS() { if(PLUS == 0) { while (PLUS == 0); if(FLAG == 1) { if(CHUYA <100) { CHUYA = CHUYA + 1; CHUP2 = CHUYA * 2.56; P2 = CHUP2; } else { CHUYA = 100; P2 = 255 } } else { if(CHULIU <100) { CHULIU = CHULIU + 1; if ((CHULIU % 4 == 0)&& (CHULIU != 0)) { CHUP2 = CHUP2 + 0x01; } else if(CHULIU == 1) { CHUP2 = CHUP2 + 1; } else { CHUP2 = CHUP2 + 0x02; } P2 = CHUP2; } else { CHULIU = 100; } } display(); } } //按键 减检测函数:检测到按键按下后,判断是电压还是电流,从而进行相应的操作。 void keyMINUS() { if(MINUS == 0) { while (MINUS == 0); if(FLAG == 1) { if (CHUYA > 50) { CHUYA = CHUYA - 1; CHUP2 = CHUYA * 2.56; P2 = CHUP2 } else { CHUYA = 50; P2 = 0; } } else { if (CHULIU > 0) { CHULIU = CHULIU - 1; if ((CHULIU % 7 == 0)&& (CHULIU != 0)) { CHUP2 = CHUP2 - 0x01; } else { CHUP2 = CHUP2 - 0x02; } P2 = CHUP2; } else { CHULIU = 0; } } display(); } } //主函数 void main() { uchar ii; LCD1602Init(); P2 = 0; JDQ = 0; while(1) { ii = FLAG; LCD1602Write_com(0x80); key();//按键检测 电压电流切换按键 if (ii != FLAG) { display();//显示函数 } keyPLUS();//检测加函数 keyMINUS(); //检测减函数 } display();//液晶显示函数,显示实时数据 } 6.2附PCB 图6-1 PCB图