1、编码器基础:增量式与绝对式编码器原理、分辨率与精度、C2000 eQEP模块概述
做电机控制这些年,我接触过不少编码器。说实话,刚入行那会儿我也分不清增量式和绝对式到底该怎么选。后来在几个项目里吃过亏,才慢慢摸透了它们的脾气。这一章咱们就把编码器的基础打牢,顺便看看C2000的eQEP模块能帮我们做什么。
1.1 增量式编码器:简单但别大意
增量式编码器,说白了就是输出脉冲。它每转一圈会发出固定数量的脉冲,比如1024线、2048线。你通过数脉冲个数就知道轴转了多少角度,通过两路信号的相位差就能判断正反转。
它的核心原理其实不复杂:码盘上刻着均匀的明暗条纹,光耦一照,信号就出来了。A相和B相相差90度电角度,这就是我们常说的正交信号。我习惯用Z相信号来做零位校准,每次上电先找一次Z脉冲,这样位置就清零了。
增量式的优点很明显:便宜、结构简单、响应快。但缺点也致命——没有绝对位置记忆。你想想看,如果系统断电后轴被人转动了,再上电时你根本不知道它在哪。所以它适合那些每次上电都能回零的场景,比如打印机、传送带。
1.2 绝对式编码器:贵但省心
绝对式编码器就不一样了。它每个位置都有唯一的编码值,上电就知道当前角度。我最早接触绝对式编码器是在一个工业机器人项目上,当时客户要求断电后不能丢失位置,增量式根本没法用。
绝对式编码器分两种:单圈和多圈。单圈的只能记录一圈内的位置,多圈的还能记录转了多少圈。多圈编码器内部有齿轮组或者电池备份,成本自然就上去了。
| 类型 | 输出信号 | 位置记忆 | 典型分辨率 | 适用场景 |
|---|---|---|---|---|
| 增量式 | A/B/Z脉冲 | 无 | 1024~8192线 | 回零方便的系统 |
| 绝对式单圈 | SSI/BiSS/EnDat | 有(单圈) | 12~20位 | 伺服、机器人 |
| 绝对式多圈 | SSI/BiSS/EnDat | 有(多圈) | 12+12位 | 高可靠性场合 |
绝对式的分辨率通常用位来表示。比如17位编码器,一圈有2^17=131072个位置。这个精度对于大多数电机控制来说已经绰绰有余了。不过要注意,分辨率高不代表精度高,精度还跟码盘的加工误差、安装偏心有关。我在一个项目中用过20位的编码器,结果因为安装时轴对中偏差了0.1mm,实际精度还不如16位的。
1.3 分辨率与精度:别搞混了
这两个概念我见过太多人搞混了。分辨率是编码器能分辨的最小角度变化,精度是实际角度与测量角度的偏差。举个例子:一个17位编码器,分辨率是360°/131072≈0.0027°,但精度可能只有±0.1°。为什么?因为码盘刻线有误差、光耦有噪声、安装有偏心。
我个人的经验是:选编码器时先看精度要求,再看分辨率。如果系统要求定位精度±0.5°,你买个20位的编码器纯属浪费钱。反过来,如果要求±0.01°,那至少得17位起步,而且安装工艺必须到位。
核心公式:
- 分辨率(°)= 360° / 每圈脉冲数(增量式)或 360° / 2^N(绝对式)
- 精度(°)= 编码器厂商给出的最大角度误差
- 系统定位精度 ≈ 编码器精度 + 机械传动误差 + 控制算法误差
1.4 C2000 eQEP模块概述
C2000系列芯片里集成了eQEP模块,全称是Enhanced Quadrature Encoder Pulse。说白了,它就是专门用来接编码器的硬件外设。我最早用TMS320F28035时,eQEP模块帮我省了不少事——不用再外接计数器芯片了。
eQEP模块的核心功能有三个:
- 位置计数:自动对A/B正交信号进行4倍频计数,得到位置值
- 速度测量:支持两种测速方式——M法(测脉冲数)和T法(测脉冲周期)
- 索引信号处理:Z信号可以用来复位位置计数器,实现零位校准
它的内部结构大致是这样的:
eQEP模块支持三种工作模式:
- 正交计数模式:标准A/B正交信号,4倍频计数,适合增量式编码器
- 方向计数模式:一个脉冲信号加一个方向信号,适合步进电机或简易编码器
- 上/下计数模式:两个独立的脉冲输入,一个加计数一个减计数
我个人最常用的是正交计数模式。它精度高,而且硬件自动判断方向,省去了软件处理的麻烦。不过要注意,eQEP模块的输入频率有限制。以F28035为例,最大输入频率是系统时钟的1/4。如果你用高频编码器,比如5000线,4倍频后就是20000脉冲/圈,如果转速6000rpm,频率就是2MHz,还在范围内。但要是用更高分辨率的编码器,就得算一算了。