基于某单片机控制地电阻在线测试仪设计.doc

上传人:李司机 文档编号:1131856 上传时间:2022-06-30 格式:DOC 页数:9 大小:104.99KB
返回 下载 相关 举报
基于某单片机控制地电阻在线测试仪设计.doc_第1页
第1页 / 共9页
基于某单片机控制地电阻在线测试仪设计.doc_第2页
第2页 / 共9页
基于某单片机控制地电阻在线测试仪设计.doc_第3页
第3页 / 共9页
基于某单片机控制地电阻在线测试仪设计.doc_第4页
第4页 / 共9页
基于某单片机控制地电阻在线测试仪设计.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《基于某单片机控制地电阻在线测试仪设计.doc》由会员分享,可在线阅读,更多相关《基于某单片机控制地电阻在线测试仪设计.doc(9页珍藏版)》请在三一办公上搜索。

1、基于单片机控制的电阻在线测试仪设计1、 需求分析随着科学技术的飞速开展,印刷电路板上元器件的集成度、复杂度越来越高,对印刷电路板组装后的测试要求也就相应提高, 在调试维修印刷电路板时,往往需要测量印刷板上的电阻数值。传统的做法是焊开元件再测量,以防止受板上其他元器件的影响。这样作不仅麻烦、测试速度缓慢,甚至可能损伤印刷板和元件。在线测试的提出,为解决这一问题提出了一种较为常用和有效的检测方法。它主要是运用“电隔离技术 ,无需焊开元件而直接在板上测量,既保持印刷板和元件完美无损 ,又大大提高了侧试速度。近来在线测试技术开展很快。经过对已有知识与技术深人的理论分析和实验研究,设计了电阻在线测试仪。

2、特别是引进单片机控制,实现了电阻在线测试的智能化 ,拓宽测试X围,提高精度。2、 方案选择目前“电隔离技术采用的方法很多,本次设计主要的对象是用来测量无源印刷电路板上的单个非耦合电阻,采用了比拟简单的平衡电桥原理,并利用了运放在深度负反应时的“虚短特性,以与利用单片机可以屡次采集求平均值的优点,在此根底上延伸设计完成了仪表的主要功能:单片机控制的量程自动切换,提高了测量的精度。本次设计采用的具体原理介绍如下:设计原理图如图 1.1所示。图中 Rx 为板上的待测电阻 , R1和 R2为 Rx两端旁路的等效电阻, VREF为基准电压 , Rr为基准电阻。测试时用三根测试笔 (图中用箭头表示 ) ,

3、其中一根将 R1 和 R2 的结点接地;第二根将 Rx和 R1的结点接至运算放大器的反相输入端;第三根将 Rx和 R2的结点接至运算放大器的输出端;由图不难看出:根据理想运放“虚短原理,R1上的电压为零,因而没有电流通过;又根据深度电压负反应时其输出电阻为零的特性 ,作为负载电阻 R2 的数值大小 ,不影响其输出电压 Vo,。由图 1得Vo = - VREF Rx /Rr 可见在基准电压 VREF和基准电阻 Rr确定后 ,Vo只取决于 Rx ,而与 R1 与 R2 旁路电阻无关 ,即对 Rx 实现了“电隔离。这就将印制板上的被测电阻 Rx 直接转换为相应的输出电压 Vo。 图1.1原理图 图1

4、.2 实用电路图实际操作过程中,往往需要采用多线制的接线方式,并采用可变基准电阻的多量程测量电路,具体电路图如图1.2,图中给出了一种实用的电阻电压转换电路。为了扩大测量X围 ,引进了基准电阻 Rr1Rr4和相应的开关 K1K4来转换量程。理论分析指出,运算放大器参数对测量精度也有一定的影响 ,选用高精度的运算放大器 (如 OP07等) ,可以进一步提高测量精度。为了减少 R2的影响 ,输出级采用由 T1和 T2复合管组成的射级输出器 ,以进一步减小输出电阻 ,并为 R2 提供所需电流。为了减小接触电阻的影响 ,三根测试笔均采用双线结构 ,将通电流的导线 (图中用粗线表示 )和测电压的导线 (

5、图中细线 )分开 ,理论和实践都指出:在测量集成电路板上的小电阻时 ,这种测试笔能有效的提高测量精度。三、总体任务分析与系统设计3.1 设计任务 电阻在线测试仪的设计是基于普通的万用表的主要功能同时考虑到在线测试环境影响所设计完成的。设计完成的主要功能:-50000,测量精度:1%2数据处理:屡次测量,求平均3量程转换:实现4个量程的自动切换-49;50-499;500-4999;5000-500004数据显示:LCD液晶屏显示5电源选择:选用普通的干电池6红外人体感应报警注:电阻在线测试仪的主要测量参数实际相对于普通万用表的参数都是差的,这主要是由于在线测试环境影响造成的。同时,在线测试仪的

