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

[具身智能-400]:AS5600 PWM时钟与PWM输出与角度的关系详解

S5600 的 PWM 模式通过脉冲宽度来编码角度信息。要理解它与角度的关系,必须搞清楚“内部时钟”、“帧结构”和“计算公式”这三者之间的逻辑。

简单来说:AS5600 内部产生时钟,将一圈 360° 切割成 4096 份,每一份对应 PWM 信号中的 1 个时钟周期。

以下是详细的深度解析:

1. PWM 时钟来源与频率

首先,AS5600 在 PWM 模式下是主设备,它不需要外部 MCU 提供时钟,而是自己内部产生时钟

  • 时钟来源:芯片内部振荡器。
  • 时钟频率:你可以通过 I²C 配置寄存器(PWMF位)来设定这个基础时钟的频率。
    • 115 Hz(默认,最常用)
    • 230 Hz
    • 460 Hz
    • 920 Hz

注意:这里的频率指的是 PWM整帧波形的重复频率,而不是内部计数的时钟频率(内部计数频率远高于此,但在计算角度时,我们只需要关注“周期数”,不需要知道具体的微秒时间,因此与频率具体数值无关,只与“份数”有关)。

2. PWM 帧结构(核心关系)

AS5600 输出的不是一直连续的方波,而是一帧一帧的数据。每一帧代表一次完整的角度采样。

一帧完整的 PWM 信号固定由4351 个时钟周期组成,结构如下:

表格

组成部分固定时长 (单位: 时钟周期)电平作用
1. 前导脉冲128高电平告诉 MCU:“新的一帧开始了,准备计数!”
2. 数据脉冲4095可变核心部分。高电平持续时间代表角度。
3. 结束脉冲128低电平告诉 MCU:“这一帧结束了。”
总计4351-一个完整的周期

3. 角度与脉冲宽度的数学关系

AS5600 是 12 位传感器,它将 360° 分为4096份(212212 )。
但在 PWM 数据区中,可用的计数范围是4095个周期(从 0 到 4095)。

角度计算公式:
假设你测量到的数据部分高电平持续时间为 N 个时钟周期,那么角度 θ 计算如下:

θ=N4095×360∘

关键对应点:

  • 0° 位置:即占空比0%
    • 数据区高电平持续0个周期(实际上为了区分,通常表现为紧接前导后的下降沿,但在逻辑上对应 0)。
    • 注:有些文档描述为 128 个周期高电平(包含前导),这里指纯数据区宽度。
  • 180° 位置:即占空比50%
    • 数据区高电平持续2047个周期(约占满量程的一半)。
  • 360° 位置:即占空比100%
    • 数据区高电平持续4095个周期(填满整个数据区)。

4. 如何在 MCU 中计算(实战逻辑)

在实际编程(如 STM32 或 Arduino)时,你通常不需要去管 115Hz 还是 920Hz,也不需要换算成微秒,直接用定时器的计数值(Counter Value)计算是最准确的。

步骤:

  1. 配置定时器:设置为输入捕获模式,捕获上升沿和下降沿。
  2. 捕获时间差
    • 检测到上升沿(前导脉冲开始),记录计数值 T1​ 。
    • 检测到下降沿(数据脉冲结束),记录计数值 T2​ 。
  3. 计算脉宽
    • 总高电平时间(包含前导): Ttotal_high=T2−T1
    • 纯数据区时间(去掉固定的 128 个前导周期): N=Ttotal_high−128
  4. 代入公式

角度=(N/4095)×360角度

5. 常见问题与避坑指南

  • 不要换算成时间(微秒)
    虽然你可以算出 115Hz 下 1 个周期是多少微秒,但强烈建议不要这样做。因为 MCU 的晶振误差和 AS5600 的内部时钟误差会导致时间计算出现偏差。直接数“周期数”(脉冲个数)是绝对准确的,因为它是数字逻辑关系。
  • 量程编程的影响
    如果你通过 I²C 配置了 AS5600 的量程(例如只使用 0~90° 的物理范围),PWM 的输出逻辑不会改变
    • 它依然输出 4095 个周期的数据宽度。
    • 0°(起始点)对应 0 计数。
    • 90°(终止点)对应 4095 计数。
    • 这意味着在窄量程下,PWM 的分辨率更高(每一个计数代表的物理角度更小)。
  • 响应速度
    PWM 频率越低(如 115Hz),一帧的时间就越长(约 8.7ms),角度更新的延迟就越大。如果需要快速响应(如电机 FOC 控制),建议配置为920Hz,这样更新率更高,但要注意 MCU 的定时器捕获频率是否跟得上。

总结:
AS5600 的 PWM 时钟是内部自产的。角度与 PWM 的关系是线性的:数据区的高电平宽度(扣除固定的 128 个前导周期后)直接对应 0~4095 的数值,该数值占 4095 的比例即为当前角度占 360° 的比例。

http://www.jsqmd.com/news/674671/

相关文章:

  • 如何快速掌握世界最快JSON解析器jsmn:从零开始构建高效数据处理工具
  • 终极指南:Cluster API如何简化Kubernetes集群全生命周期管理
  • 终极Geocoder测试指南:单元测试、集成测试和性能测试的完整方案
  • ssh-audit实战:10个关键命令保护你的SSH服务
  • Handlebars-helpers高级用法:自定义辅助函数与扩展技巧
  • 别再只盯着加密算法了!聊聊GM/T 0054标准里,密钥从‘生’到‘死’的8个关键环节
  • 终极指南:如何在gumbo-parser中扩展自定义标签处理逻辑
  • M3O API使用指南:从基础调用到高级功能全攻略
  • 终极指南:Bee-Queue 如何实现高效作业超时控制、智能重试与实时进度报告
  • DMZ与Trust Untrust区域对比解析
  • Lychee API开发完全手册:构建自定义照片管理应用的终极指南
  • ARM指针认证与地址转换机制详解
  • 10个fsql实战案例:高效管理大型项目文件的终极指南
  • urllib3连接池深度解析:如何实现线程安全和高并发的终极指南
  • 从0到1:使用Keypress.js构建专业级键盘交互界面
  • go-oidc测试策略:单元测试、集成测试与模拟服务器
  • 终极指南:I-Still-Dont-Care-About-Cookies如何自动处理Cookie弹窗的实现原理
  • 7个实用技巧!rsync完全指南:从零开始学习增量文件传输的完整教程
  • 3分钟搞定上交论文排版:告别格式焦虑的终极解决方案
  • 2026年比较好的山东青州宿根花卉产业热门推荐 - 品牌宣传支持者
  • JVM调优实战:从GC日志分析到生产环境参数配置
  • Sudomy API配置教程:如何快速设置第三方数据源密钥
  • 终极Python FTFY扩展指南:从零开始创建自定义修复器并贡献代码
  • 终极指南:从golang.org/x/lint测试用例学习编写高质量Go测试的10个最佳实践
  • org-html-themes移动端适配:确保HTML文档在手机上的完美显示
  • Dify金融问答配置必须锁定的5个元参数,错1个即触发监管穿透式审计预警
  • 为什么你的项目需要ES6-tools:5大理由提升开发效率
  • 网络七层到底怎么落到一次前端请求上:从浏览器到网卡,再到远端服务器
  • 从《HelloHero》实战出发:聊聊Unity+il2cpp手游的通用修改思路与常见误区
  • DzzOffice安全加固手册:10个必做的安全配置步骤