简易自动电阻测试仪报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011年全国大学生电子设计竞赛简易自动电阻测试仪(G 题)
【高职高专组】
2011年9月1日
简易自动电阻测试仪
摘要电阻是现代电子电路中最常用最常见的电子元件之一,因此对电阻的测量是经常性的工作。
根据本届全国电子设计竞赛G题的要求,本系统利用 STC 公司的16位超低功耗单片机 STC12C5A32S2、CD7501和LM358,采用伏安法设计了简易自动电阻测试仪。
简易自动电阻测试仪具有:1、阻值测量精确(精度为读数的±1%+2字),2、自动选择合适量程的功能,3、电阻筛选功能,4、数码显示。
实验测试结果表明,本系统性能稳定,测量精度高。
关键词电阻测量仪电子仪器自动量程转换
目录
一、总体方案设计 (2)
1.1电阻测量方法选择 (2)
1.2系统整体模块设计 (2)
二、理论计算与参数 (2)
2.1基准电阻计算选择 (2)
2.2量程切换参数计算 (2)
三、单元电路设计 (2)
3.1 六路自动量程切换电路选择 (2)
3.2 恒流源的设计 (4)
3.3 单片机的选择与论证 (4)
3.4 显示模块的论证与选择 (5)
四、软件设计 (5)
4.1 单片机资源分配 (5)
4.2 软件延时程序. (5)
4.3 按键键值读取程序 (6)
4.4 ADC初始化程序 (6)
4.5 ADC采样驱动程序 (6)
4.6 被测电阻值计算程序 (7)
五、系统测试 (9)
5.1 测试方案 (9)
5.2 测试条件与仪器 (9)
5.3 测试结果及分析 (9)
附录1:测试电路实物图 (10)
附录2:电路原理图 (13)
附录3:源程序 (14)
一、总体方案设计
1.1电阻测量方法选择
方案一:交流电桥测量法
交流电桥的构造及原理均与直流惠斯通电桥相同,电源使用交流电,四臂的阻抗 Z1、Z2、Z3、Z4,可以用电阻、电感、电容或其他组合,电桥平衡的条件是Z 1×Z 2=Z 3×Z 4此条件显示交流电桥不同于直流电桥:首先条件有两个,因此,需要调节两个参数才能使电桥平衡;其次,阻抗的多样性可以组合成各具特色的电桥,但非所有电桥都能同时满足达到平衡的条件。
方案二:LM358恒流源测量法
该方法是给待测电阻提供一个恒定电流,利用单片机的 AD 采集其两端的电压来确定其电阻值。
此种方法简单易行,由于电阻变化范围是100Ω~10M Ω,电压变化范围太大,而单片机AD 输入范围有限,所以至少需要六个挡才能实现要求的指标。
方案三:使用 VFC32压频变换法
该方法的基本原理是将电阻的变化变成0~10V 电压的变化,然后控制压频变换芯片产生线性变化的频率值,单片机通过采集频率值来计算电阻大小。
该方法电路简单,频率稳定,只需要两个档位即可完成要求范围内电阻值的测量。
经过讨论,我们选择了方案二作为我们测量电阻的方案,即伏安法的恒流源测电阻方法。
1.2系统整体模块设计
如图所示,本系统主要由基准电阻矩阵模块、自动量程切换模块、恒流源模块、单片机系统、ADC 采样模块、数码显示模块、直流稳压电源、控制面板组成。
基准电阻矩阵:由精密电阻组成,提供六个量程100Ω、1K 、10K 、100K 、1M 、10M 的对应的基准电阻,其阻值分别为340Ω、5K 、50K 、500K 、5M 、50M 。
自动量程切换:根据被测电阻的大小,从六个基准电阻中选择最合适的基准电阻。
恒流源:由LM358、被测电阻、稳压电源通过深度负反馈线形成恒流源。
ADC 采样:对LM358的输出端电压进行采样。
单片机系统:对采样数据进行处理,控制采样,控制量程自动切换。
控制面板:10M Ω量程选择,电源开关,键盘等组成。
数码显示:3位数码管和两个K Ω、M Ω单位显示LED 灯组成。
单 片 机 系 统
ADC 采样
自动量程切换
恒流源
基准电阻矩阵
控制面板
数 码 显
示
待测电阻
二、理论计算与参数
2.1 基准电阻计算选择
欧姆定律可知:I=U/R,由于采用7805稳压块提供+5V稳压电压,为方便计算,基准值都采用量程的5倍阻值选择。
2.2量程切换参数计算
由于基准电阻是量程的5倍阻值,因此,ADC对电压采样后的值如果大于205,则需要扩大量程。
三、单元电路设计
3.1 六路自动量程切换电路选择
方案一:小型继电器
优势:
导通电阻小,继电器电路导通时,导通电阻只有3~4个欧姆,导通电阻几乎可以忽略不计。
通过电流大,最大通过电流达到2A。
动作可靠,小型继电器的闭合动作非常可靠。
劣势:
体积较大,小型继电器是三种方案涉及器件中占用空间最大。
需要驱动电路,单片机的P口输出功率不能单独驱动继电器工作,须选用合适的驱动电路。
频率不高,继电器受制于机械动作,使其动作频率不能太高。
运行噪声,小型继电器运行时产生噪声和电磁噪声。
方案二:大功率开关管
优势:
导通电阻小,大功率开关管导通时,导通电阻只有15个欧姆左右,导通电阻几乎可以忽略不计。
通过电流大,最大通过电流达到2A。
动作可靠,大功率开关管在控制电压的控制下,动作非常可靠。
劣势:
体积较大,尤其需要附加散热片,散热片占用的空间比较大。
价格贵,
大功率开头管,毎个价格一般在35元左右,如果采用六通道电路,导致成本上升。
六路自动量程切换电路
方案三:CD7501/CD4501八路模拟开关
优势:
体积小,八路通道集成在一块集成块上。
容易控制,单片机可以通过P口直接控制,切换方便。
、
占用资源小,采用译码方式,八路通道选择中用三根地址线即可实现选择。
动作可靠,在控制电压的控制下,动作非常可靠。
劣势:
导通电阻较大,导通电阻达到163欧姆。
通过电流不大,导通时最大通过电流仅为20mA。
结论:
通过对以上测试结果进行比较分析,考虑导通电阻可以通过调整基准电阻进行有效补偿,而切换电路正常工作时,通过电流不会超过10mA,综合分析,自动量程切换电路选用最优方案三,即以CD7501/CD4501八路模拟开关和基准电阻矩阵构成六路自动量程切换电路,根据题目要求测量量程分为:100Ω,1KΩ,10KΩ,10MΩ,因此,对应的基准电阻分别为:500,5K,50K,500K,5M,50M,对应的通道分别为S1,
S2,S3,S5,S6,S,具体电路如上图所示。
3.2 恒流源的设计
根据I=U/R,通过提供基准电阻稳定的电压,只要电压源稳定不变,就可以获得恒定的电流。
如下图所示,恒流源I(OUT1)与LM358的负相输入端相联,待测电阻Rx作为LM358的反馈电阻接入,根据运算放大器深度负反馈虚短、虚断的概念,推导出Rx=Uo/I,Uo为DVM。
、
3.3 单片机的选择与论证
方案一:使用AT89C51S2
使用A T89C51S2单片机作为系统的控制核心。
单片机具有体积小,片上资源丰富,使用灵活,易于人机对话,有较强的指令寻址和运算功能等优点,但是该单片机是8位机,运行速度比较慢,功耗较高。
方案二:使用STC12C5A32S29
使用STC12C5A32S29单片机作为系统的控制核心。
STC12C5A32S29具有体积小,片上资源丰富和I/O口多可复用的优点,最重要的是STC12C5A32S29是16位机,具有超低的功耗,而且本身集成8路10位的ADC,这是其他控制器不可比拟的优势。
结论:
在此系统中,我们经过细致的思考,最终选择了方案二,用STC12C5A32S29作为整个系统的控制与计算中心,单片机系统电路设计如下图所示。
LM358恒流源电路
STC12C5A32S2单片机系统电路
3.4 显示模块的论证与选择
方案一:采用数码管显示
其优点是元件价格便宜,而且外围的电路简单。
但是扫描占用大量的I/O口资源,从而增大了
单片机的运算开销,显示信息不丰富,功耗比较大。
方案二:采用LCD1602液晶显示
其优点是显示方便,使用方便灵活,占用I/O口少,不需要循环扫描,节省了大量的程序开销,但是其显示内容比较单一,所以放弃此方案。
方案三:采用12864LCD 液晶显示
其优点是显示信息非常丰富,可以很形象的显示设计者的所想,方便使用者使用,占用I/O口少,不需要循环扫描,节省了大量的程序开销。
鉴于本系统的基本部分要求和发挥部分要求,在放弃发挥部分第二点的基础上,我们采用数码管显示作为我们的显示模块,用自制的独立式键盘作为数据的输入部分,这样设计的初衷是减少程序的编制难度使用。
显示模块电路如下图所示。
数码管显示电路
四、软件设计
4.1 单片机资源分配
//数码管显示位控制端,低电平有效
sbit data0=P2^1;
sbit data1=P2^2;
sbit data2=P2^3;
//KorM量程选择,低电平量程自动选择100Ω,1KΩ和10KΩ档,高电平量程是10MΩ档
sbit KorMselect=P2^0;
//量程选择开关控制端,A1A0编码与选通通道的关系为:当P2^0=0时,00->S1,01->S2,10->S3;
// 当P2^0=1时,00->S5,01->S6,10->S7。
sbit scaleseletor0=P2^4;//A0
sbit scaleseletor1=P2^5;//A1
//阻值单位设置
sbit uint_K=P2^6; //K单位灯控制
sbit uint_M=P2^7; //M单位灯控制
4.2 软件延时程序
void delay(unsigned int i)
{
unsigned int x,y;
for(x=200;x>0;x--)
for(y=i;y>0;y--);
}
4.3 按键键值读取程序
KorMselect=1;
KorMselecttmp=KorMselect;
if(KorMselecttmp==1)
{
delay(5);
KorMselect=1;
KorMselecttmp=KorMselect;
if(KorMselecttmp==1)
KorM_flag=1;
}
else
KorM_flag=0;
4.4 ADC初始化程序
void ADC_init()
{
P1ASF=0x01; //指定P1.0为ADC功能
ADC_CONTR=0;
AUXR1=0x00; //转换结果位十位
ADC_CONTR=0xe0; //九十个机器周期为一个AD转换周期
delay(1);
}
4.5 ADC采样驱动程序
unsigned int ADProDC(uint m)//连续采样m次,并求m次采样平均值{
unsigned long adcbuf=0;
unsigned long ad_result=0;
unsigned int i=0;
ADC_CONTR=0; //清除ADC_CONTR
ADC_CONTR&=0xf8; // 延时
ADC_CONTR|=0xe8;
while(m--)
{
adcbuf=0;
ADC_RES = 0; //清A/D转换结果寄存器高8位
ADC_RESL = 0;
ADC_CONTR |= 0x08; //0000,1000ADCS =1,启动转换
delay(1);
while((ADC_CONTR&0x10)==0);//0001,0000等待A/D转换结束
ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D转//换adcbuf=ADC_RES;
adcbuf<<=2; //adcbuf值左移2位
ADC_RESL&=0x03; //ADC_RESL值保留低2位值
adcbuf+=ADC_RESL; // 计算十位采样值
ad_result+=adcbuf; // 采样值累加
i++; //采样次数加一
}
adcbuf=(unsigned int)(ad_result/i); // 计算i次电压采样平均值
return adcbuf; //adcbuf为返回值
}
4.6 被测电阻值计算程序
unsigned int SAMPtoRES(uint adcdata,int Smode)
{
float D1, D2;
unsigned long databuf;
int pen[4]={6,2,20,0}; //各量程补偿粗值
D1=(float)adcdata; //采样数据类型转换为浮点数
D1=D1/1023;
D1=(D1*507);
D1 = modf(D1, &D2); //分解D1值,整数部分存入D2中,小数部分是返回值if(D2>=102) //溢出处理
D2=998-pen[Smode];
databuf=(unsigned int)D2; //数据类型转换为整型数
return databuf;
}
4.7数码管显示驱动程序
void RESTODISPLA Y()
{
int data_pointor; //七段码表指针
int zero_flag=0; //第一位灭零标志
data_pointor=(x/100%10);
switch(scale_mode)
{
case 0: //100欧姆量程
if(data_pointor==0) //第一位灭零
{
P0=0xff;
zero_flag=1;
}
else
{
P0=tab[data_pointor];
zero_flag=0;
}
break;
case 1: //1K欧姆量程
P0=0x40;
break;
default: //10M欧姆量程
P0=(tab[data_pointor]&0x7f);
}
data0=0;
data2=1;
delay(5);
//显示第二位
data_pointor=(x/10%10);
switch(scale_mode)
{
case 0: //100欧姆量程
if(data_pointor==0&&zero_flag==1) //第二位灭零
P0=0xff;
else
P0=tab[data_pointor];
break;
default: //1K、10K欧姆量程
P0=(tab[data_pointor]);
}
data0=1;
data1=0;
delay(5);
//显示第三位
data_pointor=x%10;
P0=tab[data_pointor];
data1=1;
data2=0;
delay(5);
}
五、系统测试
5.1测试方案
1、硬件测试
①断开电源用万用表的蜂鸣档检测电路的通断、短路情况。
②接通电源检测试电源电压是否供给个模块。
③按信号流程或者按模块分开检测。
3、硬件软件联调
主要是在硬件部分加入软件后记录数据,用来实测误差大小以及电路稳定性。
5.2 测试条件与仪器
测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,pcb制版是关键不容有丝毫错误,并保证硬件电路无虚焊,否则就要费很大功夫去检查。
测试仪器:高精度的数字万用表,模拟示波器,数字示波器,数字万用表,指针式万用表。
5.3 测试结果及分析
5.3.1测试结果(数据)
实际数据显示数据实际数据显示数据
10Ω9.4 300Ω294Ω
30Ω29.5 500Ω494Ω
50Ω49.4 1kΩ999.5KΩ
70Ω69.4 5KΩ 4.5KΩ
90Ω89.5 1MΩ999.5KΩ
30KΩ29.4 2MΩ 2.5MΩ
50KΩ49.5 3MΩ 2.4MΩ
100KΩ999.4 5MΩ 4.5MΩ
500KΩ499.4 10MΩ9.5MΩ
表一未修正
实际数据显示数据实际数据显示数据
10Ω10 300Ω0.3
30Ω29 500Ω0.5
50Ω49 1kΩ9.99
100Ω9.99 5KΩ 5.01
10KΩ9.99 1MΩ9.99
30KΩ0.03 2MΩ 2
50KΩ0.05 3MΩ 3
100KΩ9.99 5MΩ 5
500KΩ0.50 10MΩ9.99
表二已修正
注:实际数据是由高精度数字万用表测试数据,显示数据是由制作电阻表显示。
为了减少误差本仪器使用了六个档位,为100Ω档、1KΩ档、10KΩ档、100KΩ档、1MΩ档、10MΩ档。
100Ω档显示整数,为实际数值,1K档显示0.0X;10K档显示X.XX;100K档显示0.0X;1MΩ档显示0.XX;10M显示00X(0为小数点位数,x为显示的数值,读出的数值均要乘以它的量程,1K与10K的显示要乘以量程1K,100K档的显示-10M档要乘以量程1M,超出量程均显示999;)。
5.3.2测试分析与结论
根据上述测试数据,实际值总是大于显示值0.5-0.6,最后在显示程序中统一加0.6,出现表二,由此可以得出以下结论:
1、仪器精度达到1%读数+2 字
2、10KΩ能自动切换量程
3、3 位数字显示(最大显示为999),能自动显示小数点和单位。
综上所述,本设计达到设计要求。
附录1:测试电路实物图
半成品
成品附录2:电路原理图。