基于单片机的电容测试仪论文.docx

上传人:b****3 文档编号:5456819 上传时间:2022-12-16 格式:DOCX 页数:24 大小:560.34KB
下载 相关 举报
基于单片机的电容测试仪论文.docx_第1页
第1页 / 共24页
基于单片机的电容测试仪论文.docx_第2页
第2页 / 共24页
基于单片机的电容测试仪论文.docx_第3页
第3页 / 共24页
基于单片机的电容测试仪论文.docx_第4页
第4页 / 共24页
基于单片机的电容测试仪论文.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

基于单片机的电容测试仪论文.docx

《基于单片机的电容测试仪论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的电容测试仪论文.docx(24页珍藏版)》请在冰豆网上搜索。

基于单片机的电容测试仪论文.docx

基于单片机的电容测试仪论文

目录

1绪论1

1.1设计背景及研究意义1

1.2国内外研究现状1

1.3本设计研究内容2

2系统设计2

2.1系统设计任务及要求2

2.2系统总体方案设计2

2.2.1方案论证2

2.2.2总体方案设计3

3硬件电路设计4

3.1单片机主控电路设计4

3.1.1单片机介绍4

3.1.2单片机最小系统5

3.1.3主控电路的工作原理6

3.2电容测量电路设计7

3.2.1电容测量电路原理及工作过程7

3.2.2电容测量电路原理图8

3.3显示电路设计9

3.4按键电路设计11

3.5电源电路设计12

4软件设计13

4.1主程序设计13

4.2子程序设计14

5总结16

附录17

参考文献26

致谢27

1绪论

1.1设计背景及研究意义

电容量是电工电子信息行业中非常关键的一项物理量,在信息、工业、各种高新技术的开发和研究中也是一个非常普遍和常用的测量参数。

目前,随着电子信息技术的发展,智能技术的广泛应用,电容量测量技术已向自动化、智能化方向发展。

基于此,提出了电容量的数字化测量。

随着经济的发展和科技水平的提高,很多智能芯片的制造,使电子测量仪表向数字化、智能化方向发展。

电容量的测量是电子测量中最基本的参数测量,要求有一定的精确度,同时要求测量的量程要宽,测量的速度要快。

因此,设计可靠、安全、便捷的电容测试仪具有极大的现实必要性。

1.2国内外研究现状

近年来测量仪器的可靠性和稳定性问题得到了很多方面的重视,状况有了很大改观。

测试仪器行业目前已经越过低谷阶段,重新回到了快速发展的轨道。

随着模块化和虚拟技术的发展,为测试测量仪器行业带来了新的契机。

电容器作为非常重要的一个电学元件在现代电子技术中有着非常广泛的用途,电容定义为:

电容器所带的电荷量Q与电容器两极板间的电势差U的比值,即:

这种原始的方法必须通过测量两个物理量来计算电容的大小,而其中的Q是比较难以测量的量。

传统常用测量电容的方法两种:

一是利用多谐震荡产生脉冲宽度与电容值成正比信号,通过低通滤波后测量输出电压实现;二是采用经典电桥法,80年代之前采用手动电桥,测试结果需要大量的换算,对操作技能要求较高,测试工效很低。

80年代数字自动电桥的问世,使电桥在内部微机的控制下自动平衡,最终结果直读得到,大大方便了使用。

而目前国内外对电容量的测试常用积分法或斜率法(含双斜率)测试电容,原理是测试RC积分时间或以恒流源对被测电容充电,用充电时间或充电终止电压来计算被测电容的电容量,可以达到比较高的测试精度、测量范围广、读数方便,而且能够实现量程自动转换,方便可靠。

1.3本设计研究内容

该设计以AT89S52单片机为控制器,通过单片机测量电容的充电时间来计算电容值,在基准电压一定时电容量和电容充放电时间成正比,通过电源给被测电容器充电,充电开始给单片机一个信号使单片机开始计数,充电到基准电压值后通过比较器给单片机一个信号使单片机停止计数,然后把计数值转化成电容量。

内部通过软件自动转换量程,采用LCD1602液晶显示测量结果,界面清晰,结果清楚。

测量准确、量程宽、速度快,使测量方便快捷。

2系统设计

2.1系统设计任务及要求

(1)设计任务:

设计并制作一台数字显示的简易电容表。

(2)基本要求:

测量范围:

10pF~999.9μF;

测量误差:

≤5.0%(以实验室标准电容或电容表为准)。

设置量程选择:

×0.01μF、×0.1μF、×1μF、×10μF、×100μF。

显示器:

十进制数字显示,采用液晶LCD1602显示。

自动量程转换。

自行设计并制作满足本设计任务要求的稳压电源。

2.2系统总体方案设计

2.2.1方案论证

