国外课栈 - 跨学科知识视角栈

Python 控制 Raspberry Pi 云台多舵机

 二维码 6
文章附图

多舵机控制,使用 Python 和云台机制构造进行 Raspberry Pi 相机定位。

所需材料

在本教程中,我们将探索如何在 Raspberry Pi 上使用 Python 控制多个舵机。我们的目标是使用云台机制来定位相机(PiCam)。


如下最终结果:

PWM 工作原理

Raspberry Pi 没有模拟输出,但我们可以使用 PWM(脉宽调制)方法模拟这一点。 我们要做的是生成一个具有固定频率的数字信号,我们将改变脉冲序列宽度,将“转换”为“平均”输出电压电平,如下所示:


我们可以使用这个“平均”电压电平来控制 LED 亮度,例如:


请注意,这里重要的不是频率本身,而是“占空比”,即脉冲“高”的时间除以波周期之间的关系。 例如,假设我们将在我们的 Raspberry Pi GPIO 之一上生成 50Hz 的脉冲频率。 周期 (p) 将是频率或 20 毫秒 (1/f) 的倒数。 如果我们希望我们的 LED 具有“半”亮,我们必须有 50% 的占空比,这意味着“脉冲”将“高”持续 10 毫秒。


这个原则对我们来说非常重要,控制我们的舵机位置,一旦“占空比”将定义舵机位置,如下所示:

硬件安装

舵机将连接到外部 5V 电源,将它们的数据引脚(在我的情况下,它们的黄色接线)连接到 Raspberry Pi GPIO,如下所示:


您可以选择在 Raspberry Pi GPIO 和服务器数据输入引脚之间连接一个 1K 欧姆的电阻器。如果出现伺服问题,这将保护您的 RPi。

伺服校准

首先要做的是确认伺服系统的主要特性。我使用的是 Power Pro SG90。


从它的数据表中,我们可以考虑:

  • 范围:180°

  • 电源:4.8V(外部5VDC作为USB电源工作正常)

  • 工作频率:50Hz(周期:20ms)

  • 脉冲宽度:从1ms到2ms

理论上,伺服将在其

  • 当 1ms 的脉冲施加到其数据终端时的初始位置(0 度)

  • 将 1.5 ms 的脉冲施加到其数据终端时的中立位置(90 度)

  • 当 2 ms 的脉冲施加到其数据终端时的最终位置(180 度)

Python 控制脚本

云台控制机制

云台机械结构

云台电气组装

源代码


阅读完整文档