当前位置:文档之家› 《嵌入式技术基础与实践》第12章 定时接口模块

《嵌入式技术基础与实践》第12章 定时接口模块

《嵌入式技术基础与实践》第12章 定时接口模块
《嵌入式技术基础与实践》第12章 定时接口模块

第12章定时接口模块

本章首先从一般角度讨论计数器/定时器的工作原理,然后介绍Freescale

MC908GP32MCU的定时接口模块的基本功能与编程基础,给出利用定时中断计时的例子。在此基础上,讨论定时接口模块的输入捕捉功能、输出比较功能、脉宽调制输出功能,给出了输入捕捉、脉宽调制输出的简明实例。本章讲述了计数器/定时器的工作原理,定时器模块是MCU中一个非常重要的部分,它不仅有计数/定时功能,还能进行输入捕捉、模拟PWM等功能。读者要仔细体会它的各种不同的使用方法,并将这些方法运用到具体的应用中。

掌握MCU内部定时器的基本工作原理与编程方法是学习MCU的重要内容,正确利用定时器溢出中断处理系统时钟、执行一些周期性工作是最基本也是最重要的功能之一。第12.2节给出的例子必须透彻理解。对于输入捕捉功能、输出比较功能主要了解基本原理。对脉宽调制输出功能,要求理解基本原理与用途,重点掌握脉宽调制输出的编程方法。脉宽调制输出功能也可以作为D/A转换功能使用。

12.1计数器/定时器的基本工作原理

在嵌入式应用系统中,有时要求能对外部脉冲信号或开关信号进行计数,这可通过计数器来完成。有些设备要求每间隔一定时间开启并在一段时间后关闭,有些指示灯要求不断地闪烁,这可利用定时信号来完成。个人计算机也经常要用到定时信号,如系统日历时钟的计时、产生不同频率的声源等。在计算机系统中,计数与定时问题的内容是一致的,只不过是同一个问题的两种表现形式。本节首先讨论计数与定时的一般方法,比较各种计数与定时方式的优缺点。然后阐述MC908GP32MCU定时接口模块的基本功能。

12.1.1实现计数与定时的基本方法

实现计数与定时的基本方法有三种:

(1)完全硬件方式

在过去许多仪器仪表或设备中,需要进行延时、定时或计数,经常使用数字逻辑电路实现,即完全用硬件电路实现计数/定时功能,若要改变计数/定时的要求,必须改变电路参数,通用性和灵活性差。微型电子计算机出现以后,特别是随着单片微型计算机的发展与普及,这种完全硬件方式实现定时与计数的方法已较少使用。

(2)完全软件方式

在计算机中,通过编程,利用计算机执行指令的时间实现定时,称为完全软件方式,

简称软件方式。在这种方式中,一般是根据所需要的时间常数来设计一个延时子程序,延时子程序中包含一定的指令,设计者要对这些指令的执行时间进行严密的计算或者精确的测试,以便确定延时时间是否符合要求。当时间常数比较大时,常常将延时子程序设计为一个循环程序,通过循环常数和循环体内的指令来确定延时时间。这样,每当延时子程序结束以后,可以直接转入下面的操作,也可以用输出指令产生一个信号作为定时输出。这种方法的优点是节省硬件。主要缺点是执行延时程序期间,CPU一直被占用,所以降低了CPU的效率,也不容易提供多作业环境;另外,设计延时子程序时,要用指令执行时间来拼凑延时时间,显得比较麻烦。不过,这种方法在实际应用中还是经常使用的,尤其是在已有系统上作软件开发时,以及延时时间较小而重复次数又较少时,常用软件方法来实现定时。在计算机控制软件开发过程中,作为粗略的延时,经常使用这种方式。

(3)可编程计数器/定时器

利用专门的可编程计数器/定时器实现计数与定时,克服了完全硬件方式与完全软件方式的缺点,综合了它们的优点,其计数/定时功能可由程序灵活地设置,设定之后与CPU并行地工作,不占用CPU的工作时间。应用可编程计数器/定时器,在简单的软件控制下,可以产生准确的时间延时。这种方法的主要思想是根据需要的定时时间,用指令对计数器/定时器设置定时常数,并用指令启动计数器/定时器。计数器/定时器开始计数,当计到确定值时,便自动产生一个定时输出。在计数器/定时器开始工作以后,CPU不必去管它,而可以去做其他工作。这种方法最突出的优点是计数时不占用CPU的时间,并且,如果利用计数器/定时器产生中断信号就可以建立多作业的环境,所以,可大大提高CPU的利用率。加上计数器/定时器本身的开销并不很大,因此,这种方法在微机应用系统中广泛使用。

12.1.2MC908GP32MCU的定时接口的基本原理概述

MC68HC08系列的单片机可以提供多个独立的定时器,例如,MC908GP32芯片有两个定时器,分别叫定时器1、定时器2,它们的工作原理是一致的,下面的说明均以定时器1为例。

HC08系列的单片机定时器的核心是一个工作时处于不断加1的16位计数寄存器,简称为计数器。该计数器的时钟频率由外部晶振时钟(也可以是由锁相环模块得到的总线时钟)经过预定的分频因子分频得到,相互独立的定时器可以使用不同的分频因子。同一个定时器的所有动作都以这个经过分频的频率作为参考,所以相互之间都有确定的关系。从MCU的角度看,真正的时间间隔被这个计数器的定时计数所代替。所以在任何时候可以通过读取计数器的值确定经历的时间。

在定时器内部有个控制和状态寄存器,通过对它某些位的设置,就可以确定多少时间计数器加1,即定时间隔。

在定时器内部还有个预置寄存器,当计数器的值等于预置寄存器的值时,称为计数器溢出,当计数器溢出时,计数器的值被赋0,同时将计数器溢出标志等状态置于控制

和状态寄存器中。

通过对控制和状态寄存器的某位进行设置,可以决定在计数器溢出时,是否允许中断,利用这个中断,可以编写中断例程,实现希望的功能。

使用预置计数功能可以得到精确的溢出时间,可以在任何时候暂停或清除计数器的计数。溢出功能是定时器的最基本功能,本章介绍它的应用。

另外,HC08系列的单片机定时器还具有输入捕捉、输出比较、PWM 脉冲输出、DMA 直接存储器访问等功能。定时器的这些功能可以应用于不同的场合:利用输入捕捉测量脉宽、测量频率、输出特定的波形、直接输出脉宽调制波(PWM);使用输入捕捉配合输出比较还可以用来输出同步波形以及用于延时。以下简要给出MC908GP32的定时器的主要特征:

①每个定时器具有两路独立的输入捕捉/输出比较通道;

②带缓冲(Buffered)和不带缓冲(Unbuffered)的脉宽调制波;

③七种可编程选择的分频因子;

④预置计数;

⑤计数器停止或清除;

⑥16位输入捕捉和通道寄存器;

⑦定时器溢出中断、每路通道的输入捕捉/输出比较中断。

每一个定时器都由两个引脚和11个寄存器组成。在MC908GP32的不同封装形式中,这两个引脚的布局可能是不同的,需要查阅具体的芯片说明。而在40脚的双列直插式封装中只提供了一个定时器的引脚。

MC908GP32两个定时器寄存器的设置和功能是完全相同的,只是寄存器的地址不

表12-1GP32的定时器模块寄存器地址

寄存器名称与缩写访问权限基本功能

定时器1

定时器2$0020

$002B 状态和控制寄存器(TxSC)读/写溢出设置、计数停止和恢复、分频因子设置$0021

$002C 计数寄存器(TxCNTH 、TxCNTL)读自动计数$0022

$002D $0023

$002E 预置寄存器(TxMODH 、TxMODL)读/写设置计数寄存器的计数溢出值$0024

$002F $0025

$0030通道0状态和控制寄存器(TxSC0)读/写通道0标志、模式选择、电平选择$0026

$0031通道0寄存器(TxCH0H 、TxCH0L)读自动计数$0027

$0032$0028

$0033通道1状态和控制寄存器(TxSC1)读/写通道1标志、模式选择、电平选择$0029

$0034通道1寄存器(TxCH1H 、TxCH1L)读自动计数$002A $0035说明:由于有两个定时器模块,使用时,寄存器名称中x 值相应选用1或2。

同,表12-1给出了寄存器地址及功能简要说明。

图12-1给出了GP32的定时器模块的功能框图。

图12-1定时器功能框图

12.2定时器模块的编程基础

12.2.1定时器模块的3个基本寄存器

(1)T1状态和控制寄存器(Timer1Status and Control Register,T1SC)

T1SC的地址:$0020,定义为:

数据位D7D6D5D4D3D2D1D0定义TOF TOIE TSTOP TRST未定义PS2PS1PS0复位00100000 D7—TOF位:定时器溢出标志位(Timer Over Flag Bit)。当16位计数寄存器T1CNT中的值达到设定值(在16位预置寄存器T1MOD中)时,TOF=1,同时T1CNT =$0000。读取定时器状态和控制寄存器T1SC,并向这一位写入零可以清除该标志位。虽然该位为1时,可以向这一位写入零用以清除该标志位,但由于该位为状态标志位,向该位写入0没有意义。另外,如果在清除该标志位之前又发生了定时器的溢出,则这一次的清零无法完成,若允许定时器溢出中断,这样就保证了定时器的溢出中断不会丢失。但是,这也要求,程序必须在每一次定时器溢出发生后,且在下一次溢出发生之前

清除TOF位。在使用溢出中断的情况下,要求在中断返回之前必须清除TOF位,而且该中断的处理时间不能超过一次计数溢出的时间。

D6—TOIE位:定时器溢出中断允许位(Timer Overflow Interrupt Enable Bit)。该位用来设置是否允许定时器溢出中断。TOIE=1,允许定时器溢出中断,TOIE=0,不允许定时器溢出中断。该位可读写,读取的数值就是该位的实际值。

D5—TSTOP位:定时器计数停止位(Timer Count Stop Bit)。该位用来控制计数器的计数停止和恢复。对该位写入1,定时器的计数寄存器将保持当前的值,不再变化,即停止计数。对该位写入0,定时器的计数寄存器将恢复计数,从停止的数值继续递增。TSTOP位在系统复位后的默认值为1,这时计数寄存器是不计数的,必须用指令使TSTOP=0,以启动计数。

D4—TRST位:定时器复位位(Timer Reset Bit)。向该位写入1将清除定时器的计数寄存器和设定的分频因子,在定时器计数寄存器清零的时候将自动清除该位。该位通常为0,读出该位无实际意义。

D3—未定义。

D2~D0—PS2~PS0位:定时器分频因子选择位(Timer Prescaler Select Bits)。这三位定义定时器的分频因子,记为:p,定义如下:

PS2、PS1、PS0=000p=1(20)

=001p=2(21)

=010p=4(22)

=011p=8(23)

=100p=16(24)

=101p=32(25)

=110p=64(26)

=111(未使用)

设f BUS为总线频率,则定时器的计数寄存器的计数频率为:计数频率=f BUS/p。复位时,PS2、PS1、PS0=000,即p=1,此时,计数频率=f BUS。分频因子的选取应根据总线频率f BUS、预置寄存器的设定值、希望的溢出时间来综合考虑和确定。见后面的例题。

