电子系统设计创新与实习报告设计课题基于单片机的电容测量仪设计学院信息科学与工程学生姓名学号专业班级队友指导教师设计时间2014.6.4-2014.7.3-2-本设计详细介绍了一种基于单片机的数字式电容测量仪设计方案及实现方法。设计的主要方法是采用555芯片构成单稳态触发器,将电容容量转换为脉冲宽度。通过单片机的计时器测量脉宽,根据已知的R值,通过单片机的运算功能,计算出电容容量,最后,再通过单片机的普通I/O口控制液晶屏显示出电容容量的计算结果。系统的测量范围为10pF~500uF,具有多个量程,可根据用户需要由用户选择,与用户的交互是通过键盘实现,不同量程的实现是通过单片机的I/O口控制继电器的吸合与断开来选择不同的R值,从而实现不同的量程。同时,本设计注重设计方法及流程,首先根据原理设计电路,再通过protues仿真,利用keil编程,进而借助altiumdesigner制作PCB,最后到焊接元器件,调试直至成功。1系统方案设计-3-1.1设计说明及要求1.1.1设计说明框图中的外接电容是定时电路中的一部分。当外接电容的容量不同时,与定时电路所对应的时间也有所不同,即C=f(t),而时间与脉冲数目成正比,脉冲数目可以通过计数译码获得。1.1.2设计要求(1)基本要求①自制稳压电源。②被测电容的容量在10pF至10000μF范围内③设计四个的测量量程。④显示测量结果,测量误差小于2.5%。数字显示:显示分辨率:每档满量程的0.1%;电容测量:电压可选择5V,25V,50V;为实现该设计,达到相应的设计要求,本次设计中考虑了三种设计方案,三种设计方案中主要区别在于硬件电路和软件设计的不同,对于本设计,三种方案均能够实现,最后根据设计要求、可行性和设计成本的考虑选择了基于STC89C52单片机和555芯片构成的单稳态触发电路测量电容的方案。现在一一介绍论证如下。-4-1.3方案Ⅱ根据积分电路原理可得C=Ui*dt/R*Uo,将经过RC充电电路后,输出的与电容对应的电压值输入到ADC0809中,经过处理后,将相应的数值传到单片机里,再通过公式运算,求得相应的电容C值,在LCD上显示。图1-2方案Ⅱ电容测量框图1.5三种方案作简单的比较比较上述三种方案可知,方案Ⅰ和ⅠⅠ采用了A/D转换器,价格比较昂贵;而且根据公式可知,再换算电压与电容值时,时间参数t起着至关重要的作用,对t的计算要精确,不然误差值会很大,所以调试起来有一定难度;方案Ⅲ电路简单,原理清晰,易于实现,易于控制,本设计就是基于方案Ⅲ展开的。-5-2.2硬件电路设计2.2.1单片机电路设计为使单片机正常工作,除电源供电部分外,还需提供晶振电路和复位电路。具体电路如下:INT0P3.7P1.0P1.6P1.7P1.1P1.2P1.3P1.4P1.5P2.6P2.5P2.4P2.3P2.2P2.1P2.0P2.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C110uFR110K+5VX1CRYSTALC21nFC41nF图2-3单片机工作电路由图2-3可知,9脚外接的是按键复位电路,18,19脚外接的是晶振电路,这样,就构成了单片机正常工作的必备电路。同时,为使P0口正常工作,并增加其带负载能力,P0口需接了上拉电阻(在图中未画出)。-6-2.2.2555时钟芯片与单片机连接图2-4是555时钟芯片构成的单稳态触发电路,6脚和7脚接在一起,R2和C4构成商店复位电路,2脚用于接收单片机P3.7口产生的低脉冲,3脚接于P3.2脚,用于门控制计时器0的启动与停止。从而将电容容量转为脉冲宽度。INT0P3.7THR4DC7Q3GND1VCC8TR2TH6CV5U2NE555C21nF+5VCXR22kC44.7ufR8100图2-4555芯片与单片机的连接2.2.3低脉冲产生电路如图2-5所示,按键接于P3.3口,即外部中断1接口,因此低脉冲是利用中断实现的,P3.7口产生低脉冲,可在软件中的外部中断1函数中实现,整个过程为,需要测量时,按-7-键,产生外部中断,利用外部中断,用软件再在P3.7口产生一个低脉冲,之所以利用中断实现该功能,是为了增加产品的可靠性,因为按键的时间是比较长的,直接用按键产生低脉冲可能导致T1Tw,导致测量错误。而利用中断,可以直接在中断函数中产生一个固定时间的低脉冲,保证了测量条件,避免发生错误。INT0P3.7P1.0P1.6P1.7P1.1P1.2P1.3P1.4P1.5P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P2.7XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C110uFR110K+5V+5VR4200图2-5按键产生低脉冲电路2.2.4键盘电路如图2-6所示键盘电路主要用于与用户进行交互,如用户需要选择量程时,就必须交互。键盘分为独立键盘和矩阵键盘,这里只需要实现量程的选择,共四个量程,故无需矩阵键盘,4个独立按键就完全够用了。P0.3P0.4P0.5P0.6-8-图2-6键盘电路2.2.5指示灯电路如图2-7所示,指示灯主要用于给用户以提示,如当前量程提示,超量程提示等等。D2用于超量程提示,D6用于电源提示。P2.4P2.3P2.5P2.6P2.7R3680D2LED-GREEND1LED-GREEND3LED-GREEND4LED-GREEND5LED-GREEN+5VR9680R10680R11680R12680R6680D6LED-GREEN图2-7指示灯电路2.2.6量程选择电路在图2-4中可以看到,在RC充电回路中,R值是固定的,不可变的,那么量程也显然是不可变的,因此,需要在此加入可调节充电回路电阻的电路部分,这里,利用继电器可以简单实现。具体电路如图2-8所示,利用继电器时需特别注意,由于单片机输出电流是很小的,不足以驱动继电器吸合,因此要加驱动电路,在这里,选择ULN2003芯片来实现。当然,也可以利用典型的三极管驱动来实现,虽然选择的是芯片实现驱动,在这里也将典型的三极管驱动电路列于此。如图2-9所示。-9-INT0P3.7THP0.0P0.1P0.2R4DC7Q3GND1VCC8TR2TH6CV5U2NE555C21nF+5VC35000pfR22kC44.7ufR5100kR610MR71kRL1NTE-R22-5RL2NTE-R22-5R8100RL3NTE-R22-5+5V+5V+5V1B11C162B22C153B33C144B44C135B55C126B66C117B77C10COM9U3ULN2003A图2-8实现量程选择电路P0.0Q1MPSA55RL4NTE-R22-5图2-9利用三极管的驱动电路-10-2.2.7液晶显示电路如图2-10所示,lcd接与P1口,用于显示电容值以及一些相应的测量信息。P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P2.2P2.1P2.0D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM016L+5V图2-10lcd显示电路至此,整个电容测量仪的硬件设计部分就设计好了,接下来,需要的就是与之相匹配的软件支持了。2.3软件设计软件编程平台选择最常用的keil软件。由于该程序并未涉及到底层的驱动问题,因此选择方便快捷的C语言编程。在编程中,将该程序分为三个模块:延时模块,1602显示模块及主函数模块。方便调试与理解。具体程序见附录二。总体程序较长,但并不复杂,可根据需要重点看主函数,与硬件电路结合起来,注重程序后紧跟的注释,理解起来是比较容易的,在此就不再一一详细分析。2.4量程范围设置由于量程的选择是非常重要的一个环节,在这里单独讨论量程的选择。系统采用单片机片内16位的定时器测量TW的宽度,标准计数脉冲的周期为1微秒时,-11-为确保计数器不发生溢出,要求TW65毫秒。同时,为减小量化误差对结果的影响,要求TW1微秒。当TW100微秒以上时,可忽略量化误差的影响。为满足10pF~500uF的测量范围,可通过设置不同充电电阻R的阻值来实现。理论计算的电阻R阻值、理论量程范围以及系统选择的量程范围如表2-1所示。系统分为四个量程,可测量10pF~500uF的电容。表2-1R值与量程范围的关系R值(欧姆)理论量程范围选择的范围10M9pF~5.9nF10pF~5nF100K900pF~590nF5nF~500nF1K90nF~59uF0.5uF~50uF100900nF~590uFF50uF~500uF2.5altiumdesigner原理图设计及PCB制作-12-2.4.1原理图设计图2-11原理图设计-13-2.4.2PCB制作图2-12PCB设计在此并没有布双层板,红色的线仅仅只是为了标志出跳线。-14-2.4.3设计结果图2-13设计结果实物图各个按键功能如图中文字说明。3系统测试由于该作品需实现的功能仅为测电容,在此不列出其他的测试。3.1测量100pf的电容在此以100pf电容测试为例,演示整个测试过程。测试标称值为101的电容,即测量电容值为100pf的电容。104的电容实物如图2-14所示。测试结果如图2-15所示。若量程选择错误,测试结果如图2-16所示。-15-图2-14100nf的电容实物图2-152nf电容正常测试-16-图2-16量程错误情况下的测试3.2测量4.7uf的电容再以测试4.7uf电容为例,测试结果如图2-18所示。图2-18测试4.7uf的电容3.3测试结果将测量的一系列电容的电容值与标准值比较。比较结果如表3-1。表3-1测量值与标准值比较标准值测量值误差100pf99.10pf1%-17-2nf2nf0%4.7uf4.70uf0%100uf100.66uf1%由表3-1中数据可知,平均误差是0.5%,低于设计扩展要求的2.5%,测量范围是10pf~500uf,基本满足设计要求的10pf~10000uf。测量结果由液晶直观显示。综合以上分析,该设计满足整体设计要求。3.1误差分析由于产生的0.5%左右的误差,在这里简要分析一下误差产生的原因。电容测量的误差主要由NE555定时器构成的单稳态触发电路的非线性误差T、计数器的量化误差�N和标准计数脉冲的频率偏移TC产生[2][3]。因此有:系统采用的标准计数脉冲来自单片机内核时钟,由片外的高精度晶振与片内电路自激振荡产生,频率非常稳定,可以忽略其频偏对测量结果的影响。量化误差�N是数字电路的特