(1)电容测量方案

方案1:

采用交流电桥法测量电容值,使电桥达到平衡的参数不宜调节和自动控制,且电路麻烦,不宜达到电桥平衡,此方案不予考虑。

方案2:

利用单片机测量脉冲来测时间常数RC再计算电容,其测量原理是把被测电容和电阻串联构成RC网络,然后根据这个时间常数利用定时芯片NE555搭建一个振荡电路[1][2],调好震荡信号的波形然后开始计数脉冲值,周期T=A0×RC,A0为一个常数,通过周期可以计算出C的值。

此方案电路复杂,且电路振荡波形不易调试,不予采用。

方案3:

利用电容充放电原理,通过电源给电容器充电,充电开始给单片机一个信号使单片机开始计数,在基准电压一定时电容量和电容充放电时间成正比,充电到基准电压值后通过比较器给单片机一个信号使单片机停止计数,然后把计数值转化成电容量。

此电路方案简单且测量比较准确,容易实现电路,且能实现量程自动转换[3],故采用此方案。

(2)显示方案论证

方案1:

采用数码管显示方案[4]。

数码管显示不管静态显示还是动态显示都需要驱动电路,静态显示虽然显示数据稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然使用硬件比静态显示少,能节省材料和线路板空间但是有闪烁感,占用的CPU时间多。

两种显示方式都比较单一,只能显示数字。

不予采用。

方案2:

采用液晶显示的方式。

液晶显示电路非常简单,不需要多少其他辅助电路,且能显示字符数字,显示界面美观,可读性强,且不占多少单片机I/O口资源,完全可以靠软件实现,大大简化电路复杂程度。

故采用液晶显示方式,经考虑LCD1602液晶满足设计需要。

2.2.2总体方案设计

根据以上论证,本系统采用电容充放电原理,使电容充电并达到基准电压后,电压比较器会输出一个充电停止信号送给单片机,单片机根据计数器记录的充电时间计算出电容的值送给液晶显示。

系统硬件电路包括单片机主控电路、电容测量电路、量程转换电路、显示及按键电路、电源电路。

系统框图如图2-1所示。

 

 

图2-1系统框图

3硬件电路设计

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。

(2)复位电路

单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第一个单元取指令。

无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位,所以必须弄清楚AT89C51型单片机复位的条件、复位电路和复位后状态。

单片机复位的条件是:

必须使RST/Vpd或RST引脚(9)加上持续两个机器周期(即24个振荡周期)的高电平。

例如,若时钟频率为12MHz,每机器周期为1us,则只需2us以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。

单片机常用的复位电路如图3-3所示。

图3-3上电复位电路

图3-3为上电复位电路也是本次设计所用的复位电路,其复位方法为只要单片机一上电REST为高电平单片机即复位。

除此之外我们所学的电路还有手动复位电路和自动复位电路。

3.1.3主控电路的工作原理

电容测量的实现主要有单片机的外部中断和定时器来完成,量程转换和显示按键电路通过单片机外围控制电路来实现。

单片机外围控制电路主要有74LS138译码电路和74LS573锁存电路。

74LS138译码电路主要完成对电容的测量前的放电及量程的转换。

测量开始有单片机控制译码电路给被测电容放电,放电完成后再有单片机控制译码电路选择充电电阻来完成量程自动转换,选定量程后启动定时器T0开始计时,当充电完成后,由测量电路的比较器输出充电完成信号送给单片机外部中断INT0,使定时器停止计时。

74LS573锁存电路主要完成对按键与单片机的接口控制。

按键和显示公用单片机的P0口,有锁存电路74LS573实现单片机对按键的扫描,并保持给显示送实时数据。

3.2电容测量电路设计

3.2.1电容测量电路原理及工作过程

电容测量电路包括自动量程转换电路和电容测量电路。

自动量程转换利用译码器74LS138选择充电电阻来完成。

测量电路以电容器的充电规律作为测量依据[7],电源电压E给被测电容Cx充电,Cx两端电压随充电时间的增加而上升。

当充电时间t等于RC时间常数τ时,Cx两端电压约为电源电压的63.2%。

即0.632E。

数字电容表就是以该电压作为测试基准电压[8],测量电容器充电达到该电压的时间,便能知道电容器的容量。

例如,设电阻R的阻值为1k。

两端电压上升到0.632E所需的时间为1ms,那么由公式τ=RC可知C。

的容量为1微法。

根据电容的充电公式,可以计算出电容在充电到1/nVcc(其中n>1,Vcc为充电电源电压)电压时充电时间跟电容的容量和电阻成正比,跟充电电源电压无关。

工作过程如下:

首先,通过单片机使74LS138译码器选通放电三极管Q8,将电容上的电放掉,放电完毕之后,单片机控制74LS138译码器选通Q1-Q5中的一个三极管,经过一定的电阻,对电容进行充电,同时,打开单片机的计数器0,开始计数。

然后单片机等待外部中断0的发生。

当电容充电达到参考电压值时,比较器翻转,发出充电完成信号到中断0端口,单片机响应中断,停止计数器0,并关闭充电电路,接通放电电路。

接着读出计数器0的值,进行计算,适当的调整后,输出到LCD上显示。

然后又开始一次新的测试,如此循环。

本电路通过一个电压比较器(LM339)来检测电容充电的终止。

由电阻R17,R21及R20构成一个分压器,产生一个基准电压。

当电容两端电压超过比较电压时,比较器翻转,产生一个低电平到单片机的中断0(INT0)引脚,通知单片机电容充电完成。

LM339电压比较器芯片内部装有四个独立的电压比较器,是很常见的集成电路。

利用LM339可以方便的组成各种电压比较器电路和振荡器电路。

有如下特点:

(1)电压失调小,一般是2mV;

(2)共模范围非常大,为0V到电源电压减1.5V;

(3)对比较信号源的内阻限制很宽;

(4)LM339电压范围宽,单电源为2~36V,双电源电压为±1V~±18V;

(5)输出端电位可灵活方便地选用;

(6)差动输入电压范围很大,甚至能等于Vcc。

LM339类似于增益不可调的运算放大器。

每个比较器有两个输入端和一个输出端。

两个输入端一个称为同相输入端,用“+”表示,另一个称为反相输入端,用“-”表示。

用作比较两个电压时,任意一个输入端加一个固定电压做参考电压(也称为门限电平,它可选择LM339输入共模范围的任何一点),另一端加一个待比较的信号电压。

当“+”端电压高于“-”端时,输出管截止,相当于输出端开路。

当“-”端电压高于“+”端时,输出管饱和,相当于输出端接低电位。

两个输入端电压差别大于10mV就能确保输出能从一种状态可靠地转换到另一种状态,因此,把LM339用在弱信号检测等场合是比较理想的。

其引脚图3-4所示。

图3-4LM339引脚图

3.2.2电容测量电路原理图

如图3-5为电容测量电路,电路有自动转换电路和电压比较电路组成。

图3-5电容测量电路原理图

3.3显示电路设计

液晶屏根据显示内容可以分为字符型液晶,图形液晶;根据显示容量又可以分为单行16字,2行16字,两行20字等等。

本设计选用的是2行16字的字符型液晶模块的使用方法。

这是一种通用模块,LCD1602液晶外观如图3-6所示。

LCD1602液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在各类仪表和低功耗系统中得到广泛的应用,与数码管相比该模块有如下优点:

(1)位数多,可显示32位,32个数码管体积相当庞大了。

(2)显示内容丰富,可显示所有数字和大、小写字母。

(3)程序简单,如果用数码管动态显示,会占用很多时间来刷新显示,而1602

自动完成此功能。

图3-6LCD1602液晶外观图

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-7LCD1602液晶引脚图

系统显示电路如图3-8所示。

图3-8系统显示电路

3.4按键电路设计

本设计按键采用独立按键,具有电路简单,软件实现简单等有点。

利用74LS573锁存器所存键值,供单片机扫描按键。

系统共有四个独立按键,分别为“设置键”、“量程增大键”、“量程减小键”、“确认键”,当选用手动切换量程时用按键选择,需要设置时首先按下“设置键”,然后按增大或减小量程键,调整适当后按“确认键”。

系统按键电路如图3-9所示。

图3-9系统键盘电路

3.5电源电路设计

电源电路采用经典稳压电源电路[9]。

采用市电220V经变压器变为9V交流电压,经过桥式整流,电容滤波,通过三端稳压芯片7805稳压后再通过电容滤波后输出+5V的系统电路所用电源。

7805是三端集成稳压电路器件,其内具有过流和过热保护功能,即使过负载时稳压器也不会遭到损坏,一方面限制输出电流,使其不会过大,过热时切断输出,使内部电流不致过大。

7805的三端分别为输入Vin、输出端Vo和公共端COM,使用时公共端COM通常接地。

内部等效电路由调整管、控制电路、误差放大器、保护电路等组成。

原理图如图3-10所示。

图3-10电源电路原理图

4软件设计

系统软件部分有主程序、系统初始化子程序、电容测量子程序、中断处理子程序等组成。

系统程序采用计数器0作为计数器使用,采用外部中断INT0作为中断端口,采集外部中断信号。

本系统程序采用C语言编写[10],C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。

C语言有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对系统硬件的控制。

C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。

此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。

因此,使用C语言进行程序设计已成为软件开发的一个主流。