(2)T1计数寄存器(T1Counter Register,T1CNTH、T1CNTL)

它是一个16位寄存器,分为高8位、低8位,地址分别为$0021、$0022,它的作用是:当定时器的状态和控制寄存器的TSTOP位=0时,即允许计数时,每一计数周期,其值自动加1,当它达到设定值(在16位预置寄存器中)时,TOF=1,同时计数寄存器自动清0。复位时,计数寄存器的初值为$0000。

(3)T1预置寄存器(T1Counter Modulo Register,T1MODH、T1MODL)

它是一个16位寄存器,分为高8位、低8位,地址分别为$0023、$0024,它的作用是:设定计数寄存器的计数溢出值。复位时,预置寄存器的初值为$FFFF。这里把这个寄存器的中文名称译为“预置寄存器”是为了理解方便,意思是说当“计数寄存器”

的值达到这个寄存器的值时“计数寄存器”就清0了。Freescale称之为“Counter Modulo Register”(可译为“模数寄存器”),原因是计数寄存器的值超过它就清0了,有取“模”之意。

关于分频因子p、预置寄存器的设定值确定方法举例如下:

设f BUS=2.4576MHz=2457600Hz,希望产生t=1秒的定时间隔,设T1MOD=n,分频因子为p,则它们的关系为:t=n/(f BUS/p),则n=t×(f BUS/p),若选择p<64,比如p =25=32,则有n=1×(2457600/32)=76800=$12C00,超出了16位,无法装入预置寄存器。所以,p必须取更大值,p=26=64,则n=1×(2457600/64)=38400=$9600,可以装入预置寄存器,满足要求。当然,在这样的总线频率下,要想产生更大的定时间隔,例如t =2秒,即使取p=26=64,n=2×(2457600/64)=76800=$12C00,也会产生无法装入预置寄存器问题,这样的时间间隔可借助中断程序予以解决。

12.2.2定时溢出中断汇编工程实例

为了理解定时器的基本功能,这里给出利用定时器溢出中断编写定时的例子,并把“时分秒”发送到PC,以便比较。同时,在PC方,用一个十分简明的程序,接收MCU 发送来“时分秒”并显示,同时还可以将PC的当前时间发送到MCU,作为时间基准值。通过这个例子,理解定时器溢出中断的编程方法和系统时间的产生方法。

定时溢出中断汇编工程实例文件组织如表12-2所示。

表12-2定时溢出中断汇编工程文件组织表

工程文件名Timer.prj

所在路径MC08Ex2007\GP32\GP32S\S11_定时溢出中断

文件类型文件名功能简述讲解章节

头文件GP32ASM.h芯片头文件[汇编工程文件组织]4.3 Includes.h总头文件[汇编工程文件组织]4.3 Timer.h定时器模块驱动头文件[本章]

SCI.h串行通信头文件[参见本工程实例]

汇编语言子程序文件EnDisInt.h

开放或禁止MCU各模块

中断文件

[参见本工程实例] MCUInit.s芯片初始化文件

[初始化及PLL编程实例]

14.2.5 Vectors08.s

中断处理子程序与中断向

量表文件

[本章] SCI.s串行通信文件[参见本工程实例] Timer.s定时器模块驱动文件[本章]

汇编语言主程序

文件

Main.s主程序文件[本章]

(1)MCU方程序

①主程序main.s

//------------------------------------------------------* //工程名:TimerInt.prj* //硬件连接:* //(1)MCU的串口与PC方的串口相连* //程序描述:* //(1)从串口接收表示时间的3字节数据* //(2)利用定时器溢出中断修改时间,并发送新时间* //目的:学习定时器基本功能* //--------清华2007版《嵌入式技术基础与实践》实例--------*

//总头文件

.include"Includes.h"

//主程序

.area flash(abs)

.org FlashStartAddr

MainInit:://复位后从此处执行(见Vectors08.s文件末尾处) SEI//关总中断

//1.堆栈初始化为RAM最高端

LDHX#RAMendAddr+1//HX=#RAMendAddr+1

TXS//HX-1->SP

//2.芯片初始化

JSR MCUinit//初学时跳过此处

//3.模块初始化

JSR SCIinit//(1)串行口初始化

JSR T1init//(2)定时器1初始化

//4.全局变量初始化

//(1)"时分秒"缓冲区初始化

LDA#0

STA*Time

STA*Time+#1

STA*Time+#2

//5.开放或禁止各模块中断

JSR EnableSCIreInt//(1)允许SCI接收中断

JSR EnableT1OVInt//(2)允许定时器1溢出中断

//6.开放总中断

CLI

//总循环

MainLoop:

//检测秒是否更新

CMP*Time+#2

BEQ MainLoop//"秒"没有更新,继续检测

//数据已经更新,发送"时分秒"

LDA#3

LDHX#Time

JSR SCIsendN

LDA*Time+#2//A中装本次更新秒值

JMP MainLoop

//包含本工程的其他文件-----------------------------------.include"MCUinit.s"//芯片初始化

.include"EnDisInt.s"//芯片初始化

.include"SCI.s"//串行通信

.include"Timer.s"//定时器通信

//包含中断处理子程序与中断向量表文件"Vectors08.s"--------//注意:这个包含语句的存放位置必须放在最后

.include"Vectors08.s"//中断处理子程序与中断向量表

②定时器头文件Timer.h

//[Timer.h]定时器头文件----------------------------------

//相关标志位宏定义

TSTOPBit=5//定时器计数停止位

TOFBit=7//定时器溢出标志位

③定时器驱动文件Timer.s

//[Timer.s]定时器驱动-----------------------------------* //本文件包含:* //(1)T1init:定时器1初始化* //(2)SecAdd1:以秒为最小单位递增时,分,秒缓冲区的值* //------------------------------------------------------*

//定时器头文件

.include"Timer.h"

//T1init:定时器1初始化----------------------------------* //功能:对定时器1初始化,禁止定时器1溢出中断,设置为1s发生1* //次定时器溢出中断* //入口:无* //出口:无* //堆栈深度:2+1=3* //------------------------------------------------------* T1init::

PSHA//保护A

//禁止定时器1溢出中断,不启动计数,分频因子=64

LDA#%00100110

STA T1SC

//计数寄存器初值=$0000

LDHX#$0000

STHX T1CNTH

//预置寄存器设定值=$9600

LDHX#$9600

STHX T1MODH

//允许定时器1计数寄存器计数

BCLR#TSTOPBit,T1SC

PULA//恢复A

RTS

//SecAdd1:以秒为最小单位递增时,分,秒缓冲区的值----------* //功能:以秒为最小单位递增时,分,秒缓冲区的值* //(00:00:00-23:59:59)* //入口:无* //出口:无* //全局变量:Time(存放时,分,秒值的缓冲区)* //堆栈深度:2+1=3* //------------------------------------------------------* SecAdd1::

PSHA//保护A

INC*Time+#2//秒数加1

LDA*Time+#2

CMP#60

BNE SecAdd1_Exit//秒数未增加到60,退出

LDA#0//秒数增加到60,清0

STA*Time+#2

INC*Time+#1//分钟数加1

LDA*Time+#1

CMP#60

BNE SecAdd1_Exit//分钟数未增加到60,退出

LDA#0//分钟数增加到60,清0

STA*Time+#1

INC*Time//小时数加1

LDA*Time

CMP#24

BNE SecAdd1_Exit//小时数未增加到24,退出

LDA#0//小时数增加到24,清0

STA*Time

SecAdd1_Exit:

PULA//恢复A

RTS

④中断处理子程序与中断向量表Vectors08.s

//[Vectors08.s]中断处理子程序与中断向量表---------------* //功能:* //(1)定义中断处理子程序* //(2)放置中断向量表* //说明:该文件与芯片具体型号有关* //(1)芯片型号MC68HC908GP32* //(2)注意本文件内容的顺序不能变动* //------------------------------------------------------*

//isrT1OV:定时器1溢出中断子程序-------------------------* //功能:以秒为最小单位计时,并清定时器1溢出标志位* //内部调用:* //SecAdd1:以秒为最小单位递增时,分,秒缓冲区的值*

//------------------------------------------------------*

isrT1OV::

SEI

PSHH//保护H

JSR SecAdd1//1s到,递增时,分,秒缓冲区的值

//清定时器溢出标志位

LDA T1SC//1.读取定时器1状态控制寄存器

BCLR#TOFBit,T1SC//2.向定时器溢出标志位TOF写0

PULH//恢复H

CLI

RTI

//isrSCIre:SCI接收中断子程序----------------------------*

//功能:接收3字节基准时分秒放入内存单元Time[0-2]*

//内部调用:*

//SCIreN:串行接收N个字节*

//------------------------------------------------------*

isrSCIre::

SEI//关总中断

PSHH//保护H

LDA#3

LDHX#Time

JSR SCIreN//接收3字节数据

PULH//恢复H

CLI//开总中断

RTI

//此处为用户中断处理子程序的存放处-----------------------

//-------------------------------------------------------

//未定义的中断处理子程序,本子程序不能删除

isrDummy::

RTI

//中断矢量表,用户若需开放某中断,可修改下表中的相应项目

//(interrupt service routine,isr中断处理程序)

.area memory(abs)

.org0xffdc//中断向量表起始地址(注意:与芯片型号有关)

vectab::

//…………省略其他未使用的中断向量定义

.word isrT1OV//TIM1溢出中断

//…………省略其他未使用的中断向量定义

.word MainInit//RESET(见主程序定位处)

(2)PC方VB程序

路径:MC08Ex2007\GP32\GP32S\S10_定时器溢出\VB_SCI\VB_Timer1。

PC 方的界面见图12-2。程序主要功能是:接收MCU 发送来“时分秒”并显示,也可以单击“发送”按钮,发送PC 机的当前时间。

12.2.3定时溢出中断08C 工程实例

定时溢出中断08C 工程实现上述汇编工程相同的功能,其文件组织情况如表12-3所示。这里对工程中的文件不做详细描述,读者可以参考教学资料的“MC08Ex2007\GP32\GP32C\C10_定时溢出中断”下的08C 工程。

表12-3定时溢出中断08C 工程文件

工程文件名

Timer.prj 所在路径

MC08Ex2007\GP32\GP32C\C10_定时溢出中断文件类型文件名

功能简述讲解章节头文件

GP32C.h

GP32MCU 映像寄存名定义头文件[08C 工程文件组织]5.3EnDisInt.h

开放或禁止MCU 各模块中断头文件[08C 工程文件组织]5.3Type.h

类型别名定义头文件[用typedef 定义类型]5.2.10[08C 工程文件组织]5.3Includes.h

总头文件[08C 工程文件组织]5.3Timer.h

定时器模块驱动头文件参见教学资料工程实例SCI.h

串行通信头文件[串行通信子函数]7.4.1MCUInit.c

芯片初始化文件[初始化及PLL 编程实例]14.2.5C 语言

