1. 从“信号”到“动作”:理解PWM控制舵机的核心逻辑
很多朋友第一次玩香橙派AI Pro这类开发板,驱动像SG90这样的舵机时,可能会觉得有点“玄学”。代码照着抄了,线也接对了,但舵机要么纹丝不动,要么乱抖一下,就是转不到你想要的角度。其实,问题的关键往往在于我们只是“知其然”,而没有“知其所以然”。PWM信号对于舵机来说,就像我们人类听懂的“语言”,你必须用正确的“语法”和“词汇”去命令它,它才会乖乖听话。今天,我就把自己在调试SG90时踩过的坑和总结的经验,掰开揉碎了讲给你听,目标就一个:让你彻底搞懂PWM,并写出能精准控制到每一度的舵机驱动。
我们先来打个比方。想象一下你在给一个老式的收音机调台。你缓慢地旋转旋钮,收音机里的声音就从模糊逐渐变得清晰,从一个台换到另一个台。这个旋钮的“旋转角度”,就对应着收音机接收的“频率”。舵机的控制原理和这非常类似,只不过我们把“旋转旋钮”这个物理动作,替换成了由香橙派AI Pro的GPIO引脚发出的一连串电脉冲信号,也就是PWM(脉冲宽度调制)。SG90舵机内部有一个小电路板,它唯一的工作就是“听”这个PWM信号,然后根据听到的“内容”,指挥内部的电机转动到对应的位置。
那么,SG90到底“听”什么呢?它不听脉冲的高度(电压基本固定是5V),也不听脉冲来得有多快(频率是固定的),它只听一个东西:每一个脉冲的“持续时间”有多长。这个持续时间,就是我们常说的“脉冲宽度”或“高电平时间”。SG90的设计约定是:如果你给我一个持续0.5毫秒(ms)的高电平脉冲,我就转到最左边(-90度);如果你给我一个持续2.5毫秒的高电平脉冲,我就转到最右边(+90度);如果给1.5毫秒,那我就停在正中间(0度)。这个0.5ms到2.5ms的范围,就是控制SG90旋转180度的全部“密码”。而香橙派AI Pro要做的,就是精确地生成这个宽度可变的脉冲。理解了这一点,你就已经掌握了舵机控制一半的精髓。另一半,则在于如何稳定、持续地发送这个“指令”,这就需要引入“周期”的概念。
2. 深入SG90技术手册:关键参数的全方位解读
网上能找到的SG90资料鱼龙混杂,参数说法不一,这常常是导致驱动失败的第一个坑。我建议你,无论如何都要找到一份相对靠谱的技术手册或规格书,哪怕只有一页。根据我手头的资料和实测验证,SG90有几个雷打不动的核心参数,我们必须像记公式一样牢记。
首先是工作电压。 SG90的标准工作电压是 4.8V ~ 6.0V。这意味着,你可以用香橙派AI Pro板载的5V引脚(比如2号或4号引脚)直接给它供电,这是最方便的方案。但这里有个细节:当你的舵机负载较重或瞬间启动时,电流可能会比较大。如果担心板载5V电源功率不足导致板子重启或舵机抖动,可以考虑使用外接的5V电源,但务必确保开发板和外部电源的“地”(GND)连接在一起,即“共地”,这是电路连接的基石。
其次是控制信号周期。 几乎所有常见的模拟舵机,包括SG90,都期望接收一个 周期为20ms的PWM信号。换算一下,20ms对应频率就是50Hz(1秒 / 0.02秒 = 50次)。为什么是20ms?这是一个行业惯例,它确保了控制指令有足够快的更新率(每秒50次),让舵机响应及时,同时又给舵机内部的反馈电路留出了处理时间。在你的代码里,这个20ms的周期必须严格遵守。有些朋友试图用更快的频率去驱动,结果就是舵机要么不转,要么发出奇怪的吱吱声并发热。
最核心的参数:脉冲宽度与角度的映射关系。 这是实现精准控制的数学基础。手册上明确写着:
- 0.5ms 脉冲宽度 —— 对应舵机位置 -90度(或0度,视初始校准而定,通常我们认为是-90度)
- 1.5ms 脉冲宽度 —— 对应舵机位置 0度(中位)
- 2.5ms 脉冲宽度 —— 对应舵机位置 +90度
这里有一个至关重要的概念:线性映射。从-90度到+90度,总共是180度的行程。对应的脉冲宽度变化是 2.5ms - 0.5ms = 2.0ms,也就是2000微秒(us)。这意味着,舵机旋转1度,所需要的脉冲宽度变化量是固定的:2000us / 180度 ≈ 11.11 us/度。这个“11.11微秒每度”就是我们的控制精度理论值。当我们想让舵机转到45度时,需要的高电平时间就是:中位脉冲1500us + (45度 * 11.11 us/度) ≈ 1500us + 500us = 2000us。这个计算过程,就是驱动代码里最核心的那行计算公式的由来。
为了更直观,我把这些关键参数和它们之间的关系整理成了下面这个表格,你可以把它当作速查手册:
| 参数项 | 典型值 | 单位 |
|---|



被折叠的 条评论
为什么被折叠?



