当前位置: 首页 > ds >正文

伺服电机AB相输出,接入定时器通道,对定时器IO口的速率有何要求【详细分析】

1.前言

首先,要理解标题"伺服电机AB相输出,接入定时器通道,对定时器IO口的速率有何要求"这句话,主体是伺服电机 AB相输出,指的的伺服电机反馈的AB相信号,不是步进电机。因为步进电机一般是脉冲信号驱动,而不带反馈的(也可以给步进电机加上反馈,一种常见的方法是带上编码器,但这实际上就有伺服电机的味道了。具体可参考)。

其次,AB相信号是什么东西?AB相信号是A相和B项的合称,A相B相都是脉冲信号,A相B相相差90度,因此AB相属于正交信号。A相一般是与电机旋转同步的基准脉冲信号。B相是与A相 相位相差90度的脉冲信号。通过B相和A相 谁比谁超前90度,来控制电机是正传还是反转。

再次,通过电机反馈的AB相信号可以接入正交解码器,从而计算出电机的方向和位置。当前,一般不会在单板上再专门布置一个正交解码芯片,STM32和GD32的芯片的高级和通用定时器就具有相应功能。在使用定时器的正交解码功能时,要配置为编码器接口模式,具体可参考。

2.定时器接口可以处理的脉冲频率

GD32F407定时器,分为 高级定时器,通用定时器和基本定时器。其中,高级定时器和通用定时器具有正交解码功能。
在这里插入图片描述
在这里插入图片描述

2.1 当编码器为1000线时,对脉冲频率的检测要求

信号频率

1000线编码器在电机高速旋转时,每圈会产生1000个脉冲周期。若电机转速为600RPM(每分钟600转,每秒钟10转),则每秒需处理约10000个脉冲。四倍频后,定时器每秒需解析40000个边沿信号,这对定时器的端口速度和中断响应能力提出极高要求。

相位差检测

AB相信号通过90°相位差判断方向,要求定时器在单个脉冲周期内完成两次边沿检测(A相上升沿/下降沿、B相上升沿/下降沿)。若编码器线数为1000,脉冲周期最短仅25微秒(1s/40000 * 1000(ms)* 1000(us),4倍频),需确保定时器能在25微秒内完成4次边沿捕捉和方向判断(四倍频技术的基本原理是在一个脉冲周期内捕获四次边沿变化,从而将编码器的分辨率提高四倍)。

定时器的性能要求

高速计数功能:定时器需支持高速计数模式,例如STM32定时器的编码器接口模式,可直接解析AB相脉冲的相位差和频率。若采用普通定时器,需通过中断方式处理边沿,但受限于中断响应时间(通常为微秒级),可能无法稳定解析高频信号。
中断响应时间:定时器中断响应时间需小于脉冲周期的1/4(四倍频下)。以600RPM为例,脉冲周期为25微秒,中断响应时间需控制在6.25微秒以内。若中断延迟过长,会导致脉冲计数丢失或方向误判。

高级/通用定时器 编码器接口模式下,是如何 根据AB相的输入进行脉冲计数的?

如下图所示,CI0和CI1一个可以看作A相,一个可以看作B相。当CI0先产生脉冲,CI1后产生脉冲。(A相先变化,B相后变化)时电机正转,计数器Counter开始计数CNT++。CI1先产生脉冲,CI0后产生脉冲。(B相先变化,A相后变化)时电机反转,计数器CNT- -。

在这里插入图片描述
注:上图一定要看懂,不懂的,留言提问。

3.计算过程

STM32/GD32通用定时器在编码器接口模式下,每秒可检测的脉冲数取决于定时器时钟频率、预分频器设置及编码器模式的工作原理,具体分析如下:

3.1 核心计算公式

最大脉冲检测频率 = (定时器时钟频率) / (预分频器值 + 1) / 4
• 定时器时钟频率:由MCU主频和时钟树配置决定(如STM32F103为72MHz,STM32F407可达168MHz)。
• 预分频器值:通过TIMx_PSC寄存器设置,用于降低定时器计数频率。
• 除以4:因编码器接口模式采用四倍频技术(A/B相每个周期产生4个边沿)。