子函数文件SCI.c 串行通信文件[串行通信子函数]7.4.1Timer.c 定时器模块驱动文件参见教学资料工程实例

图12-2定时器溢出中断实验PC 机方VB 程序

Vectors08.c 中断处理函数与中断向量

参见教学资料工程实例

Main.c主函数文件参见教学资料工程实例C语言主函数

*12.3定时器模块的输入捕捉功能

输入捕捉功能是Freescale HC08系列MCU定时器模块的基本功能之一,在学习了定时器的基本编程方法之后,可以进一步学习定时器模块输入捕捉功能的编程方法。本节讨论MC908GP32定时器模块输入捕捉功能的编程方法。

12.3.1输入捕捉的基本含义

(1)与输入捕捉功能相关的引脚

在MC908GP32的DIP-40封装形式中,第21、22脚标记是“PTD4/T1CH0、PTD5 /T1CH1”,它们是通用I/O与定时器输入捕捉的复用引脚。作为定时器输入捕捉功能使用时,它们是定时器1的两个通道输入捕捉引脚。在MC908GP32的DIP-40封装形式中,没有定时器2的输入捕捉引脚。

(2)输入捕捉的基本含义

输入捕捉功能是用来监测外部的事件和输入信号。当外部事件发生或信号发生变化时,在指定的输入捕捉引脚上发生一个指定的沿跳变(可以指定该跳变是上升沿还是下降沿)。定时器捕捉到特定的沿跳变后,把计数寄存器当前的值锁存到通道寄存器。如果在输入捕捉控制寄存器中设定允许输入捕捉中断,系统会产生一次输入捕捉中断,利用中断处理软件可以得到事件发生的时刻或信号发生变化的时刻。

通过记录输入信号的连续的沿跳变,就可以用软件算出输入信号的周期和脉宽,例如,为了测量周期,只要捕捉到两个相邻的上升沿或下降沿的时间,两者相减就可以得到周期;为了测量脉宽就要记录相邻的两个不同极性的沿变化的时间。当测量的脉宽值小于定时器的溢出周期时,只要将两次的值直接相减(看成无符号数)。如果测量值大于定时器的溢出周期,那么在两次输入捕捉中断之间就会发生定时器计数的溢出翻转,这时直接将两个数相减就没有意义,需要考虑到定时器的溢出次数。

图12-3输入捕捉过程

图12-3表示输入捕捉引脚的电平变化。假设触发方式是跳变沿触发,这由通道控制状态寄存器中的MSXB、MSXA、ELSXB和ELSXA决定。在图中的时刻1将计数器的值锁存在通道寄存器中,在输入捕捉中断中,把它另存到一个内存单元以防下次将内容覆盖。在图中的2时刻会再次进入中断。这次将通道寄存器的值和内存单元的值相

减就得到了为低电平的时间。

12.3.2输入捕捉的寄存器

(1)T1通道寄存器(T1Channel Register)

定时器1有两个通道,相对应的通道寄存器有:①定时器1通道0寄存器T1CH0

(16位寄存器),地址是:$0026、$0027;②定时器1通道1寄存器T1CH1(16位寄存器),地址是:$0029、$002A。

通道寄存器在该通道用作输入捕捉时的作用是:当指定的沿跳变发生(即定时系统

捕捉到沿跳变)时,锁存计数寄存器的值。

通道寄存器是一个16位的寄存器,分为高字节和低字节,在读取的时候要分别读

取。为了防止两次读取之间该寄存器的内容发生变化而产生虚假的输入捕捉计数值,系

统会在读取高字节时锁存低字节的内容,这时即使又发生特定的沿跳变,通道寄存器的

内容也不会改变。此后对低字节的读取将释放通道寄存器,但只读取通道寄存器的低字

节将不影响通道寄存器的值。所以,如果要读取整个通道寄存器,必须先读高字节,再

读低字节。由于在读取低字节之前通道寄存器是“失效”的,而读取低字节的指令以及

中断的进入和返回也会花费一定的时间,所以用输入捕捉来测量输入信号时,对输入信

号的频率有一个上限的要求,大于这个上限频率的信号不能被正确地测量。

(2)T1通道0状态和控制寄存器(T1Channel0Status and Control Register,

T1SC0)

T1SC0的地址:$0025,定义为:

数据位D7D6D5D4D3D2D1D0

定义CH0F CH0IE MS0B MS0A ELS0B ELS0A TOV0CH0M

AX 复位00000000

D7—CH0F位:通道标志位(Channel0Flag Bit)。该位用来标志定时器1通道0发生了输入捕捉。在发生输入捕捉时,该位将被置1,定时器1通道0寄存器T1CH0 (16位)记录此时定时器1计数值。读取该寄存器并向这一位写入零可以清除该标志位。

D6—CH0IE位:通道中断允许位(Channel Interrupt Enable Bit)。该位用来设置是否允许发生输入捕捉中断。该位置1,在发生输入捕捉时会产生中断,在中断服务程序中可以进行相关的处理,通常这个中断程序中应包含清除通道标志位的指令。

D5~D4—MS0B~MS0A位:模式选择位(Mode Select Bit)。每一个定时器都可以工作在输入捕捉,输出比较或PWM输出模式,这两位用来选择这些工作模式。因为在带缓冲的PWM模式下,需要两个通道同时使用,所以通道1没有MSxB选择位。模式选择位和下面的跳变沿/输出电平选择位共同决定通道的工作方式。

D3~D2—ELS0B~ELS0A位:跳变沿/输出电平选择位(Edge/Level Select Bit)。在输入捕捉时可以设定上升沿或下降沿捕捉、输出比较也可以设定输出高或低电平。这就需要设定跳变沿/输出电平选择位。每一位的设定和工作方式的关系见表12-4。

表12-4通道控制寄存器控制位

MS0B:MS0A ELS0B:ELS0A工作模式跳变沿/输出电平

X0 X100

00

预设输出电平

初始输出高电平

初始输出低电平

00 00 0001

10

11

输入捕捉

上升沿捕捉

下降沿捕捉

跳变沿捕捉

01 01 0101

10

11

输出比较

输出电平翻转

输出高电平

输出低电平

1X01

带缓冲的输出比较或带

缓冲的PWM输出输出电平翻转

1X10输出高电平

1X11输出低电平D1—TOV0位:溢出翻转控制标志位(Toggle on Overflow Bit)。定时器通道用作输入捕捉时,此位无用。

D0—CH0MAX位:通道最大占空比设置位(Channel X Maximum Duty Cycle Bit)。定时器通道用作输入捕捉时,此位无用。

(3)T1通道1状态和控制寄存器(Timer1Channel1Status and Control Register,T1SC1)

T1SC1的地址:$0028,定义为:

数据位D7D6D5D4D3D2D1D0定义CH1F CH1IE未定义MS1A ELS1B ELS1A TOV1CH1M

AX 复位00000000

含义同上,只是没有D5(MS1B)位,因为MS0B是选择CH0缓冲方式的,CH1没有缓冲方式,所以没有MS1B位。

12.3.3输入捕捉中断编程实例

下面程序验证定时器1通道0(引脚21)输入捕捉中断的产生,当中断发生时取反指示灯PTA1。定时器1通道0的输入捕捉中断向量的地址是$FFF6。

(1)输入捕捉中断08C工程实例

输入捕捉中断08C工程文件组织如表12-5所示。

表12-5定时器1通道0输入捕捉08C工程文件

工程文件名InCapture.prj

所在路径MC08Ex2007\GP32\GP32C\C12_输入捕捉

文件类型文件名功能简述讲解章节

头文件GP32C.h GP32MCU映像寄存名定义头文件[08C工程文件组织]5.3

EnDisInt.h开放或禁止MCU各模块中断头文件[08C工程文件组织]5.3

Type.h类型别名定义头文件[用typedef定义类型]5.2.10 [08C工程文件组织]5.3

Includes.h总头文件[08C工程文件组织]5.3 Light.h小灯驱动头文件[08C工程文件组织]5.3 T1Ch0.h定时器1通道0输入捕捉头文件[本章]

C语言

子函数文件MCUInit.c芯片初始化文件

[初始化及PLL编程实例]

14.2.5

T1Ch0.c定时器1通道0输入捕捉驱动文件[本章]

Light.c小灯驱动[08C工程文件组织]5.3 Vectors08.c中断处理函数与中断向量表[本章]

C语言主函数Main.c主函数文件[本章]

①定时器1通道0输入捕捉头文件T1Ch0.h

//[T1Ch0.h]定时器1和定时器1通道0设置头文件----------------------------------

//头文件

#include"GP32C.h"//GP32MCU映像寄存器名定义

//定时器模块寄存器相关位宏定义

#define CH0FBit7//定时器1通道0标志位

//函数声明

void T1Ch0init(void);//定时器1通道0初始化

②定时器1通道0输入捕捉驱动文件T1Ch0.c

//[T1Ch0.c]定时器1通道0驱动------------------------------------------------* //本文件包含:* //(1)T1Ch0init:定时器1通道0初始化* //硬件连接:* //定时器1通道0(PTD4引脚)与扩展板上的一个开关相连* //-------------------------------------------------------------------------*

//头文件

#include"T1Ch0.h"

//T1Ch0init:定时器1通道0初始化---------------------------------------------* //功能:初始化定时器1通道0* //参数:无* //返回:无* //-------------------------------------------------------------------------* void T1Ch0init(void)

{

//1.设置定时器1状态和控制寄存器

T1SC=0b00110000;

//||||||||_____分频因子为1

//|||||________不用

//||||_________定时器复位

//|||__________停止定时器计数

//||___________禁止定时器溢出中断

//|____________定时器溢出标志位

//2.设置定时器1通道0状态和控制寄存器

T1SC0=0b00001100;

//||||||||_____输入捕捉时无用

//||||||_______跳变沿捕捉

//||___________禁止输入捕捉中断

//|____________通道标志位

//3.允许定时器1计数寄存器计数

T1SC&=0b11011111;

}

③中断处理子程序与中断向量表Vectors08.c

//[Vectors08.c]中断处理函数与中断向量表------------------------------------* //功能:* //(1)定义中断处理子程序* //(2)放置中断向量表* //本文件包含:* //(1)定时器1通道0输入捕捉中断处理函数* //(2)未定义的中断处理函数* //说明:该文件与芯片具体型号有关* //(1)芯片型号MC68HC908GP32* //-------------------------------------------------------------------------*

//头文件

#include"Type.h"//类型别名定义

#include"EnDisInt.h"//开放或禁止MCU各模块中断的宏定义

#include"T1Ch0.h"//包含定时器模块寄存器相关位宏定义

#include"Light.h"//包含小灯控制寄存器相关位宏定义

//isrT1Ch0In:定时器1通道0输入捕捉处理程序----------------------------------* //功能:取反当前灯的状态并清通道标志位* //-------------------------------------------------------------------------* #pragma interrupt_handler isrT1Ch0In

void isrT1Ch0In(void)

