三、电阻式传感器接口电路的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三 电阻式传感器的仿真与接口电路设计
首先介绍一款应变片传感器YZC-1B 称重传感器。它的主要参数见下表。
额定载荷:
3,5,8,10,15,20,25,30,35,40,45kg 绝缘电阻:≥5000M Ω 工作温度范围:-40 ~ +80℃ 灵敏度:2.0±0.002mv/v 安全过载:150%F.S 综合误差:±0.02%F.S 极限过载:200%F.S 蠕变:±0.02%F.S
推荐激励电压:10~12V(DC) 零点平衡:±1%F.S
最大激励电压:15V
零点温度影响:±0.02%F.S/10℃ 密封等级:IP67
输出温度影响:±0.02%F.S/10℃ 材质:铝合金 输入电阻:405±5Ω
电缆:线长:0.3~3m ;直径:¢4mm 输出电阻:350±3Ω 输入+:红;输入-:黑; 输出+:绿;输出-:白
这种传感器主要的应用领域是电子计价秤、计重秤等小台面电子秤。它的外观是这样的。这个实验里首先对这样一款传感器进行仿真,然后设计一个接口电路,使其具有测量压力(重量)的功能。
电阻应变片的工作原理基于电阻应变效应,即在导体产生机械变形时,它的
电阻值相应发生变化。应变片是由金属导体或半导体制成的电阻体,其阻值随着压力的变化而变化。对于金属导体,导体变化率△R/R 的表达式为:
△ R/R ≈(1+2μ)ε
式中μ为材料的泊松系数;ε为应变量。通常把单位应变所引起电阻值相对变化称作电阻丝的灵敏系数。对于金属导体,其表达式为:
K 0=△R/R =(1+2μ)
所以△R/R =K 0ε。
在外力作用下,应变片产生变化,同时应变片电阻也发生相应变化。当测得阻值变化为ΔR时,可得到应变值ε,根据应力与应变关系,得到应力值为:
σ=Eε
式中:σ为应力;ε为应变量(为轴向应变);E为材料的弹性模量(kg/mm2)。又知,重力G与应力σ的关系为G=㎎=σs 。式中:G为重力;S为应变片截面积。
根据以上各式可得到:ΔR/R=K
mg/ES。由此便得出应变片电阻值变化与物
体质量的关系,即ΔR=RK
0mg/ ES。根据应变片的材料,取K
=2,E=16300kg∕
mm2, s=100mm2,R=350Ω,g=9.8m∕s,ΔR=[(2×9.8×348)∕(16300×100)]m。
最终确定电阻变化与质量的对应关系为:
ΔR =4.185×10-3m
下面用multisim10建立一个包含有传感器和放大电路在内的电路原理图,来进行输入输出的仿真。原理图如下。
在这个电路里采用了恒流源对传感器电桥的激励。适用四个350Ω的电阻来代替传感器上的四个应变片。当没有外界压力的时候,传感器四个应变片不产生应变而保持原来的阻值,因此电桥平衡,输出为0。当传感器感知压力的时候,
对角线的电阻阻值将发生相应的变化,因此破坏了电桥臂的平衡,有电压输出。但输出电压值很小。于是在后面连接了两级放大电路。电路中有四个滑动变阻器
分别是R
13,R
5
,R
10
,R
12
。其中R
13
和R
5
用于电路的调零,R
10
和R
12
用于调整电路的放
大倍数。
首先将放大电路两端接地调零。假定传感器在重物的压力下发生了应变,按照前面计算的关系ΔR =4.185×10-3m,在受到30kg的重物的压力时,它的ΔR 应为0.125Ω。于是调整电桥上的电阻的阻值为350.125Ω,350.125Ω,349.875Ω,349.875Ω。此时,为了使输出电压与输入的重量成对应关系,可调整滑动变
阻器R
10和R
12
使输入30kg时输出3V。然后观测各表的显示并记录下来。
可见,此时恒流源输出6.779mA电流,电桥输出874.434μV的电压,放大输出后的电压是2.999V。
当传感器受到20kg的重物压力时,相应的电阻变化ΔR时0.084Ω。相应的输出是1.937V。这样再进行10kg、40kg、50kg情况下的仿真。记录在表格里。
图中的恒流源、传感器电桥、放大电路已在前文出现,接下来是A/D 转换、
单片机处理和液晶显示。A/D 转换采用ADC0809(仿真中用ADC0808),单片机采用89C51。在Keil4中编写代码编译并生成 .hex 文件(代码在附录2中)。双击图中的AT89C51加载 .hex 文件,查看仿真结果。在液晶屏幕上显示出了电压(或者说物体的重量)。
单片机▶
A/D 转换电路▶
◀放大器输出
附录1:
附录2:
//-------------- include.h -----------------
#ifndef __INCLUDES_H__
#define __INCLUDES_H__
#include
#include "SMC1602.h"
#include "DATransform.h"
#endif
//-------------- main.c --------------------
#include "includes.h"
#define TIME0H 0x3C
#define TIME0L 0xB0
//全局变量
unsigned char uc_Clock=0; //定时器0中断计数
bit b_DATransform=0;
//LCD上显示电压
void vShowNum(unsigned int uiNumber) {
unsigned char ucaNumber[3],ucCount;
if(uiNumber>999)
uiNumber=999;
ucaNumber[0]=uiNumber/100;
//把计算数字的每个位存入数组。
ucaNumber[1]=(uiNumber-100*(int)uca Number[0])/10;
ucaNumber[2]=uiNumber-100*(int)ucaN umber[0]-10*ucaNumber[1];
for(ucCount=0;ucCount<3;ucCount++)
{
vShowOneChar(ucaNumber[ucCount]+48); //从首位到末位逐一输出。
//if(ucCount==0)
// vShowOneChar('.');
}
}
void delay(unsigned char a)
{
unsigned char i;
while(a--)
for(i=100;i>0;i--);
}
void main()
{
//char key_pre=0,key_cur=0;
char weight;
//设置定时器0
TMOD=0x01; //定时器0,模式1。
TH0=TIME0H;
TL0=TIME0L;
TR0=1; //启动定时器。
ET0=1; //开定时器中断。
EA=1; //开总中断
vdInitialize();
vWriteCMD(0x00);
vShowChar(" ");
while(1)
{
vWriteCMD(0xC0);
vShowChar(" xiexie DUlaoshi");
while(b_DATransform!=1);