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

所需材料

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

如下最终结果:

PWM 工作原理

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

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

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

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

硬件安装

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

  • GPIO 17 ==> 倾斜伺服
  • GPIO 27 ==> 平移伺服

不要忘记将 GND 连接在一起 ==> Raspberry Pi - 伺服 - 外部电源。

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

伺服校准

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

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

  • 范围:python控制tplink摄像头 python控制摄像头云台_python控制tplink摄像头
  • 电源:4.8V(外部5VDC作为USB电源工作正常)
  • 工作频率:50Hz(周期:20ms)
  • 脉冲宽度:从1ms到2ms

理论上,伺服将在其

  • 当 1ms 的脉冲施加到其数据终端时的初始位置(0 度)
  • 将 1.5 ms 的脉冲施加到其数据终端时的中立位置(90 度)
  • 当 2 ms 的脉冲施加到其数据终端时的最终位置(180 度)

Python 控制脚本

云台控制机制

云台机械结构

云台电气组装

源代码