绝对式光电编码器基本构造及特点.docx
《绝对式光电编码器基本构造及特点.docx》由会员分享,可在线阅读,更多相关《绝对式光电编码器基本构造及特点.docx(7页珍藏版)》请在冰豆网上搜索。
![绝对式光电编码器基本构造及特点.docx](https://file1.bdocx.com/fileroot1/2023-4/16/d78dc801-63d2-425b-bfd9-07a3cf755ede/d78dc801-63d2-425b-bfd9-07a3cf755ede1.gif)
绝对式光电编码器基本构造及特点
绝对式光电编码器基本构造及特点
LT
图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脉冲后,i1QC−=;若J、K为“0”则加入CP脉冲后保持Q=Ci-1。
这一逻辑关系可以写成:
图1-13格雷码转换为二进制码的电路
格雷码是无权码,采用格雷码盘获得的格雷码R1,R2,……,Rn必须按图1-11转换为对应的二进制码C1,C2,……,Cn后,才能代入(1-3)式确定与之对应的角度。
(4)格雷码与二进制码互换的软件实现方法
(a)二进制码转换成格雷码的软件实现法
根据自然二进制转换成格雷码的法则,可以得到以下的代码:
staticunsignedintDecimaltoGray(unsignedintx)
{
returnx^(x>>1);
}
//以上代码实现了unsignedint型数据到格雷码的转换,最高可转换32位自然二进
制码,超出32位将溢出。
staticintDecimaltoGray(intx)
{
returnx^(x>>1);
}
//以上代码实现了int型数据到格雷码的转换,最高可转换31位自然二进制码,超出31位将溢出。
上述代码即可用于VC控制程序中,也可以用于单片机控制程序中。
在单片机程序设计时,若采用汇编语言编程,可以按相同的原理设计程序;若采用C语言编程,则可以直接
利用上述代码,但建议用unsignedint函数。
(b)软件实现法(参见示例工程中的GraytoBinary)
根据二进制格雷码转换成自然二进制码的法则,可以得到以下的三种代码方式:
staticunsignedintGraytoDecimal(unsignedintx)
{
unsignedinty=x;
while(x>>=1)
y^=x;
returny;
}
staticunsignedintGraytoDecimal(unsignedintx){
x^=x>>16;
x^=x>>8;
x^=x>>4;
x^=X>>2;
x^=x^1;
returnx;
}
staticunsignedintGraytoDecimal(unsignedintx)
{
inti;
for(i=0;(1<
{
x^=x>>(1<
}
returnx;
}
//以上代码实现了unsignedint型数据到自然二进制码的转换,最高可转换32位格雷码,超出32位将溢出。
将数据类型改为int型即可实现31位格雷码转换。
上述代码即可用于VC控制程序中,也可以用于单片机控制程序中。
在单片机程序设计时,若采用汇编语言编程,可以按相同的原理设计程序;若采用C语言编程,则可以直接利用上述代码,但建议用unsignedint函数。