3.2 典型场景计算示例

以GD32F407(主频32MHz,使用外部时钟)为例:

  1. 无预分频(PSC=0):
    • 最大检测频率 = 32MHz / (0+1) /4 = 8MHz。
    • 每秒脉冲数:8000,000个。
  2. 预分频=1(PSC=1):
    • 定时器时钟=32MHz/(1+1)=16MHz。
    • 最大检测频率=16MHz/4= 4MHz。
    • 每秒脉冲数:4,000,000个。
  3. 预分频=7(PSC=7):
    • 定时器时钟=32MHz/(7+1)=4MHz。
    • 最大检测频率=4MHz/4= 4MHz。
    • 每秒脉冲数:1,000,000个。

3.2关键限制因素

  1. GPIO响应速度:
    • STM32 GPIO最大翻转速度通常为18MHz(部分高速GPIO可达50MHz以上)。
    • 若编码器信号频率超过GPIO响应能力,会出现信号畸变。
  2. 中断延迟:
    • 在编码器接口模式下,定时器自动计数,无需CPU干预。
    • 若需通过中断读取计数值,中断响应时间(通常1-10μs)会降低有效检测频率。
  3. 信号完整性:
    • 高速编码器信号需使用差分传输(如RS422)或屏蔽电缆。
    • 添加硬件滤波电路(如RC低通滤波器)可抑制噪声,但会增加信号延迟。

思考 or 问题

读完本篇文章,应能回答下述问题:

1.电机编码器输出的AB相,是什么信号?AB相1000线是什么意思?
2.STM32/GD32的哪种定时器可以实现正交解码器的作用?
3.定时器通过AB相判断方向和位置,1个脉冲周期内,需要完成几次边沿捕获?
4.STM32通用定时器设置为编码器接口模式,端口每秒可以支持检测多少个脉冲?

参考

1.STM32通用定时器-脉冲计数(编码器模式)及电机测速原理
2.GD32F407Datasheet
3.GD32F4xx_User_Manual_Rev3.2.pdf

http://www.xdnf.cn/news/2687.html

相关文章:

  • 【Unity完整游戏开发案例】从0做一个太空大战游戏
  • MySQL主从同步原理与实践 - Java架构师面试解析
  • 【Python】Matplotlib:立体永生花绘制
  • 单值映射、多值映射
  • Linux:进程间通信->共享内存
  • 开源网络入侵检测与防御系统:Snort
  • 企业私有大模型DeepSeek落地部署该用什么? Ollama还是vLLM
  • PlatformIO 入门学习笔记(一):背景了解
  • 【每天一个知识点】correntropy(相关熵)
  • 08-STM32外部中断
  • el-input限制输入只能是数字 限制input只能输入数字
  • 中国区域250米归一化植被指数数据集(2000-2023)
  • 迅雷精简绿色融合版【高速下载版】12.1.9.2870【11.2.2.1716】【20250426】
  • 树莓派学习专题<10>:使用V4L2驱动获取摄像头数据--申请和管理缓冲区
  • 【PVR】《Adaptive Palm Vein Recognition Method》
  • codeforcesB. Binary Colouring
  • 实人认证开发指南:用API+深度学习构建人证合一系统
  • 【CF】Day45——Codeforces Round 1021 (Div. 2) BC
  • UV工具的安装与使用
  • 2025系统架构师---数据抽象(Data Abstraction)‌与‌面向对象架构风格
  • Android原生开发基础
  • 龙芯远程方案
  • 如何判断对一件事的认知深度?
  • Python+jieba文本分析示例:实现统计《红楼梦》中的人物并生成词云图
  • 人工智能——XGBoost 算法
  • 【2025最新Java面试八股】如何在Spring启动过程中做缓存预热?
  • 【基础篇】prometheus页面UI功能详解
  • AI翻译LangChain实现的一点有趣思考
  • 深入浅出提示词工程(结合 DeepSeek)
  • yolo-world踩坑指南