当前位置:文档之家› 光栅式位移测量仪的设计

光栅式位移测量仪的设计

唐山学院课程设计一、系统工作原理光栅位移传感器的原理1.1随着主光与位移部件固定连接,光栅位移传感器通过主光栅(即标尺光栅),则光栅组透光部分θ栅和副光栅(即指示光栅)进行相对位移,栅线间夹角为光栅位移传感器位移即形成了莫尔条纹。

呈菱形,综合效果是一组等间距亮带,经过光电器件转换使黑白相间的条纹转换成正弦波变化的电时莫尔条纹也移动,信号。

(a)长光栅结构(b)莫尔条纹的形成 1 莫尔条纹的原理图电信号再经过放大器放大、整形电路整形,细分、辨向等电路,最终送到单 LCD屏显示。

片机对移动的莫尔条纹进行计数,运算后送到系统整体设计框图1.2 所示:系统整体框图如图2四单光放倍LCD片栅大频机传整位移信号细计感形屏分数器电显辨运路示向算图2 系统整体框图该光栅传感器检测后产生近似正弦波的电信号。

光栅尺移动产生莫尔条纹,辨向电路实现模再经四细分、整形电路将正弦信号变成方波,电信号经过放大、数转换的部分使电路简单,编程容易。

细-拟信号到数字信号的转变,省去了模1唐山学院课程设计分信号输入到单片机T0口进行计数,通过程序运算,再由LCD屏显示出运算结果。

二、系统硬件设计2.1放大电路设计采用同向比例放大电路,如图3:图3 同向比例放大电路同相比例放大电路结构简单,比较常用,放大倍数易于调整。

采用LM324系列运算放大器(引脚图如图4),是价格便宜的差动输入功能的四运算放大器。

可工作在单电源下,电压范围是3.0V-32V。

