脉冲宽度调制 (PWM) 是一种广泛用于控制功率的调制技术。它通常用于电机控制应用中以控制电机的速度。Raspberry Pi 等单板计算机 (SBC) 可用于生成用于电机速度控制的 PWM 信号,但有一个限制:Raspberry Pi 上只有一个 PWM 硬件引脚可用。然而,使用Arduino 的支持 PWM 的 I/O 引脚,可以找到一种可行的解决方案,不仅适用于一个,而且适用于多个 PWM 输出。
PWM 概述
PWM 信号是一个方波,用于电子控制系统中,用于控制诸如舵机位置、电机速度和 LED 亮度之类的东西。它基于两个重要参数:频率和占空比。频率是波形在一秒钟内产生的重复周期数。占空比表示信号高与低的时间百分比。得到的波形平均值决定了传递给负载的功率量。
Raspberry Pi 和 Arduino Raspberry Pi 是一款信用卡大小的微型计算机
,部分由于其计算能力、尺寸和价格 而引起了相当多的关注。Raspberry Pi 基于 Broadcom BCM2835 嵌入式多媒体应用处理器。它配备了多个连接端口,可以通过插入电视或显示器和 USB 键盘轻松操作。它还与许多操作系统兼容;然而,为 Raspberry Pi 量身定制的 Linux 版本 Raspbian 是最常用的操作系统之一。
Arduino 是一个基于单板微控制器的平台,可为没有经验和有经验的用户提供嵌入式电子设计的简单快速入门。它是一种开源硬件设计,提供模数信号转换功能以及输入和输出控制以及 PWM 信号生成。Arduinos 还通过其板载 I/O 连接和可用的扩展板提供丰富的连接选项。
Raspberry Pi 上的 PWM:控制能力有限
考虑一个涉及构建机器人汽车的任务,您需要通过 Raspberry Pi 控制两个电机,Raspberry Pi 具有 26 个通用输入/输出 (GPIO) 引脚。在这些引脚中,只有一个易于访问的 PWM 输出引脚,它不足以驱动任何需要更多控制的东西,而不仅仅是开/关功能。伺服电机和 RGB LED 不能单独通过该引脚驱动。
增强 Raspberry Pi 的 PWM 功能的策略
已经提出了许多解决方案来克服Raspberry Pi的这一限制。很多人为此目的使用支持 I2C(内部集成电路)或 SPI(串行外设接口)的附件。这些设备由 Raspberry Pi 控制,它们生成 PWM 信号用于控制目的。PWM 发生器附件也可用于将支持 PWM 的输出引脚添加到 Raspberry Pi。
正在使用的另一种方法是在其他支持 GPIO 的引脚上执行软件 PWM。WiringPi 库是一个允许这种类型控制的示例库。它使用实时调度程序通过运行各个线程来优先生成 PWM 信号,但由于 Raspberry Pi 上使用的操作系统执行多任务处理,因此该解决方案不适合,因为它提供了低时序分辨率和高抖动。
Arduino:合适的解决
方案 轻松开发 PWM 信号的一种解决方案是使用 Arduino 开发套件。Arduino 板有多种配置。例如,Arduino Due 有 54 个数字引脚(其中 12 个可用于 PWM 输出)和 14 个模拟引脚。有了这么多可配置的 I/O 引脚,Arduino Due 和一般的 Arduino 板是与 Raspberry Pi 接口的外部传感和控制板的理想选择。
通过 USB 连接 Arduino 和 Raspberry Pi
可以通过 匹配 Raspberry Pi 和 Arduino 平台的形式找到具有强大的 PWM 功能和高度可配置的用户界面的解决方案。基于 Arduino 的开发板可以与 Raspberry Pi 连接,以添加 PC 的功能、网络的通信和多媒体工具、通过使用微控制器与环境交互的能力以及移动设备的便携性设备。如前所述,Arduinos 是一个基于微控制器的平台,非常适合为涉及传感和控制的应用程序运行代码。连接 Raspberry Pi 和 Arduino 板的一种非常方便、低成本且可靠的方法是通过USB 电缆。 这是一个方便的解决方案,因为它需要最少数量的硬件。此外,它通常提供具有精确实时响应的电机和电源控制,例如提供高精度和低抖动,这对于许多控制应用很重要。
通过使用每块板上的 USB 接口以及现成的 pySerial 库,可以从 Raspberry Pi 发送命令来控制 Arduino 的多个 I/O。而且,以相反的方式,当 Arduino 读取多种数据类型(如温度、速度或其他需要监控的外部数据)时,串行数据可以从 Arduino 发送回 Pi。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !