毫欧表电路设计.docx
- 文档编号:30552441
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:24
- 大小:281.11KB
毫欧表电路设计.docx
《毫欧表电路设计.docx》由会员分享,可在线阅读,更多相关《毫欧表电路设计.docx(24页珍藏版)》请在冰豆网上搜索。
毫欧表电路设计
摘 要
基于AT89S52单片机的毫欧表设计是采用伏安法测量电阻。
采用TLC5615数模转换芯片和LM358运算放大器及三极管TIP41构成的压控恒流源提拱恒定的电流。
测量电阻时可选择的电流分别为1mA,10mA,100mA。
测量电阻的量程分别为40.00Ω、4000mΩ、400.0mΩ。
测量的电压信号通过LM358运算放器放大100倍后经过TLC1549模数芯片传入单片机进行计算处理并在数码管上输出电阻值!
关键字:
毫欧表压控恒流源
目录:
一.总体方案设计:
采用伏安法测电阻,通以恒定的电流,测量电阻上的电压。
因为U=R×I
由于电阻为毫欧,如果电流为毫安的话,则所得的电压值很小,难以通过ADC识别出来。
可以采用大电流的方法和把电压信号放大的方法来使ADC芯片识别出来并由通过单片机计算得出电阻值。
采用大电流的话,由于很多小电阻无法承受较大的电流,通过电阻的电流较大时,产生的热量也多,会带来较大的误差。
所以采用把电压信号放大的方法,把微小的电压信号放大后经过AD转换,把信号送入单片机,然后由单片机计算并显示出电阻值。
测量范围
测量电流
最大输出电压
电压放大100倍
40.00Ω
1mA
40mV
4V
4000mΩ
10mA
40mV
4V
400.0mΩ
100mA
40mV
4V
上图为测试电阻的范围及测量时的电流:
二.方案选择:
2.1电阻测量方案
2.1.1方案一 比较法测电阻:
在乙图中,K1闭合,K2断开测得U1;K1断开,K2闭合测得U2,使用条件:
在乙图中应保证AB间电压恒定。
上图中的比较法测量电阻值的阻值非常小时,电阻R0难以选取。
并且要用电压表测量两处电阻的电压。
其中的导体接触间的电阻也会对测量结果造成一定的误差,并且对电压表的要求高。
没有采用此方案。
2.1.2方案二 替代法测电阻:
步骤:
①K1打开,K2接1,调节R1为最大,电阻箱R0为最大。
②闭合K1。
调节R1使、指针指在2/3处,读数。
③K2接2,保持R1不动,调节R-0,使、读数不变。
④RX=电阻箱读数。
条件:
被测量的部份电路电流或电压不变。
上图但不适合于测量小电阻。
因为电阻箱的阻值一般都较大。
测量的电阻精度低。
2.1.3方案三 直流电桥测电阻
直流电桥又分直流单电桥和直流双电桥。
采用上面的两种方法时要用很多操作需要手动操作,并且对元件选取要求高,是通过数字电位器来改变需要的电阻参数,虽然可以达到数控的目的,但数字电位器的每一级步进电阻比较大,调节困难,需要采用数控电阻,用单片机处理计算杂复并且测量时操作不方便。
2.1.4方案
四 伏安法测电阻
采用伏安法测量电阻时,恒流源电路产生恒定的电流源通过被测电阻Rx,只需要测量出Rx上的电压大小,然后用Rx=U/I即可算出电阻的阻值大小。
方便单片机进行处理。
实际操作起来相对也比较简单。
方案四,操作简单,计算方便。
精度比方案一和方案二高,但操作和计算比方安三更简单和方案。
所以采用方案四伏安法测电阻。
2.2压控恒流源方案:
2.2.1方案一
I=U/(R1+R2),若R1>>R2,则电流I约为I=U/R1;
可以采用一个恒定的电压,然后除以一个大电阻,测试时由时所测的电阻很小,基本上可以看作电流是恒定的。
但这种方案测量的电阻阻值越大,电流变化较大,电流精度不高。
2.2.2方案二
采用恒流二极管或者恒流三极管,精度比较高,但这种电路能实现的恒流范围很小,只能达到十几毫安,不能达到题目的要求。
2.2.3方案三
压控恒流源,通过改变恒流源的外围电压,利用电压的大小来控制输出电流的大小。
电压控制电路采用数控的方式,利用单片机送出数字量,经过D/A转换转变成模拟信号,再送到运算放大器和大功率三极管进行放大输出电流。
该方案通过软件方法实现输出电流稳定,易于功能的实现,便于操作,故选择此方案。
原理图如下面的数控恒流源中的原理图。
三.单元模块设计:
3.1数控恒流源
数控恒流源为电阻测量提供恒定的电流。
单片机由测量所需的电流而控制输出恒定电流的大小。
实际电路中采用的三极管为TIP41,三极管本身在这里不具备控制电流大小的作用,但是起到驱动和扩流的作用。
前面是一个电压跟随,后面一个负反馈。
R9上的电压为输入的电压Vin。
理论计算
I1=VR1/R1=(Vi-V+)/R1 ;
I2=VR2/R2=(V+-Va)/R2 ;
因为I+=0,得I1=I2
所以Va=(V+-Vi)R2/R1+V+;
I3=VR3/R3=V-/R1 ;I4=VR4/R4=(VO-V-)/R4 ;
因为I-=0,得I3=I4 所以VO=V-(R3/R4+1);
从而可得R5上电压为UR5=VO - Va =(R4/R3)×V--(R2/R1)×V++(V--V+)+(R2/R1)×Vi ,若R2=R1,R3=R4,且V-=V+ 则UR5=Vi(输入电压)
假设I5=IL 可得 VA/RL=VI/R5 ,由上式的Va=(V+-V-)R2/R1+V+;及R2=R1;可得 (2V+ - V-)/RL=Vi/R5即(2V+/V-)-1=RL/R5;
当V+
3.2电压放大模块设计
需要把测量到的直流电压信号放大100倍后,即可传给AD芯片再由单片机处量。
原理图如下 通过调节R2与R1的比值即可以改变电压放大倍数。
上图为LM358的PDF里提供的电路原理图,实际电路中采用的电阻R2=1MΩ,R1由3296电位器构成,阻值调成10K。
上图是采用的单个运算放大一百倍。
也可以采用两个运算,每个放大十倍。
实际电路制作过程中,上面两种方法都进行测试,发现采用单个运算放大一百倍效果相对要好。
所以实际电路中是采用的单个运算放大100倍的方法。
3.3AD转换与单片机处理
电阻测量所取得的电压信号放大100倍后,通过AD-IN传入ADC转换芯片。
再由单片机计算,用所得的电压除以测量时恒定的电流可得电阻的阻值大小,但此时的电阻阻值还不是实际所测得的电阻阻值,因为电压是放大一百倍后所得的。
所以结果应缩小100倍即可得到真实的电阻阻值大小。
3.4DA转换
由单片机控制DAC5615芯片分别产生40mV、400mV、4000mV的电压即可获得需要测量的电流分别为1mA(40mV/40Ω)、10mA(400mV/40Ω)、100mA(4000mV/40Ω)。
实际电路中只需要选择好相应的电阻测量范围即可。
不需要手机选择测试电流,电流将由单片机控制电压控制电流源电路输出所需要的电流。
3.5按键的输入及数码管的显示输出
采用了串行接口8位LED数码管及64键键盘智能控制芯片HD7279芯片来处理按键的输入及8位数码管的输出显示。
本电路只采用了4×4的按键及8位数码管显示输出。
四.软件设计
4.1主程序流程图
五.系统功能,指标参数
5.1系统实现的功能,
(1) 电阻的测量,测量电阻范量为0.1mΩ-40Ω。
(理论值可达到0.1mΩ)
(2) 产生方波,正弦波,方波,锯齿波。
(3) 时钟的显示功能。
并可调整时间。
(4) 测量0-4V间的直流电压值。
(5) 压控恒流源 输入0-4V的电压,产生恒定的电流为0-100mA。
5.2测量电阻方法:
用小鳄鱼夹接好电阻,选估计被测电阻的范围,再按下按键来选择测试的电流。
其中,在100mA电流(按键3)中设了自动调零技术。
可以选用把测试导线直接短接后,选按下数字键3,再按一下自动调零按键(数字0)即可。
测量出的电阻显示的是,测量值减去导线间的电阻值。
注意:
1必须在测试之前,确定被测电阻可以安全流过最大测试电流!
尤其在使用0.4Ω(100mA)档时!
2调零时,先把两根测试导线短接。
按下要用的量程键(数字键3)之后,再按下调零键(数字键0)。
此时,数码管会显示出当前导线间的电阻值一秒钟并保存。
再按下量程键(数字键3)即可进行测量。
5.3实际测试结果
被测电阻全部为四色坏的碳膜电阻。
0.24Ω、2Ω、2.2Ω、3.9Ω
由于测试时电阻有限,所以下面测试中部分电阻阻值是采用以上电阻串联或并联起来作为一个被测电阻。
三个量程测试的数据分别如下:
1mA电流的量程,测得电阻阻值如下表
量程
电阻标称值Ω
测量电阻值Ω
绝对误差
相对误差%
1mA 40Ω
1
0.99
0.01
1.00
1mA 40Ω
2
2.11
0.11
5.50
1mA 40Ω
2.2
2.06
0.14
6.36
1mA 40Ω
3.9
3.88
0.02
0.51
1mA 40Ω
4
4.04
0.04
1.00
1mA 40Ω
6
6.28
0.28
4.67
1mA 40Ω
8
8.45
0.45
5.62
1mA 40Ω
10
10.56
0.56
5.60
1mA 40Ω
12
12.88
0.88
7.33
1mA 40Ω
14
13.94
0.06
0.43
1mA 40Ω
16
16.34
0.34
2.13
1mA 40Ω
18
18.82
0.82
4.56
1mA 40Ω
20
20.74
0.74
3.70
1mA 40Ω
22
22.78
0.78
3.55
平均
3.71
10mA电流的量程,测得电阻阻值如下表
量程
电阻标称值Ω
测量电阻值Ω
绝对误差
相对误差%
10mA 4Ω
0.12
0.12
0
0.00
10mA 4Ω
0.24
0.24
0
0.00
10mA 4Ω
0.48
0.508
0.028
5.83
10mA 4Ω
0.72
0.768
0.048
6.67
10mA 4Ω
1
1.024
0.024
2.40
10mA 4Ω
2
2.052
0.052
2.60
10mA 4Ω
2.2
2.216
0.016
0.73
10mA 4Ω
3.9
3.928
0.028
0.72
10mA 4Ω
4
4.048
0.048
1.20
平均
2.24
100mA电流的量程,测得电阻阻值如下表
量程
电阻标称值mΩ
测量电阻值mΩ
绝对误差
相对误差%
100mA 0.4Ω
60
61.4
1.4
2.33
100mA 0.4Ω
80
83.5
3.5
4.38
100mA 0.4Ω
120
125.4
5.4
4.50
100mA 0.4Ω
240
255.8
15.8
6.58
平均
4.45
5.4对测理结果的分析:
1 在采用1mA电流测试时,当被测电阻小于2Ω时,所得的测试结果平均比电阻标称值要小0.23Ω。
当被测的电阻大于14欧时,所得的测试结果平均比电阻标称值要大1.38Ω。
在编程中对上面问题进行了软件修正。
2 分析原因,当测量电流为1mA,电阻小于2欧时,产生的电压也小于2mV。
由于LM358器件原因,而使得输出结果小0.23Ω。
被测电阻大于14欧时,所得结果偏大的原因,估计由时测试时的14Ω,16Ω,18Ω,20Ω,22Ω的电阻都是由一单独阻值为2Ω的碳膜电阻串联而成的。
在两电阻间的接触处没有用电烙铁等工具焊接起来,而且直接用把电阻引脚绑定在一起。
每个电阻连结处的电阻给测量结果带来的较大的偏差。
3 测试结果表明,所测得的电阻在一定程度上与电阻本身标称值相同,当工作电流太小,或在比较大的电流范围时误差有所增加。
引起这些误差的因素是多方面的,主要由测量仪器的系统误差以及电阻采用的是四环的碳膜电阻受温度影响较大,电流源工作在大电流时受温度影响所致。
4 本系统如果采如精度更高,温度特性更好的电阻和导线,可提高测量的精度。
六.设计总结
在制作毫欧表的过程中,我深切的体会到电路理论与实际相结合的重要。
以及用电脑软件仿真与电路理论及电路实际的不同。
自己制作过程是先实际再理论最后再实际的过程。
自己最初制作的毫欧表是采用的是稳定的电压除以大电阻的恒流源方案。
测量的结果不是很稳定。
而且每次换量程时还需要手动改变电流,操作繁琐。
后面打算单片机通过控制继电器来改变电流开关。
需要占用较多的单片机资源。
而且成本增加。
后面发现了压控恒流源方案来恒定电流,接着花了很长时间查资料学习及实验采用的压控恒流源的方法来提拱恒定的电流。
在整个制作过程中,主要是离不开上学期电子培训课上老师所教的知识及提供的条件,让自己学到了更多的知识。
其次是网上电子爱好者及电子类的论坛给了自己很大的帮助,在整个制作过程中所遇到的问题大部分是通过网络上虽互不认识但都爱好电子的电子爱好者给予的解答。
用途:
测量直流类mΩ~数十Ω的小电阻,主要用于电动机,扬声器,继电器等线圈的直流电阻,由于它们的直流电阻数值不大,普通万用表实际很难测量到准确读数.使用毫欧表可以解决大部分这种测量.
七.参考文献
[1]:
周尘.单片机C语言轻松入门.北京航空航一大学出版社.2006
[2]:
康华光,陈大钦编.电子技术基本.高等教育出版社.2004
[3]:
周润景.张丽娜.基于PROTEUSR的电路及单片机系统设计与仿真.2006
八.附:
8.1电路仿真原理图
在proteus电路仿真软件中的仿真的压控恒流源电路原理图如下:
在Multisim9电路仿真软件中的仿真的压控恒流源电路原理图如下:
9.2程序:
#include
#include
/********函数声明********/
voidwrite7279(unsignedchar,unsignedchar);//写入到HD7279
unsignedcharread7279(unsignedchar);//从HD7279读出
voidsend_byte(unsignedchar);//发送一个字节
unsignedcharreceive_byte(void);//接收一个字节
voiddelay10ms(unsignedchartime);//延时程序
voidshort_delay(void);//短延时
unsignedintadc1549(void);//ADCTLC1549的驱动程序
voidDaConv(unsignedintDaDat);//DACTLC5615的驱动程序
unsignedintlubo(void);//滤波程序
voidzhenxianbo(void);//正弦波
voidsanjiaobo(void);//三角波
voidjuchibo(void);//锯齿波
voidfangbo(void);//方波
voiddisplaytime();//显示时钟
voidadc(void);//显示测量出的电压值
voidresistance1mA();//1mA计算电阻值
voidresistance10mA();//10mA计算电阻值
voidresistance100mA();//100mA计算电阻值
voidABC();//计算导线间的电阻值
voidoverflow(unsignedchard3,unsignedchard2,unsignedchard1,unsignedchard0);//溢出显示1
//****************HD7279A指令************
#defineCMD_RESET0xa4
#defineCMD_TEST0xbf
#defineDECODE00x80
#defineDECODE10xc8
#defineCMD_READ0x15
#defineUNDECODE0x90
#defineRTL_CYCLE0xa3
#defineRTR_CYCLE0xa2
#defineRTL_UNCYL0xa1
#defineRTR_UNCYL0xa0
#defineACTCTL0x98
#defineSEGON0xe0
#defineSEGOFF0xc0
#defineBLINKCTL0x88
//****************键盘按键代码************
#defineone0x3a
#definetwo0x39
#definethree0x38
#definefour0x32
#definefive0x31
#definesix0x30
#defineseven0x2a
#defineeight0x29
#definenine0x28
#defineEsc0x22
#definezero0x21
#defineEnter0x20
#defineup0x3f
#defineleft0x37
#defineright0x2f
#definedown0x27
#defineuintunsignedint
#defineucharunsignedchar
//*************变量及I/O口定义******************
unsignedcharkey_number,hour=0,minute=0,second=0;
unsignedinttmr;
unsignedintu1=0,u=0,res=0,DaDate;
sbitcs=P0^3;//HD7279
sbitclk=P0^2;//HD7279
sbitdat=P0^0;//HD7279
sbitkey=P0^1;//HD7279
sbitad_clk=P2^2;//ADC1549
sbitad_cs=P2^0;//ad
sbitad_dout=P2^1;//ad
sbitDIN=P2^3;//DAC5615
sbitDaCS=P2^4;//da
sbitDaSCLK=P2^5;//da
/***************正弦波数值表******************/
voidda5615(unsignedint);
voidfangbo(void);
voidjuchibo(void);
voidsanjiaobo(void);
voidzhenxianbo(void);
voidset_time(void);
codeunsignedcharTAB[]={
0x80,0x83,0X86,0X89,0X8D,0X90,0X93,0X96,0X99,0X9C,0X9F,0XA2,0XA5,0XA8,0XAB,0XAE,
0XB1,0XB4,0XB7,0XBA,0XBC,0XBF,0XC2,0XC5,0XC7,0XCA,0XCC,0XCF,0XD1,0XD4,0XD6,0XD8,
0XDA,0XDD,0XDF,0XE1,0XE3,0XE5,0XE7,0XE9,0XEA,0XEC,0XEF,0XF1,0XF2,0XF3,0XF4,0XF5,
0XF6,0XF7,0XF8,0XF9,0XFA,0XFB,0XFC,0XFD,0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFE,0XFD,0XFC,0XFB,0XFA,0XF9,0XF8,0XF7,0XF6,
0XF5,0XF4,0XF2,0XF1,0XEF,0XEE,0XEC,0XEA,0XE9,0XE7,0XE5,0XE3,0XE1,0XDE,0XDD,0XDA,
0XD8,0XD6,0XD4,0XD1,0XCF,0XCC,0XCA,0XC9,0XC5,0Xc2,0XBF,0XBC,0XBA,0XB7,0XB4,0XB1,
0XAE,0XAB,0XA8,0XA5,0XA2,0X9F,0X9C,0X99,0X96,0X93,0X90,0X8D,0X89,0X86,0X83,0X80,
0X80,0X7C,0X79,0X76,0X72,0X6F,0X6C,0X69,0X66,0X63,0X60,0X5D,0X5A,0X57,0X55,0X51,
0X4E,0X4C,0X48,0X45,0X43,0X40,0X3D,0X3A,0X38,0X35,0X33,0X30,0X2E,0X2B,0X29,0X27,
0X25,0X22,0X20,0X1E,0X1C,0X1A,0X18,0X16,0X15,0X13,0X11,0X10,0X0E,0X0D,0X0B,0X0A,
0X09,0X08,0X07,0X06,0X05,0X04,0X03,0X02,0X02,0X01,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X01,0X00,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0D,
0X0E,0X10,0X11,0X13,0X15,0X16,0X18,0X1A,0X1C,0X1E,0X20,0X22,0X25,0X27,0X29,0X2B,
0X2E,0X30,0X33,0X35,0X38,0X3A,0X3D,0X40,0X43,0X45,0X48,0X4C,0X4E,0X51,0X55,0X57,
0X5A,0X5D,0X60,0X63,0X66,0X69,0X6C,0X6F,0X72,0X76,0X79,0X7C,0X80};
main()
{unsignedchara,*p;
while
(1)
{
for(tmr=0;tmr<0x2000;tmr++);//上电延时
send_byte(CMD_RESET);//复位HD7279A
cs=1;
delay10ms(10);
key_number=0xff;
TMOD=0x01;//定时器0工作方式1
TH0=0xdc;//定时时间=(65536-56320)*(1/11.0592)*12=10ms(fosc=11.0592)
TL0=0x00;
ET0=1;
TR0=1;
if(!
key)//如果有键按下
{
key_number=read7279(CMD_READ);//读出键码
tmr=key_number;
switch(tmr)
{caseone:
do{resistance1mA();delay10ms(100);//1mA电流时测得
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毫欧表 电路设计