6、最小测量值和测量精度是受A/D转换电路影响的,由于本次设计采用的是8位的A/D转换器,最小的测量值为:50/2*8;量程自动切换是由单片机加上开关选择芯片完成的。3.2 系统设计单片机控制的电阻在线测试仪系统框图如图3所示。系统由被测板、探针组、量程选择开关、A/D转换电路、单片机、LCD显示屏等组成。将探针与被测电路板上的测试点严密接触,通过探针给被测电路板施加测试信号,然后测量响应,逐个测试电路板上元器件的正确性, 实现了电阻在线测试的自动化。该系统通过自动转换量程,拓宽了测试的X围, 通过软件抗干扰措施,进一步提高测试的精度。被测板Rx/Vo转化电路单 片 机探针组A/D转化电路量程自动

7、切换开关LCD测板图3.1 系统框图4、 硬件设计方案系统硬件的主要模块可分为:由OP07运放组成的电桥模块,由OP07组成的电压放大模块,ADC0808组成的A/D转换模块,AT89c51单片机组成的控制模块,CD4052组成的量程选择模块,LCD1602组成的数字显示模块。具体的电路设计:电桥模块主要是由OP07和假如干个支路的等效电阻组成的。电桥模块是电阻在线测试仪的关键所在,被测的电阻信号通过电桥模块转换后形成了易测得电压信号,同时电桥的设计又尽量的减少了支路对被测信号的影响,在实际的操作过程中,采用多线制接法,减少了电路中的干扰。注:OP07的第一脚和第八脚,如果不外接调零电阻,是可

8、以不标出来的电压放大模块是由OP07和CD4052其中的一个4选1开关以与4个电阻组成的。系统中设计电压放大模块是因为AD转换电路要求的信号是0-5v的,被测信号经过电桥模块转换后,可能已经超出了这个X围,为了能让AD正常工作,设计了电压放大模块,其开关选择的依据是与量程切换模块相关的。AD转换模块采用的ADC0808是一种8路模拟输入逐次逼近型转换器.它可以将模拟信号0-5v转换成数值量0-255。由于价格适中,与单片机的接口,软件操作均比拟简单,目前智能单片机系统中有着广泛的运用。控制模块是由AT89c51单片机组成的。在硬件上,单片机发出控制信号,来控制量程转换开关选择最优量程和放大模块

9、选择最优的放大倍数。同时,在电阻首次测量时,单片机还会预配置一个量程可能是不准确的,来进展测量,通过预测量值,来选择量程。量程自动切换模块是由单片机发出控制信号,控制CD4052的一组4选1选择开关选择适宜的量程。量程的自动切换,是根据预测值所在的测量X围确定的。LCD显示模块选用的是LCD1602数字显示屏,它可以显示两行,每行显示16位,并且价格适中,支持汉字显示。注意:LCD1602显示模块必须外接上拉电阻,本次设计选用的是RP8一种8路的排阻芯片,为LCD模块提供上拉电阻。,可以满足设计的需要当方案成型后,建议仪表在设计前期,采用仿真软件,用来调试仪表,在仿真通过后,再进展电路板的设计

10、,以与考虑人机接口,仪表封装等工作.仿真的时候可以利用软件进展自动布线以与某些不需要用的接口自动悬空。基于单片机的电阻在线测试仪的仿真电路图如如下图4.1,此设计图是在PROTEUS7.0下完成的.器件的型号如下:电阻:10WATTOR1,10WATT1K,10WATT22R; 单片机:AT89C51;切换开关:4052AD:ADC0808; 电容:CAP,CAP-ELEC 晶震:CRYSTAL; 排阻:RESPACK-8;LCD:LM016L; 运放:OP07 可变电阻:POT-HG 图4.1 硬件仿真电路图5、 软件设计电阻在线测试仪的工作过程如下:被测电阻 Rx通过 Rx /Vo转换电路

11、,将 Rx转换为直流输出电压Vo,经预配置量程选择开关,送入 A /D转换器,将模拟电压转换为数字量,送入单片机系统。单片机根据输入数据 ,选择最优量程,并控制量程转换开关 ,选择适宜的基准电阻 ,实现量程自动转换。在单片机控制下 ,进展屡次 (10次 )采样测试 ,并对各次测得的Vo求取平均值 ,然后计算电阻 Rx ,最后通过显示器显示被测电阻的数值。在线测试系统的软件,是由主程序,假如干子程序和中断程序组成的。主程序的流程图如如下图:初始化送数据采集次数中断自动切换量程采样次数到求平均值求Rx延时子程序显示NY 图5.1 程序流程框图 六、测试结果与总结6.1 测试过程在普通的实验室环境下

12、,把变阻箱当作是未知待测电阻接入电路,通过观察测量值与电阻箱上提供的标准值之间的误差,来调试整个测试系统。注意:调试过程中,首先要调试的是显示模块,待显示正常后,再利用显示模块调试其他局部。调试的过程中,得到的在线测试仪对应各量程的测量值与用普通万用表得到的测量值以与电阻箱提供的真值之间的关系表如下:第一档:50v档电阻箱值在线仪值万用表值普通万用表的误差 w=9.6-9.4/9.6+15.5-15.1/15.5+24.8-24.3/24.3+32.1-33.0/32.1+48.9-47.8/47.8/5=0.021+0.026+0.020+0.028+0.023/5*100%=2.4%在线测

13、试仪的误差 v=9.6-9.5/9.6+15.5-15.5/15.5+24.5-24.3/24.3+32.3-32.1/32.1+47.8-47.6/47.8/5=0.010+0.006+0.08+0.006+0.005/5*100%=0.7%第二档:500v档电阻箱值在线仪值181.9.万用表值普通万用表的误差 w=81.2-80.4/80.4+183.3-180.3/180.3+274.9-270.5/270.5+365.5-360.6/360.6+450.5-443.9/450.5/5=0.010+0.015+0.013+0.014+0.015/5*100%=1.4%在线测试仪的误差 v

14、=80.9-80.4/80.4+181.9-180.3/180.3+272.1-270.5/270.5+360.6-357.8/360.6+455.6-450.5/450.5/5=0.006+0.009+0.006+0.008+0.011/5*100%=0.8%第三档:5000v档电阻箱值8001500250035004500在线仪值8091511.248035334542万用表值8111519247435414556普通万用表的误差 w=811-800/800+1519-1500/1500+2474-2500/2500+3500-3541/3500+4556-4500/4500/5=0.01

15、4+0.013+0.011+0.012+0.013/5*100%=1.3%在线测试仪的误差 v=809-800/800+1511-1500/1500+2500-2480/2500+3533-3500/3500+4542-4500/4500/5=0.011+0.007+0.008+0.009+0.009/5*100%=0.9%第四档:50000v档电阻箱值800015000250003500045000在线仪值809915116248073533945427万用表值811015305245403601048560普通万用表的误差 w=8110-8000/8000+15305-15000/1500

16、0+25000-24540/25000+36010-35000/35000+45960-45000/45000/5=0.014+0.020+0.019+0.011+0.021/5*100%=1.7%在线测试仪的误差 v=8099-8000/8000+15116-1500/15000+2500 -24807/25000+35339-35000/35000+45427-45000/45000/5=0.012+0.009+0.008+0.010+0.009/5*100%=1.0%1.从实验得到的数据可以看出:在普通的实验室环境下,电阻在线测试仪的测量效果总体来说是要优于普通万用表的,并且在测量精度上

17、达到了设计的要求。2.在测量小电阻时,普通万用的误差会很大,加之万用表本身的测量误差,实验的结果会受很大影响,电阻在线测试仪的精度要明显优于普通万用表。这是由运放的性质以与电路设计特点决定的,所以通过实验,可以看出,本设计如果用于实验室的普通在线测量是有很大的优势的。3.在量程逐渐变大的过程中,普通万用表的测量精度保持的很好,一直处于1.5%左右,而电阻在线测试仪的误差却一直在增大,这是由于电阻值比拟大的时候,当外界有干扰时,且是单向干扰时,测量次数过多,也会累计误差,从而造成误差过大,对测量结果产生影响。4.当测量在量程切换的切换点时,由于预测值的影响,有可能会造成量程选择上的错误,从而产生

18、较大的误差,造成测量结果的不准确。6.3 调试的过程中遇到的问题(1)LCD1602的显示方式是一种查表的显示模式,说明书上说的是支持汉字显示的,从网上找到了汉字的编码,参加到LCD1602的库函数里,但是显示出来的是空白,无法正常显示汉字,最后改为了显示英文。(2) 在未设计电压放大模块时,调试过程中,发现有时可以显示数字,有时显示的是0;通过用万用表查各接线电压后,发现是由于输入到AD模块的电压超限,所以又设计了电压放大模块,保证输入到AD的电压在0-5v之间。(3) 本次设计中只用到了ADC0808的输入端只用到了IN0端,在仿真的时候,对于IN1-IN7是悬空处理的,并未产生问题;但是

19、当连接实物后,发现显示的电阻值,变化是不规律的,考虑到其他输入端可能存在干扰,将IN1-IN7接地,显示正常。(4) 在设计初期切换开关采用的是两片CD4051芯片,后经教师指导,改为了一片CD4052芯片,减少了设计的本钱。(5)当完成软件的设计后,发现在显示测量值时,由于对第一次的预测量值用于分配量程也进展了显示,然后在测量完成10次后,产生突变,变为最终的测量值。针对此问题设计了延时程序,当第一次预测量时,并不予显示,只有达到延时后,才显示测量值。6.4 需要改良的地方(1) 在线测试仪在测量小电阻时是比拟准确的,在测量大电阻时精度并不能保证,为了满足在工业调试过程中的运用,还需要加一定