{

INT8U temp,flag;

DisableMCUint();

flag=LStaTst();//获取小灯当前状态("亮"/"暗")

if(flag=='L')

LightDrv('A');

else

LightDrv('L');

//清除输入捕捉标志位

temp=T1SC0;//1.读该寄存器

T1SC0&=~(1<

EnableMCUint();

}

//未定义的中断处理函数,本函数不能删除

#pragma interrupt_handler isrDummy

void isrDummy(void)

{

}

//中断矢量表,需定义中断函数,可修改下表中的相应项目

//(interrupt service routine,isr中断处理程序)

#pragma abs_address:0xffdc//中断向量表起始地址

void(*const_vectab[])(void)={

//…………省略其他未使用的中断向量定义

isrT1Ch0In,//TIM1通道0输入捕捉/输出比较中断

//…………省略其他未使用的中断向量定义

};

#pragma end_abs_address

④主程序文件main.c

//-------------------------------------------------------------------------* //工程名:InCapture.prj* //硬件接线:* //(1)PTA.1接指示灯(见小灯驱动相关文件"Light.c"和"Light.h")* //(2)PTD.4,即定时器1通道0(21脚)接开关(见"T1Ch0.c"文件)* //程序描述:输入捕捉中断方式,使开关拨动时取反指示灯* //目的:学习HC08系列定时器输入捕捉功能* //说明:本例是将定时器1通道0(21脚)设为"跳变沿捕捉"(即电平发生变化时产生* //中断)* //------------------清华2007版《嵌入式技术基础与实践》实例-----------------* //总头文件

#include"Includes.h"

//主函数

void main()

{

DisableMCUint();//禁止总中断

//1.芯片初始化

MCUinit();

//2.模块初始化

Linit();//(1)小灯控制引脚(I/O)初始化

T1Ch0init();//(2)定时器1通道0初始化

//3.开放各模块中断

EnableT1Ch0InInt();//(1)允许定时器1通道0的输入捕捉中断

//4.开放总中断

EnableMCUint();

//主循环

while(1)

{

}

}

(2)输入捕捉中断汇编工程

输入捕捉中断汇编工程文件组织如表12-6所示,具体内容参见例程。

表12-6定时器1通道0输入捕捉汇编工程文件

工程文件名Tim1Ch0.prj

所在路径MC08Ex2007\GP32\GP32S\S12_输入捕捉

文件类型文件名功能简述讲解章节

头文件GP32ASM.h芯片头文件[汇编工程文件组织]4.3 Includes.h总头文件[汇编工程文件组织]4.3 Lignt.h小灯驱动头文件[08C工程文件组织]5.3 T1Ch0.h定时器1通道0输入捕捉头文件[本章]

汇编语言子程序文件MCUinit.s芯片初始化文件

[初始化及PLL编程实例]

14.2.5

Vector08.s中断处理函数与中断向量表参见教学资料工程实例Lignt.s小灯驱动[08C工程文件组织]5.3 T1Ch0.s定时器1通道0输入捕捉驱动文件[本章] EnDisInt.s定时器模块驱动文件[本章]

汇编语言

主程序文件

Main.s主程序文件[本章]

*12.4定时器模块的输出比较功能

输出比较功能也是Freescale M68HC08系列MCU定时器模块的基本功能之一,在学习了定时器的输入捕捉功能之后,可以进一步学习定时器模块输出比较功能的编程方法。本节简要讨论MC908GP32定时器模块输出比较功能的基本编程方法。

12.4.1输出比较的基本含义

(1)与输出比较功能相关的引脚

在MC908GP32的DIP-40封装形式中,第21、22脚标记是“PTD4/T1CH0、PTD5 /T1CH1”,它们是通用I/O与定时器输入捕捉的复用引脚。作为定时器输入捕捉功能使用时,它们是定时器1的两个通道输入捕捉引脚,同时也可定义它们为输出比较引脚,也就是说,输入捕捉与输出比较的引脚是同一引脚,可以定义成不同的功能。

(2)输出比较的含义

输出比较的功能是用程序的方法在规定的时刻输出需要的电平,实现对外部电路的控制。当定时器的某一通道用作输出比较功能时,通道寄存器的值和计数寄存器的值每隔4个总线周期比较一次。当两个值相等时,输出比较模块置定时器通道状态和控制寄

存器的CHxF 位为1,并且在该通道的引脚上输出预先规定的电平。如果输出比较中断允许,还会产生一个中断。

对比使用延时来得到所需输出电平的方法,使用输出比较的优势在于可以得到非常精确的输出时间间隔。硬件的比较功能不受其它中断的影响,而且对用户程序没有额外的负担。

输出比较最简单、最常用的功能就是产生一定间隔的脉冲。典型的应用实例就是实现软件的串行通信。用输入捕捉作为数据输入,而用输出比较作为数据输出。首先根据通信的波特率向通道寄存器写入延时的值,根据待传的数据位确定有效输出电平的高低。在输出比较中断处理程序中,重新更改通道寄存器的值,并根据下一位数据改写有效输出电平控制位。

(3)输出比较过程

如图12-4所示,周期由预置寄存器决定,而脉宽由通道寄存器决定。当计数器的值与通道寄存器的值相等时,就发生了预先设定的变化,图中由高电平翻转到低电平。这种变化由通道控制状态寄存器中的MSXB 、MSXA 、ELSXB 和ELSXA 决定,具体参见前节表12-4的内容。通常我们需要置通道控制和状态寄存器的D1位,这样一个周期结束的时候就会发生自动的电平翻转。

12.4.2输出比较的寄存器

输出比较使用的寄存器与输入捕捉使用的寄存器是一致的,只是此时用来进行输出比较的工作。

(1)T1通道寄存器(T1Channel Register)

通道寄存器在该通道用作输出比较时的作用是:存放要与计数寄存器进行比较的数值。

由于通道寄存器是一个16位的寄存器,分为高字节和低字节,在写入时,通常会

图12-4

输出比较过程

分两次写入(如果使用LDHX和STHX命令,可以一次完成16位的读写)。这时需要注意,在写入通道寄存器的高位字节后,为了防止此时的计数恰好等于计数寄存器的值而产生不希望的输出比较动作,输出比较模块此时是被禁止的。只有在继续写入通道寄存器的低位字节后,输出比较模块才开始和计数寄存器进行比较。所以,完整的设置输出比较功能应该包括对寄存器两个字节的写入。通道寄存器和标志位在复位时被清零,在初始化输出比较功能时应该小心谨慎,一般采用以下的步骤:

①写入通道寄存器的高位字节,禁止输出比较功能;

②取状态寄存器,清除CHxF位;

③写入通道寄存器低位字节,使输出比较功能工作。

(2)T1通道0状态和控制寄存器(T1Channel0Status and Control Register,T1SC0)

T1SC0寄存器在输出比较时,D7~D2位与用作输入捕捉时的含义相同,D1位在用作输入捕捉时没有意义,在用作输出比较时其含义说明如下:

D1—TOV0位:溢出翻转控制标志位(Toggle on Overflow Bit)。在定时器通道用作输出比较功能时,如果置位该位,在通道的定时器发生溢出时,输出比较模块会自动翻转输出电平。在一个完整的脉冲中,必然有两次电平的跳变。这就需要两次进入输出比较处理例程,两次计算下一次输出比较的计数值。如果能够使脉冲的周期恰好等于定时器通道的溢出周期,并且置位溢出翻转控制标志位,那么在每次脉冲周期到的时候输出比较模块将自动翻转输出电平而节省了一次输出比较的处理。这样做还有另一个优点,通常的输出比较处理例程中需要将当前计数器的值加上预期的下一次电平变化的时间间隔作为新的输出控制比较寄存器的值,而这个计算的过程是很费时的。如果使用溢出翻转,脉冲的周期就是定时器的溢出周期,则脉冲的占空时间也是一个确定的值,在输出比较中断中勿需计算就可直接填入这个预先确定的数值。需要注意的是,置位溢出翻转控制标志位后,如果定时器溢出和输出比较同时发生,模块将优先处理定时器溢出事件。如果定时器溢出的处理例程比较耗时,输出比较将不能得到及时的处理。这在编写程序时一定要非常留意。

D0—CH0MAX位:通道最大占空比设置位(Channel X Maximum Duty Cycle Bit)。这位和D1联合使用。当D1=1时,置该位会强制输出占空比100%,该状态会持续到该位被清零。

12.4.3不带缓冲输出比较与带缓冲的输出比较

HC08提供了两种输出比较的功能,它们是带缓冲和不带缓冲的输出比较。下面分别介绍。

(1)不带缓冲的输出比较

不带缓冲的输出比较的功能表现在更改下一次输出比较时需要对输出比较计数器重新写入。使用不带缓冲的输出比较,两次输出比较之间的时间间隔就会因为重新写入

编码器工作原理汇总

编码器的工作原理及作用:它是一种将旋转位移转换成一串数字脉冲信号的旋转式传感器,这些脉冲能用来控制角位移,如果编码器与齿轮条或螺旋丝杠结合在一起,也可用于测量直线位移。 编码器产生电信号后由数控制置CNC、可编程逻辑控制器PLC、控制系统等来处理。这些传感器主要应用在下列方面:机床、材料加工、电动机反馈系统以及测量和控制设备。在ELTRA编码器中角位移的转换采用了光电扫描原理。读数系统是基于径向分度盘的旋转,该分度由交替的透光窗口和不透光窗口构成的。此系统全部用一个红外光源垂直照射,这样光就把盘子上的图像投射到接收器表面上,该接收器覆盖着一层光栅,称为准直仪,它具有和光盘相同的窗口。接收器的工作是感受光盘转动所产生的光变化,然后将光变化转换成相应的电变化。一般地,旋转编码器也能得到一个速度信号,这个信号要反馈给变频器,从而调节变频器的输出数据。故障现象:1、旋转编码器坏(无输出)时,变频器不能正常工作,变得运行速度很慢,而且一会儿变频器保护,显示“PG断开”...联合动作才能起作用。要使电信号上升到较高电平,并产生没有任何干扰的方波脉冲,这就必须用电子电路来处理。编码器pg接线与参数矢量变频器与编码器pg之间的连接方式,必须与编码器pg的型号相对应。一般而言,编码器pg型号分差动输出、集电极开路输出和推挽输出三种,其信号的传递方式必须考虑到变频器pg卡的接口,因此选择合适的pg卡型号或者设置合理. 编码器一般分为增量型与绝对型,它们存着最大的区别:在增量编码器的情况下,位置是从零位标记开始计算的脉冲数量确定的,而绝对型编码器的位置是由输出代码的读数确定的。在一圈里,每个位置的输出代码的读数是唯一的;因此,当电源断开时,绝对型编码器并不与实际的位置分离。如果电源再次接通,那么位置读数仍是当前的,有效的;不像增量编码器那样,必须去寻找零位标记。 现在编码器的厂家生产的系列都很全,一般都是专用的,如电梯专用型编码器、机床专用编码器、伺服电机专用型编码器等,并且编码器都是智能型的,有各种并行接口可以与其它设备通讯。 编码器是把角位移或直线位移转换成电信号的一种装置。前者成为码盘,后者称码尺.按照读出方式编码器可以分为接触式和非接触式两种.接触式采用电刷输出,一电刷接触导电区或绝缘区来表示代码的状态是“1”还是“0”;非接触式的接受敏感元件是光敏元件或磁敏元件,采用光敏元件时以透光区和不透光区来表示代码的状态是“1”还是“0”。 按照工作原理编码器可分为增量式和绝对式两类。增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。绝对式编码器的每一个位置对应一个确定的数字码,因此它的示值只与测量的起始和终止位置有关,而与测量的中间过程无关。 旋转增量式编码器以转动时输出脉冲,通过计数设备来知道其位置,当编码器不动或停电时,依靠计数设备的内部记忆来记住位置。这样,当停电后,编码器不能有任何的移动,当来电工作时,编码器输出脉冲过程中,也不能有干扰而丢失脉冲,不然,计数设备记忆的零点就会偏移,而且这种偏移的量是无从知道的,只有错误的生产结果出现后才能知道。解决的方法是增加参考点,编码器每经过参考点,将参考位置修正进计数设备的记忆位置。在参考点以前,是不能保证位置的准确性的。为此,在工控中就有每次操作先找参考点,开机找零等方法。这样的编码器是由码盘的机械位置决定的,它不受停电、干扰的影响。 绝对编码器由机械位置决定的每个位置的唯一性,它无需记忆,无需找参考点,而且不用一直计数,什么时候需要知道位置,什么时候就去读取它的位置。这样,编码器的抗干扰特性、数据的可靠性大大提高了。 由于绝对编码器在定位方面明显地优于增量式编码器,已经越来越多地应用于工控定位中。绝对型编码器因其高精度,输出位数较多,如仍用并行输出,其每一位输出信号必须确保连接很好,对于较复杂工况还要隔离,连接电缆芯数多,由此带来诸多不便和降低可靠性,

绝对式光电编码器基本构造及特点

绝对式光电编码器基本构造及特点 用增量式光电编码器有可能由于外界的干扰产生计数错误,并且在停电或故障停车后无 法找到事故前执行部件的正确位置。采用绝对式光电编码器可以避免上述缺点。绝对式光电编码器的基本原理及组成部件与增量式光电编码器基本相同,也是由光源、码盘、检测光栅、光电检测器件和转换电路组成。与增量式光电编码器不同的是,绝对式光电编码器用不同的数码来分别指示每个不同的增量位置,它是一种直接输出数字量的传感器。在它的圆形码盘上沿径向有若干同心码道,每条上由透光和不透光的扇形区相间组成,相邻码道的扇区数目是双倍关系,码盘上的码道数就是它的二进制数码的位数,在码盘的一侧是光源,另一侧对应每一码道有一光敏元件;当码盘处于不同位置时,各光敏元件根据受光照与否转换出相应的电平信号,形成二进制数。这种编码器的特点是不要计数器,在转轴的任意位置都可读出一个固定的与位置相对应的数字码。显然,码道越多,分辨率就越高,对于一个具有N 位 二进制分辨率的编码器,其码盘必须有N 条码道。绝对式光电编码器原理如图1-8 所示。 绝对式光电编码器是利用自然二进制、循环二进制(格雷码)、二-十进制等方式进行光 电转换的。绝对式光电编码器与增量式光电编码器不同之处在于圆盘上透光、不透光的线条图形,绝对光电编码器可有若干编码,根据读出码盘上的编码,检测绝对位置。它的特点是:可以直接读出角度坐标的绝对值;没有累积误差;电源切除后位置信息不会丢失;编码器的精度取决于位数;最高运转速度比增量式光电编码器高。 图1-8 绝对式光电编码器原理 1.3.2 码制与码盘 绝对式光电编码器的码盘按照其所用的码制可以分为:二进制码、循环码(格雷码)、 十进制码、六十进制码(度、分、秒进制)码盘等。四位二元码盘(二进制、格雷码)如图1-9 所示。图中黑、白色分别表示透光、不透光区域。

智能传感器的原理组成及应用

智能传感器的原理组成及应用 自动化领域所取得的一项最大进展就是智能传感器的发展与广泛使用。但究竟什么是“智能”传感器?下面,来自6个传感器厂家的专家对这一术语进行了定义。 据H oneywell工业测量与控制部产品经理Tom Gri ffiths的定义:“一个良好的…智能传感器?是由微处理器驱动的传感器与仪表套装,并且具有通信与板载诊断等功能,为监控系统和/或操作员提供相关信息,以提高工作效率及减少维护成本。” 图1:智能传感器,像这种带有A S接口通信的感应式位置传感器,可减少系统中的传感器数量。内部诊断功能使传感器能提供故障的预指示。 图2:根据IEEE1451,传感器被分为两部分:带传感元件、适当的信号调理电路以及A/D转换器的智能传感器接口模块(STIM),和传感器电子数据表(TED S)

——一块标明传感器类型、组成与型号、校准参数及比例系数等内容的存储器芯片。STIM与具有联网能力的应用处理器(N CAP)相连,而NCA P为通信网络提供接口。 无故障通信:“智能传感器的优势,”GE Fanu c自动化公司控制器产品经理Bill Black说,“是能从过程中收集大量的信息以减少宕机时间及提高质量。”M TS 传感器公司Tem posoni cs(磁致伸缩位移传感器)产品经理DavidE deal对此补充说:“分布式智能的基本前提是,在适当位置和时间拥有有关系统、子系统或组件的状态的全部知识,以进行…最优的?过程控制决策。” Cognex公司Che cker机器视觉部产品营销经理J ohnKeating继续补充说,“对于一种真正的…智能?(机器视觉)传感器,它应该不需要使用者懂得机器视觉。” 智能传感器必须具备通信功能。“最起码,除了满足最基本应用的反馈信号,…智能?传感器必须能传输其它信息。”E deal表示。这可以是叠加在标准4-20mA 过程输出、总线系统或无线安排上的HART(可寻址远程传感器高速通道的开放通信协议)信号。该领域正在增长的因素是IEEE1451——一系列旨在为不同厂家生产的传感器提供即插即用能力的智能传感器接口标准。 诊断与程序 智能传感器可对其运行的各个方面进行自监控,包括“摄像头的污浊,超容忍限或不能开关等,”GE Fanu c自动化公司的Bl ack说。Pe pperl+Fu ch s公司智能系统经理Hel geHorni s补充说,“(除此之外),还有线圈监控功能,目标超出范围或太近。”它也可以对工况的变化进行补偿。“…智能?传感器,”Omr on电子有限公司战略创意总监DanArmentr out表示,“必须首先能监视自身及周围的环境,然后再决定是否对变化进行自动补偿或对相关人员发出警告。”

增量式旋转编码器工作原理

增量式旋转编码器工作原理 增量式旋转编码器通过内部两个光敏接受管转化其角度码盘的时序和相位关系,得到其角度码盘角度位移量增加(正方向)或减少(负方向)。在接合数字电路特别是单片机后,增量式旋转编码器在角度测量和角速度测量较绝对式旋转编码器更具有廉价和简易的优势。 下面对增量式旋转编码器的内部工作原理(附图) A,B两点对应两个光敏接受管,A,B两点间距为 S2 ,角度码盘的光栅间距分别为S0和S1。 当角度码盘以某个速度匀速转动时,那么可知输出波形图中的S0:S1:S2比值与实际图的S0:S1:S2比值相同,同理角度码盘以其他的速度匀速转动时,输出波形图中的S0:S1:S2比值与实际图的S0:S1:S2比值仍相同。如果角度码盘做变速运动,把它看成为多个运动周期(在下面定义)的组合,那么每个运动周期中输出波形图中的S0:S1:S2比值与实际图的S0:S1:S2比值仍相同。 通过输出波形图可知每个运动周期的时序为 我们把当前的A,B输出值保存起来,与下一个A,B输出值做比较,就可以轻易的得出角度码盘的运动方向, 如果光栅格S0等于S1时,也就是S0和S1弧度夹角相同,且S2等于S0的1/2,那么可得到此次角度码盘运动位移角度为S0弧度夹角的1/2,除以所消毫的时间,就得到此次角度码盘运动位移角速度。 S0等于S1时,且S2等于S0的1/2时,1/4个运动周期就可以得到运动方向位和位移角度,如果S0不等于S1,S2不等于S0的1/2,那么要1个运动周期才可以得到运动方向位和位移角度了。

我们常用的鼠标也是这个原理哦。 根据检测原理,编码器可分为光学式、磁式、感应式和电容式。根据其刻度方法及信号输出形式,可分为增量式、绝对式以及混合式三种。 1.1增量式编码器 增量式编码器是直接利用光电转换原理输出三组方波脉冲A、B和Z相;A、B两组脉冲相位差90o,从而可方便地判断出旋转方向,而Z相为每转一个脉冲,用于基准点定位。它的优点是原理构造简单,机械平均寿命可在几万小时以上,抗干扰能力强,可靠性高,适合于长距离传输。其缺点是无法输出轴转动的绝对位置信息。 光电编码器分类和选择 光电编码器是利用光栅衍射原理实现位移—数字变换的,从50年代开始应用于机床和计算仪器,因其结构简单、计量精度高、寿命长等优点,在国内外受到重视和推广。近年来更取得长足的发展,在精密定位、速度、长度、加速度、振动等方面得到广泛的应用。 光电编码器按编码方式分为二类:增量式与绝对式。 1、增量式编码器特点: 增量式编码器转轴旋转时,有相应的脉冲输出,其计数起点任意设定,可实现多圈无限累加和测量。编码器轴转一圈会输出固定的脉冲,脉冲数由编码器光栅的线数决定。需要提高分辩率时,可利用 90 度相位差的 A、B 两路信号进行倍频或更换高分辩率编码器。 2、绝对式编码器特点: 绝对式编码器有与位置相对应的代玛输出,通常为二进制码或 BCD 码。从代码数大小的变化可以判别正反方向和位移所处的位置,绝对零位代码还可以用于停电位置记忆。绝对式编码器的测量范围常规为 0—360 度。

增量式编码器

增量编码器概述 工作原理: 增量编码器是一种将旋转位移转换为一连串数字脉冲信号的旋转式传感器。这些脉冲用来控制角位移。在Eltra 编码器中角位移的转换采用了光电扫描原理。读数系统以由交替的透光窗口和不透光窗口构成的径向分度盘(码盘)的旋转为依据,同时被一个红外光源垂直照射,光把码盘的图像投射到接收器表面上。接收器覆盖着一层衍射光栅,它具有和码盘相同的窗口宽度。接收器的工作是感受光盘转动所产生的变化,然后将光变化转换成相应的电变化。再使低电平信号上升到较高电平,并产生没有任何干扰的方形脉冲,这就必须用电子电路来处理。读数系统通常采用差分方式,即将两个波形一样但相位差为180°的不同信号进行比较,以便提高输出信号的质量和稳定性。读数是再两个信号的差别基础上形成的,从而消除了干扰。 增量编码器 增量编码器给出两相方 波,它们的相位差90°,通常 称为A 通道和B 通道。其中一个通道给出与转速相关的信息,与此同时,通过两个通道信号进行顺序对比,得到旋转方向的信息。还有一个特殊信 号称为Z 或零通道,该通道给 出编码器的绝对零位,此信号是一个方波与A 通道方波的中心线重合。 增量型编码器精度取决于机械和电气两种因素,这些因素 有:光栅分度误差、光盘偏心、轴承偏心、电子读数装置引入的 误差以及光学部分的不精确性。确定编码器精度的测量单位是电 气上的度数,编码器精度决定了编码器产生的脉冲分度。以下用 360°电气度数来表示机械轴的转动,而轴的转动必须是一个完 整的周期。要知道多少机械角度相当于电气上的360度,可以用 下列公式来计算: 电气360 =机械360°/n °脉冲/转 图:A 、B 换向时信号 编码器分度误差是以电气角度为单位的两个连续脉冲波的最大偏移来表示。误差存在于任何编码器中,这是由前述各因素引起的。Eltra 编码器的最大误差为±25电气角度(在已声明的任何条件下),相当于额定值偏移±7%,至于相位差90°(电气上)的两个通道的最大偏差为±35电气度数相当于额定值偏移±10%左右。 UVW 信号增量型编码器 除了上述传统的编码器外,还有一些是与其它的电气输出信号集成在一起的增量型编码器。与UVW 信号集成的增量型编码器就是实例,它通常应用于交流伺服电机的反馈。这些磁极信号一般出现在交流伺服电机中,UVW 信号一般是通过模拟磁性原件的功能而设计的。在Eltra 编码器中,这些UVW 信号是用光学方法产生,并以三个方波的形式出现,它们彼此偏移120°。为了便于电机启动,控制电动机用的启动器需要这些正确的信号。这些UVW 磁极脉冲可在机械轴旋转中重复许多次,因为它们直接取决于所连接的电机磁极数,并且用于4、6或更多极电机的UVW 信号。

增量式编码器工作原理

增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。 编码器是把角位移或直线位移转换成电信号的一种装置。 前者成为码盘,后者称码尺。按照读出方式编码器可以分为接触式和非接触式两种。接触式采用电刷输出,以电刷接触导电区或绝缘区来表示代码的状态是“1”还是“0”;非接触式的接受敏感元件是光敏元件或磁敏元件,采用光敏元件时以透光区和不透光区来表示代码的状态是“1”还是“0”。 按照工作原理编码器可分为增量式和绝对式两类。增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小,绝对式编码器的每一个位置对应一个确定的数字码,因此它的示值只与测量的起始和终止位置有关,而与测量的中间过程无关。 旋转增量式编码器以转动时输出脉冲,通过计数设备来知道其位置,当编码器不动或停电时,依靠计数设备的内部记忆来记住位置。这样,当停电后,编码器不能有任何的移动,当来电工作时,编码器输出脉冲过程中,也不能有干扰而丢失脉冲,不然,计数设备记忆的零点就会偏移,而且这种偏移的量是无从知道的,只有错误的生产结果出现后才能知道。 解决的方法是增加参考点,编码器每经过参考点,将参考位置修正进计数设备的记忆位置。在参考点以前,是不能保证位置的准确性的。为此,在工控中就有每次操作先找参考点,开机找零等方法。 比如,打印机扫描仪的定位就是用的增量式编码器原理,每次开机,我们都能听到噼哩啪啦的一阵响,它在找参考零点,然后才工作。 增量式编码器特点: 增量式编码器转轴旋转时,有相应的脉冲输出,其旋转方向的判别和脉冲数量的增减借助后部的判向电路和计数器来实现。其计数起点任意设定,可实现多圈无限累加和测量。还可以把没转发出一个脉冲的Z信号,作为参考机械零位。编码器轴转一圈会输出固定的脉冲,脉冲数由编码器光栅的线数决定。需要提高分辨率时,可利用90 度相位差的A、B两路信号对原脉冲数进行倍频,或者更换高分辨率编码器。 增量式角度数字编码器的工作原理:

增量型编码器与绝对型编码器的区分

增量型编码器与绝对型编码器的区分 编码器如以信号原理来分,有增量型编码器,绝对型编码器。 增量型编码器(旋转型) 工作原理: 由一个中心有轴的光电码盘,其上有环形通、暗的刻线,有光电发射和接收器件读取,获得四组正弦波信号组合成A、B、C、D,每个正弦波相差90度相位差(相对于一个周波为36 0度),将C、D信号反向,叠加在A、B两相上,可增强稳定信号;另每转输出一个Z相脉冲以代表零位参考位。 由于A、B两相相差90度,可通过比较A相在前还是B相在前,以判别编码器的正转与反转,通过零位脉冲,可获得编码器的零位参考位。 编码器码盘的材料有玻璃、金属、塑料,玻璃码盘是在玻璃上沉积很薄的刻线,其热稳定性好,精度高,金属码盘直接以通和不通刻线,不易碎,但由于金属有一定的厚度,精度就有限制,其热稳定性就要比玻璃的差一个数量级,塑料码盘是经济型的,其成本低,但精度、热稳定性、寿命均要差一些。 分辨率—编码器以每旋转360度提供多少的通或暗刻线称为分辨率,也称解析分度、或直接称多少线,一般在每转分度5~10000线。 信号输出: 信号输出有正弦波(电流或电压),方波(TTL、HTL),集电极开路(PNP、NPN),推拉式多种形式,其中TTL为长线差分驱动(对称A,A-;B,B-;Z,Z-),HTL也称推拉式、推挽式输出,编码器的信号接收设备接口应与编码器对应。 信号连接: 编码器的脉冲信号一般连接计数器、PLC、计算机,PLC和计算机连接的模块有低速模块与高速模块之分,开关频率有低有高。 如单相联接,用于单方向计数,单方向测速。 A.B两相联接,用于正反向计数、判断正反向和测速。 A、B、Z三相联接,用于带参考位修正的位置测量。 A、A-, B、B-,Z、Z-连接,由于带有对称负信号的连接,电流对于电缆贡献的电磁场为0,衰减最小,抗干扰最佳,可传输较远的距离。 对于TTL的带有对称负信号输出的编码器,信号传输距离可达150米。 对于HTL的带有对称负信号输出的编码器,信号传输距离可达300米。 增量式编码器的问题: 增量型编码器存在零点累计误差,抗干扰较差,接收设备的停机需断电记忆,开机应找零或参考位等问题,这些问题如选用绝对型编码器可以解决。 增量型编码器的一般应用: 测速,测转动方向,测移动角度、距离(相对)。 增量式旋转编码器原理增量式旋转编码器通过内部两个光敏接受管转化其角度码盘的时 序和相位关系,得到其角度码盘角度位移量增加(正方向)或减少(负方向)。在接合数字电路特别是单片机后,增量式旋转编码器在角度测量和角速度测量较绝对式旋转编码器更具有廉价和简易的优势。下面对增量式旋转编码器的内部工作原理(附图)A,B两点对应两

万能增量式光电编码器控制的伺服电机零位调整技巧

万能增量式光电编码器控制的伺服 电机零位调整技巧 下述述两种调法完全取决于你的手工能力和熟练程度,一般来说,每款伺服电机都有自己专门的编码器自动调零软件.不外传仅是出于商业羸利和技术保密.如果你是一家正规的维修店,请不要采用以下方法,应通过正常渠道购买相应的专业设备.实践证明,手工调整如果技巧掌握得当, 工作仔细负责,也可达到同样的效果. 大批量更换新编码器调零方法 第一步:折下损坏的编码器 第二步:把新的编码器按标准固定于损坏的电机上第三步:按图纸找出Z信号和两根电源引出线,一般电源均为5V. 第四步:准备好一个有24V与5V两组输出电源的开关电源和一个略经改装的断线报警器,把0V线与Z 信号线接到断线报警器的两个光耦隔离输入端上。 第五步:在电机转动轮上固定一根二十厘米长的横杆,这样转动电机时转角精度很容易控制. 第六步:所有连线接好后用手一点点转动电机轮子

直到报警器发出报警时即为编码器零位,前后反复感觉一下便可获得最佳的位置,经实测用这种方法校正的零位误差极小,很适于批量调整,经实际使用完全合格.报警器也可用示波器代替,转动时当示波器上的电压波形电位由4V左右跳变0V时或由0V跳变为4V 左右即是编码器的零位.这个也很方便而且更精确.杆子的长度越长精度则越高,实际使用还是用报警器更方便又省钱.只要用耳朵感知就行了.在编码器的转子与定圈相邻处作好零位标记,然后拆下编码器。 第七步:找一个好的电机,用上述方法测定零位后在电机转轴与处壳相邻处作好电机的机械零位标记第八步:引出电机的U V W动力线,接入一个用可控制的测试端子上,按顺序分别对其中两相通入24V 直流电,通电时间设为2秒左右,观察各个电机最终停止位置(即各相的机械零位位置)其中一个始必与刚才所作的机械零位标记是同一个位置.这就是厂方软件固定的电机机械零位,当然能通过厂方专用编码器测试软件直接更改编码器的初始零位数据就更方便了.如果你只有一台坏掉的伺服电机,你就要根据以上获得的几个相对机械零位逐个测试是不是我们所要的那个位置,这一步由伺服放大器的试运行模式来进行测试.有关资料是必须的,否则不要轻易动手,以

智能传感器

汽车智能传感器 智能传感器 智能传感器(intelligent sensor)是具有信息处理功能的传感器。智能传感器带有微处理机,具有采集、处理、交换信息的能力,是传感器集成化与微处理机相结合的产物。一般智能机器人的感觉系统由多个传感器集合而成,采集的信息需要计算机进行处理,而使用智能传感器就可将信息分散处理,从而降低成本。与一般传感器相比,智能传感器具有以下三个优点:通过软件技术可实现高精度的信息采集,而且成本低;具有一定的编程自动化能力;功能多样化。 汽车智能传感器 现代汽车正朝着智能化、自动化和信息化的机电一体化产品方向发展,以达到“人-汽车-环境”的完美协调。汽车传感器作为汽车电子控制系统的信息源,是汽车电子控制系统的关键部件,也是汽车电子技术领域研究的核心内容之一。目前,一般汽车装配有几十到近百个传感器,而高级豪华汽车更是有大约几百个传感器。 汽车传感器在汽车上主要用于发动机控制系统、底盘控制系统、车身控制系统和导航系统。它的应用大大提高了汽车电子化的程度,增加了汽车驾驶的安全系数。 发动机控制系统用传感器是整个汽车传感器的核心,种类很多,包括温度传感器、压力传感器、位置和转速传感器、流量传感器、气体浓度传感器和爆震传感器等。这些传感器向发动机的电子控制单元(ECU)提供发动机的工作状况信息,供ECU对发动机工作状况进行精确控制,以提高发动机的动力性、降低油耗、减少废气排放和进行故障检测。 底盘控制用传感器是指用于变速器控制系统、悬架控制系统、动力转向系统、制动防抱死系统等底盘控制系统中的传感器。这些传感器尽管分布在不同的系统中,但工作原理与发动机中相应的传感器是相同的。而且,随着汽车电子控制系统集成化程度的提高和CAN

增量式编码器的工作原理与使用方法

增量式编码器的工作原理与使用方法 1.工作原理 旋转编码器是一种采用光电等方法将轴的机械转角转换为数字信号输出的精密传感器,分为增量式旋转编码器和绝对式旋转编码器。 光电增量式编码器的工作原理如下:随转轴一起转动的脉冲码盘上有均匀刻制的光栅,在码盘上均匀地分布着若干个透光区段和遮光区段。 增量式编码器没有固定的起始零点,输出的是与转角的增量成正比的脉冲,需要用计数器来计脉冲数。每转过一个透光区时,就发出一个脉冲信号,计数器当前值加1,计数结果对应于转角的增量。 增量式编码器的制造工艺简单,价格便宜,有时也用来测量绝对转角。 2.增量式编码器的分类 1)单通道增量式编码器内部只有一对光电耦合器,只能产生一个脉冲序列。 2)AB相编码器内部有两对光电耦合器,输出相位差为90°的两组脉冲序列。正转和反转时两路脉冲的超前、滞后关系刚好相反。由下图可知,在B相脉冲的上升沿,正转和反转时A 相脉冲的电平高低刚好相反,因此使用AB相编码器,PLC可以很容易地识别出转轴旋转的方向。 需要增加测量的精度时,可以采用4倍频方式,即分别在A、B相波形的上升沿和下降沿计数,分辨率可以提高4倍,但是被测信号的最高频率相应降低。 3)三通道增量式编码器内部除了有双通道增量式编码器的两对光电耦合器外,在脉冲码盘的另外一个通道有1个透光段,每转1圈,输出1个脉冲,该脉冲称为Z相零位脉冲,用 做系统清零信号,或坐标的原点,以减少测量的积累误差。 2.编码器的选型 首先根据测量要求选择编码器的类型,增量式编码器每转发出的脉冲数等于它的光栅的线数。在设计时应根据转速测量或定位的度要求,和编码器的转速,来确定编码器的线数。编码器安装在电动机轴上,或安装在减速后的某个转轴上,编码器的转速有很大的区别。还应考虑它发出的脉冲的最高频率是否在PLC的高速计数器允许的范围内。 3.编码器与PLC高速计数器的配合问题 以S7-200为例,使用单通道增量式编码器时,可选高速计数器的单相加/减计数器模式(模式0~5),可细分为有/无外部方向输入信号、有/无复位输入和有/无启动输入信号。 使用AB相编码器时,高速计数器应选A/B相正交计数器模式(模式9~11),可以实现在正转时加计数,反转时减计数。 4.怎样判断AB相编码器是正转还是反转? S7-200的高速计数器用SM区中的当前计数方向状态位来指示编码器的旋转方向。如果编 码器输出脉冲的周期大于PLC的扫描循环时间的两倍,通过在B相脉冲的上升沿判断A相 脉冲信号的0、1状态,可以判断编码器旋转的方向。

