增量值编码器、单圈绝对值编码器、多圈绝对值编码器

绝对值编码器解析:单圈、多圈绝对值编码器的区别与应用
本文详细介绍了单圈绝对值编码器和多圈绝对值编码器的工作原理及特点。单圈编码器能感知一圈内的绝对位置,而多圈编码器不仅能感知一圈内的位置,还能记录转过的总圈数。文章讨论了停电移动问题、信号抗干扰问题以及后续设备的CPU资源问题,强调了绝对值编码器在这些方面的优势。此外,还提及了格雷码在绝对值编码器中的应用,以减少错误的可能性。
         主流的伺服电机位置反馈元件包括增量值编码器,单圈绝对值编码器,多圈绝对值编码器,旋转变压器等。下面分别介绍:

增量值编码器

        增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。
        编码器是把角位移转换成电信号的一种装置。按照读出方式编码器可以分为接触式和非接触式两种.接触式采用电刷输出,一电刷接触导电区或绝缘区来表示代码的状态是“1”还是“0”;非接触式的接受敏感元件是光敏元件或磁敏元件,采用光敏元件时以透光区和不透光区来表示代码的状态是“1”还是“0”。

特点
        增量式编码器转轴旋转时,有相应的脉冲输出,其旋转方向的判别和脉冲数量的增减借助后部的判向电路和计数器来实现。其计数起点任意设定,可实现多圈无限累加和测量。还可以把每转发出一个脉冲的Z信号,作为参考机械零位。编码器轴转一圈会输出固定的脉冲,脉冲数由编码器光栅的线数决定。需要提高分辨率时,可利用 90 度相位差的 A、B两路信号对原脉冲数进行倍频,或者更换高分辨率编码器。
工作原理
      (图片文字依次为:光源、码盘、光敏元件、放大整形、脉冲输出)
        
        在一个码盘的边缘上开有相等角度的缝隙(分为透明和不透明部分),在开缝码盘两边分别安装光源及光敏元件。当码盘随工作轴一起转动时,每转过一个缝隙就产生一次光线的明暗变化,再经整形放大,可以得到一定幅值和功率的电脉冲输出信号,脉冲数就等于转过的缝隙数。将该脉冲信号送到计数器中去进行计数,从测得的数码数就能知道码盘转过的角度。

       

        为了判断旋转方向 ,可以采用两套光电转换装置。令它们在空间的相对位置有一定的关系,从而保证它们产生的信号在 相位上相差1/4周期。

增量值编码器的问题

        1、停电移动问题:对于第一个问题,似乎大家都明白,单圈绝对值可以通过后续设备做加圈计数,那么停电后,在加圈计数部分不工作的情况下,最大可以顺时针或逆时针最多移动半圈。而多圈绝对值如果最大计数圈数是4096圈,那么停电可以顺时针或逆时针移动2048圈,可以满足绝大部分应用。

        2、信号抗干扰问题,增量编码器因为脉冲的缘故,很容易被干扰掉。被抗干扰问题头痛的要命,也没有想到可以换绝对值编码器---其实换绝对值单圈就可以了,只要连续干扰的时间不超过转半圈的时间,绝对值信号还在。

        3、后续设备的CPU资源问题,这个问题了解的人就不多了,用增量编码器,尤其是高分辨率编码器,后续设备要“眼睛一眨也不能眨”,如果是多轴的,那不累死啊,还能干啥别的活?实际的结果是出错几率大增。 而绝对值编码器,只要保证采样时间单圈的在转动半圈内,多圈的在转动2048圈内,想什么时间采数,就什么时间采数,节省了大量CPU 时间去干别的,这就是高端伺服用绝对值真正的优势了。

        关于日系低端伺服系统中的多圈绝对值编码器:

        日韩真正的多圈绝对值编码器在中国市场很少看到,日系的东西为了省钱,绝对位置数据就用电池保持,一般称之为“伪绝对”,跟单圈绝对值是一回事,只不过加装了由存储器保存位置的电路板。     多圈绝对式编码器在欧洲的采用,主要目的之一在于机器安全,估计按照机器安全指令的条文。这种“伪绝对”恐怕是无法满足要求的,或者至多只能满足低级别的某要求。

        关于工业机器人中的编码器处理板:
        工业机器人编码器处理板的主要功能,是处理伺服电机编码器反馈的信号,并将结果发送给上位机,编码器处理板计数时需要外部供电。设备停电后,倘若其它原因动了机器人轴,这个时候,脉冲处理器主板记忆位置所需的供电就来自于电池,位置信号仍然是确定的,下次上电不需要复位。拆掉电池后,编码器处理板不工作,就无法保证位置信息了。
        因此,如果电池板安装在机器人本体上,一般情况下,拔掉机器人的动力线和编码器线,是不需要机器人原点校正的。  如果编码器处理板由外部供电,拔掉电缆的时候,同时切断了处理板的电源,那么机器人就需要原点校正了。

        由电池供电的编码器处理板要记录的2个重要数据:
        1、旋转的角度
        2、旋转的圈数

