ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

小喵V2核心原理揭秘:I2C通信如何驱动Robotbit板上的8路舵机和4路电机?

小喵V2核心原理揭秘:I2C通信如何驱动Robotbit板上的8路舵机和4路电机? 小喵V2核心原理揭秘I2C通信如何驱动Robotbit板上的8路舵机和4路电机【免费下载链接】miaow-v2源师兄扩展项目: 小喵V2 | 由源师兄组织创建项目地址: https://gitcode.com/yuanshixiong/miaow-v2小喵V2是源师兄组织开发的编程扩展它让主控板通过 I2C 通信连接 Robotbit 扩展板8路舵机精准转到指定角度4路电机可正反转任意调速全程只需两根信号线。本文将用通俗语言拆解这套「一块板子驱动12个执行器」的实现原理。如何只用2根线驱动12个执行器如果每个舵机、电机都独占一根控制线光IO口就要占用十几路接线上也极其杂乱。而 I2C 是一种共享道路的总线协议两根线SDA数据线 SCL时钟线从设备靠地址区分身份速率适中小喵V2 使用主控的 I2C 总线1、100kHz 速率对舵机角度和电机速度的更新频率完全够用板载锂电Robotbit 板自带可充电锂电池插上即用无需外接电源 一句话概括主控板只负责发指令具体的功率输出全部交给扩展板。16路PWM中枢芯片如何接管执行器Robotbit 板的核心是一颗I2C 接口的16路PWM控制器。可以把它理解为主控和执行器之间的信号中转站主控只需通过 I2C 写几个寄存器字节片上地址默认0x40芯片内部自己计数持续输出精确的脉冲信号每路PWM由4个寄存器控制开脉低字节、开脉高字节、关脉低字节、关脉高字节在初始化阶段见 blocksdef.js 生成的启动逻辑小喵V2 会先让芯片从睡眠模式唤醒再设置分频值把PWM频率锁定在50Hz——这正是舵机控制的标准频率之后才正式下达控制指令。8路舵机角度如何变成脉冲宽度舵机不接受速度只接受位置。控制信号是每 20ms 一个周期的脉冲脉宽决定角度通常 0.5ms 是一个极限位置2.5ms 是另一个极限。当你在小喵V2里拖动角度积木时程序背后完成了两次换算角度 → 脉宽每款舵机公式不同。以蓝色9g舵机为例换算式为100/9×角度500把 0~90 度映射到 0.5ms~1.5ms 的脉宽区间脉宽 → PWM计数脉宽再换算成 0~4095 的12位计数值写入对应通道的关脉寄存器8路舵机恰好占据芯片的8~15号通道对应板上的 S1~S8 接口。所以使用时你只需选接口号、填角度剩下的换算全部自动完成。4路电机正反转的双通道技巧直流电机要正反转就必须改变电流方向因此每路电机需要占用2个PWM通道一个正相、一个反相。小喵V2 的映射规则很巧妙第 n 路电机使用(n-1)×2与(n-1)×21两个通道正转正相通道输出速度反相通道置0反转速度取负值时自动交换反相通道输出、正相通道置0速度范围 0~255内部先扩展到 0~4095 计数再写入PWM这样 4路电机正好用掉芯片的0~7号通道M1A/M1B/M2A/M2B。8路舵机 8个电机半桥通道 16路——一块16通道芯片刚好满载。⚙️ 这就是8舵机4电机共存的空间秘密。三步上手从小喵V2积木到I2C指令在小喵V2的积木环境中上述所有 I2C 细节都被封装进了积木初始化拖入初始化robotbit积木一次完成唤醒芯片、设置50Hz控制舵机选择蓝色9g / Geek 9g / Geek 2kg 舵机选 S1~S8 接口填角度控制电机选 M1A~M2B 接口填速度需要急停时用停止所有电机积木它会一次性把4路电机的速度归零 相关文件位置积木定义与代码生成逻辑在 blocksdef.js可用的积木清单在 category.json板卡的名称与描述可驱动8路舵机和4路电机可板载充电锂电池见 config.json。总结I2C驱动三层结构一览层次职责主控 I2C总线100kHz 发送寄存器指令芯片地址 0x4016路PWM芯片唤醒复位、锁定50Hz频率、输出精确脉冲8路舵机角度→脉宽→计数占用通道8~154路电机双通道换向调速占用通道0~7 看懂这三层结构你就能自由扩展了换一款新舵机只需替换角度到脉宽的换算公式想保护电机可在速度写入前加上限幅。核心思想始终不变——主控管决策I2C PWM芯片管执行。【免费下载链接】miaow-v2源师兄扩展项目: 小喵V2 | 由源师兄组织创建项目地址: https://gitcode.com/yuanshixiong/miaow-v2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表