用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。

4.1主程序设计

主程序采用调用形式,当系统响应外部键盘命令,根据指令执行某个功能,当执行某一个功能时,调用子程序完成一定的功能。

当系统开始运行时先进行系统初始化,初始化完成后,由键盘来设置,系统根据外部键盘选择,完成一定的功能。

当执行某个功能的时候,根据程序的指令调用完成各个功能的子程序。

当完成一系列要求的任务后程序结束,进入待机状态。

主程序流程图如图4-1所示。

图4-1主程序流程图

4.2子程序设计

子程序包括中断处理子程序,设置子程序,电容测量子程序,显示子程序。

中断处理子程序用来处理外部键盘输入的中断指令,送给单片机来执行子程序完成要实现的功能;设置子程序是用来通过键盘中断来设置系统要完成的功能,其中要设置手动测量电容或自动测量,手动测量时要选择的档位,还有其他设置等;电容测量子程序用来处理计数器记录的电容充电时间,把时间转化成电容的数值,通过硬件和软件来修正电容的数值,使测量结果更准确。

子程序流程图如图4-2,4-3,4-4所示。

图4-2设置子程序流程图图4-3中断子程序流程图图4-4电容测量子程序流程图

设置子程序主要完成都个子程序参数的设置,在此判断量程转换的方式是手动还是自动,当转换方式是手动式,设置手动调整后的量程。

然后进入测量子程序和现实子程序。

中断子程序当电容充电完成后产生中断后计算电容量并送显示。

 

5总结

经过电容测试仪的设计,系统的了解了单片机的功能及应用,对电容量的测量有了深入的了解。

在老师的指导下完成了电容测试仪的方案设计,选择合适的测量电路和芯片,并根据需要设计了单片机主控电路、电容测量电路以及显示按键电路。

系统以AT89S52单片机为核心控制器,利用电容充放电原理通过单片机的定时器测量电容充电到一定电压时所用的时间,用电压比较器(LM339)来检测电容充电的终止,计算电容值,并以数字形式显示出来,完成了设计任务和要求。

附录

(1)整机系统总图

(2)部分原代码

#include"main.h"

#include"LCD1602.h"

#include"measure_capacity.h"

#include"system_initial.h"

#include"isr.h"

#include"at89x52.h"

#include"hardware.h"

unsignedcharbuffer[17];

unsignedcharTVH0;

unsignedcharstatus=0;

unsignedlongintresult;

unsignedcharmenu_value;

struct

{

unsignedcharflag;

unsignedcharlast_status;

unsignedcharmode;

unsignedcharcapacity_scope;

unsignedintzero_offset[5];

}settings_value;

codeunsignedcharTEXT[5][17]={//主菜单列表

"SelectFunction:

",

"1.Capacity",

};

voiddelayXms(unsignedintx)//延时

{

unsignedinti,j;

for(i=0;i

for(j=0;j<240;j++);

}

voidDisplay_menu(void)//显示初始化

{

LCD_cls();

LCD_prints(TEXT[0]);

LCD_set_position(0x40);

LCD_prints(TEXT[menu_value]);

}

voidMain_menu(void)//菜单子程序

{

unsignedchari;

Display_menu();//调显示

while(status==MAIN_MENU)//全局变量MAIN_MENU=6

{

while(!

key);//ISR中定义无符号字符型

switch(key)

{

CaseKEY_MENU:

menu_value=1;Display_menu();

break;

case

KEY_UP:

if(menu_value==1)menu_value=3;

else

menu_value--;Display_menu();

break;

caseKEY_DOWN:

if(menu_value==3)menu_value=1;

else

menu_value++;Display_menu();break;

caseKEY_ENTER:

{

switch(menu_value)

{

case1:

{

i=1;

LCD_cls();

LCD_prints("Modeselect:

");

LCD_set_position(0x40);

LCD_prints("1.Manualmode");

settings_value.mode=MANUAL_MODE;

key=0;

while(i)

{

while(!

key);

switch(key)

{

CaseKEY_UP:

LCD_cls();

LCD_prints("Modeselect:

");

LCD_set_position(0x40);

LCD_prints("1.Manualmode");

settings_value.mode=MANUAL_MODE;

break;

caseKEY_DOWN:

LCD_cls();

LCD_prints("Modeselect:

");

LCD_set_position(0x40);

LCD_prints("2.Automode");

settings_value.mode=AUTO_MODE;

break;

caseKEY_ENTER:

{

status=MEASURE_CAPACITY;

//Write_a_EEPROM_data(EEPROM_Addr,0x01,status);

//Write_a_EEPROM_data(EEPROM_Addr,0x02,settings_value.mode);

i=0;

break;

}

caseKEY_MENU:

i=0;break;

d

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1