电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>使用Python进行伺服PWM控制的MaaxBoard设置

使用Python进行伺服PWM控制的MaaxBoard设置

2022-12-15 | zip | 0.60 MB | 次下载 | 免费

资料介绍

描述

介绍

这些是有关如何设置 MaaXBoard 以使用精确的 PWM 外部附加卡驱动多个伺服系统的分步说明。

目标是能够使用 Python 控制这些电机我们将重用最初由Adafruit的 Tony DiCola 为 RaspberryPi 编写的代码(感谢 Tony)。只需进行少量修改,即可在 MaaXBoard 上运行一切。

先决条件:

首先在这里完成 MaaXBoard 无头设置

组件列表

除了电路板本身,我们还需要一些外部部件:

PCA9685伺服驱动器

外部控制将使用 PCA9685 芯片,该芯片允许利用单个 I2C 总线控制多达 16 个独立通道(即 16 个伺服)。有多个为 Raspberry Pi 制造的带有 PCA9685 的防护罩。我们可以使用Adafruit 的盾牌,或者作为替代方案WaveShare 的盾牌

GPIO 适配器(可选)

由于 MaaxBoard 上的散热器非常高,如果您使用 WaveShare 的屏蔽罩,您可能还需要一个适配器来安装它。我们可以为树莓派使用GPIO 立管直角 GPIO 适配器这将允许“垂直”安装任何外部屏蔽,如果您在 MaaxBoard 散热器上安装了风扇,这将更加方便。

伺服电机

在为您的项目选择伺服电机的类型时,您需要注意您使用的电机类型。标准标签很少(SG90、MG90S、MG995、MG996R 等),但 PCA9685 兼容大多数变体。

集会

一旦你有了所有的零件,你需要安装伺服驱动器并将伺服器连接到它上面。

pYYBAGOX-XeAeta7AAKen8CFk7A712.png
来自 https://learn.adafruit.com/assets/69564
 

注意:Adafruit 的防护罩与 Waveshare 的防护罩不同。Waveshare 版本使用板载 5V/3A 稳压器为舵机供电(最终使用电池作为备用电源),而 Adafruit 版本让您可以灵活地使用外部电源为舵机提供 5V 电压。如果您计划使用多个伺服系统(最多 16 个),Adafruit 版本可能是更好的选择,因为您不会直接从树莓电源 (5V) 为伺服系统供电。

软件安装

I2c工具

连接屏蔽后,我们需要确保硬件已被识别。为此,我们需要安装i2ctools 包通过 SSH 连接到您的开发板并安装软件包

sudo apt install i2c-tools

为了允许我们的用户在不使用 sudo 的情况下访问 i2c-dev hw,我们需要添加一个自定义规则。我们首先创建一个自定义规则文件

sudo touch /etc/udev/rules.d/50-i2c.rules

然后使用 nano 编辑器编辑文件:

sudo nano /etc/udev/rules.d/50-i2c.rules

并确保内容如下

SUBSYSTEM=="i2c-dev", GROUP="i2c", MODE="0660"

现在我们将用户添加到“i2c”组并设置权限:

sudo adduser ebv i2c
sudo chmod g+rw /dev/i2c-*
sudo reboot

重新启动板后,通过 ssh 连接到它并检查是否检测到屏蔽。跑:

sudo i2cdetect -y 1

i2cdetect 的输出(对于 /dev/i2c-dev-1)应如下所示:

poYBAGOX-XmAWQt8AAA3If9Chc8496.png
 

Python 库

要将设备与 Python 一起使用,我们需要安装一些库。

sudo apt install git build-essential python-dev

Adafruit 库

要使用 Python 控制 GPIO 和 PWM,我们需要直接从 GitHub 下载 Adafruit 的三个库。创建一个工作文件夹并将库拉入其中。

cd ~/
mkdir example
cd example
git clone https://github.com/adafruit/Adafruit_Python_PureIO.git
git clone https://github.com/adafruit/Adafruit_Python_GPIO.git
git clone https://github.com/adafruit/Adafruit_Python_PCA9685.git

安装树,以便您可以检查目录:

sudo apt install tree

现在打印目录树:

tree -d

示例目录的树应如下所示:

pYYBAGOX-XuAJjOfAAAltaYnsWs034.png
 

需要修改 Adafruit 库才能在 MaaxBoard 上运行。幸运的是,这只是一个小改动。像这样创建“测试”文件夹:

cd ~/
cd example
mkdir test
cd test

创建我们将用于我们的简单测试 Python 应用程序的实际 Python 库的符号链接:

ln -s ../Adafruit_Python_GPIO/Adafruit_GPIO/ .
ln -s ../Adafruit_Python_PureIO/Adafruit_PureIO/ .
ln -s ../Adafruit_Python_PCA9685/Adafruit_PCA9685/ .

注意:我们也可以编译和安装这些库(系统范围安装),但是这样做允许我们直接修改代码并逐个使用它。

现在我们需要修改 GPIO 库的两个文件,以确保 MaaXBoard 被识别为 linux 系统(就像它是 RaspberryPi 一样)。

要修改的两个文件是I2C.pyPlatform.Py

使用 nano 打开 I2C.py:

cd Adafruit_GPIO
nano I2C.py

我们需要通过添加粗体的 elif 语句在 get_default_bus() (大约第 40 行)函数中添加一行:

elif plat == Platform.BEAGLEBONE_BLACK:

# Beaglebone Black has multiple I2C buses, default to 1 (P9_19 and P9_20).

return 1

elif plat == Platform.MAAXBOARD:

return 1

对于 Platform.py,我们需要再添加一个定义来选择 MAAXBOARD。还是在 test/Adafruit_GPIO 目录下,在 nano 中打开 Platform.py:

nano Platform.py

在下面添加粗体行(第 24 行附近):

# Platform identification constants.

UNKNOWN = 0

RASPBERRY_PI = 1

BEAGLEBONE_BLACK = 2

MINNOWBOARD = 3

JETSON_NANO = 4

MAAXBOARD = 5

在 def platform_detect() 函数中,添加粗线:

...

# Handle Beaglebone Black

# TODO: Check the Beaglebone Black /proc/cpuinfo value instead of reading

# the platform.

plat = platform.platform()

print(plat)

if plat.lower().find('armv7l-with-debian') > -1:

return BEAGLEBONE_BLACK

...

elif plat.lower().find('tegra-aarch64-with-ubuntu') > -1:

return JETSON_NANO

elif plat.lower().find('aarch64-with-debian') > -1:

return MAAXBOARD

...

最终 Platform.py 应如下所示:

poYBAGOX-X2AGAowAACvw80DW9Y470.png
 

Python 应用程序

现在我们准备使用 Adafruit 提供的示例之一。由于 Python 代码的可移植性,这里不需要修改。我们将simpletest.py文件复制到我们的测试目录中:

cd example
cp Adafruit_Python_PCA9685/examples/simpletest.py test

执行测试文件。

cd example/test
python ./simpletest.py

如果一切正常,您的伺服电机将移动,直到您使用 CTRL-C 退出脚本。

注意:在本例中,我们控制的是 N.0 通道,因此请确保将您的伺服器连接到屏蔽位置零的编号接头。

结论

现在,您可以控制多个伺服电机,用于您的机械装配,例如云台变焦或电子动画或工业原型。当您计划在外部屏蔽上使用多个伺服时,请始终确保控制伺服类型和最大额定电流,最终添加一个专用于伺服屏蔽的特定电源。


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费