智能传感器概述

智能传感器概述 ——以智能温度传感器为例 摘要:智能传感器(Intelligent Sensor)是具有信息处理功能的传感器。智能传感器带有微处理机,具有采集、处理、交换信息的能力,是传感器集成化与微处理机相结合的产物。与一般传感器相比,智能传感器具有以下三个优点:通过软件技术可实现高精度的信息采集,而且成本低;具有一定的编程自动化能力;功能多样化。本文以智能温度传感器为例,来说明智能传感器的发展历程、用途与发展前景。温度传感器的发展大致经历了以下三个阶段:(1)传统的分立式温度传感器;(2)模拟集成温度传感器/控制器;(3)智能温度传感器。目前,国际上新型温度传感器正从模拟式向数字式、由集成化向智能化、网络化的方向发展。 关键字: 智能温度传感器集成网络 正文: 现代信息技术的三大基础是传感器技术、通信技术和计算机技术。传感器属于信息技术的前沿尖端产品,尤其是温度传感器被广泛用于工农业生产、科学研究和生活等领域。温度传感器的发展大致经历了以下三个阶段;(1)传统的分立式温度传感器;(2)模拟集成温度传感器/控制器;(3)智能温度传感器。目前,国际上新型温度传感器正从模拟式向数字式、由集成化向智能化、网络化的方向发展。 1.集成温度传感器的产品分类 1.1模拟集成温度传感器 集成传感器是采用硅半导体集成工艺而制成的,因此亦称硅传感器或单片集成温度传感器。模拟集成温度传感器是在20世纪80年代问世的,它是将温度传感器集成在一个芯片上、可完成温度测量及模拟信号输出功能的专用IC。模拟集成温度传感器的主要特点是功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。它是目前在国内外应用最为普遍的一种集成传感器,典型产品有AD590、AD592、TMP17、LM135等。 1.2模拟集成温度控制器 模拟集成温度控制器主要包括温控开关、可编程温度控制器,典型产品有LM56、AD22105和MAX6509。某些增强型集成温度控制器(例如TC652/653)中还包含了A/D转换器以及固化好的程序,这与智能温度传感器有某些相似之处。但它自成系统,工作时并不受微处理器的控制,这是二者的主要区别。 1.3智能温度传感器 智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的。它是微电子技术、计算机技术和自动测试技术(ATE)的结晶。目前,国际上已开发出多种智能温度传感器系列产品。智能温度传感器内部都包含温度传感器、A/D

