直流电机编码器测速
1:编码器简介
编码器是一种能将直线位移、角位移数据转换为脉冲信号、二进制编码的设备。它本质上就是一个传感器,可以把角位移或直线位移转换成电信号,并反馈给控制器,使控制器知道当前机械运动的位置、角度等信息。编码器的实物图如图 7.1.1 所示:
编码器按照检测原理可以分为光电式和磁电式;按照编码类型可分为增量式和绝对式。在实际的应用中,这四类编码器并不是相对独立的,它们经过组合后,就变成了光电绝对式、光电增量式、磁电绝对式和磁电增量式这四种编码器。
2:编码器原理
2.1磁电增量式:
原理:利用霍尔效应,将位移转换成计数脉冲,用脉冲个数计算位移和速度。
磁电增量式编码器的具体工作原理如图所示:
磁电增量式编码器的结构包含:磁盘、霍尔传感器以及信号转换电路 3 个部分,其中,磁盘是由一个个交替排布的 S 极和 N 极磁极组成;霍尔传感器可以把磁场的变化转换成电信号的变化,它通常有 A、B 两相(有的还有 Z 相),这两相的安装位置形成一定的夹角,这使得输出的 A、B 两相信号有 90°的相位差;信号转换电路可以把电信号转换成脉冲信号。磁盘会装在电机的转轴上,它会随着电机的转轴旋转,而磁盘上面的 S 极和 N 极就会交替地经过霍尔传感器的 A、B 两相,霍尔传感器就可以把磁盘上的磁场变化转换为电信号的变化,输入到信号转换电路中,经过信号的转换之后,我们就可以得到 A、B 两相脉冲信号了。从上图中可以看到,A、B 两相脉冲信号存在 90°的相位差,而磁盘的正反转方向就决定了是 A 相信号在前还是 B 相在前。
- 核心逻辑:编码器码盘上有均匀分布的透光 / 遮光条纹,A、B 两个光电检测单元在空间上错开一定的 “条纹间隔比例”,而非直接对应机械角度的 90 度。
- 常见布局:实际安装中,两个检测单元的空间夹角通常对应 “1/4 个条纹周期”。假设码盘一圈有 N 个条纹,每个条纹对应的机械角度是 360°/N,那么 1/4 条纹周期对应的机械夹角就是 90°/N。只有当 N=1 时,这个安装夹角才是 90 度,但实际编码器的 N 值通常很大(比如几百到几千),因此安装夹角远小于 90 度。
- 最终相位差:当码盘旋转时,两个检测单元输出的原始信号会因空间错开 1/4 周期,经过后续电路处理后,最终形成相位差 90° 的方波信号(A 相和 B 相),用于判断旋转方向和计算转速。
2.2光电增量式:
原理:利用光电系统,将位移转换成计数脉冲,用脉冲个数计算位移和速度。光电增量式编码器的具体工作原理如图所示:
光电增量式编码器的结构包含:光电码盘、光源、透镜、受光元件以及信号转换电路 5 个部分,其中,光电码盘上有一个个均匀排布的透光孔;光源和透镜形成一个聚光系统;受光元件可以把光线的变化转换成电信号的变化,它通常有 A、B 两相(有的还有 Z相),这两相的安装位置形成一定的夹角,这使得输出的 A、B 两相信号有 90°的相位差;信号转换电路可以把电信号转换成脉冲信号。在实际应用中,光电码盘会装在电机的转轴上,它会随着电机的转轴旋转,而码盘上面的透光孔会间歇性地经过 A、B 两相,受光元件就可以把光线变化转换为电信号的变化,输入到信号转换电路中,经过信号的转换之后,我们就可以得到 A、B 两相脉冲信号了。从上图中可以看到,A、B 两相脉冲信号存在 90°的相位差,而码盘的正反转方向就决定了是 A 相信号在前还是 B 相在前。
① 分辨率:编码器每个计数单位之间产生的距离,它是编码器可以测量到的最小的距离。对于增量式编码器,分辨率表示为编码器的转轴每旋转一圈所输出的脉冲数(****PPR),也称为多少线,直流有刷电机教程中所使用的编码器是** 11 **线的。
② 精度:编码器分辨率和精度是两个独立的概念,精度**是指编码器输出的信号数据与实际位置之间的误差,常用角分′、角秒″表示。
③ 最大响应频率:编码器每秒能输出的最大脉冲数,单位 Hz,也称为 PPS。
④ 最大转速:指编码器机械系统所能承受的最高转速。
3 编码器测速原理
直流有刷电机的编码器有 A、B 两相,它们会输出两个相位差为 90°的脉冲。当电机正转时,A 相脉冲在前;当电机反转时,则是 B 相脉冲在前。
STM32 定时器的编码器接口模式就相当于带有方向选择的外部时钟,也就是说,在此模式下,外部输入的脉冲信号可以作为计数器的时钟,而计数的方向则是由脉冲相位的先后所决定的。定时器编码器接口模式的原理如图 7.2.2 所示:
当电机(编码器)正转时,输出两相脉冲信号,A 相脉冲在前,此时编码器接口把脉冲信号作为计数器的脉冲,计数方式为递增计数;当电机(编码器)反转时,计数方式就变成了递减计数。
编码器接口框图:
A、B 两相脉冲信号从 TIMx_CH1 和 TIMx_CH2 这两个通道输入,经过滤波器和边沿检测器(可以设置滤波和反相)的处理,进入到编码器接口控制器中。大家需要注意,TIMx_CH3 和 TIMx_CH4 是不支持编码器接口模式的。
编码器接口计数原理
编码器接口可以利用输入脉冲的边沿进行计数,我们通过计数值的变化量,就可以算出输入脉冲信号的变化量,也就可以进一步计算出电机的转速了。接下来我们看一下编码器接口是如何根据脉冲边沿计数的,它的计数方向与输入脉冲信号的关系如表 7.2.1 所示:
假设我们把 A 相接在 CH1(TI1),B 相接在 CH2(TI2),选择仅在 TI1 处计数(仅检测A 相边沿)。此时编码器接口计数方向和输入脉冲信号的关系如下表:
编码器输出的 A、B 两相脉冲信号如图 7.2.4 所示:
- 单相信号,单沿触发:无倍频(1 倍);
- 单相信号,双沿触发:2 倍频;
- 双相信号,每相双沿触发:4 倍频(A 相双沿 + B 相双沿,合计 4 次 / 周期)。
上图中属于的就是单相信号,双沿触发,相当于2倍频。倍频后会使得精度更加准确。假设编码器转一圈,A 相原本输出 1000 个完整脉冲(即 1000 线)。
- 不倍频(单沿计数):只检测 A 相的上升沿,每转一圈计数 1000 次。这意味着,编码器每转动 360°÷1000 = 0.36°,计数才会 + 1。如果实际转动了 0.1°,因为没达到 0.36° 的最小单位,计数不会变化,相当于 “测不出来”。
- 2 倍频(A 相双沿计数):检测 A 相的上升沿 + 下降沿,每转一圈计数 2000 次。此时最小检测单位变成 360°÷2000 = 0.18°。哪怕转动 0.2°,也能被检测到(超过 0.18°),计数会 + 1。
- 4 倍频(A、B 相双沿计数):检测 A 相双沿 + B 相双沿,每转一圈计数 4000 次。最小单位进一步缩小到 360°÷4000 = 0.09°,更小的转动角度也能被捕捉到。
但是倍频是 “电子细分”,提升的是检测电路对信号的解析精度,但无法突破编码器物理结构的极限(比如码盘的条纹精度)。
正转:当 A 相上升沿到来时(图中①处),我们需要关注 B 相的电平高低,从图 7.2.4 中可看到 B 相此时是低电平,结合表 7.2.2,可以得知此时计数方向为递增计数;当 A 相下降沿到来时(图中②处),从图中可以看到 B 相此时是高电平,结合表 7.2.2,可以得知此时计数方向为递增计数;当 A 相上升沿再次到来时(图中③处),同理可得此时计数方向为递增计数。综上所得,我们可以知道此时编码器正转对应的计数方向就是递增计数。
反转:当 A 相上升沿到来时(图中④处),我们需要关注 B 相的电平高低,从图 7.2.4 中可看到 B 相此时是高电平,结合表 7.2.2,可以得知此时计数方向为递减计数;当 A 相下降沿到来时(图中⑤处),从图中可以看到 B 相此时是低电平,结合表 7.2.2,可以得知此时计数方向为递减计数;当 A 相上升沿再次到来时(图中⑥处),同理可得此时计数方向为递减计数。综上所得,我们可以知道此时编码器反转对应的计数方向就是递减计数。
这里还需要注意:1、选择仅在 TI1 或者 TI2 处计数,就相当于对脉冲信号进行了 2 倍频(两个边沿),此时如果编码器输出 10 个脉冲信号,那么就会计数 20 次。2、选择的是在 TI1 和 TI2 处均计数,就相当于对脉冲信号进行了 4 倍频,此时如果编码器输出 10 个脉冲信号,那么就会计数40 次。因此,我们通过计数次数来计算电机速度的时候,需要除以相应的倍频系数。
电机转速 = 一分钟内计数变化量 / 倍频系数 / 编码器线数 / 减速比
- 单位推导:
假设公式为:电机转速 = (一分钟内计数变化量) / (倍频系数 × 编码器线数 × 减速比)
计数变化量:单位是 “次”(编码器输出的脉冲计数,经倍频后的总次数);
倍频系数:无单位(如 2 倍频、4 倍频,用于还原原始脉冲数);
编码器线数(PPR):单位是 “脉冲 / 转”(每转一圈输出的原始脉冲数);
减速比:无单位(减速箱的转速比,如 100:1 表示电机转 100 圈,负载轴转 1 圈)。
推导过程:计数变化量 ÷ 倍频系数 = 原始脉冲数(去除电子细分的影响);原始脉冲数 ÷ 编码器线数 = 编码器轴的转动圈数(因为每转 1 圈对应线数个脉冲);编码器轴转动圈数 ÷ 减速比 = 电机实际转动圈数(因为减速箱会降低转速,需还原电机侧的真实圈数);最终结果是 “每分钟内电机转动的圈数”,即 r/min。 - 为什么需要减速比?
因为在实际系统中,编码器通常安装在减速箱的输出轴(负载侧),而非电机轴上(除非直接连接)。例如:
电机转速很高(如 3000 r/min),通过减速比 100:1 的减速箱后,负载轴转速为 30 r/min;
编码器检测的是负载轴的转速(30 r/min),若要计算电机本身的转速,必须乘以减速比(30 × 100 = 3000 r/min)。
公式中 “除以减速比” 的本质是:从 “负载轴的圈数” 反推 “电机轴的圈数”(因为计数变化量反映的是负载轴的转动,需还原到电机侧)。