




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上实验三 电阻式传感器的仿真与接口电路设计首先介绍一款应变片传感器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推荐激励电压:1012V(DC)零点平衡:±1%F.S最大激励电压:15V零点温度影响:±0.02%F.S/10密封等级:IP67输出温度影响:&
2、#177;0.02%F.S/10材质:铝合金输入电阻:405±5电缆:线长:0.33m;直径:4mm输出电阻:350±3输入+:红;输入-:黑;输出+:绿;输出-:白这种传感器主要的应用领域是电子计价秤、计重秤等小台面电子秤。它的外观是这样的。这个实验里首先对这样一款传感器进行仿真,然后设计一个接口电路,使其具有测量压力(重量)的功能。电阻应变片的工作原理基于电阻应变效应,即在导体产生机械变形时,它的电阻值相应发生变化。应变片是由金属导体或半导体制成的电阻体,其阻值随着压力的变化而变化。对于金属导体,导体变化率R/R的表达式为: R/R (12)式中为材料的泊松系数;为应变
3、量。通常把单位应变所引起电阻值相对变化称作电阻丝的灵敏系数。对于金属导体,其表达式为:K0R/R(12)所以R/RK0。在外力作用下,应变片产生变化,同时应变片电阻也发生相应变化。当测得阻值变化为R时,可得到应变值,根据应力与应变关系,得到应力值为:E式中:为应力;为应变量(为轴向应变);E为材料的弹性模量(kgmm2)。又知,重力G与应力的关系为Gs 。式中:G为重力;S为应变片截面积。 根据以上各式可得到:R/RK0mg/ES。由此便得出应变片电阻值变化与物体质量的关系,即RRK0mg/ ES。根据应变片的材料,取K0=2,E=16300kgmm2, s=100mm 2 ,R=350,g=
4、9.8ms,R=(2×9.8×348)(16300×100)m。最终确定电阻变化与质量的对应关系为:R =4.185×10-3m下面用multisim10建立一个包含有传感器和放大电路在内的电路原理图,来进行输入输出的仿真。原理图如下。在这个电路里采用了恒流源对传感器电桥的激励。适用四个350的电阻来代替传感器上的四个应变片。当没有外界压力的时候,传感器四个应变片不产生应变而保持原来的阻值,因此电桥平衡,输出为0。当传感器感知压力的时候,对角线的电阻阻值将发生相应的变化,因此破坏了电桥臂的平衡,有电压输出。但输出电压值很小。于是在后面连接了两级放大电路。
5、电路中有四个滑动变阻器分别是R13,R5,R10,R12 。其中R13和R5用于电路的调零,R10和R12用于调整电路的放大倍数。首先将放大电路两端接地调零。假定传感器在重物的压力下发生了应变,按照前面计算的关系R =4.185×10-3m,在受到30kg的重物的压力时,它的R应为0.125。于是调整电桥上的电阻的阻值为350.125,350.125,349.875,349.875。此时,为了使输出电压与输入的重量成对应关系,可调整滑动变阻器R10 和R12使输入30kg时输出3V。然后观测各表的显示并记录下来。可见,此时恒流源输出6.779mA电流,电桥输出874.434V的电压,
6、放大输出后的电压是2.999V。当传感器受到20kg的重物压力时,相应的电阻变化R时0.084。相应的输出是1.937V。这样再进行10kg、40kg、50kg情况下的仿真。记录在表格里。重量(kg)1020304050R()0.0420.0840.1250.1670.209电桥输出V284.737571.183847.43411321417放大后输出V0.8361.9372.9994.0935.187仿真结果并不理想。接下来讲输出的电压经过A/D转换输入单片机并仿真。在proteuse中建立原理图。放大器输出A/D转换电路 单片机图中的恒流源、传感器电桥、放大电路已在前文出现,接下来是A/D
7、转换、单片机处理和液晶显示。A/D转换采用ADC0809(仿真中用ADC0808),单片机采用89C51。在Keil4中编写代码编译并生成 .hex文件(代码在附录2中)。双击图中的AT89C51加载 .hex文件,查看仿真结果。在液晶屏幕上显示出了电压(或者说物体的重量)。下图是这次实验的完整电路。接下来是由protel99 SE再绘制原理图,形成PCB版图,并焊电路板。附录1:元器件一览表名称数量名称数量附录2:/- include.h -#ifndef _INCLUDES_H_#define _INCLUDES_H_#include <REGX51.H>#include &q
8、uot;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 ucaNumber3,ucCount;if(uiNumber>999)uiNum
9、ber=999;ucaNumber0=uiNumber/100;/把计算数字的每个位存入数组。ucaNumber1=(uiNumber-100*(int)ucaNumber0)/10;ucaNumber2=uiNumber-100*(int)ucaNumber0-10*ucaNumber1;for(ucCount=0;ucCount<3;ucCount+)vShowOneChar(ucaNumberucCount+48);/从首位到末位逐一输出。/if(ucCount=0)/vShowOneChar('.');void delay(unsigned char a)unsi
10、gned char i;while(a-)for(i=100;i>0;i-);void main()/char key_pre=0,key_cur=0;char weight;/设置定时器0TMOD=0x01;/定时器0,模式1。TH0=TIME0H;TL0=TIME0L;TR0=1;/启动定时器。ET0=1;/开定时器中断。 EA=1;/开总中断vdInitialize(); vWriteCMD(0x00);vShowChar(" "); while(1)vWriteCMD(0xC0);vShowChar(" xiexie DUlaoshi");
11、while(b_DATransform!=1); b_DATransform=0;while(weight=uiADTransform()=0); vWriteCMD(0x88);/vShowNum(" "); vShowNum(weight);vShowChar(" kg");vWriteCMD(0xC0);delay(250);delay(250);delay(250);delay(250);vdCleanLCD() ;/定时器0中断函数void Time0() interrupt 1if(uc_Clock=0)uc_Clock=5;b_DATran
12、sform=1;elseuc_Clock-;TH0=TIME0H; /恢复定时器0。TL0=TIME0L;/- DATransform.h -#ifndef _DATRANSFORM_H_#define _DATRANSFORM_H_unsigned int uiADTransform();#endif/- SMC1602.h -#ifndef _SMC1602_H_#define _SMC1602_H_#include <REGX51.H>/LCD设置函数#define vdInitialize()vWriteCMD(0x01);vWriteCMD(0x38);vWriteCMD
13、(0x0C);vWriteCMD(0x0F);/初始化#define vdCleanLCD()vWriteCMD(0x01); /清屏/#define vdSetShowMode()vWriteCMD(0x38);/显示模式设置:8位2行5x7点阵/#define vdSetInput()vWriteCMD(0x0C);/文字不动,光标自动右移/vWriteCMD(0x0F); /显示器开、光标开、闪烁开/端口设置宏定义#define LCDRS P3_5 /寄存器选择信号: /0-数据寄存器; /1-指令寄存器。#define LCDRW P3_6 /读写信号: /1-读LCD; /0-写L
14、CD。#define LCDE P3_7 /片选信号,当输入下降沿信号时, /执行指令或传送数据。#define LCDPORT P0 /LCD数据接口。/写数据命令函数void vDelay(); /延时函数。void vWriteCMD(unsigned char ucCommand); /把1个命令写入LCD。void vWriteData(unsigned char ucData); /把1个数据写入LCD。void vShowOneChar(unsigned char ucChar);void vShowChar(unsigned char ucaChar);#endif/-DATr
15、ansform.c-/AD转换函数#include <REGX51.H>#define START P3_4 /ATART,ALE接口。0->1->0:启动AD转换。#define EOC P3_3 /转换完毕由0变1.#define OUTPORT P2 /AD转换函数,返回转换结果。/转换结果是3位数,小数点在百位与十位之间。unsigned int uiADTransform()unsigned int uiResult;START=1; /启动AD转换。START=0;while(EOC=0); /等待转换结束。uiResult=OUTPORT; /出入转换结果
16、。uiResult=(100*uiResult)/51; /处理运算结果。return uiResult;/-SMC1602.c(SMC1602驱动程序)-#include "SMC1602.h"/把1个命令写入LCDvoid vWriteCMD(unsigned char ucCommand) vDelay();/先延时。LCDE=1;/然后把改为写入命令状态。LCDRS=0;LCDRW=0;LCDPORT=ucCommand;/再输出命令。LCDE=0;/最后执行命令。/把1个数据写入LCDvoid vWriteData(unsigned char ucData) vD
17、elay(); /先延时。LCDE=1; /然后把改为写入数据状态。LCDRS=1;LCDRW=0;LCDPORT=ucData; /再输出数据。LCDE=0; /最后显示数据。void vShowOneChar(unsigned char ucChar)switch(ucChar)case ' ': vWriteData(0x20);break;case '!': vWriteData(0x21);break;case '"': vWriteData(0x22);break;case '#': vWriteData(0
18、x23);break;case '$': vWriteData(0x24);break;case '%': vWriteData(0x25);break;case '&': vWriteData(0x26);break;case '>': vWriteData(0x27);break;case '(': vWriteData(0x28);break;case ')': vWriteData(0x29);break;case '*': vWriteData(0x20);b
19、reak;case '+': vWriteData(0x2A);break;case '-': vWriteData(0x2D);break;case '/': vWriteData(0x2F);break;case '=': vWriteData(0x3D);break;case '<': vWriteData(0x3E);break;case '?': vWriteData(0x3F);break;case '.': vWriteData(0x2E);break;case
20、':': vWriteData(0x3A);break;case '0': vWriteData(0x30);break;case '1': vWriteData(0x31);break;case '2': vWriteData(0x32);break;case '3': vWriteData(0x33);break;case '4': vWriteData(0x34);break;case '5': vWriteData(0x35);break;case '6':
21、vWriteData(0x36);break;case '7': vWriteData(0x37);break;case '8': vWriteData(0x38);break;case '9': vWriteData(0x39);break;case 'A': vWriteData(0x41);break;case 'B': vWriteData(0x42);break;case 'C': vWriteData(0x43);break;case 'D': vWriteData(0x
22、44);break;case 'E': vWriteData(0x45);break;case 'F': vWriteData(0x46);break;case 'G': vWriteData(0x47);break;case 'H': vWriteData(0x48);break;case 'I': vWriteData(0x49);break;case 'J': vWriteData(0x4A);break;case 'K': vWriteData(0x4B);break;cas
23、e 'L': vWriteData(0x4C);break;case 'M': vWriteData(0x4D);break;case 'N': vWriteData(0x4E);break;case 'O': vWriteData(0x4F);break;case 'P': vWriteData(0x50);break;case 'Q': vWriteData(0x51);break;case 'R': vWriteData(0x52);break;case 'S'
24、: vWriteData(0x53);break;case 'T': vWriteData(0x54);break;case 'U': vWriteData(0x55);break;case 'V': vWriteData(0x56);break;case 'W': vWriteData(0x57);break;case 'X': vWriteData(0x58);break;case 'Y': vWriteData(0x59);break;case 'Z': vWriteData(
25、0x5A);break;case 'a': vWriteData(0x61);break;case 'b': vWriteData(0x62);break;case 'c': vWriteData(0x63);break;case 'd': vWriteData(0x64);break;case 'e': vWriteData(0x65);break;case 'f': vWriteData(0x66);break;case 'g': vWriteData(0x67);break;case 'h': vWriteData(0x68);break;case 'i': vWriteData(0x69);break;case 'j': vWriteData(0x6A);break;case 'k': vWriteData(0x6B);break;case
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年江西中烟工业公司笔试试题及答案
- 川菜考试题及答案
- 取样考试题及答案
- 办公考试题及答案
- 中华传统文化融入《思想道德与法治》知到智慧树答案
- 基础护理学习题及答案
- 高血压试题及答案4
- 2025年二手车转让与售后服务保障协议
- 2025年房屋拆迁补偿安置协议书范本与案例分析
- 2025年度养老地产项目委托销售代理协议
- 电影院安全生产与安全管理规定制度
- 废气处理合同协议
- 镁铝合金行业前景
- 2025-2030中国余热回收行业市场现状供需分析及投资评估规划分析研究报告
- 无人机物流配送服务手册
- 见证取样送检计划方案
- 二年级上册语文课内阅读理解每日一练(含答案)
- 2025-2030年中国功率器件市场发展趋势规划研究报告
- 基层管理培训课程
- 宇宙飞船的发射与回收技术分析
- 2024考研 政治 思维导图(马原)
评论
0/150
提交评论