直流电机编码器测速

直流电机编码器测速

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 相在前。

  1. 核心逻辑:编码器码盘上有均匀分布的透光 / 遮光条纹,A、B 两个光电检测单元在空间上错开一定的 "条纹间隔比例",而非直接对应机械角度的 90 度。
  2. 常见布局:实际安装中,两个检测单元的空间夹角通常对应 "1/4 个条纹周期"。假设码盘一圈有 N 个条纹,每个条纹对应的机械角度是 360°/N,那么 1/4 条纹周期对应的机械夹角就是 90°/N。只有当 N=1 时,这个安装夹角才是 90 度,但实际编码器的 N 值通常很大(比如几百到几千),因此安装夹角远小于 90 度。
  3. 最终相位差:当码盘旋转时,两个检测单元输出的原始信号会因空间错开 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 次。因此,我们通过计数次数来计算电机速度的时候,需要除以相应的倍频系数。

电机转速 = 一分钟内计数变化量 / 倍频系数 / 编码器线数 / 减速比

  1. 单位推导:
    假设公式为:电机转速 = (一分钟内计数变化量) / (倍频系数 × 编码器线数 × 减速比)
    计数变化量:单位是 "次"(编码器输出的脉冲计数,经倍频后的总次数);
    倍频系数:无单位(如 2 倍频、4 倍频,用于还原原始脉冲数);
    编码器线数(PPR):单位是 "脉冲 / 转"(每转一圈输出的原始脉冲数);
    减速比:无单位(减速箱的转速比,如 100:1 表示电机转 100 圈,负载轴转 1 圈)。
    推导过程:计数变化量 ÷ 倍频系数 = 原始脉冲数(去除电子细分的影响);原始脉冲数 ÷ 编码器线数 = 编码器轴的转动圈数(因为每转 1 圈对应线数个脉冲);编码器轴转动圈数 ÷ 减速比 = 电机实际转动圈数(因为减速箱会降低转速,需还原电机侧的真实圈数);最终结果是 "每分钟内电机转动的圈数",即 r/min。
  2. 为什么需要减速比?
    因为在实际系统中,编码器通常安装在减速箱的输出轴(负载侧),而非电机轴上(除非直接连接)。例如:
    电机转速很高(如 3000 r/min),通过减速比 100:1 的减速箱后,负载轴转速为 30 r/min;
    编码器检测的是负载轴的转速(30 r/min),若要计算电机本身的转速,必须乘以减速比(30 × 100 = 3000 r/min)。
    公式中 "除以减速比" 的本质是:从 "负载轴的圈数" 反推 "电机轴的圈数"(因为计数变化量反映的是负载轴的转动,需还原到电机侧)。
相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习