肯定式光电编码器根本结构及特色
用增量式光电编码器有或许因为外界的搅扰发生计数过错,并且在停电或毛病泊车后无
法找到事端前履行部件的正确方位。选用肯定式光电编码器能够防止上述缺陷。肯定式光电
编码器的根本原理及组成部件与增量式光电编码器根本相同,也是由光源、码盘、检测光栅、
光电检测器材和转化电路组成。与增量式光电编码器不同的是,肯定式光电编码器用不同的
数码来别离指示每个不同的增量方位,它是一种直接输出数字量的传感器。在它的圆形码盘
上沿径向有若干同心码道,每条上由透光和不透光的扇形区相间组成,相邻码道的扇区数目
是双倍联系,码盘上的码道数便是它的二进制数码的位数,在码盘的一侧是光源,另一侧对
应每一码道有一光敏元件;当码盘处于不同方位时,各光敏元件依据受光照与否转化出相应
的电平信号,构成二进制数。这种编码器的特色是不要计数器,在转轴的恣意方位都可读出
一个固定的与方位相对应的数字码。明显,码道越多,分辨率就越高,关于一个具有 N 位
二进制分辨率的编码器,其码盘有必要有N 条码道。肯定式光电编码器原理如图1-8 所示。
肯定式光电编码器是使用天然二进制、循环二进制(格雷码)、二-十进制等办法进行光
电转化的。肯定式光电编码器与增量式光电编码器不同之处在于圆盘上透光、不透光的线条
图形,肯定光电编码器可有若干编码,依据读出码盘上的编码,检测肯定方位。它的特色是:
能够直接读出视点坐标的肯定值;没有累积差错;电源切除后方位信息不会丢掉;编码器的
精度取决于位数;最高作业速度比增量式光电编码器高。
图1-8 肯定式光电编码器原理
1.3.2 码制与码盘
肯定式光电编码器的码盘依照其所用的码制能够分为:二进制码、循环码(格雷码)、
十进制码、六十进制码(度、分、秒进制)码盘等。四位二元码盘(二进制、格雷码)如图
1-9 所示。图中黑、白色别离表明透光、不透光区域。
图 1-9 四位二元码盘
图 1-9(a)是一个四位二进制码盘,它的最里圈码道为榜首码道,半圈透光半圈不透光,
对应于最高位C1,最外圈为第n 码道,共分红2n 个亮暗距离,对应于最低位Cn,n 位二元
码盘最小分辨率为:
二进制马盘的缺陷是:每个码道的是非分界线总有一半与相邻内圈码道的是非分界线是
对齐的,这样就会因是非分界线描写不精确形成粗差错。选用其他的有权编码时也存在相似
的问题。图1-10 是一个四位二进制码盘打开图,图中aa 为最高位码道是非分界线的抱负位
置,它与其他三位码道的是非分界线正好对齐,当码盘滚动,光束扫过这一区域时,输出数
码从0111 变为1000 不会呈现过错。假如C1 道是非分界线刻偏到a’a’,当码盘滚动时,输
出数码就会从0111 变为1111 再变到1000,半途呈现了过错数码1111。反之C1 道是非分界
线刻偏到a’’a’’,当码盘滚动时,输出数码就会从0111 变为0000 再变到1000,半途呈现了
过错数码0000。为了消除这种粗差错,能够选用循环码盘(格雷码盘)。
图 1-9(b)是一个四位循环码盘,它与二进制码盘相同的是,码道数也等于数码位数,
因而最小分辨率也是式(1-2)求得,最内圈也是半圈透光半圈不透光,对应R1 位,最外圈
是第n 码道关于Rn 位。与二进制码盘不同的是:第二码道也是一半透光一半不透光,第i
码道分为2i-1个是非距离,第i 码道的是非分界线与第i-1 码道的是非分界线错开360° / 2i。
循环码盘转到相邻区域时,编码中只需一位发生变化。只需恰当约束各码道的制造差错和安
装差错,就不会发生粗差错。因为这一原理,使得循环码盘取得广泛的使用。
1.3.3 二进制码与循环码的转化
肯定式光电编码器是使用天然二进制或循环二进制(格雷码)办法进行光电转化的,编
码的规划一般是选用天然二进制码、循环二进制码、二进制补码等。特色是不要计数器,在
转轴的恣意方位都可读出一个固定的与方位相对应的数字码;抗搅扰能力强,没用累积差错;
电源切断后方位信息不会丢掉,但分辨率是由二进制的位数决议的,依据不同的精度要求,
能够挑选不同的分辨率即位数。现在有10 位、11 位、12 位、13 位、14 位或更高位等多种。
其间选用循环二进制编码的肯定式编码器,其输出信号是一种数字排序,不是权重码,
每一位没有确认的巨细,不能直接进行比较巨细和算术运算,也不能直接转化成其他信号,
要通过一次码改换,变成天然二进制码,再由上位机读取以完成相应的操控。而在码制改换
中有不同的处理办法,本文侧重介绍二进制格雷码与天然二进制码的交换。
(1)格雷码(又名循环二进制码或反射二进制码)介绍
在数字体系中只能辨认 0 和1,各种数据要转化为二进制代码才干进行处理,格雷码是
一种无权码,选用肯定编码办法,典型格雷码是一种具有反射特性和循环特性的单步自补码,
它的循环、单步特性消除了随机取数时呈现严重差错的或许,它的反射、自补特性使得求反
十分便利。格雷码归于可靠性编码,是一种过错最小化的编码办法,因为,天然二进制码可
以直接由数/模转化器转化成模拟信号,但某些状况,例如从十进制的3 转化成4 时二进制
码的每一位都要变,使数字电路发生很大的尖峰电流脉冲。而格雷码则没有这一缺陷,它是
一种数字排序体系,其间的一切相邻整数在它们的数字表明中只需一个数字不同。它在恣意
两个相邻的数之间转化时,只需一个数位发生变化。它大大地减少了由一个状况到下一个状
态时逻辑的混杂。别的因为最大数与最小数之间也仅一个数不同,故一般又名葛莱反射码或
循环码。表1-1 为几种天然二进制码与格雷码的对照表:
表 1-1 几种天然二进制码与格雷码的对照表
从表 1-1 种能够得出,十进制数N 与n 位二进制码满意以下联系:
可见,二进制码因为是有权码,满意(1-4)的联系,而格雷码是无权码,不满意(1-4)
的联系。它与所对应的视点不存在相似(1-3)的联系,因而有必要找出循环码和二进制码之
间的对应联系和彼此转化规则。
(2)二进制码转化成制格雷码
二进制码转化成制格雷码,其规律是保存二进制码的最高位作为格雷码的最高位,而次
高位格雷码为二进制码的高位与次高位相异或,而格雷码其他各位与次高位的求法相相似。
图1-11 所示为二进制码转化成格雷码。
图 1-11 天然二进制码转化成二进制格雷码
图 1-12 为将二进制码转化为格雷码的电路图,其间图(a)为并行转化电路,图(b)
为串行转化电路。当选用串行电路时,作业之前先将D 触发器D1 置0,Q=0,在Ci 端送入
C1,异或门D2 输出R1=C1○+ 0=C1,随后加CP 脉冲,使Q=C1;在Ci 端参加C2,D 输出R2=C2○+
C1,今后重复上述进程,能够顺次取得R1,R2,……,Rn。
(3)格雷码转化为二进制码
格雷码转化成二进制码,则是保存格雷码的最高位作为二进制码的最高位,而次高位二
进制码为高位二进制码与次高位格雷码相异或,而二进制码的其他各位与次高位二进制码的
求法相相似。图1-13 为将格雷码转化为二进制码的电路,其间图(a)为并行转化电路,图
(b)为串行转化电路。当选用串行电路时,作业之前先将JK 触发器D 置0,Q=0,将R1
一起加到J、K 端,再参加CP 脉冲后,Q=C1= R1。今后若Q 端为Ci-1 在J、K 端参加Ri。
依据JK触发器的特性,若J、K为“1”则参加CP脉冲后, i 1 Q C − = ;若J、K 为“0”则
参加CP 脉冲后坚持Q=Ci-1。这一逻辑联系能够写成:
图 1-13 格雷码转化为二进制码的电路
格雷码是无权码,选用格雷码盘取得的格雷码R1,R2,……,Rn 有必要按图1-11 转化为
对应的二进制码C1,C2,……,Cn 后,才干代入(1-3)式确认与之对应的视点。
(4)格雷码与二进制码交换的软件完成办法
(a)二进制码转化成格雷码的软件完成法
依据天然二进制转化成格雷码的规律,能够得到以下的代码:
staTIc unsigned int DecimaltoGray(unsigned int x)
{
return x^(x>>1);
}
//以上代码完成了unsigned int 型数据到格雷码的转化,最高可转化32 位天然二进
制码,超出32 位将溢出。
staTIc int DecimaltoGray( int x)
{
return x^(x>>1);
}
//以上代码完成了 int 型数据到格雷码的转化,最高可转化31 位天然二进制码,超
出 31 位将溢出。
上述代码即可用于 VC 操控程序中,也能够用于单片机操控程序中。在单片机程序规划
时,若选用汇编言语编程,能够按相同的原理规划程序;若选用C 言语编程,则能够直接
使用上述代码,但主张用unsigned int 函数。
(b)软件完成法(拜见示例工程中的 Gray to Binary )
依据二进制格雷码转化成天然二进制码的规律,能够得到以下的三种代码办法:
staTIc unsigned int GraytoDecimal(unsigned int x)
{
unsigned int y = x;
while(x>>=1)
y ^= x;
return y;
}
staTIc unsigned int GraytoDecimal(unsigned int x){
x^=x>>16;
x^=x>>8;
x^=x>>4;
x^=X>>2;
x^=x^1;
return x;
}
static unsigned int GraytoDecimal(unsigned int x)
{
int i;
for(i=0;(1<<i)<sizeof(x)*8;i++)
{
x^=x>>(1<<i);
}
return x;
}
//以上代码完成了unsigned int 型数据到天然二进制码的转化,最高可转化32 位格雷码,
超出32 位将溢出。将数据类型改为int 型即可完成31 位格雷码转化。
上述代码即可用于 VC 操控程序中,也能够用于单片机操控程序中。在单片机程序规划
时,若选用汇编言语编程,能够按相同的原理规划程序;若选用C 言语编程,则能够直接
使用上述代码,但主张用unsigned int 函数。
更具体请检查: http://bbs.elecfans.com/dispbbs_54_113406.html