基于单片机的数字测力计的设计
河南职业技术学院
毕业设计(论文)
题 目:基于单片机的数字测力计的设计
系(分院)机械电子工程系 学生姓名 侯良杰 学 号 09111024 专业名称 机电一体化 指导教师 周 炯 亮
基于单片机的数字测力计的设计
摘要:随着信息时代的到来,数字处理技术、传感器技术得到了显著的提高,其应用领域越来越广泛,越来越高,需求越来越迫切。因此了解它们的基本构造、工作原理及其特性是非常重要的。本文利用单片机结合传感器技术开发设计,本中把传感器理论与单片机实际应用有机结合,详细地讲述了利用FS2050压力传感器测量拉力信号并输出电信号,经模数转换器ADC0809转换成数字信号输入单片机进行处理,然后通过三个八段数码管显示输出。本文通过这样的系统设计成数字测力计。市场上的数字测力计有很多种类,本文设计的测力计与其相似如图右所示。
关键字:信息时代,传感器,转换器,51单片机,数码显示。
一、绪论
(一) 背景
在教学实验中和一些工业中常常需要测一些力的大小,传统的一些弹簧测力计由于精度不准,弹簧容易形变,调零不准等等缺点。为了 提高传感器和单片机的认识和了解,尤其是对数字测力计的深入研究以及其用法和用途,基于实用、精确、广泛、操作简单和调零容易的原则设计了本系统。
(二)设计目的
掌握数字测力计,调零系统、报错系统组装与调试方法。 熟悉仿真软件(PROTEUS)编译软件(KEIL)的使用 掌握AD转换器,单片机,数码管得使用及其各个引脚的功能 掌握各个器件数据的计算和量程的选取,和数据的通用性
二、设计与实现
(一)
选取:
传感器
选择的传感器要求实现测量在0—100N的力信号,实现实验室用的小量程的测力计的传感器对0—100N的力信号的识别。
选用FS20测力传感器是一种高性价比的微力传感器,采用MICROFUSE技术,长期稳定性好,超高分分辨率,过量程保护,带温度补偿的压力传感器。
特点: 低成本;超小外形;低噪声;0-5V输出;高稳定性;低飘移;反极性及过载保护;工业标准封装;
量程:500—1500g
描述: FS20测力传感器(如下图)是一种高性价比的微力传感器;采用MICROFUSE技术,长期稳定性好,超高分辨力,过量程保护,带温度补偿,非常适合OEM产品。
运用: 婴儿称、油漆喷雾器、汽车安全刹车、机器人、泵、微压力测量、接触力测量、医疗设备、家用电器;
设计:
图1
如上图1所示:用杠杆的原理将0—100N的力缩小X倍数使其在500-1500g的可被FS20传感器识别的信号。
设要测量的拉力为F
设传力杠杆对压件的向上压力为f 设调零杠杆对压件的压力为N 设压件的重力为G
设以上对传感器的向上压力为T
所以 :此力系统对传感器的向上作用力T为500g且向下的拉力F为0N时,此时测力计为零正常状态。各个力的作用变化如下表所示。
调零 : 调零的条件是
当 F=0N 时 T=N+G+f=500g 操作:调节N的大小使 N+G+f=500g 计算传力杠杆的缩小倍数
X=F/f=100/1000g*9.8=10.2
精度:
取X=10.2时 当f=1000g时 F=1.0*9.8*10.2=99.96N 所以精度可以。
(二)
A/D转换器
选取:ADC转换器的作用是将模拟量转换成数字量,以便于芯片进行处理。选用有八位分辨率的模拟量输入通道,有有转换启停控制,模拟输入电压范围0—5V,转换时间为100us.
ADC0809芯片介绍(如下图2)
ADC0809芯片有28个引脚,采用双列直插式封装。 各个引脚的含义如下。 IN0-IN7:8路模拟量输入端 D0—D7 :8位数字量输出端
ADDA、ADDB、ADDC是3位地址译码线,译码结果决定转换8路模拟量中的一路。译码情况如下表:
ALE:地址锁存信号,输入,高电平。 START:A/D转换启动信号,输出,高电平。 EOC:A/D转换结束信号,输出,高电平。
OE:数据输出允许信号,输入,高电平。 CLK:时钟脉冲输入端,决定A/D转换频率。 Vref-、 Vref+:基准电压。
Vcc:+5V 图2 GND:地线
量程的确定及数据计算: 在调零的情况下(N+G=500g时)
测量拉力F的变化范围0-100N
传力杠杆对传感器的压力f变化范围0-1000g 传感器输出电压U变化范围0-5V
转换器的通道1转换成数字的范围是0-255 所以:当取最小量程为1N时,各个数据的最小变化为:
各个数据随拉力的变化表为:
传感器到转换器连接的简单叙述:
从传感器的三根引线中,有一根接地,一根接五伏电源,一根是信号线经过处理后接到0-5V的转换器的通道0口处,然后转换器进行模数转化成0-255的数字信号之后送到单片机进行处理。把0-255的数字经过处理得到0-100的数字后,通过数码管显示出来。设计的测力计的最小量程为1N,所以得到的数字信号得按2.56的倍数进行处理得到0-100的数字信号。
(三)
描述:
数码管
7SEG数码显示器是由发光二级管按一定的 结构组合起来的显示器件,在单片机应用 系统中通常使用的是8段式LED数码显示 管(如右图3)其中7段发光二极管构成7 笔的字形,从a-g引脚输入不同的8位二
级制编码,可显示不同的数字和字符,通常 图3 把控制发光二极管8位二进制编码称为字段
码。 引脚功能
a-g:信号显示的输入端 DP :公用端 1,2:选通端 硬件译码:
由于数码管的断码值与显示的数字要一一对应,而要显示的数字的规律但断码值却没规律,在处理显示时要用查表的方法,需要占用很大的空间,选取一个硬件译码器势在必行。 74ls248译码器:
如右图是一种共阴极一位十六进制数到字段码转换芯片,能够输出四位二进制表示的一位十六进制数的七位字段码。
引脚功能:
A-D:二进制数输入端 QA-QG:字段码输出端
BI/RBO:可以作为输入端使用,也可以作为输出端使用
LT:灯测试输入端,低电平有效 图4 RBI:输出有效,高电平有效
(四)
单片机
8051单片机的结构
MCS-51(下图)单片机在结构上基本相同,只是在个别模块上有些区别。如图为8051单片机它包含了作为微型计算机所必须的基本功能部件,各个功能部件通过片内单一总线连成一个整体,集成在一个芯片上。
MCS-51单片机是一块芯片集成了CPU、储存器、(包括RAM和ROM)、定时器、计时器、和多功能的I/O线等一台计算机所必须的基本功能部件。主要包括一个8位CPU、1个片内振荡器、及其 时钟带电路、128B RAM、4KB ROM 2个十六位定时器/计数器、32条 可编程的I/O线和一个可编程的全 双串行接口、5个中断源、2个中断 优先级嵌套中断结构。 引脚及功能:
Vcc:+5V电源线 Vss:接地线
XTAL1:片内振荡器反向放大器 的输入端和内部时钟工作的输入 端。采用内部振荡器时,它接外 部石英晶体和微调电容的一个引 脚。
XTAL2:片内振荡器反向放大器 图5 的输出端,接外部石英晶体和 微调电容的另一个引脚。采用外 部振荡器时,该引脚悬空。 RST:复位输入端,高电平有效。 ALE:地址所存允许编程线。 PSEN:外部程序存储器的读选段 EA:片外ROM允许访问端。
P0:P0接口有8条接口线,它有一个输出锁存器、两个三态缓冲器输出驱动电路和输出控制电路组成。P0接口是一个三态双向I/O接口,它有两种不同的功能。
P1:P1接口有8条接口线,是一个准双向接口,只作普通的I/O接口使用。做输出接口使用时不需要接外接上拉电阻。做输入接口使用时,必须先向锁存器写入“1”。
P2:P2接口有8条接口线,也是一个准双向接口,它有两种使用功能,一种是作普通I/O口使用,另一种是系统外扩展存储器时候,做地址线的高8位使用。其中P0口做低8位使用。
P3:P3接口有8条接口线,是一个多用的准双向I/O接口,第一功能是作普通的I/O接口使用,第二功能是作为控制呵特殊功能的接口使用,这时候8条接线的定义功能各不相同。
I/O接口的读写:P0-P3接口都可以作为普通的I/O口使用,当作为输入口使用时,必须先向该接口的锁存器中写入“1“,然后再从读引脚缓冲器中读入引脚状态,这样的读入结果才正确
P3接口的特殊功能:
(五)
总系统设计图
图6 (六)
执行程序
#include; #include; #define clk=P3^0;
#define IN0 XBYTE【0X0000】; uchar m,n;
void main (void)
{TMOD=0x02; //工作于方式二
TH0=256-400; //T0赋初值
HL0=256-400;
IT0=1; //外部中断0脉冲触发
EX0=1; //外部中断0允许触发
ET0=1; //T0中断允许触发
EA=1; //总中断允许
TR0=0; //T0启动
IN0=0; //启动转换(P2.7=0)
P=0; //赋初值
while(1) //等待中断并显示输出
{P1=n;
P1=m;
}
}
void int_abc(void) interrupt 0 //中断函数
{uchar t,p;
float q;
q=(flaot)IN0; //转换值给q
t=(char)(q/2.56) //计算是2.56的多少倍
p=t; //输出
if(q>(t+0.5)) //四舍五入
p=p+1;
n=p/10+64; //显示处理
m=p%10+128
}
void int_T0(void)interrupt 1 //T0中断函数
{clk=!clk; }
三、 调试与完成 (一)PROTEUS的使用
Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:
原理布图
PCB自动或人工布线
SPICE电路仿真
互动的电路仿真
用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
仿真处理器及其外围电路
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型
上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境.要求能画出各个器件的接线图。
(二) KEIL
系统概述
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。
Keil C51单片机软件开发系统的整体结构
C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝
对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
所以写出C程序并能调试成功
(三) 系统调试
程序调试:
打开KEIL软件,把13页的程序输入里面,确定没错误时候。编译成HEX格式的文件,然后加载到模拟单片机里面。运行调试,手动输入模拟量看看能不能实现本设计的模拟功能。若实现时有错误,则需要改变程序代码。多次修改、
打开PROTEUS软件,按要求把系统设计图画出PROTEUS的模拟起器件,检查各个器件的属性是否与所选的器件的参数一致,只有这样才能真实的实现模拟。并能查处真实的器件是否需要替换。要多次调试才能实现。然后检查效果是否符合要求。多次调试,以保设计无误。
传感器的调试:
查看传感器的规格型号是否符合要求,按第六页的图形安装并调整。调整各个力的初始值,使得N+G=500g,F=0N的时候为零状态。若F=0时,不是零状态则要调整调零杠杆即调N的大小,使得N+G+f=0,且F=0; 并且还得保证输出电压U=0V才能保证系统调试正确。 外部力信号
四、 结束语
随着信息时代的到来,数字处理技术、传感器技术得到了显著的提高,对测力精度的要求越来越高,对其操作要求越简单。虽然本设计写的不是很好,但应该能满足要求。
选题目时第一个题目选的不好,主要是没有思路,我给同学聊天偶然听到她的题目是数字温度计之类的,我想了想,这类题目就是我想写的,只是没有想到,所以我加上对传感器的想法,然后就把题目改成了数字测力计,在此要感谢周老师的指导和对我的思路的肯定。
在这个设计里对我来说传感器部分是比较难的,上网查了好多资料,还给陈老师发邮件问传感器怎么选,选用时应注意的参数。还有在选分度时不知道会影响其他数据的参数,所以最小量程一改再改。最后结合所有参数和误差小的原则把它定位为1N。
经过这次设计使我对传感器的参数选取,单片机的模数转换部分有了更深入的了解。由于我的能力有限,知识还不全面,把以前计划的200N的量程最小分度为0.1N的四位数码管显示测力计改为了99N最小量程为1N的两位数码管显示的测力计。其中最小量程为0.1N的设想是,传感器的信号传到模数转换器是经通道0转换整数部分,然后经过单片机处理。之后通过打开晶闸管把信号送到另一通道。在进入通道时先滤掉整数部分电压(大于U/200的电压),再经过放大器放大到与原来一样的倍数。之后处理显示。在滤掉整数和放大时没有实现,主要是选取整流二极管,放大器和一些晶闸管时的一些型号、参数、及其计算时比较繁琐,且还要考虑很多,还有单片机的引脚不够要用串行扩展口等等,所以改成了本设计的思路。我想在以后的积累和学习中能够实现我最初的想法,我真的希望看到本设计的高手朋友们能够实现它,并能完成的更好。
参考文献:
1 单片机原理及应用,主编:李传军,河南科学技术出版社。 ○
2 单片机C语言程序设计,主编:侯殿友,人民邮电出版社。 ○
3 电子技术及实训,主编:李伟,中国电力出版社。 ○
4传感器及应用技术,主编:沈聿农,化学工业出版社。 ○