编码器工作原理,光电编码器的工作原理分析

编码器工作原理,光电编码器的工作原理分析 编码器工作原理 绝对脉冲编码器:APC 增量脉冲编码器:SPC 两者一般都应用于速度控制或位置控制系统的检测元件. 旋转编码器是用来测量转速的装置。它分为单路输出和双路输出两种。技术参数主要有每转脉冲数(几十个到几千个都有),和供电电压等。单路输出是指旋转编码器的输出是一组脉冲,而双路输出的旋转编码器输出两组相位差90度的脉冲,通过这两组脉冲不仅可以测量转速,还可以判断旋转的方向。 增量型编码器与绝对型编码器的区分 编码器如以信号原理来分,有增量型编码器,绝对型编码器。 增量型编码器(旋转型) 工作原理: 由一个中心有轴的光电码盘,其上有环形通、暗的刻线,有光电发射和接收器件读取,获得四组正弦波信号组合成A、B、C、D,每个正弦波相差90度相位差(相对于一个周波为360度),将C、D信号反向,叠加在A、B两相上,可增强稳定信号;另每转输出一个Z相脉冲以代表零位参考位。 由于A、B两相相差90度,可通过比较A相在前还是B相在前,以判别编码器的正转与反转,通过 零位脉冲,可获得编码器的零位参考位。 编码器码盘的材料有玻璃、金属、塑料,玻璃码盘是在玻璃上沉积很薄的刻线,其热稳定性好,精度高,金属码盘直接以通和不通刻线,不易碎,但由于金属有一定的厚度,精度就有限制,其热稳定性就要比玻璃的差一个数量级,塑料码盘是经济型的,其成本低,但精度、热稳定性、寿命均要差一些。 分辨率—编码器以每旋转360度提供多少的通或暗刻线称为分辨率,也称解析分度、或直接称多少线, 一般在每转分度5~10000线。 信号输出: 信号输出有正弦波(电流或电压),方波(TTL、HTL),集电极开路(PNP、NPN),推拉式多种形式,其中TTL为长线差分驱动(对称A,A-;B,B-;Z,Z-),HTL也称推拉式、推挽式输出,编码器的信号接收设 备接口应与编码器对应。 信号连接—编码器的脉冲信号一般连接计数器、PLC、计算机,PLC和计算机连接的模块有低速模块 与高速模块之分,开关频率有低有高。

