一种基于单片机的光电精密测量系统的设计与实现

来源:本站
导读:目前正在解读《一种基于单片机的光电精密测量系统的设计与实现》的相关信息,《一种基于单片机的光电精密测量系统的设计与实现》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《一种基于单片机的光电精密测量系统的设计与实现》的详细说明。
简介:介绍了一种基于单片机的光电精密测量系统的设计与实现,详细介绍了8253计数 方式的选取原因及工作过程,MAX7219显示电路的工作原理和发送数据时的工作过程与编程,系统的整体程序流程。

在机械、仪表、钟表、轻工等行业,有时需要测量各种形状复杂工件的轮廓尺寸和表面形状,它一般是用光栅传感器和旋转编码器把检测到的物件形状和尺寸的信息转变光电脉冲信号,然后经过相应的处理,把这些光电信号转变成物件尺寸信号,再把这些信号按要求的方式显示出来。一般只要测量出物件横向位移、纵向位移以及空间所占的旋转角度数3个量就足够反映出物件的具体形状,本系统的功能就是对这些光电脉冲信号的处理和显示。

1 系统的设计要求和整体系统框图

光学精密测量,对测量的精度有严格要求,位移一般精确到1靘,角度精确到0.01°, 因为实际的光学精密测量,位移不会超过2 m,角度不会超过±180°。因此对于位移,用 8个LED足够满足显示位长度的要求,最大可显示±9 999 999μm=9.999999 m。对于角度用6个LED,最大可显示±999.99°,满足显示长度要求。本系统以W77E58单片机作 为数据处理中心,整体框图如图1所示,主要由脉冲细分电路,脉冲采集计数电路,单片机和显示电路组成。

一种基于单片机的光电精密测量系统的设计与实现

2系统硬件电路设计与软件编程

2.1 输入脉冲细分(倍频)电路设计

光栅传感器和角度传感器的输出脉冲,一个脉冲分别对应实际位移4 靘和角度004°,为了满足精度为1 靘和001°的要求,采用四上升沿D触发器芯片74HC175 和双4选1数据 选择器芯片74HC153来设计倍频电路,实现把1个输入脉冲变成4个。如图2所示,光电脉冲经整形放大后输入D1,D3,选择Q1和Q3作为脉冲判向信号, 连74HC153 的选择端 B、A 脚,根据Q1,Q2,Q3,Q4的波形图可知:逻辑表达式分别是4倍频正、反向脉冲表达式,在上式中分别取Q1Q3=00、01、10、11,再参照74HC 153的工作逻辑表,即可得出如图2 的74HC175与74HC153D的硬件连接。最终,P1,P2分别是 4 倍频正、反向脉冲输出。此脉冲作为测量时的正反计数脉冲。

2.2 输入信号采集电路设计与计数器工作方式选择

采用可编程定时器/计数器专用芯片8253来完成对输入信号采集,计数。如图3所示,4倍频正、反脉冲从P1,P2输入8253的 CLK0,CLK1,作为正、反计数脉冲。在对8253进行软件编程时,采用工作方式2,1#8253、2#8253分别采样横向X、纵向Y脉冲,采用BCD计数方式,计数最大值为9999,即9.999 mm(一个脉冲代表1μm),因为在实际测量时,光栅尺会左右来回移动,当往一个方向移动时,只有此方向计数器被启动计数,另一个停止计数,这样,经过多次来回移动后,光栅尺正反两个方向的累积位移将很大,计数器将会溢出,因此 必须在单片机内开辟一个软件计数器来记录溢出脉冲数,但一般实际累积位移不会超过10m,因此在单片机内部拿2个字节单元存放溢出脉冲数。记录的最大脉冲数可达256*2 56*9999=655 294 464个,即位移655 294 464 靘=655.3 m,足够满足计数要求。8253工作时:8253 计满一次时,OUT为低,向CPU 发出中断请求,CPU 响应后将内部软件计数器内容加1,但最终的位移是相对位移,为正、反2个计数器的值相减 。位移方向由符号位定。3#8253采样角度脉冲,角度范围在-180°- +180°之间,8253设置为二进制计数方式,最大为FFFFH=65 536个脉冲,即±655.36°(一个脉冲代表0.01°),满足计数要求。根据图3中8253与单片机的硬件连接,如采样X,Y向脉冲,根据上面分析,8253 的初始化控制字地址为07H,正、反向控制字分别为35H,75H。

一种基于单片机的光电精密测量系统的设计与实现

2.3 显示电路设计与软件编程

采用显示驱动芯片MAX7219来驱动数码管,它以串行方式只占用单片机3根引脚,可以按实际需要灵活编程。MAX7219和单片机以及数码管的硬件连接如图4所示。MAX7219的7段驱动输 出端A,B,C,D,E,F,G接LED相应的7个段,DP接LED小数点位。数据位选通端DIG0~DIG7 接LED相应位的阴极。数据接收端DIN接单片机串行发送口RXD(P3.0),CLOCK接单片机的T XD(P3.1)脚。MAX7219的数据输入锁存控制线LOAD接单片机P3.4脚。由于是串行方式,MAX7219 的 数据输出端DOUT接下一块MAX7219的DIN端。为增强数据实时显示时的抗干扰能力和增强对数 据的驱动功率,在上述MAX7219之间以及它与单片机之间可用74LS244对信号进行整形隔离放大(图4中未画)。在调试中,我们证明了74LS244对显示稳定的重要性。

