工程实践单片机测电容实践报告2.docx
- 文档编号:10759553
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:19
- 大小:1.71MB
工程实践单片机测电容实践报告2.docx
《工程实践单片机测电容实践报告2.docx》由会员分享,可在线阅读,更多相关《工程实践单片机测电容实践报告2.docx(19页珍藏版)》请在冰点文库上搜索。
工程实践单片机测电容实践报告2
单片机的电容测试仪设计
张等红郑石岩高盛君
一、设计要求
1.1设计背景
电容量是电工电子信息行业中非常关键的一项物理量,在信息、工业、各种高新技术的开发和研究中也是一个非常普遍和常用的测量参数。
目前,随着电子信息技术的发展,智能技术的广泛应用,电容量测量技术已向自动化、智能化方向发展。
基于此,提出了电容量的数字化测量。
随着经济的发展和科技水平的提高,很多智能芯片的制造,使电子测量仪表向数字化、智能化方向发展。
电容量的测量是电子测量中最基本的参数测量,要求有一定的精确度,同时要求测量的量程要宽,测量的速度要快。
因此,设计可靠、安全、便捷的电容测试仪具有极大的现实必要性。
1.2设计内容
该设计以AT89S52单片机为控制器,通过单片机测量电容的充电时间来计算电容值,在基准电压一定时电容量和电容充放电时间成正比,通过电源给被测电容器充电,充电开始给单片机一个信号使单片机开始计数,充电到基准电压值后通过比较器给单片机一个信号使单片机停止计数,然后把计数值转化成电容量。
内部通过软件自动转换量程,采用LCD1602液晶显示测量结果,界面清晰,结果清楚。
测量准确、量程宽、速度快,使测量方便快捷。
二、系统设计
2.1系统设计任务及要求
(1)设计任务:
设计并制作一台数字显示的简易电容表。
(2)基本要求:
测量范围:
电感测量范围:
0.1μH--------1H
小电容测量范围:
1pF-------2.2μF(非电解电容)
频率测量范围:
50Hz------400KHz(可测小信号)
电解电容测量范围:
0.5μF--12000μF(电解电容、非电解电容均可)(以实验室标准电容或电容表为准)。
显示器:
十进制数字显示,采用液晶LCD1602显示。
自动量程转换。
自行设计并制作满足本设计任务要求的稳压电源。
2.2系统总体方案设计
(1)电容测量方案
利用电容充放电原理,通过电源给电容器充电,充电开始给单片机一个信号使单片机开始计数,在基准电压一定时电容量和电容充放电时间成正比,充电到基准电压值后通过比较器给单片机一个信号使单片机停止计数,然后把计数值转化成电容量。
此电路方案简单且测量比较准确,容易实现电路,且能实现量程自动转换,故采用此方案。
(2)液晶显示方式
采用液晶显示的方式。
液晶显示电路非常简单,不需要多少其他辅助电路,且能显示字符数字,显示界面美观,可读性强,且不占多少单片机I/O口资源,完全可以靠软件实现,大大简化电路复杂程度。
故采用液晶显示方式,经考虑LCD1602液晶满足设计需要。
三、单片机主控电路设计
3.1单片机主控电路设计
3.1.1单片机介绍
本设计主控电路采用AT89S52单片机[5][6]作为核心控制器。
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、高效率的解决方案。
AT89S52具有以下标准功能:
8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
AT89S52单片机引脚如图3-1所示:
图3-1AT89S52单片机引脚图
3.1.2单片机最小系统
单片机最小系统电路主要有晶体振荡电路和复位电路。
(1)振荡电路
石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。
本设计所用的晶体振荡电路如图3-2所示。
图3-2晶体振荡电路
此振荡电路所选用的石英晶振频率为12MHz。
时钟周期就是单片机外接晶振的倒数,它的时间周期就是(1/12us),是计算机中最基本的、最小的时间单位。
在一个时钟周期内,CPU仅完成一个最基本的动作。
对于某种单片机来说,若采用了1MHz的时钟频率,则时钟周期为1us;若采用4MHz的时钟频率,则时钟周期为250μs。
由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。
显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。
但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟频率范围也不一定相同。
设计中使用到的单片机的时钟晶振是12MHz。
3.1.3主控电路的工作原理
电容测量的实现主要有单片机的外部中断和定时器来完成,量程转换和显示按键电路通过单片机外围控制电路来实现。
单片机外围控制电路主要有74LS138译码电路和74LS573锁存电路。
74LS138译码电路主要完成对电容的测量前的放电及量程的转换。
测量开始有单片机控制译码电路给被测电容放电,放电完成后再有单片机控制译码电路选择充电电阻来完成量程自动转换,选定量程后启动定时器T0开始计时,当充电完成后,由测量电路的比较器输出充电完成信号送给单片机外部中断INT0,使定时器停止计时。
74LS573锁存电路主要完成对按键与单片机的接口控制。
按键和显示公用单片机的P0口,有锁存电路74LS573实现单片机对按键的扫描,并保持给显示送实时数据。
3.2测量电路设计
3.2.1电容、电感测量电路原理
电路是一个由LM393(U3A)组成的LC振荡器。
由单片机测量LC震荡回路的频率F1,然后根据标准电容C1【原理图中的Cref】出电感L1的值。
2012-8-1005:
42上传
下载附件(1.48KB)
这里电容器C1的容量的精确程度,基本上决定了整个测量过程的精度。
应该选用稳定性好精度高的电容器,网上一般推荐使用云母电容器,买不到的话,独石或CBB的也都可以将就用。
电容Cx、电感Lx的值,分别用下列式子计算:
其中,F1是固有频率,F2是接入测试电容、电感后的频率。
3.2.2电解电容测量原理
电解电容的测量是基于对RC电路的时间常数的计算,电容的充电速度与R和C的大小有关,R与C的乘积越大,充电时间就越长。
这个RC的乘积就叫做RC电路的时间常数τ,即τ=R∙C。
若R的单位用欧姆,C的单位用法拉,则τ的单位为秒。
图示曲线可以得到充电过程的一般规律:
Uc是按指数规律上升的,Uc开始变化较快,以后逐渐减慢,并缓慢地趋近其最终值,当t=τ时,Uc=0.632E(E为电源电压);本测量仪就是利用单片机测量Uc=0到0.632E这段时间,用下列式子计算计算被测电容值:
2012-8-1005:
42上传
电路由比较器U1B,放电晶体管Q1、Q2等组成。
设定比较器正输入端为Uc,(Uc=0.632E,调节Rref获得),反向输入端接被测电容CEx,当单片机P15引脚为低电平时,电容放电。
注意51单片机引脚的拉电流很小,不能直接驱动Q1,否则放电时间会很长。
当单片机P15引脚为高电平时,电容充电,当充电到Uc时,比较器翻转,触发单片机外部中断0,通过测得的充电时间和充电电阻的大小可以计算出电容大小。
3.2.3原理图
上图中(请参照PDF原理图),Btn1是单片机复位按钮;Btn2是校准按钮,在测量小电容时候可以随时按下清零显示;Btn3是功能切换按钮,用来在测量LCF(频率、小电容、电感)和测量电解电容之间切换。
图中的三个双刀双掷开关用来切换测量,S1在L、C(小电容)之间切换,S2在频率与LC之间切换,S3在大电解和小电解之间切换;单片机能够根据开关的状态和按钮Btn3自动判断测量的类型。
另外,Fx、Cx、Lx共用了一个GND端子,电路板上四个端子紧挨在一起,也可以多加GND端子,不共用,布线时可以根据实际情况灵活处理。
3.3显示电路设计
液晶屏根据显示内容可以分为字符型液晶,图形液晶;根据显示容量又可以分为单行16字,2行16字,两行20字等等。
本设计选用的是2行16字的字符型液晶模块的使用方法。
这是一种通用模块,LCD1602液晶外观如图3-3所示。
LCD1602液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在各类仪表和低功耗系统中得到广泛的应用,与数码管相比该模块有如下优点:
(1)位数多,可显示32位,32个数码管体积相当庞大了。
(2)显示内容丰富,可显示所有数字和大、小写字母。
(3)程序简单,如果用数码管动态显示,会占用很多时间来刷新显示,而1602自动完成此功能。
图3-3LCD1602液晶外观图
1602采用标准的16脚接口,引脚图如图3-7所示,其中:
(模块背面有标注)
第1脚:
VSS为地电源
第2脚:
VDD接5V正电源
第3脚:
V0为液晶显示器对比度调整端,接电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度(建议接地,弄不好有的模块会不显示)。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15~16脚:
空脚(有的用来接背光)
图3-4LCD1602液晶引脚图
系统显示电路如图3-5所示。
图3-5系统显示电路
3.4电路板介绍
四、使用方法
测小电容、电感、频率是一组功能,具体测哪个由S1/S2的状态决定,单片机能根据S1/S2的状态自动识别测量哪一种。
测大电解电容和小电解电容是一组,具体测大电解还是小电解由S3状态决定,单片机能根据S3的状态自动识别测量大电解还是小电解。
在这两组功能之间需要功能切换按钮(原理图中Btn3)来切换。
1、上电开机界面
显示频率、电感、电容测试。
2、测量小电容
3、测量有极性小电容
五、总结
经过电容测试仪的设计,系统的了解了单片机的功能及应用,对电容量的测量有了深入的了解。
在小组老师们的协作下完成了电容测试仪的方案设计,选择合适的测量电路和芯片,并根据需要设计了单片机主控电路、电容测量电路以及显示按键电路。
系统以AT89S52单片机为核心控制器,利用电容充放电原理通过单片机的定时器测量电容充电到一定电压时所用的时间,用电压比较器(LM339)来检测电容充电的终止,计算电容值,并以数字形式显示出来,完成了设计任务和要求。
附录
(1)整机系统总图
(2)程序
#include "reg52.h"
#include"intrins.h"//库函数
#define DATA P0
sbit RW=P2^6;//1602写数据
sbit RS=P2^5;//1602写地址
sbit EN=P2^7; //1602工作使能
sbit b_test=P3^7; //开始测量电容的按键输入
sbit _reset=P3^5; //555时基芯片工作控制信号
unsigned int T_flag,N,C,i,Dis1,Dis0;
unsigned int b[10]={0X13,0X0D,0X00,0X00,0xFE,0x00,0x00,0x00,0X25,0X16}; //显示C=00UF
/***********延时1MS******************/
void Delay1ms(unsigned int mm)
{unsigned int i;
for(mm;mm>0;mm--)
for(i=100;i>0;i--);
}
/***************检查忙否*****************/
void Checkstates()
{
unsigned char dat;
RS=0;
RW=1;
do{EN=1;//下降沿
_nop_();//保持一定间隔
_nop_();
dat=DATA;
_nop_();
_nop_();
EN=0;
}while((dat&0x80)==1);
}
/**************LCD写命令函数*********/
void wcomd(unsigned char cmd)
{
Checkstates();
RS=0;
RW=0;
DATA=cmd;
EN=1;
_nop_();
_nop_();
_nop_();
_nop_();
EN=0;
}
/**********LCD写数据函数**************/
void wdata(unsigned char dat)
{
Checkstates();
RS=1;
RW=0;
DATA=dat;
EN=1;
_nop_();
_nop_();
_nop_();
_nop_();
EN=0;
}
/*****************初始化********************/
void LCDINIT()
{
Delay1ms(15);
wcomd(0x38);//功能设置
Delay1ms(5);
wcomd(0x38);//功能设置
Delay1ms(5);
wcomd(0x01);//清屏
Delay1ms(5);
wcomd(0x08);//关显示
Delay1ms(5);
wcomd(0x0c);//开显示,不开光标
}
/***********显示函数**************/
void Display(void) //显示函数
{
unsigned char i,j;
unsigned char a[12]={0X4D,0X45,0X41,0X53,0X55,0X52,0X45,0X4D,0X45,0X4E,0X54,0X53};//显示measurements
LCDINIT();
for(i=0;i<12;i++)//写显示第一行
{ wcomd(0x80+i);
Delay1ms
(1);
wdata(a[i]);
Delay1ms
(1);
}
for(j=0;j<10;j++)//写显示第二行
{
wcomd(0xc0+j);
Delay1ms
(1);
wdata(0x30+b[j]);
Delay1ms
(1);
}
Delay1ms(150);
}
void main()
{
IE=0x81; //打开全部的中断控制,并开启外部中断允许
TMOD=0x09; //T0为16位计数工作方式1
IT0=1; //设置外部中断的触发的方式为脉冲触发
TH0=0x00;
TL0=0x00;
T_flag=0;
_reset=0;
while
(1)
{
while(!
b_test) //如果有测量按键输入就往下执行
{
i=0;
_reset=1; //启动555时基芯片
EX0=1; //开启中断0
while(_reset) //超出等待时间,中断还没有过来,就退出
{
i++;
if(i>50000) //设置最长等待时间
{
_reset=0; //最长等待时间到还没有中断,停止555
}
}
if(N<100) //如果计数值小于100,显示SM,表示应换用小一点的量程
{
b[3]=0X1D;
b[2]=0X23;
}
if(N>5000) //如果计数值大于5000,显示LA,表示应换用大一点的量程
{
b[3]=0X11;
b[2]=0X1C;
}
if(N>=100 && N<=50000)
{
if(N>=100&&N<=1000)
{
b[2]=0x00;
b[3]=0x00;
b[4]=0xFE;
b[5]=N/100+1;
}
else
{
C=N/100; //计算电容的大小
b[2]=C/10; //计算电容值的十位
b[3]=C-b[2]*10; //计算电容值的各位
}
}
}
Display(); //显示电容的大小
}
}
void int0(void) interrupt 0 //第一次中断开始计数,第二个中断停止计数
{
T_flag=!
T_flag;
if(T_flag==1)
{
TR0=1; //开始计时
}
if(T_flag==0)
{
TR0=0; //停止计时
EX0=0; //关闭中断
_reset=0; //停止发出方波
N=TH0*256+TL0; //计算计数器的值
N=N*5/3;
TH0=0x00; //恢复初值
TL0=0x00;
}
}
参考文献
1石庆福,许建明.单片机智能电容测试仪的设计与实现.硅谷,2011,
(1):
47
2郝鹏,王大明.基于51单片机的电阻、电容、电感测试仪.科技致富向导,2011,(20):
96
3渠艳霞.基于单片机控制的电阻电容测试仪的设计.总裁,2009,(4):
141~142
4徐思成.一种基于单片机智能电容测试仪的设计与实现.现代电子技术,2010,33(18):
28~29
5陶春鸣.单片机实用技术.北京:
人民邮电出版社,2008.18~25
6何立民.单片机应用程序设计.北京:
北京航空航天大学出版社,2003.34~39
7陈世夏,吴凌燕,丁国臣.基于AT89C2051单片机的数字电容表设计.现代电子技术,2009,32(18):
158~160
8童诗白,华成英.模拟电子技术基础3版.北京:
高等教育出版社,2007.128~130
9熊筱芳,郭学提.基于89C51单片机的数字电容表设计.自动化应用技术,2008,27(10):
94~97
10何光明,杨静宇.C语言程序设计与应用开发.北京:
清华大学出版社,2006.72~75
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工程 实践 单片机 电容 报告