增量式光电编码器原理及其结构

增量式光电编码器原理及其结构 增量式光电编码器的特点是每产生一个输出脉冲信号就对应于一个增量位移,但是不能通过输出脉冲区别出在哪个位置上的增量。它能够产生与位移增量等值的脉冲信号,其作用是提供一种对连续位移量离散化或增量化以及位移变化(速度)的传感方法,它是相对于某个基准点的相对位置增量,不能够直接检测出轴的绝对位置信息。一般来说,增量式光电编码器输出A、B 两相互差90°电度角的脉冲信号(即所谓的两组正交输出信号),从而可方便地判断出旋转方向。同时还有用作参考零位的Z 相标志(指示)脉冲信号,码盘每旋转一周,只发出一个标志信号。标志脉冲通常用来指示机械位置或对积累量清零。增量式光电编码器主要由光源、码盘、检测光栅、光电检测器件和转换电路组成,如图1-1 所示。码盘上刻有节距相等的辐射状透光缝隙,相邻两个透光缝隙之间代表一个增量周期;检测光栅上刻有A、B 两组与码盘相对应的透光缝隙,用以通过或阻挡光源和光电检测器件之间的光线。它们的节距和码盘上的节距相等,并且两组透光缝隙错开1/4 节距,使得光电检测器件输出的信号在相位上相差90°电度角。当码盘随着被测转轴转动时,检测光栅不动,光线透过码盘和检测光栅上的透过缝隙照射到光电检测器件上,光电检测器件就输出两组相位相差90°电度角的近似于正弦波的电信号,电信号经过转换电路的信号处理,可以得到被测轴的转角或速度信息。增量式光电编码器输出信号波形如图1-2 所示。增量式光电编码器的优点是:原理构造简单、易于实现;机械平均寿命长,可达到几万小时以上;分辨率高;抗干扰能力较强,信号传输距离较长,可靠性较高。其缺点是它无法直接读出转动轴的绝对位置信息。 图 1-2 增量式光电编码器的输出信号波形 1.2.2 基本技术规格 在增量式光电编码器的使用过程中,对于其技术规格通常会提出不同的要求,其中最关 键的就是它的分辨率、精度、输出信号的稳定性、响应频率、信号输出形式。 (1)分辨率 光电编码器的分辨率是以编码器轴转动一周所产生的输出脉冲数来表示的,即脉冲数/转(PPR)。码盘上的透光缝隙的数目就等于编码器的分辨率,码盘上刻的缝隙越多, 编码器的分辨率就越高。在工业电气传动中,根据不同的应用对象,可选择分辨率通常在

增量式旋转编码器

增量式旋转编码器通过内部两个光敏接受管转化其角度码盘的时序和相位关系,得到其角度码盘角度位移量增加(正方向)或减少(负方向)。在接合数字电路特别是单片机后,增量式旋转编码器在角度测量和角速度测量较绝对式旋转编码器更具有廉价和简易的优势。 下面对增量式旋转编码器的内部工作原理(附图) A,B 两点对应两个光敏接受管,A,B 两点间距为 S2 ,角度码盘的光栅间距分别为S0和S1。当角度码盘以某个速度匀速转动时,那么可知输出波形图中的S0:S1:S2比值与实际图的S0:S1:S2比值相同,同理角度码盘以其他的速度匀速转动时,输出波形图中的S0:S1:S2比值与实际图的S0:S1:S2比值仍相同。如果角度码盘做变速运动,把它看成为多个运动周期(在下面定义)的组合,那么每个运动周期中输出波形图中的S0:S1:S2比值与实际图的S0:S1:S2比值仍相同。 通过输出波形图可知每个运动周期的时序为 顺时针运动: A B 逆时针运动: A B 1 1 1 1 0 1 1 0 0 0 0 0 1 0 0 1