一种基于单片机的光电精密测量系统的设计与实现

发送显示数据时使用串行口工作方式0 ,此时TXD(P31)发出固定频率的脉冲。工作时,MAX7219规定一次接收16位数据,在CLK脉冲作用下,DIN的数据以串行方式依次移入内部16位寄存器,然后在一个LOAD上升沿作用下,这16位数据被锁存在内部寄存器。注意在接收时,先接收最高位D16,最后是D0,因此,要把待发的数据位先颠倒,再发送。在接收的16位数据格式中:D15~D12可以任意写,D11~D8决定所选通的内部寄存器地址,D7~D0为待显示数据,或初始化字。MAX7219寄存器地址代码颠倒后依次为:译码方式为9FH,显示亮度为5FH,扫描范围DFH,关断方式为3FH,显示测试为FFH,DIG0(第1位)是8FH,DIG1是4FH,DIG2是CFH,DIG3是2FH,DIG4是AFH,DIG5是6FH,DIG6是EFH,DIG7(第8位)是1FH。

在对MAX7219进行初始化时,5个控制字工作方式选择以及颠倒代码分别为:译码方式采用 不译码方式,代码为00H;显示亮度为21/32级,代码为5FH;扫描范围是8位,代码为2FH;关断方式是正常操作,代码为80H;显示测试为正常操作,代码为00H。进行初始化时,将上述颠倒后的5个控制字地址代码和工作方式代码先后发送出去,就完成了初始化。编程时,3块MAX7219一起进行初始化,在内存区专门拿一段连续单元预先存放好这些地址代码和控制字代码,存放时先放第一个控制字地址代码,再放工作方式数据代码,然后是第二个的地址和数据,依次下去总共5个控制子,10 个字节单元。发送时从首地址开始发送出去,一个控制字发3次(3片MAX7219),总共5个控制字,循环5次。

在编写显示程序时,因为每一位的地址代码是不变的,为了节省内部动态存储空间,可以 把显示时待发送的地址代码放在表里,要发送时再取出来。在显示缓冲区放数据代码时,先放第1片MAX7219的第2位到第8位数据代码,然后是第2片的第1到第8位,最后是第3片第1到第8位。在发送数据时:首先依次发送第1,2,3片MAX7219第1位地址代码和数据代码;接着是依次发送第1,2,3片MAX7219的第2位地址和数据代码;这样循环8次,最后依次是第1,2,3片MAX7219的第八位地址和数据代码。这样在LOAD来一个上升沿时,共锁存3*16=48位二进制码。

显示子程序如下:

一种基于单片机的光电精密测量系统的设计与实现

3 系统程序流程

本系统的功能是精确检测外部输入的光电脉冲,再进行相应的数据处理,转换为 位移或角 度,然后按要求的方式显示,程序流程如图5所示。在图中,+X和-X分别代表1#8253 (横向)正、反向脉冲数;+Y和-Y分别代表2#8253(纵向) 正、反向脉冲数;+θ,-θ分别代表3#8253(角度方向)正、反向脉冲数, X、Y分别代表横、纵向位移,θ为转动的角度;在程序中,如果要显示为英寸,则要将X或Y的值乘以系数0.00 003 937; 角度要显示为弧度,则要乘以系数0.01745;这样,所得到的结果就会相差很大。因此在处理数据时:

①要对所得的值进行四舍五入(针对显示为英寸或弧度时),以满足显示的位长度的限 制;

②在显示为英寸或弧度时,要根据所得到的数的结果来确定小数点位,例如对横、纵向,值为-99.999 99-10.000 00,小数点定在第3位。因此在数送显示前,要判 断该数据的范围,定出小数点位,再送显示缓冲区;

③显示为微米或度时,数据的符号 位也随数据变化,例如,对横、纵向,从-10~-99,符号位在倒数第3位。对角度方向(精 确到0.01°),从-10.00~-99.99,符号在倒数第5位,因此在数送显示前,可从 最高位开始判断该数每一位的值,如果检测到非零位,则符号定在该非零位的前面一位,数值为零的位显示空白。例如对角度方向,在缓冲区一个数据为-005.32,则符号定在倒数第4位,处理后显示-5.32。

一种基于单片机的光电精密测量系统的设计与实现

4 结语

此系统已在数字式投影仪中付之实践,运行表明,系统稳定可靠,抗干扰能力强,而且显 示精度完全达到了设计要求,只是在调试中有一点值得一提:那就是在按清0键时,开始总是不能够使系统显示0,这主要是因为在给8253计数器赋0初值时,一定要在下一个计数脉冲作用下,该0初值才会被装入计数器,而如果此时传感器没有移动,则无脉冲输出,因此不会将0装入计数器,最后我们通过软件方法,专门开辟一段内存单元,把每次的计数值都保存下来,当判断到按清0而且无计数脉冲输入时,则把当前计数器值减去上一次保存的值,再送显示缓冲区,解决了这个问题。

参考文献

1 MAXIM公司1998产品资料全集

2 张友德等.单片微型机原理与应用.上海:复旦大学出版社,1993

3 许立梓等.微型计算机原理及应用.昆明:云南科技出版社,1997

提醒:《一种基于单片机的光电精密测量系统的设计与实现》最后刷新时间 2024-03-14 01:16:46,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《一种基于单片机的光电精密测量系统的设计与实现》该内容的真实性请自行鉴别。