LM324的特点:短跑保护输出1. 2.真差动输入级 3V-32V 3.可单电源工作:)LM324A 4.低偏置电流:最大100nA(每封装含四个运算放大器。

5. 具有内部补偿的功能。

6. 7.共模范围扩展到负电源行业标准的引脚排列8.输入端具有静电保护功能9. 图引脚图4 LM3242唐山学院课程设计2.2整形电路设计图5可以把幅值为0.7v~15v的正弦波转换为方波。

NE5532为一个滞回比较器,把正弦波转化为有正负值的方波,再接一级LM311,可以使方波只有5v和0v电压值。

NE5532A是一种双运放高性能低噪声运算放大器。

相比较大多数标准运算放大器,如1458,它显示出更好的噪声性能,提高输出驱动能力和相当高的小信号和电源带宽。

这使该器件特别适合应用在高品质和专业音响设备,仪器控制电路和电话通道放大器。

LM311的电压比较器设计运行在更宽的电源电压:从标准的±15V运算放大器到单5V电源用于逻辑集成电路。

其输出兼容RTL,DTL和TTL以MOS电路。

此外,他们可以驱动继电器,开关电压高达50V,电流高达50mA。

图5 整形电路3唐山学院课程设计2.3细分辨向电路的设计四细分辨向电路如下,图6:图 6 四细分辨向电路为了提高系统分辨率,需要对莫尔条纹进行细分为记录光栅上移过的条纹,数目和判断光栅的移动率等,光电转换器件采用4极硅光电池来接收莫尔条纹信号。

调整莫尔条纹的宽度B,使它正好与2个硅光电池的宽度相同。

则可直接获得在相位上依次相差90°的2路信号,进行4倍细分。

位移除了有大小的属性外,还具有方向的属性。

为了辨别标尺光栅位移的方向,本设计采用的是2个硅光电池来接收莫尔条纹信号,则输出的2路信号在相位上相差90°,W-光栅的栅距,x-标尺光栅位移量。

2个硅光电池输出的2路信号:?360x) Ua=U+UmSIN(0W??360360xx) Ub=U+UmSIN(UmCOS(+=°+90) U00WW4唐山学院课程设计位移为矢量,有方向和大小,判向电路输出的加法和减法计数脉冲表示位移的方向和大小。

2.4单片机及其附属电路系统中的单片机采用AT89C52系列, AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes 的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

AT89C52有40个引脚(引脚图如图7),32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。

图7 AT89C52引脚图AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。

主要功能特性:·兼容MCS51指令系统· 8k可反复擦写(>1000次)Flash ROM· 32个双向I/O口5唐山学院课程设计· 256x8bit内部RAM· 3个16位可编程定时/计数器中断·时钟频率0-24MHz· 2个串行中断·可编程UART串行通道· 2个外部中断源·共6个中断源· 2个读写中断口线· 3级加密位·低功耗空闲和掉电模式·软件设置睡眠和唤醒功能单片机的连接图如图8:图8 单片机连线图AT89C52的复位电路和晶振电路在图8的左上角,晶振为12MHz。

图中P2口连接LCD液晶显示屏,作为屏幕的数据接口(其他有关LCD屏的连接在下一节中介绍),P3^4接四细分后的脉冲输出,作为单片机的脉冲信号输入端进行计数。

6唐山学院课程设计2.5 LCD液晶显示屏的设计液晶显示器简称LCD(Liquid Crystal Diodes)是利用液晶经过处理后能够改变光线传输方向的特性,达到显示字符或者图形的目的。

其特点是体积小、重量轻、功耗极低、显示内容丰富等特点,在单片机应用系统中有着日益广泛的应用。

2.5.1 LCD显示模块LCDM在实际应用中,用户很少直接设计LCD显示器驱动接口,一般是直接使用专用的LCD显示驱动器和LCD显示模块LCDM 。

LCDM是把LCD显示屏、背景光源、线路板和驱动集成电路等部件构造成一个整体,作为一个独立部件使用。

其特点是功能较强、易于控制、接口简单,在单片机系统中应用较多。

其内部结构如下页图所示。

LCDM一般带有内部显示RAM 和字符发生器,只要输入ASCII码就可以进行显示。

实物图见图9。

图9 LCD模块外观液晶显示器基本结构10 图7唐山学院课程设计液晶屏其结构如图10,液晶显示器LCD是一种极低功耗显示器,其应用特别广泛。

目前常用的LCD是根据液晶的扭曲-向列效应原理制成的。

这是一种电场效应,夹在两块导电玻璃电极之间的液晶经过一定处理后,其内部的分子呈90°的扭曲,这种液晶具有旋光特性。

当线形偏振光通过液晶层时,偏振面回旋转90°。

当给玻璃电极加上电压后,在电场的作用下液晶的扭曲结构消失,其旋光作用也随之消失,偏振光便可以直接通过。

当去掉电场后液晶分子又恢复其扭曲结构。

把这样的液晶放在两个偏振之间,改变偏振片的相对位置就可得到黑底白字或白底黑字的显示形式。

LCD的响应时间为毫秒级,域值电压为3~20V,功耗为5~100mW/cm2.2.5.2设计中LCD液晶屏的连线基于LCD显示块低功耗、短响应时间以及适应低频工作的特点,设计者选用LCD 显示器完成显示部分的功能,并且使用静态驱动。

所选的LCD型号为1601。

1601是一款最常用也是最便宜的液晶显示屏。

1601的意思是每行显示16个字符,一共可以显示一行。

1601可显示内部字符,也可以显示自定义字符。

1601液晶的引脚图如图11所示。

图11 LCD1601液晶屏引脚图接口说明如下:①液晶1,2端为电源;15、16为背光电源;在15脚串接一个10欧姆电阻用于限流。

②液晶3端为液晶对比度调节端,通过一个10K欧姆电位器接地来调节液晶显示对比度。

③液晶4端为向液晶控制器写数据/写命令选择端,接单片机的P3.0口。

④液晶5端为读/写选择端,因为我们不从液晶读取任何数据,只向其写入命令和显示数据,因此此端始终选择写状态,我们直接将它接地。

⑤液晶6端为使能信号,是操作时必需的信号,接单片机的P3.2口⑥液晶7-14端为八位数据口,接单片机的P2口。

8唐山学院课程设计三、系统软件设计把计数脉冲接到单片机的片内计数器T0端即可,相对外部计数芯片来说,使用软件方法电路相对要简单的多。

下图为程序流程图:主程序上电初始化系统初始化下降沿触发开始计数Y判断是否溢出N脉冲停止、计数停TLTH读数据LC显示结系统程序流程图12 图9唐山学院课程设计四、系统仿真电路图用protues软件画出电路图,整体电路图如图13:图13 系统整体电路图10唐山学院课程设计总结两周的测控系统原理与设计课程设计终于顺利完成了,其中包含着快乐,也有辛酸。

我们选的设计题目是“光栅位移测量仪的设计”,大家都觉得这个题目是比较简单的。

其实不然,做了之后,发现设计电路虽然简单,但我们认为它真正困难的地方是程序设计,不过在我们同心努力下最终完成了。

我们刚选该题目时,真的是一头雾水,硬件电路不知如何下手,更何谈解决程序那块,因为我们所学的都是单片机方面的理论知识,应用到实践中去还比较少。

不过,我们俩人也没偷下懒,迅速分工去查阅和收集资料。

我们去了图书馆借一些参考书,上网找一些相关资料,并且请教指导老师。

通过不断努力,终于把设计的思路和模型定了下来,并最终完成了设计。

本文对单片机用于位移测量的理论、原理进行了系统的分析、比较,并对每种测量方法定性、定量的予以阐述,设计了显示接口电路和应用程序。

以下从三个方面进行总结:硬件电路本系统采用89C52单片机,充分利用单片机内部自带的16位定时计数器进行设计,较完全的开发了单片机自身的功能,接口利用了89C52的I/O口具有较大的电流驱动能力的特点,直接由单片机驱动,简化了硬件电路。

有一定的实用价值和较高的性价比。

测量方法在测量原理上采用了利用单片机内部计数器实现可逆计数的测量方法,保证了在位移测量中获得较高的精度。

应用范围广泛,可通过扩展进行二次开发。

程序调试本系统进行了全面的程序设计,显示程序、中断服务程序和初始化程序,并对这些程序在Keil U4软件上进行编译和调试,并且与Proteus进行了联机仿真,取得了较好的仿真效果。

Keil的编译HEX文件还可通过编程器写入芯片中。

这次的设计基本达到了设计的要求.11唐山学院课程设计参考文献1.王福瑞等.《单片微机测控系统设计大全》.北京航空航天大学出版社,1999 2.《现代测控技术与系统》韩九强清华大学出版社 2007.93.《智能仪器》程德福,林君主编机械工业出版社 2005年2月4.《测控仪器设计》浦昭邦,王宝光主编机械工业出版社 20015.基于AT89C51单片机的数字电压表的设计,黄亮,电子制作,2006.10 ,25-27 6.《误差理论与数据处理》,费业泰. 机械工业出版社,20107. Keil C51帮助文档12唐山学院课程设计附录一元器件清单器件类型器件名数量单片机 AT89C52 12 LM324 集成运放2 LM311 集成运放2 集成运放NE55327 C 电容21 电阻R1开按键开1液晶LCD1601 11与74LS081变阻RV11晶X1474LS04非2或非742513唐山学院课程设计附录二程序代码#include<reg52.h>#include<intrins.h>#include<math.h>#define uint unsigned int#define uchar unsigned char#define RS_CLR RS=0#define RS_SET RS=1#define RW_CLR RW=0#define RW_SET RW=1#define EN_CLR EN=0#define EN_SET EN=1#define DataPort P2sbit RS = P3^0; //定义端口(显示屏)sbit RW = P3^1;sbit EN = P3^2;void LCD_Init(void);void inti(){ LCD_Init() ;TMOD=0x05 ;//*T0为16位计数方式*/TH0=F0 ;TL0=60 ;//*预置初值*/TR0=1;}// 单片机计算脉冲数显示计数变量声明uint num;//********************/ 延时子程序/*voiddelay(uint xms)14唐山学院课程设计{uint j;for(;xms>0;xms--)for(j=110;j>0;j--);}void DelayUs2x(unsigned char t){while(--t);}void DelayMs(unsigned char t){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}bit LCD_Check_Busy(void){DataPort= 0xFF;RS_CLR;RW_SET;EN_CLR;_nop_();EN_SET;return (bit)(DataPort & 0x80);}/*------------------------------------------------写入命令函数------------------------------------------------*/ void LCD_Write_Com(unsigned char com){// while(LCD_Check_Busy()); //忙则等待15唐山学院课程设计DelayMs(5);RS_CLR;RW_CLR;EN_SET;DataPort= com;_nop_();EN_CLR;}/*------------写入数据函数-----------------------------void LCD_Write_Data(unsigned char Data){//while(LCD_Check_Busy()); //忙则等待DelayMs(5);RS_SET;RW_CLR;EN_SET;DataPort= Data;_nop_();EN_CLR;}/*----------------清屏函数----------------------*/void LCD_Clear(void){LCD_Write_Com(0x01);DelayMs(5);}/*---------------写入字符函数---------------------*/void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data){if (y == 0){LCD_Write_Com(0x80 + x);}16唐山学院课程设计else{LCD_Write_Com(0xC0 + x);}LCD_Write_Data( Data);}/*--------------初始化函数---------------------*/ void LCD_Init(void){LCD_Write_Com(0x38); /*显示模式设置*/DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);LCD_Write_Com(0x08); /*显示关闭*/LCD_Write_Com(0x01); /*显示清屏*/LCD_Write_Com(0x06); /*显示光标移动设置*/ DelayMs(5);LCD_Write_Com(0x0C); /*显示开及光标设置*/ }/*主程序**********************************/void main(){inti();while(1){float num1,num2,num;Data=TH0*255+TL0;//读计数器数据if(Data==4000){TH0=F0;TL0=60;TR0=0;} //计满清零 num1=Data/4*0.05;num2=0.05/4*(Data%4);num=num1+num2;LCD_Write_Char(x,y,num);17唐山学院课程设计}}18。

相关主题