我们把当前的A,B输出值保存起来,与下一个A,B输出值做比较,就可以轻易的得出角度码盘的运动方向(如果A,B输出11后输出01,则为顺时针;如果输出11后马上输出10,则为逆时针),如果光栅格S0等于S1时,也就是S0和S1弧度夹角相同,且S2等于S0的1/2,那么可得到此次角度码盘运动位移角度为S0弧度夹角的1/2,除以所消毫的时间,就得到此次角度码盘运动位移角速度。 S0等于S1时,且S2等于S0的1/2时,1/4个运动周期就可以得到运动方向位和位移角度,如果S0不等于S1,S2不等于S0的1/2,那么要1个运动周期才可以得到运动方向位和位移角度了。 我们常用的鼠标也是这个原理。 (以上自https://www.doczj.com/doc/1818670498.html,/pjblog/article.asp?id=11) 增量式的编码器断电后参考点消失,绝对值型的断电能够保持。所以用绝对值型的编码器做的伺服装置失电后可以不用寻找参考点,而增量式的编码器每次设备上电后都必须寻找参考点。 绝对值的有零点和满点的设置,和楼上说的一样,表示的对应设置的位置,即使掉电,也能保持,多用于象闸门的开/关。增量值则没有零点(也就是范围的设置),可以一直接收脉冲信号,那么回原点就要有参考点了,可以用程序或相关的其它硬件帮助寻找。 ////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////// 根据检测原理,编码器可分为光学式、磁式、感应式和电容式。根据其刻度方法及信号输出形式,可分为增量式、绝对式以及混合式三种。 1.1增量式编码器 增量式编码器是直接利用光电转换原理输出三组方波脉冲A、B和Z相;A、B两组脉冲相位差90o,从而可方便地判断出旋转方

光电编码器的特性及应用

光电编码器的特性及应用 2009-04-09 15:31 1.光电编码器的工作原理 光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。这是目前应用最多的传感 器, 光电编码器是由光栅盘和光电检测装置组成。光栅盘是在一定直径的圆板上等分地开通若干个长方形孔。由于光电码盘与电动机同轴,电动机旋转时,光栅盘与电动 机同速旋转,经发光二极管等电子元件组成的检测装置检测输出若干脉冲信号,其原理示意图如图1所示;通过计算每秒光电编码器输出脉冲的个数就能反映当前电 动机的转速。此外,为判断旋转方向,码盘还可提供相位相差90o的两路脉冲信号。 根据检测原理,编码器可分为光学式、磁式、感应式和电容式。根据其刻度方法及信号输出形式,可分为增量式、绝对式以及混合式三种。 1.1增量式编码器 增 量式编码器是直接利用光电转换原理输出三组方波脉冲A、B和Z相; A、B两组脉冲相位差90o,从而可方便地判断出旋转方向,而Z相为每转一个脉冲,用于 基准点定位。它的优点是原理构造简单,机械平均寿命可在几万小时以上,抗干扰能力强,可靠性高,适合于长距离传输。其缺点是无法输出轴转动的绝对位置信 息。 1.2绝对式编码器 绝对编码器是直接输出数字量的传感器,在它的圆形码盘上沿径向有若干同心码道,每条道上由透 光和不透光的扇形区相间组成,相邻码道的扇区数目是双倍关系,码盘上的码道数就是它的二进制数码的位数,在码盘的一侧是光源,另一侧对应每一码道有一光敏 元件;当码盘处于不同位置时,各光敏元件根据受光照与否转换出相应的电平信号,形

成二进制数。这种编码器的特点是不要计数器,在转轴的任意位置都可读出一个固定的与位置相对应的数字码。显然,码道越多,分辨率就越高,对于一个具有 N位二进制分辨率的编码器,其码盘必须有N条码道。目前国内已有16位的绝对编码器产品。 绝对式编码器是利用自然二进制或循环二进制(葛 莱码)方式进行光电转换的。绝对式编码器与增量式编码器不同之处在于圆盘上透光、不透光的线条图形,绝对编码器可有若干编码,根据读出码盘上的编码,检测 绝对位置。编码的设计可采用二进制码、循环码、二进制补码等。它的特点是: 1.2.1可以直接读出角度坐标的绝对值; 1.2.2没有累积误差; 1.2.3电源切除后位置信息不会丢失。但是分辨率是由二进制的位数来决定的,也就是说精度取决于位数,目前有10位、14位等多种。 1.3混合式绝对值编码器 混合式绝对值编码器,它输出两组信息:一组信息用于检测磁极位置,带有绝对信息功能;另一组则完全同增量式编码器的输出信息。 光电编码器是一种角度(角速度)检测装置,它将输入给轴的角度量,利用光电转换原理 转换成相应的电脉冲或数字量,具有体积小,精度高,工作可靠,接口数字化等优点。它广泛应用于数控机床、回转台、伺服传动、机器人、雷达、军事目标测定等需要检测角度的装置和设备中。 2. 光电编码器的应用电路 2.1 EPC-755A光电编码器的应用 EPC-755A 光电编码器具备良好的使用性能,在角度测量、位移测量时抗干扰能力很强,并具有稳定可靠的输出脉冲信号,且该脉冲信号经计数后可得到被测量的数字信号。因 此,我们在研制汽车驾驶模拟器时,对方向盘旋转角度的测量选用EPC-755A光电编码器作为传感器,其输出电路选用集电极开路型,输出分辨率选用360 个脉冲/圈,考虑到汽车方向盘转动是双向的,既可顺时针旋转,也可逆时针旋转,需要对编码器的输出信号鉴相后才能计数。图2给出了光电编码器实际使用的鉴 相与双向计数电路,鉴相电路用1个D触发器和2个与非门组成,计数电路用3片74LS193组成。

基于单片机_温度传感器的温度智能控制系统的设计概要

- - /2011.09/ 基于单片机、温度传感器的温度智能 控制系统的设计 西安工程大学电信学院刘晓春 【摘要】在温度检测系统中,感应温度部分的元件是一般是金属热电阻、热电偶或者PN结,但这些测温元件所要配的测量电路较为复杂。感应出来的信号是模拟量,需要经采样保持电路后再进行A/D转换。才能送入单片机进行处理,但是由于这样的电路硬件复杂、精度不高、易受外界干扰。本文采用DS18B20温度传感器,它是一种可编程的温度传感器,内部集成了A/D转换电路,可与单片机直接连接,使单片机外围电路简单,比传统的温度测量精度高,应用场合广。 【关键词】单片机(89C51;自动控制;温度传感器(DS18B20;信号 引言 水温测量模块用于测量器皿中水的温度。系统需要利用测温传感器检测出水的实时温度,是控制模块做出正确的反应, 控制水的温度,对于测温传感器本文选择DS18B20单总线可编程温度传感器,来实现对温度的采集和转换,大大简化了电路的复杂度。控制器部分本文采用51系列的 89C51作为系统的控制器。单片机算术运算功能强,软件编程灵活,自由度大, 可用软件编程实现各种算法,并且具有功耗低,体积小,技术成熟,成本低廉等有点,使其在各个领域应用广泛。 1.系统的总体结构

系统总体结构分为:DS18B20模块, 显示模块,继电器模块,键盘输入模块, DS18B20可以被编程,所以箭头是双向的,89C51首先写入命令给DS18B20,然后 DS18B20开始转换数据,转换后通过89C51来处理数据。数据处理后的结果就显示到 数码管上,模块如图1所示。 本系统的执行方法是循环查询执行的,键盘扫描也是用循环查询的办法,由于本系统对实时性要求不是很高,所以没有用到中断方式来处理,系统模块如图2所示。 2.温度处理模块 2.1 温度传感器DS18B20 DS18B20与单片机的连接电路简单, 如图5,与单片机的数据通信采用串行通信已完成其对温度信息的采集与转换。 DSl8B20的外观及引脚如图4,有3个引脚。VDD接电源,电压范围为 3.0v~5.5V, 它的供电方式有2种,一个是通过数据线供电,一个是加外电源。GND为接地线。 DQ为数据线,通过小电阻与单片机连接, 进行数据通讯。数据可输入亦可输出。 2.2 温度转换算法及分析 因为DS18B20的温度存储单元中的代码不是实际的摄氏温度值,所以读出的数据要进行转换处理,因为精度是0.0625, 所以我们只需要将其转换成十进制再乘 0.0625便可得到温度值。由于它可以测负温度,所以再进行换算时首先要判断是正温度还是负温度,存储单元的高五位的值决定了温度的正负,若全为1则是负温度反之则为正温度。低4位存放的是温度的小数部分,本设计采用精度为0.1℃,所以处理时将低四位乘0.0625后进行小数舍入保

PLC与增量型旋转编码器的连接

PLC与增量型旋转编码器的连接 首先,确定PLC是源型输入还是漏型输入,然后选择其所支持型号的编码器。 源型是电流流出,漏型是电流流入。因各品牌厂家PLC设计使用的不同,对于源型和漏型的定义也相对不同(例如三菱的定义和西门子的定义正好相反),三菱的源型输入与漏型输入,都是相对于PLC 公共端(COM端或M端)而言,电流流出则为源型,电流流入则为漏型。西门子的源型输入与漏型输入,都是相对于PLC输入端子而言,电流流出则为源型,电流流入则为漏型。 PNP与NPN传感器: NPN集电极开路输出电路的输出OUT端通过开关管和0V连接,当传感器动作时,开关管饱和导通,OUT端和0V相通,输出0V低电平信号;PNP集电极开路输出电路的输出OUT端通过开关管和+V连接,当传感器动作时,开关管饱和导通,OUT端和+V相通,输出+V 高电平信号。 源型:三菱:公共端接电源负,输入端接电源正,支持PNP传感器;

西门子:公共端接正,输入端接负,支持NPN传感器; 漏型:三菱:公共端接正,输入端接负,支持NPN传感器;(常用) 西门子:公共端接负,输入端接正,支持PNP传感器。(常用) 判断源型还是漏型输入,只需将plc输入点和公共点短接,如果输入指示灯亮,则为源型输入plc,plc公共点需要接0v,支持PNP传感器。 三菱源型PLC与PNP编码器的接线图 三菱漏型PLC与NPN编码器的接线图(常用)

编码器计算公式(https://www.doczj.com/doc/1818670498.html,) 编码器计算公式 1. 传动(减速)电机线速度计算公式: (1) 线速度计算公式 (1秒脉冲÷编码器分辨率=圈数/秒) (1秒脉冲÷编码器分辨率×传动轮周长×60秒)÷1000毫米=传动线速度(米/分钟) (2) 脉冲当量计算公式 编码器分辨率÷传动轮盘周长=传动轮脉冲当量 2. 运用丝杆计算开合宽度 (1)编码器分辨率÷丝杆螺距=丝杆移动距离脉冲当量

相关主题
文本预览
相关文档 最新文档