20、的抗干扰模块。(2) 在设计程序的过程中,是以数组的方式给LCD1602传递数据的,所以使得会显示很多的无用0位,同时在测量大电阻时,小数点后已属于无效位,但是由于程序设计的缺陷,小数点后总是会显示随机值。(3)系统没有设计超限报警,超限后,显示满量程的值。(4)AD模块的clock理论上可以由单片机提供,但是在实际的操作过程中,当AD接收单片机给的CLOCK后,无法正常工作。(5) 电压放大模块是与量程切换模块相关联的,这样就增加了系统之间的耦合性,对出错后的修理和调试都造成了一定的影响,设计系统时,应尽量减少模块之间的耦合关系。 (6) 延时程序的时间需要考虑到机器周期以与计算所用的布数来

21、定,这里为了简单准确,增大了延时时间,显示数据有一点慢。实际应该计算出延时时间,作为标准。附录:程序原代码主程序代码:#include includes.hvoid main()void Resistor(unsigned int uiNumber)unsigned char ucaNumber5,ucbNumber2,ucCount;uiNumber=uiNumber*10;if(uiNumber50000)uiNumber=50000; if(uiNumber/105)ucaNumber0=uiNumber/10000;/4档把计算数字的每个位存入数组。ucaNumber1=(uiNumb

22、er-10000*(int)ucaNumber0)/1000;ucaNumber2=(uiNumber-10000*(int)ucaNumber0-1000*(int)ucaNumber1)/100;ucaNumber3=(uiNumber-10000*(int)ucaNumber0-1000*(int)ucaNumber1-100*(int)ucaNumber2)/10;ucaNumber4=uiNumber-10000*(int)ucaNumber0-1000*ucaNumber1-100*(int)ucaNumber2-10*(int)ucaNumber3; for(ucCount=0;

23、ucCount5;ucCount+) /从首位到末位逐一输出vShowOneChar(ucaNumberucCount+48);else uiNumber=uiNumber/10 ; ucaNumber0=0; ucaNumber1=0; ucaNumber2=0; ucaNumber3=uiNumber/100; ucaNumber4=uiNumber/100-541; if(uiNumber5000)ucaNumber0=uiNumber/1000;/3档把计算数字的每个位存入数组。ucaNumber1=(uiNumber-1000*(int)ucaNumber0)/100;ucaNumb

24、er2=(uiNumber-1000*(int)ucaNumber0-100*(int)ucaNumber1)/10;ucaNumber3=(uiNumber-1000*(int)ucaNumber0-100*(int)ucaNumber1-10*(int)ucaNumber2)/1;for(ucCount=0;ucCount4;ucCount+)vShowOneChar(ucaNumberucCount+48);/从首位到末位逐一输出。 /*if(ucCount) */if(ucaNumber1=0&ucaNumber0=0&ucaNumber2=0) vShowOneChar(.)ucbN

25、umber0=uiNumber/15; ucbNumber1=uiNumber-15*(int)ucbNumber0; for(ucCount=0;ucCount2;ucCount+)vShowOneChar(ucbNumberucCount+48);if(uiNumber500)ucaNumber0=uiNumber/100;/2档把计算数字的每个位存入数组。ucaNumber1=(uiNumber-100*(int)ucaNumber0)/10ucaNumber2=(uiNumber-100*(int)ucaNumber0-10*(int)ucaNumber1)/1;for(ucCount

26、=0;ucCount3;ucCount+)vShowOneChar(ucaNumberucCount+48);/从首位到末位逐一输出。 /*if(ucCount) */if(ucaNumber1=0&ucaNumber0=0&ucaNumber2=0) vShowOneChar(.)if(uiNumber50)ucaNumber0=uiNumber/10;/1档把计算数字的每个位存入数组。ucaNumber1=(uiNumber-10*(int)ucaNumber0)/1for(ucCount=0;ucCount2;ucCount+)vShowOneChar(ucaNumberucCount+

27、48);/从首位到末位逐一输出。 /*if(ucCount) */if(ucaNumber1=0&ucaNumber0=0&ucaNumber2=0) vShowOneChar(.) /中断等待被测信号TMOD=0x01; /定时器0,模式1。TH0=TIME0H;TL0=TIME0L;TR0=1; /启动定时器。ET0=1; /开定时器中断。EA=1; /开总中断 /有中断产生,开始转化if(b_DATransform=1)b_DATransform=0;vWriteCMD(0xC4);Resistor(uiADTransform(); /调用AD软件的子程序略去:AD转化程序,1602查表程序,延时子程序

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号