单圈绝对式编码器

       单圈绝对值编码器原理(码盘上的每一个位置都有唯一的编码)      绝对值增量编码器的每一个位置对应一个确定的数字码,因此它的示值只与测量的起始和终止位置有关,而与测量的中间过程无关。      

         单圈绝对值编码器与多圈绝对值编码器   所谓单圈和多圈编码器都是指绝对式编码器,绝对式编码器可以在任何时刻,尤其是在刚上电的时刻,就能感知当前的绝对角位置。单圈的只可以感知一圈之内的绝对角位置;多圈的不仅可以感知一圈之内的绝对角位置,而且可以感知编码器自使用之日起已经转过了多少角度。绝对编码器由机械位置决定每个位置的唯一性(当然这个角度是编码器正转和翻转的累加和)。

             绝对型旋转光电编码器,因其每一个位置绝对唯一、抗干扰、无需掉电记忆。绝对编码器光码盘上有许多道刻线,每道刻线依次以2线、4线、8线、16线。。。。。。编排。这样,在编码器的每一个位置,通过读取每道刻线的通、暗,获得一组从2的零次方到2的n-1次方的唯一的2进制编码(格雷码)。
             
          提到绝对值编码器,就不得不提一下格雷码

          在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。

           格雷码属于可靠性编码,是一种错误最小化的编码方式。因为,虽然自然二进制码可以直接由数/模转换器转换成模拟信号,但在某些情况,例如从十进制的3转换为4时二进制码的每一位都要变,能使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它在相邻位间转换时,只有一位产生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。由于这种编码相邻的两个码组之间只有一位不同,因而在用于方向的转角位移量-数字量的转换中,当方向的转角位移量发生微小变化(而可能引起数字量发生变化时,格雷码仅改变一位,这样与其它编码同时改变两位或多位的情况相比更为可靠,即可减少出错的可能性。

        


         做成电机的光码盘之后,是下图这个样子的:

         


         这样的编码器是由光电码盘的机械位置决定的,不受停电、干扰的影响。绝对编码器由机械位置决定的每个位置是唯一的,它无需记忆,无需找参考点,而且不用一直计数,什么时候需要知道位置,什么时候就去读取它的位置。


多圈绝对值编码器       

多圈绝对值编码器原理       

           多圈绝对值编码器是在单圈编码器的基础上通过机械传动原理,利用钟表齿轮机械原理结构制作而成。 当中心光栅码盘旋转时,通过齿轮传动另一组码盘(或多组齿轮,多组码盘),在单圈编码的基础上再增加圈数的编码, 以扩大编码器的测量范围,它同样是由机械位置确定编码,每个位置编码唯一不重复,而无需记忆。多圈编码器另一个优点是由于测量范围大,实际使用往往富裕较多, 这样在安装时不必要费劲找零点, 将某一中间位置作为起始点就可以了,从而大大简化了安装调试难度。

           多圈绝对值编码器信号输出有并行输出、串行输出、总线型输出、变送一体型输出 。

          

多圈绝对值编码器输出
           1. 并行输出:  

           多圈绝对值编码器输出的是多位数码(格雷码或纯二进制码),并行输出就是在接口上有多点高低电平输出,以代表数码的1或0,对于位数不高的绝对编码器,一般就直接以此形式输出数码,可直接进入PLC或上位机的I/O接口,输出即时,连接简单。

但是并行输出有如下问题:  

1)必须是格雷码,因为如是纯二进制码,在数据刷新时可能有多位变化,读数会在短时间里造成错码。  

