还剩46页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
MACROBUTTONMTEditEquationSection2EquationChapter1Section1
一、引言位置检测技术和数显技术是我国目前重点要发展和推广的新技术在航空航天、精密机械仪器、数显数控机床等领域得到了广泛的应用,以成为高科技的组成部分随着微电子技术的迅速发展和微处理器的出现,采用电子学细分和数字化处理的方法对测量传感器的信号周期进行电子细分和误差修正,使提高测量系统的分辨率和系统准确度以成为可能在检测系统中,光栅占有明显的优势因此,就针对光栅输出的莫尔条纹信号,运用现在的电子学技术实现高精度、高速度的电子学细分更有实际的工程意义我国在光栅方面的研究起步较晚,但近几年来发展迅速目前,国内研究和开发光栅数显表装置的单位都在研制各种经济型的数显装置产品,并批量投放市场,满足国内机床配套及技术改造的需要一般分辨率为1um、5um、10um同时也都在以经济型光栅作为测量传感器的前提下,为提高系统的分辨率而进行莫尔条纹电子细分技术的研究高精度的位移测量系统是机械,仪表,工具,兵器,宇航等所获得位置精度的基础,也是上述产业以及产品不断进步的制约因素在这方面发展较好的主要是栅尺类位移传感器,其中又以光栅位移传感器为主要代表栅尺类位移传感器具有便于位移信号数字化,高分辨率,大量程,测量效率高可靠性高等特点,在今后的一段时期内是位移测量的主要发展方向当今中国社会的机械加工行业当中,还大量使用着五六十年代的设备,这其中还不乏包括很多前苏联四五十年代的设备,这类现象在中小型企业中尤为突出这些设备仍使用着机械式量规,其中包括卡规和塞规,其特点是结构简单,成本低,但一个尺寸要配一套量规,不能读数且极易磨损,因此在使用过程当中存在严重的加工精度问题现在的中小型企业之间竞争日益激烈,陈旧的设备现状越来越来阻隔企业的发展但中国中小型企业的普遍现状就是资本有限,不可能重新构置国外先进的数控机床及设备,因此就需要一种可靠并且价廉的电子量规来改造原来设备实际上讲,国外从七十年代就开始就已经使用电子量规,尤其以意大利Marposs公司生产的电子量规品种多、系列齐、精度高、技术上较先进所以依靠电子量规对目前设备的改造就成为目前热点,这其中就包括了数显改造及数控改造因此,在基于光栅位移传感器的技术上,设计了光栅数显表此光栅数显表的设计系统是为成都远恒精密测控技术有限公司设计的此表已在生产使用当中它能随光栅位移传感器一并出售,市场价格可观,它的精密度可达到5um
二、光栅位移传感器
(一)、位移传感器的常见种类要实现位移测量首先就是选用一种能测量位移的传感器当然这儿说起位移传感器就很多了,比如有超声波测距、激光测距、容栅位移传感器、光栅位移传感器、电感器位移传感器等等结合实际应用环境、可靠性、性价比等,目前应用于机械生产设备的传感器主要有容栅位移传感器、电感位移传感器、光栅位移传感器三类产品
1、容栅位移传感器是一种靠导体在电场中运行产生变化电场以实现检测位移量的器具其主要用于微小长度和位移的测量,由于它具有灵敏度和分辨率高的特点,在许多场合中它不能被其它类型的位移传感器所代替但在大长度、大位移的测量中,普通的电容传感器由于其固有的一些缺点,一直没能获得相应的发展其主要特点有
(1)、测量速度高例如,分辨率为
0.01mm的容栅数显卡尺,测量速度可达
1.5m/s,分辨率为
0.001mm容栅数显高度规,测量速度可达1m/s;
(2)、结构简单易于进行机械设计,传感器机械部分主要由两组平板组成,结构紧凑,便于和集成电路制成一体;
(3)、对使用环境要求不高能防油污,防尘,对空气湿度不敏感,适合于在车间中使用;
(4)、功耗少这是由于电容传感器本身的介质损耗和静电引力都很小的缘故目前的容栅数显卡尺仅用一只
1.5伏的氧化银钮扣电池,就可供其连续使用12个月;应用范围很广,例如电子游标卡尺,电子游标千分尺,医用关节角度测试仪等等;
2、电感位移传感器是一种利用线圈之间的电磁感应,来实现位移测量的其结构简单,生产容易,但缺点就是线性较差,必须进行多点线性修正
3、光栅位移传感器是一位利用光信号进行测量的传感器其原理简单上来说就是利用几组发光二极管产生一组平行光,在一根由光绘的玻璃条上切割产生变化的光波,并用光电二极管将其转换为信号,以些实现对位移的测量,这就是本文将要讨论的光栅位移传感器原理及信号处理光栅的应用邻域广阔,也因其需要,人们将其设计成为了多种多样,例如高精度的测微仪,其测量范围普遍较短,一般为0-5mm,但结合先进的计算机软件细分、计数系统,其精度可以达到10um就目前而言,其代表产品主要以德国的居多,在国内就要看成都远恒的了然后就是使用光栅原理设计的圆光栅、旋转编码器等等但其就目前而言,此类产品主要用于长距离测矩及旋转精确定位方面最后就是一般用途的光栅尺,其精度一般是
0.005um,测量量程可以达到几米,这类产品也是目前应用最多的,也是主要应用于机床改造,该类产品主要为国内自行生产以下就是本论文中所重点讲述的有关光栅位移传感器的内容的详细介绍及基于对其信号处理所设计的光栅数显表的硬件设计和软件设计的介绍
(二)、光栅位移传感器的结构及测量原理
1、光栅位移传感器的结构光栅位移传感器由光学系统和机械系统两部分组成光栅光学系统包括光栅副、光栅及光电接收元件等,如图
(4)所示图中光源1放在聚光镜2的焦面上,光线经聚光镜成平行光照明光栅副3和4,5为光电接收元件来拾收莫尔条纹信号在电子量表中,要求整个系统简单紧凑,体积小,便于和测量显示电路组装成一体例如,一种电子千分表的光栅式光学系统如图3所示为采用4只(两只并排)砷化镓(GaAs)发光二极管1直接照明标尺光栅2和指示光栅4,3是导轨,5是4只两两并排的光电三极管,6是簧片,7是柔性支承板,8是固定支架指示光栅4是裂相刻划如图
(2)所示,四个区域栅线的栅距相等,但相邻两个栅线区域之间依次相互有1/4d或(n+1/4)d的不同间距,其中d为栅距,n为整数指示光栅的四个区域将分别与标尺光栅形成四组莫尔条纹,相位上依次相差90º图
(2)图
(3)图
(5)图
(6)图
(5)四个区域排成一行,图
(6)四个区域两两并排,指示光栅刻线区域总长度l一定的条件下,6的排列可使每个区域有较多的栅线参加工作,可得到较好的平均效果,但这种排列使得沿栅线方向的尺寸加大了这两种排列在电子量表传感器中都有应用光电元件是光栅传感器中的重要元件在电子数显量表中,要求体积小、功耗低、性能稳定,以TIL型P-N结砷化镓红外发生二极管作光源较合适,其外形ф
1.5*
3.5,最佳发射波长在
0.93um左右配对的接收元件为TIL型N-P-N平面硅光电三极管,其外形尺寸ф
1.5*
2.9,最佳接收波长在
0.9um左右Heidenhain公司的光栅传感器中则用的5V、
0.1A微型灯泡照明,非球面透聚镜聚焦,用四只硅光电池作接收元件光栅副的间隙是光栅传感器的一个重要参数间隙过小,容易擦伤光栅表面,装调也困难,间隙过大,又会引起莫尔条纹信号质量变坏,影响电子细分精度实际工作中,主要靠装调来保证,保证要有较好的信号质量,即信号对比度好,基波幅值较大,正交性好,又要保证光栅系统正常工作,保证电子细分精度在电子量表中,光栅副间隙一般为
0.020mm~
0.040mm光栅传感器的机械系统主要是保证测杆运动灵活,在往复直线运动中,无晃动、扭摆、卡滞现象因为在电子量表中,标尺光栅一般都直接固定在测杆上端,所以在整个测量范围内,要求测杆的运动能保证光栅副间隙均匀,不影响信号质量,否则将直接影响测量精度这种导向机构和高精度机械量表基本相同另外由于运动副的间隙和摩擦的存在,故必须设置测力机构来消除其影响,这就要求在整个系统范围内,测力近似恒定,变化小,不影响测量示值由于精度高和测量范围大,所以电子量表中的测力装置一般比机械量表复杂一种是用拉力弹簧和压力弹簧组合来保持恒定测力;另一种是采用一端固定,另一端活动的片式卷簧机构,来减小测力变化由于要保证信号质量,标尺光栅(即测杆)的移动速度不能过快,目前国内外的光栅式电子量表,刻线数为50~100线/mm的,其最高移动速度为200~300mm/秒所以大多数的电子量表中都设置了空气阻尼器,以保证测杆移动平稳,特别是自由下落时,不致发生碰撞,导致测量出错在光栅副间隙一定条件下,具体结构又有标尺光栅与指示光栅相互隔开和柔性贴合相对运动两种方案图
(3)所示的,指示光栅柔性支承板7上有2只导轨3在簧片6的压力作用下,与标尺光栅柔性贴合,光栅材料是磨光玻璃,导轨材料是氟聚合物,两者之间磨擦系数极小K静K动=
0.02,而且氟聚合物还有防粘能力这种结构在保证光栅副运动间隙恒定、信号质量稳定上取得较好的效果
2、位移的测量原理当栅距分别为W1和W2的两光栅以很小的的间距叠合在一起的时候,并且栅线相交成一个很小的角度,则当一个相对另一个相对移动时,就会产生莫尔条纹,再通过光电变化,信号处理,就可以测出位移量,如下图可知B为莫尔条纹的宽度B=W/2sin(/2),这是两光栅之间的夹角,一般的都很小,所以近似的B=W/,所以B=W/就是光栅测量的基本方程莫尔条纹的移动量与光栅的移动量具有严格的关系,就是莫尔条纹移过一个周期,则光栅移过一个栅距光栅位移传感器显著特点就是反应快、线性度好、灵敏度高、抗干扰能力强,大大优于容栅式位移传感器和电感类位移传感器,并且拥有容栅及电感位移传感器无法比拟的优点
1.精度高由于光栅刻划技术及电子细分技术的发展,以及莫尔条纹对光栅栅距的局部误差具有消差的特性,故目前一般认为,光栅式测量装置,在大量程测长方面是精度仅代于激光式测量的一种高精度位移和位置的测量装置;
2.兼有高分辨率和大量程两特性这是传统机械量具所无法实现的,也是目前精密加工发展的迫切需求
三、光栅数显表硬件设计部分及与上位机的通讯随着电子技术的不断发展与进步,电子系统的设计方法发生了很大的变化传统的设计方法正在退出历史的舞台,因为传统的电子产品的电路设计大多采用数字电路,与非门等等,整个系统需要涉及很大的电路,繁琐,并且不容易检测而现在出现了集成电路,所以EDA技术的芯片的设计成为电子系统设计的主流,大规模的可编程的逻辑器件CPLD和FPGA是当今应用最为广泛的两类可编程专用集成电路(ASIC)电子设计师可以在办公室或者实验室里就可以设计出所需要的专用集成电路,从而大大缩短了电子产品上市的时间,降低开发成本此外,可编程逻辑器件还具有在静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来实现功能的修改,这就大大提高了电子硬件系统设计的灵活性和通用性在本设计系统中采用了由ALTERA公司的CPLD芯片EPM7160SLC84—10器件并采用了ALTERA公司出版的MAX+PLUSII提供的CPLD/FPGA设计环境复杂可编程的CPLD(ComplexProgrammableLogicDevice)是20世纪80年代后发展起来的新一代可编程ASIC大多采用CMOS、EPROM、E2PROM和快闪(FLASHMEMORY)等编程技术因而具有高精度,高速度,低功耗等特点目前主要的半导体器件公司如(XILINKALTERAATTICEAMD)等公司在各自的CPLD产品中要自身的特点大致的CPLD包括三种结构可编程的逻辑宏单元,可编程的I/O单元,和可编程的内部连线下面将本系统在设计中所用到的重要电子器件作一下简单介绍
(一)、设计光栅数显表所使用的主要芯片介绍本设计主要使用的器件包括
4050、89C
51、EPM7160SLC84-
10、MAX232芯片,开关电源等等,下面将器件一一的简单介绍如下
1、4050芯片该芯片为6缓冲/电平相相变换器,它可以只用一种电源Vcc即可实现逻辑电平的向下变换当被用作电平转换器时,输入信号高电平可以超过Vcc,可用作CMOS到DTL和TTL的电平转换在本系统中的主要作用是使光栅数显表能兼容12V及5V的传感器,使其向CPLD提供标准的TTL电平;
2、MCS-51单片机本设计采用的是PHILIPS的P89C51单片机,该产品采用高性能的静态80C51设计,以先进CMOS工艺制造并带有非易失性Flash程序存储器,其操作频率范围很宽(频率可降至0)这类单片机兼容INTEL80C51,包含128字节RAM、32条I/O口线、DIP40封装,并在此基础上增加了多种实用功能,而且增加了多种工作模式,方便使用者的仿真,运行调试以及生产测试此外,P89C51采用低功耗静态设计宽工作频率DC-33MHz,宽工作电压范围
2.7-
5.5V,两种软件方式选择电源空闲和掉电模式空闲模式下,冻结CPU而RAM定时器、串行口和中断系统维持其功能由于是静态设计所以掉电模式下,时钟振荡停止,RAM数据会得以保存,停止芯片内其它功能CPU唤醒后,从时钟断点处恢复执行程序同时,P89C51有PLCC
44、DIP40和LQFP44等多种封装形式,以适应不同产品的需求P89C51的器件引脚图其下为此P89C51单片机主要特点介绍
(1)、P89C51有3个定时器/计数器,即比其它的INTEL80C51兼容内核单片机增加T2;
(2)、UART的多机通信中的从机地址自动识别和帧错误检测;
(3)、具有4个中断优先级,IPH和IP结合使用决定了每个中断的优先级的中断优先权;
(4)、两个DPTR指针,为数据块移动和中断/主程序中同时使用DPTR提供极大的方便,通过AUXR1的DPS位编程以实现对2个16位DPTR寄存器的切换;
(5)、可将AUXR.0置位禁止ALE的信号输出从面达到降低单片机本身的EMI电磁干扰,该功能在RF类产品中效时机特别明显;
(6)、增加型80C51系列单片机有6/12CLOCK时钟频率切换功能,不仅可以在烧写芯片时作静态切换,还可以在运行中动态切换
3、开关电源本电路采用的是北京新星普德电源技术有限责任公司的MGZ-H15D型开关电源,其主要性能特点及参数如下
(1)、小型化PCB字装结构,自然冷方式,尺寸108*48*30mm;
(2)、输出过压、过载保护;
(3)、输出短路保护;
(4)、输入电压170V~264V
(5)、输入频率47~63Hz
(6)、输出电压及电流线性调整率±
0.5%max电压
(一)+5V电流
(一)
0.2~2A电压
(二)+12V电流
(二)
0.04A~
0.4A
4、CPLD芯片EPM7160SLC84-10该芯片为PLCC84封装,它乃是Altera公司的一款高性能、高密度的CMOSCPLD产品,归属该公司的MAX7000S系列,它是较早支持在系统编程(ISP,In-SystemProgrammable)的产品,该系列产品的主要特点是
(1)、采用第二代多阵列(MAX)结构;
(2)、器件的规模在600到5000个可用门之间;
(3)、引脚到引脚之间的延时为6ns,工作频率可达
151.5MHz;
(4)、工作电压为5V支持在系统编程(ISP);
(5)、可编程功率节省模式下工作,每个宏单元的功耗可降到原来的50%或更低;
(6)、高性能的可编程边线阵列(PIA)提供一个高速的、延时可预测的互连线资源;
(7)、每个宏单元中的可编程扩展剩余项可达32个;
(8)、具有可编程加密位,可对芯片内的设计加密;
(9)、端口多电压支持
(二)、数显表的技术参数光栅数显表的技术参数是根据用户的需求而定的参数如下
1、显示坐标数1坐标
2、显示位数十进制8位制
3、分辨率5um
4、输入信号12V/5V方波信号
5、电源交流220V±10%50HZ
6、功耗约10W
(三)、硬件系统结构框图:
(四)、硬件设计原理及实现方法1、硬件电路设计原理图如附录三2、双层PCB板布线图如附录四3、连接传感器的七芯插座连接信号,其接线图如下脚号1234567 信号0VNCAB+12V或+5VRI外壳
4、莫尔信号整形及电压变换处理使用4050对信号进行方波整形及电压转换处理,并调制到标准的5VTTL电平,向CPLD提供一个可靠的信号;具体电路请看附录三5、莫尔条纹的细分及计数处理
(1)、莫尔条纹的四细分和辨向原理所谓细分,也就是对莫尔条纹信号频率进行倍频,其都采用电子细分方法莫尔条纹细分的方法有光学细分,机械细分和电子学细分用光学细分和机械细分处理问题时,观察者利用事先在分划板或鼓轮上的标尺对莫尔条纹进行度量,从而取得细分信息这种方法是把问题放在空间加以考虑,而电子细分则是把问题引导到时间域和频率域0X0WX0X(如上图所示)加以解决,它利用了近代电工-电子学的许多成就电子学细分方法读数迅速,可以达到动态测量的要求,它不仅可以实现点位控制,而且可是实现连续轨迹控制,使观察者可以从主观的影响中摆脱出来输出量又能和处理机联动,实现自动化细分及辨向处理的方法是就如前所讲,光栅信号是相差90°的TTL电平,如下面图7所示,(a)为正向,(b)为反向光栅正向移动时,其AB电平的变化序列为00-01-11-10;光栅反向移动时,AB电平的变化序列为00-10-11-01设计时,设定两个两位的信号寄存器,用于保存当次及上一次的AB信号量,设计一个两个状态的状态机,在状态一时采集AB值存于其中一个信号寄存器中,然后在第二个状态中将第一个状态刚存入的值与另一个寄存器的值作比较,即可判断是正向移动还是反向移动,正向移动,计数器正向计数,反向移动,计数器反向计数,而AB两路信号的四种状态也就实现光栅信号的四细分,计数器是用VHDL设计的24位双向计数器,其设计为同步双向计数器PLD系统时钟通过一个100p电容直接接单片机OSCOUT端;1111000011110000(a)(b)图
(7)本设计采用的最为常用的四细分方式,用一片名为EPM7160SLC84-10的CPLD完成其光栅方波信号的细分为了提高系统集成度,其信号的辨向及计数处理也设计其中在设计过程当中采用的是Altera公司的MAX+plusII软件,用硬件描述语言VHDL进行编写MAX+PLUSII它具有完全集成化的可视化环境,还有工业标准EDA工具接口,并可以运行在多种平台上,它提供了一种与结构无关的设计环境,设计人员不需要精通器件的内部结构,只需要运用自己熟悉的输入工具进行设计即可通过MAX+PLUSII把这些设计转换为最终的结构所需要的格式
(2)、可编程逻辑器件的设计流程其硬件设计程序请查看附录一
6、与传统的硬件设计方法比较传统的硬件设计是采用自下而上的设计方案设计者是据系统对硬件的要求,详细编制技术规格书,并画出系统控制流程图,然后根据技术规格书和系统控制图,对系统功能进行数据分析,合理的划分功能模块,并画出系统功能框图;接着就是进行各个功能模块的细化和电路设计;各个功能模块的电路设计调试完成以后再将各个部分连接起来,完成整个电路的设计,再进行系统调试,最后完成整个系统的电路设计而光栅位移传感器的硬件电路设计是采用自上而下的设计,这样可以大大提高开发效率和增加已有的开发成果的可靠性、可继承性随着各种新的开发工具、计算机辅助设计(CAD)、集成电路以及可编程器件的相继出现,使用计算机软件进行印刷板的布线成为可能,进而实现插件板级规模的电子电路的设计和仿真更加简单易行所以自上而下的发展必将取代自下而上的设计所谓的自上而下的设计方法就是从系统总体要求出发,自上而下的逐步将设计内容细化,最后完成系统硬件的整体设计,自上而下的设计系统硬件的过程如图
7、自上而下的设计方法的主要特点如下
(1)、电路设计更趋合理化硬件设计人员在设计硬件电路使用CPLD器件,就可以自行设计所需要的专用功能的模块,而无须受通用逻辑器件的控制,从而使电路设计从体积和规模上大为减小
(2)、采用系统早期的仿真在自上而下的设计过程中,每级都进行仿真,从而可以在设计系统的早期发现问题的存在这样就可以大大缩短设计周期,降低成本
(3)、降低了硬件电路的设计难度在使用传统的硬件电路的设计人员往往要先写出电路的逻辑表达式和真值表或时序电路的状态表,然后在进行简化等,这一工作是非常困难复杂的,特别在设计复杂系统时,工作量大极易出错所以采用VHDL语言就可以免除缩写表达式或真值表的过程,减少错误的发生率,使难度大幅度降低,从而降低设计周期
(4)、主要设计文件用VHDL语言编写的源程序在传统的硬件电路设计中,最后形成的主要文件是电路原理图,而采用VHDL语言设计系统硬件电路时,可以将VHDL语言编写的源程序转换成电原理图形式输出,用VHDL语言的源程序归档文件有很多好处一是资料量小,便于保存;二是可继承性好,当设计其它硬件电路时,可以使用文件中采用的某些库,进程和过程程序;三是阅读方便,阅读程序很容易看出来一硬件电路的工作原理和逻辑关系,而阅读电路原理图,推知其工作原理需要较多的硬件知识和经验,而且看起来也不那么一目了然
8、MCS-51单片机方面为了方面高速的对CPLD进行读取操作,连接单片机的P0口,P
2.0P
2.1P
2.2端到CPLD的数据信号(D0-D7),控制信号(Adder0,Adder1,CS)计数器的同步清零端口直接连接单片机的普通端口P
3.2,其计数器读取控制如表所示CSAdder1Adder0操作说明000读取计数器7~0位001读取计数器15~8位010读取计数器23~16位011不定状态1XX不定状态X表示不定态
(五)与上位机的通讯
1、RS232串行口P89C51单片机自带了一个全双工的UART,端口分别为P
3.0的RX及P
3.1的TX,其输出电平为标准TTL电平,但实际标准RS232口并非TTL电平,RS232的电气特性是逻辑1:+5V~+15V、逻辑0-5V~-15V,因此在进行单片机与PC通讯之前必须要进行必须要电平转换,在这里我选用的是MAX公司MAX232(DIP16)芯片,此芯片提供了两组收发器,其主要特点就是外围简单,仅需四只
0.1uF的电容,就可以实现在单5V供电的情况下,利用自身的电压泵产生±10V的电压,实现可靠的串行信号通信本设计其串行格式为,波特率为9600bps,无奇偶校验,一位停止位+8位数据位+1位停止位,数据帧格式为‘#’+8字节ASCII码组成的位移量+回车符(0x0D)2串口调试工具它可以用来检测光栅位移传感器的电路是否有信号产生,可以检测信号的辨向和计数问题,检测单片机是否正常工作等也可以改变传感器的物理地址,清零等操作方便设计者的检测和实验,产品何地方出现故障可以一目了然,也为以后的售后服务提供检测的方便串口调试
(1)、硬件连接用一根三芯双绞线,分别连接一个九芯针梯形插座和一个九芯孔梯形插座其接线方式为(九芯孔插头)九芯针插头连接完成之后,将九芯孔插头插入计算机的COM1口,将接线的另外一端插到本电路板的COM口上这样就完成实验板与PC机的串行通讯连线,接下来的工作就是串行通讯实验
(2)、串行口软件调试1)、使用软件啸峰工作室做的一个免费串口调试助工具,其版本号为ScomAssistantV
2.12)、调试步骤a、在程序组中找到串口调试软件,单击即可;b、设置串口号为COM1(缺省值);c、设置波特率为9600(缺省值);d、校验位无NO;e、打开实验板电源即可从主显示框中看到由实验板发送到计算机的数据若选择16进制显示,可查看数据的16进制方式;下图为十进制的显示方式注本软件为调试过程中所用软件
四、光栅数显表软件设计部分这个部分就是将硬件结构框图中提到的8位led显示的设计,此部分设计就是将数据显示在8个led上
(一)、LED显示器件的基础知识LED发光器件一般常用的有2类数码管和点阵
1、数码管
(1)、数码管常用的一般8字型分为ABCDEFGP段其中P位小数点
(2)、数码管常用的有10根管脚单位每段一根管脚另外两根管脚为公共端2根是通的
(3)、从尺寸上分的话种类很多常用的有
0.
30.
50.
81.
01.
21.
51.
82.
33.
04.
05.0等等;
(4)、一般小于
1.0的为单管芯
1.0有单有双
1.2~
1.5为双管芯
1.8以上为3个以上的管芯因而他们的供电电压要求不同一般每个关芯的压降为
2.1v左右我的经验是
0.8以下5v供电
1.0~
2.3为12v
3.0以上更高
(5)、数码管分共阴和共阳两种
2、点阵
(1)、点阵常用的为8*8以前还有5*8现在不大用了
(2)、点阵都是单管芯分行共阴和行共阳一般都用5v供电
(3)、8*8点阵为16根管脚单色也有24根的可能是作废的双色点阵或者为了能在同一种线路板上实现单色双色都可用而设计的也比较常见8根行8根绿双色为24根管脚8根行8根列红8根列绿光栅数显表的设计选用了常用的8字型,共阳极它的显示多分为静态和动态显示,此设计选用的是动态循环扫描方式动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜,这就要求在编写程序时,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序在C51指令中,延时子程序是相当简单的,并且延时时间也很容易更改,可参见程序清单中的延时子程序 为简单起见,只是编写了8位LED同步显示00000000—11111111直到99999999数字,并且反复循环
(二)、编译环境
(1)、Kell
7.06单片机开发中除必要的硬件外,同样离不开软件,Keil软件是目前最流行开发MCS-51系列单片机的软件,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起
(2)、使用语言C因为选用的单片机是P89C51,CMOS8位单片机用C来编写程序比用汇编编写的程序语言更精练,占用少量的篇幅,减轻了设计者的编程量,而且两种语言可以互相调用,随时更换
(三)、软件设计的结构程序流程图
(四)、LED显示软件设计的源代码如附录二下面是有关软件设计的几点说明
1、考虑到产品成本及MCS-51只有下拉驱动的能力,本LED采用了8个共阳LED,使用动态扫描的方式进行显示,其段码连接在单片机的P0口,其位码由单片机的P
1.0-P
1.7经过9013NPN三极组成的电流放电器控动态扫描方式中有两种方式第一,在主循环中,每一次循环扫描一次LED屏;第二,使用定时器T0作定时器,定时中断对LED进行扫描经过认真考虑及实验,发现使用定时器中断对LED进行扫描有绝对的优势第一,每一个循环周期不定,存在延时键盘消抖的问题;第二,单位时扫描频率得不到控制因此据前分析问题,并组合人眼的生理情况,将LED的显示频率定为40次/s,因为单片机的晶振频率为
11.0592MHZ,因此定时器T0的TH0付值0x5A,面TL0付值0x00,定时器T0每25ms就会中断一次,以实现对8个LED进行一次扫描将传感器的位移值显示于数显表的LED上
2、#include都是叫包含文件,将一些固定的库包含进去所以#includestdio.h//包含文件#includemath.h#includeabsacc.h#includereg
51.h#includeintrins.h以上这部分固定不变的,就是说,在这些固定的库里有需要的调试好的函数
3、ucharDispBuff
[8]定义8个字节的显示循存,后面填充的0xff只是初始化数组,表示开机的初值是0xff.如下所示ucharDispBuff
[8]={0xff0xff0xff0xff0xff0xff0xff0xff};//显示循存
4、codeDispBmp
[10]声明字段显示码,用显查表,比如怎数值1,它的显示段码就是DispBuff
[1]=0xf9前面的CODE表示这个数组存在ROM里面的,在程序运行过程当中不能改的如下所示codeucharDispBmp
[10]={0xC00xF90xA40xB00x990x920x820xf80x800x90};//显示字段码用于查表存于ROM中
5、sbit用于定义端口,如sbitK1=P3^3以后程序当中出现对K1付值的话,就是对应于P3^3,为什么要这样呢,因为程序不如不能直接用端口,必须先这样声明;如下所示sbitK1=P3^3;//清零按键输入sbitCLR=P3^2;//接CPLD清零控制端sbitCS=P2^2;//定义CPLD片选信号sbitA1=P2^1;//定义地址信号1sbitA0=P2^0;//定义地址信号
06、程序显示思路用的是动态扫描,因为要保证刷新速度,所以我用T0做中断,每50MS对LED进行动态扫描一次/*定时器0初始化*/TH0=0x5A;//付初值表示50ms中断TL0=0x00;TR0=1;//启动定时器0ET0=1;//打开定时器0的中断EA=1;//打开全局中断控制位
(五).软件系统设计的仿真
1、设计中使用的仪器及仪表
(1)、万用表:主要用来检测输入电路板的电压单片机各引脚的电压测量电阻值电容值连接电路的测量.
(2)、示波器:主要检测信号的输入和输出.
(3)、LABTOOL-48万能编程器:主要用来烧制程序将编辑好的程序烧到单片机的CPU处理器中.如下图所示
(4)、Altera的并口下载电缆ByteBlaster ByterBlaster是根据需要自制的下载电缆,但是通常是25贞的
(5)、8051仿真器:仿真器就是通过仿真头用软件来代替了在目标板上的51芯片,关键是不用反复的烧写不满意随时可以改可以单步运行指定端点停止等等,调试方面极为方便
1、仿真器的硬件介绍本文中采用的仿真器为Micetek公司的CodeCruiserFor51系列,其主要特点是该仿真器支持Intel/Philips8031/32/51/52/54/58,Wnbond7831/32/51/52/54/58等所有厂商的标准51系列CPU系统时钟最大可达40MHz;128KB仿真存储器,包括64K程序存储器和64K数据存储器提供64k个硬件断点;可对源程序的汇编进行单步操作StepInto/Over;目标处理器可完整保留自身的存贮器和I/O空间;支持存储器存储记忆功能,可用储存(Save)命令CodeCruiser窗口中定义的仿真存贮器映射设定存储到硬盘上这些映射和窗口配置信息可在需要时用恢复(Restore)命令再从硬盘上调出;通过所装6针串口电缆实现与PC机的通信,最高通信速度为115200BPS仿真器所需PC机系统配置与EasyProbePlus连接的PC机电脑必须满足下固定配置.配备奔腾或更高性能的CPU.一个CD-ROM驱动器.安装有MicrosoftWindows95/98/2000/NT
4.0XP或以上版本.配备VGA或SuperVGA彩色显示器,以及鼠标仿真器接电脑,仿真器再通过仿真头接目标板,连接好了以后,打开51开发软件平台KEIL,通过在KEIL中修改你的程序中不满意的部分,仿真器会在软件平台KEIL的控制下时时联动然后通过单步运行程序或者让程序运行到指定的程序行停止等等调试方法调试所写的程序,直到你满意为止,全部过程硬件都会和程序同步运行,所见即所得可以极大地提高效率,不用再反复的用编程器向51芯片中烧录程序2)、仿真过程为第1步启动KEIL新建工程第2步给新建工程起一个名字然后选择保存第3步选择要仿真的芯片种类芯片种类选择P89C51第4步打开这个工程目录用鼠标“右键”点击它内部的下属组目录,选择向组里面添加文件选项第5步,选择你硬盘上现有的C格式文件,选择添加第6步,如果弹出下面的对话框,确定就行了,文件正常添加第7步,双击这个添加的C文件可以看到它的内部第8步,添加之后进行编译,看看是否有错误3)、如何设置硬件仿真器第1步在总目录上用鼠标“右键”选择弹出菜单中的目标属性第2步,进入目标属性进行晶振等参数的设置第3步,输出选项的设置第4步,硬件仿真器的设置(u使用选keilmonitor-51driver)第5步,接上一步,串口的设置都设置好了之后,连好仿真器和电脑的连线,连好仿真器的电源,按着下面的操作,就可以进入点击菜单中的调试中的开始/停止调试按扭硬件仿真了硬件仿真器联机启动后会显示出被仿真文件的文件名和仿真器,此时我们已经进入了KEIL的硬件仿真调试环境,这样就可以完成硬件检测的过程六.设计过程中遇到的问题及解决方法
(一)、单片机不能正常工作电路板焊接完毕后,初调电路时,发现程序已写入单片机,晶振也工作的情况下,发现单片机经常不工作,开始怀疑是单片机复位信号不正常,但用示波器检查能知单片机复位正常,检查很长时间,后仔细查资料,并把本电路和原来其它工程师设计的电路图作比较发现得知,我并非将单片机的EA脚连接高电平,此脚为程序存储器选择脚,在使用片外程序存储器该脚需接GND,但在本电路中,使用的自身的4KFlash,所以该脚就必须接VCC,改完后,重新开机,故障排除;
(二)、CPLD不工作在设计的过程中发现,经单片机引出的CLK信号在进CPLD时钟引入端前,必须接一个100pF左右的电容,因为在实验初其总发现CPLD程序下载到CPLD之后,CPLD总不工作,后用示波器检查才发现,原来单片机时钟输出波形范围在
1.2V-
4.0V,经查资料发现,数字0其电平应小于或等于
0.3V,原来问题出在这原来学做收音机时,曾经用过电容作过隔直,串了一个104的电容上去,用显波器看看,波形太小了,换100P电容后,故障消除;
(三)、数据不能发送到PC测试单片机与PC通讯时,发现数据不能送达PC,经检查数据线未接错,但在用示波器检查时,发现单片机TX端有数据输出信号,但MAX232的14脚未见输出,怀疑MAX232损坏,故换一只重实,但故障依旧用万用表检测其它好的电路板(有用MAX232的)发现,MAX232的1-6端口电压实测为:1脚-
7.34V、2脚–
9.35V、3脚–
2.67V、4脚–
4.17V、5脚
5.01V、6脚
9.15V,但本电路实测为1脚-
2.1V、2脚–
1.3V、3脚0V、4脚0V、5脚5V、6脚
8.0V,因此怀疑为电容损坏,换电容C3后,故障消失,后仔细查看资料发现,原来MAX232的四个电容为泵电容,也就靠这几个电容产生RS232所需的正负电压的;
(四)、资源不足使用MAX+PlusII进行设计时,原打算采用的为EPM7128SLC84,但由于后在逻辑综合时,发现其逻辑资源超出其EPM7128SLC84的资源,因此而后将CPLD由原来的7128改为与之管脚相兼容的EPM7160SLC84-10,该两款CPLD均属MAX7000S系列,管脚及封装均相同所以此处也是以后有待改进之后,可以采用MegaFunction/LPM,据查资料说可大大减小资源占用量结语由本文可知,对于长距的位置和位移测量,目前采用光栅位移传感器通过对光栅产生的莫尔条纹信号进行整形、细分、辨向和计数等处理,来实现高精度的测量,此光栅数显表的分辨率为5um传统的光栅数显表的信号细分和辨向都是通过硬件逻辑电路来完成的,而且细分的提高受到电路的复杂程度限制而我所设计的此种光栅数显表采用了自上而下的设计方案,仅采用几组光电元件,用可编程的逻辑电器件CPLD芯片来代替传统复杂的逻辑电路,采用VHDL语言对其进行编程,再对其信号进行周期循环的扫描,完成四细分,辨向和计数电子细分可对信号进行1000份细分,甚至到4000多份不仅如此,其他部分的电路也均采用了集成芯片这样细分数就可以随着客户的要求、工作条件、加工条件来通过软件进行调整,因此简化了数显表的结构,也简化了PCB的设计及焊接,大大提高了工作效率,从而提高了性能价格比另外,光栅数显表的设计也涉及到了如何利用MCS-51单片机读取CPLD计数值,然后同时将CPLD读到的数据通过RS232向上位机发送,以便以后用户扩展其功能及实时控制等等虽然此光栅工作台已研制成功,但随着新型器件的出现和技术的不断进步,光栅位置检测技术也将有新的台阶,尤其是信号的细分技术高速DSP的出现以及其价格的大幅度下降,它将大量的用于光栅数显技术中,能极大的提高仪表的性价比另外,现代的测试领域也有了极大的改变,虚拟仪器概念被越来越多的人认可,计算机高速并口与高速串口的出现,使传统的数显仪器逊色不少因此采用电子元器件高端产品,运用现代的测试技术研制出满足当代测试系统需要的光栅数显装置将会有广泛的发展前景与市场此系统还存在着不足之处,就是本系统只介绍了信号的四细分技术,对其它更高倍数的细分还没有提出电路的设计方法和技术的交流参考文献
[1]王勇.计量器具综述.成都量刃具总厂.1995
[2]甘历.VHDL应用与开发实践.科海出版社.2003
[3]许瑞麟.PLD与CPLD数字电路设计.中国水利出版社.2003
[4]李朝青.单片机与DSP外围数字IC技术手册.北京航天大学出版社.2002
[5]徐爱军彭绣华.单片机高级语言C51应用程序设计.电子工业大学出版社.2001
[6]高海生.单片机应用技术大全.西南交通大学出版社.2003
[7]李向瑞文章编号.1006-883x
(2003)11-0001-05
[8]王国华.X-Y精密工作台电控系统的研究.中国博硕士学位论文期刊库.2002
[9]Http//www.wyu.edu.cn
[10]Http://www.pld.com.cn
[11]Http://www.fpga.com.cn/index.htm
[12]Http://89s
51.meibu.com/fzq/k.htm
[13]梁长垠.光栅传感器在位移自动测量系统中的应用2001-8-23 中仪商务信息
[14]何树荣.CCD直接细分光栅位移传感器的研究.光学技术.1999年03期.
[15]梁长垠.光栅传感智能测量系统.2001年第4期.文章编号1000-9787
(2001)04-0041-03附录一.CPLD芯片EPM7160SLC84的VHDL源程序四细分及计数和辨向处理LIBRARYieee;USEieee.std_logic_
1164.ALL;USEieee.std_logic_unsigned.ALL;ENTITYmainISPORTclk:INstd_logic;--时钟输入clr:INstd_logic;--清零信号输入papb:INstd_logic;--光栅AB相输入cs:INstd_logic;--片选信号Adder:INstd_logic_vector1downto0;--地址信号dout:OUTstd_logic_vector7downto0;--数据输出;ENDmain;ARCHITECTURErtlOFmainIS--结构体TYPEstateISs0s1;SIGNALpatate:state;SIGNALoldabnewab:std_logic_vector1downto0;--定义两个2bit长的信号SIGNALcount:std_logic_vector23downto0;--定义一个24bit的计数器SIGNALlockcount:std_logic_vector23downto0;--定义一个24bit的暂存器BEGINxfcounter:PROCESS--四细分及计数进程BEGINWAITUNTILclk=1;--等待上升延出现IFpatate=s0THEN--如果是状态s0IFclr=0THEN--检查清零信号是否有效count=000000000000000000000000;--同步清零ENDIF;newab=papb;--将当前光栅输入信号存于newabpatate=s1;--改为状态s1ELSEIFnewab=10andoldab=11ornewab=11andoldab=01ornewab=01andoldab=00ornewab=00andoldab=10THENcount=count+1;ELSIFnewab=00andoldab=01ornewab=01andoldab=11ornewab=11andoldab=10ornewab=10andoldab=00THENcount=count-1;endif;oldab=newab;patate=s0;ENDIF;ENDPROCESSxfcounter;PROCESSBEGINWAITUNTILclk=0;IFcs=1THENlockcount=count;ENDIF;ENDPROCESS;PROCESSclkBEGINWAITUNTILclk=1;ifAdder=00THENdout=lockcount7downto0;ELSIFAdder=01THENdout=lockcount15downto8;ELSIFAdder=10THENdout=lockcount23downto16;ENDIF;ENDPROCESS;ENDrtl;附录二软件部分源代码#includestdio.h//包含文件#includemath.h#includeabsacc.h#includereg
51.h#includeintrins.h#defineucharunsignedchar//定义宏ucharucharDispBuff
[8]={0xff0xff0xff0xff0xff0xff0xff0xff};//显示循存codeucharDispBmp
[10]={0xC00xF90xA40xB00x990x920x820xf80x800x90};//显示字段码用于查表存于ROM中sbitK1=P3^3;//清零按键输入sbitCLR=P3^2;//接CPLD清零控制端sbitCS=P2^2;//定义CPLD片选信号sbitA1=P2^1;//定义地址信号1sbitA0=P2^0;//定义地址信号longReadCountvoid;//读取计数器值返回无符号长整形voidSendPcucharch;//向PC发送数据voidmainvoid//主程序{longlno;//定义变量TMOD=0x21;/*串口初始化*/SCON=0x50;PCON=0x80;TL1=0xf6;TH1=0xf6;TR1=1;/*定时器0初始化*/TH0=0x5A;//付初值表示50ms中断TL0=0x00;TR0=1;//启动定时器0ET0=1;//打开定时器0的中断EA=1;//打开全局中断控制位while1{if!K1//检查清零按键是否按下{CLR=0;//向PLD两个指令时钟长的脉冲清计数器值_nop_;CLR=1;}lno=ReadCount;//读取24位计数器,以获取当前位移值lno=lno%100000000;ch1=lno/10000000;DispBuff
[0]=DispBmp[ch1];SendPc#;//向计算机发送帧头SendPcch1+0x30;//向计算机发送第一位lno=lno%10000000;ch1=lno/1000000;DispBuff
[1]=DispBmp[ch1];SendPcch1+0x30;lno=lno%1000000;ch1=lno/100000;DispBuff
[2]=DispBmp[ch1];SendPcch1+0x30;lno=lno%100000;ch1=lno/10000;DispBuff
[3]=DispBmp[ch1];SendPcch1+0x30;lno=lno%10000;ch1=lno/1000;DispBuff
[4]=DispBmp[ch1];SendPcch1+0x30;lno=lno%1000;ch1=lno/100;DispBuff
[5]=DispBmp[ch1];SendPcch1+0x30;lno=lno%100;ch1=lno/10;DispBuff
[6]=DispBmp[ch1];SendPcch1+0x30;ch1=lno%10;DispBuff
[7]=DispBmp[ch1];SendPcch1+0x30;}}voidT0_initvoidinterrupt1{ucharch2ii;TH0=0x5a;//重新置Timer0的值TL0=0x00;ch2=0x80;forii=0;ii8;ii++//动态扫描LED{P0=0xff;P1=ch2;ch2=ch21;P0=DispBuff[ii];}P0=0xff;}longReadCountvoid{longsno;ucharch3;EA=0;//总中断关闭CS=0;//打开片选A0=0;A1=0;_nop_;//空指令等待数据稳定sno=P0;//读取计数器7~0A0=1;_nop_;//空指令等待数据稳定ch3=P0;//读取计数器15~8sno=sno+ch3*256;A0=0;A1=1;_nop_;//空指令等待数据稳定ch3=P0;//读取计数器23~16sno=sno+ch3*65536;CS=1;//关闭片选EA=1;//总中断打开returnsno;}voidSendPcucharch//向UART送数{SBUF=ch;//将数据发送给串行缓冲区while!TI;//等待发送成功TI=0;//清除发送成功标志}光栅传感器信号方波信号开关电源电平转换并整形CPLD细分、辨向、计数P89C51单片机MAX2328位LED显示位移量通过RS-232送计算机功能仿真设计处理(优化、试配、布局等)设计准备设计输入(原理图,硬件描述语言等)器件检测器件编程时序仿真RTL级仿真RTL级描述描行为级仿真行为级设计规格设计逻辑综合优化输出门级网表门级仿真定时检查串行口调置(保持缺省即可)文本发送区主显示框开始P89c51单片机初始化串口初始化定时器0初始化EPROM7160SLC84_10输出数据向CPLD指令长的数据清零读取24位计数器的值重置T0动态扫描LED将数据发送串行缓冲区依次数据显示在光栅数显表上。