2)所有接口必须确保连接好,因为如有个别连接不良点,该点电位始终是0,造成错码而无法判断。  

3)传输距离不能远,一般在一两米,对于复杂环境,最好有隔离。  4)对于位数较多,要许多芯电缆,并要确保连接优良,由此带来工程难度,同样,对于编码器,要同时有许多节点输出,增加编码器的故障损坏率。 

         2. 串行SSI输出:  

        串行输出就是通过约定,在时间上有先后的数据输出,这种约定称为通讯规约,其连接的物理形式有RS232、RS422(TTL)、RS485等。  由于多圈绝对值编码器好的厂家都是在德国,所以串行输出大部分是与德国的西门子配套的,如SSI同步串行输出。  

        SSI接口(RS422模式),以两根数据线、两根时钟线连接,由接收设备向编码器发出中断的时钟脉冲,绝对的位置值由编码器与时钟脉冲同步输出至接收设备。由接收设备发出时钟信号触发,编码器从高位(MSB)开始输出与时钟信号同步的串行信号。  

        串行输出连接线少,传输距离远,对于编码器的保护和可靠性就大大提高了。  

        一般高位数的绝对编码器都是用串行输出的。 

        3. 现场总线型输出  

        现场总线型编码器是多个编码器各以一对信号线连接在一起,通过设定地址, 用通讯方式传输信号,信号的接收设备只需一个接口,就可以读多个编码器信号。总线型编码器可以节省连接线缆、接收设备接口,传输距离远,在多个编码器集中控制的情况下还可以大大节省成本。





### 单圈绝对值编码器角度计算 对于单圈绝对值编码器而言,其工作原理基于码盘上的通孔和暗孔来表示二进制数值。具体来说,当光电接收器接收到通过通孔的光信号时会置1,而未接收到则置0。因此,特定的角度位置会被编译成对应的n位二进制数[^4]。 假设有一个12位分辨率的单圈绝对值编码器,则该设备能提供高达\( \frac{360}{2^{12}}=\frac{360}{4096}=0.0878^\circ \) 的角精度。这意味着在整个旋转周期内共有4096个不同的状态可供识别,每个状态对应着一个独特的角度范围。 为了从编码器获取当前的角度信息,通常需要执行以下操作: - **读取原始数据**:首先应按照通信协议(例如CAN总线或SSI)读取出由编码器产生的二进制串。 - **转换为十进制**:接着把得到的二进制字符串转化为更易于处理的形式——即十进制整型变量。这一步骤可以通过编程语言内置函数完成,如C/C++中的`strtol()` 或者Python里的 `int(binary_string, base=2)` 方法实现。 - **应用公式求解实际角度**:最后利用下面给出的关系式将上述获得的结果映射回真实世界中的物理角度: \[ Angle = Resolution * DecimalValue \] 其中 \(Resolution\) 表示每单位增量代表的实际角度变化量 (对于前述例子就是0.0878°),而 \(DecimalValue\) 则是从上一步转化而来的真实数值。 #### 示例代码展示 以下是采用C语言编写的一个简单程序片段用于演示这一过程: ```c #include <stdio.h> // 假设我们已经得到了来自编码器的数据并存储在一个无符号整形变量中 unsigned int binaryDataFromEncoder; double calculateAngle(unsigned int data){ double resolution = 360 / 4096; return data * resolution; } int main(){ // 这里只是模拟了一个可能存在的输入值 unsigned int simulatedBinaryInput = 1024; printf("The calculated angle is %.2f degrees\n",calculateAngle(simulatedBinaryInput)); return 0; } ``` 此段代码展示了如何定义一个名为`calculateAngle`的功能模块接受来自编码器的未经加工的信息作为参数,并返回经过换算后的精确角度值。注意这里的`simulatedBinaryInput`仅作为一个示范性的测试案例存在,在实际情况中应当替换成为真正来源于硬件接口驱动层调用所得的具体数值。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值