脈沖寬度調(diào)制 (PWM) 是一種廣泛用于控制功率的調(diào)制技術(shù)。它通常用于電機控制應(yīng)用中以控制電機的速度。Raspberry Pi 等單板計算機 (SBC) 可用于生成用于電機速度控制的 PWM 信號,但有一個限制:Raspberry Pi 上只有一個 PWM 硬件引腳可用。然而,使用Arduino 的支持 PWM 的 I/O 引腳,可以找到一種可行的解決方案,不僅適用于一個,而且適用于多個 PWM 輸出。
PWM 概述
PWM 信號是一個方波,用于電子控制系統(tǒng)中,用于控制諸如舵機位置、電機速度和 LED 亮度之類的東西。它基于兩個重要參數(shù):頻率和占空比。頻率是波形在一秒鐘內(nèi)產(chǎn)生的重復(fù)周期數(shù)。占空比表示信號高與低的時間百分比。得到的波形平均值決定了傳遞給負載的功率量。
Raspberry Pi 和 Arduino Raspberry Pi 是一款信用卡大小的微型計算機
,部分由于其計算能力、尺寸和價格 而引起了相當多的關(guān)注。Raspberry Pi 基于 Broadcom BCM2835 嵌入式多媒體應(yīng)用處理器。它配備了多個連接端口,可以通過插入電視或顯示器和 USB 鍵盤輕松操作。它還與許多操作系統(tǒng)兼容;然而,為 Raspberry Pi 量身定制的 Linux 版本 Raspbian 是最常用的操作系統(tǒng)之一。
Arduino 是一個基于單板微控制器的平臺,可為沒有經(jīng)驗和有經(jīng)驗的用戶提供嵌入式電子設(shè)計的簡單快速入門。它是一種開源硬件設(shè)計,提供模數(shù)信號轉(zhuǎn)換功能以及輸入和輸出控制以及 PWM 信號生成。Arduinos 還通過其板載 I/O 連接和可用的擴展板提供豐富的連接選項。
Raspberry Pi 上的 PWM:控制能力有限
考慮一個涉及構(gòu)建機器人汽車的任務(wù),您需要通過 Raspberry Pi 控制兩個電機,Raspberry Pi 具有 26 個通用輸入/輸出 (GPIO) 引腳。在這些引腳中,只有一個易于訪問的 PWM 輸出引腳,它不足以驅(qū)動任何需要更多控制的東西,而不僅僅是開/關(guān)功能。伺服電機和 RGB LED 不能單獨通過該引腳驅(qū)動。
增強 Raspberry Pi 的 PWM 功能的策略
已經(jīng)提出了許多解決方案來克服Raspberry Pi的這一限制。很多人為此目的使用支持 I2C(內(nèi)部集成電路)或 SPI(串行外設(shè)接口)的附件。這些設(shè)備由 Raspberry Pi 控制,它們生成 PWM 信號用于控制目的。PWM 發(fā)生器附件也可用于將支持 PWM 的輸出引腳添加到 Raspberry Pi。
正在使用的另一種方法是在其他支持 GPIO 的引腳上執(zhí)行軟件 PWM。WiringPi 庫是一個允許這種類型控制的示例庫。它使用實時調(diào)度程序通過運行單個線程來優(yōu)先生成 PWM 信號,但由于 Raspberry Pi 上使用的操作系統(tǒng)執(zhí)行多任務(wù)處理,因此該解決方案不適合,因為它提供低時序分辨率和高抖動。
Arduino:合適的解決
方案 輕松開發(fā) PWM 信號的一種解決方案是使用 Arduino 開發(fā)套件。Arduino 板有多種配置。例如,Arduino Due 有 54 個數(shù)字引腳(其中 12 個可用于 PWM 輸出)和 14 個模擬引腳。有了這么多可配置的 I/O 引腳,Arduino Due 和一般的 Arduino 板是與 Raspberry Pi 接口的外部傳感和控制板的理想選擇。
通過 USB 連接 Arduino 和 Raspberry Pi
可以通過 匹配 Raspberry Pi 和 Arduino 平臺的形式找到具有強大的 PWM 功能和高度可配置的用戶界面的解決方案?;?Arduino 的開發(fā)板可以與 Raspberry Pi 連接,以添加 PC 的功能、網(wǎng)絡(luò)的通信和多媒體工具、通過使用微控制器與環(huán)境交互的能力以及移動設(shè)備的便攜性設(shè)備。如前所述,Arduinos 是一個基于微控制器的平臺,非常適合為涉及傳感和控制的應(yīng)用程序運行代碼。連接 Raspberry Pi 和 Arduino 板的一種非常方便、低成本且可靠的方法是通過USB 電纜。 這是一個方便的解決方案,因為它需要最少數(shù)量的硬件。此外,它通常提供具有精確實時響應(yīng)的電機和電源控制,例如提供高精度和低抖動,這對于許多控制應(yīng)用很重要。
通過使用每塊板上的 USB 接口以及現(xiàn)成的 pySerial 庫,可以從 Raspberry Pi 發(fā)送命令來控制 Arduino 的多個 I/O。而且,以相反的方式,當 Arduino 讀取多種數(shù)據(jù)類型(如溫度、速度或其他需要監(jiān)控的外部數(shù)據(jù))時,串行數(shù)據(jù)可以從 Arduino 發(fā)送回 Pi。
審核編輯:郭婷
-
usb
+關(guān)注
關(guān)注
60文章
7945瀏覽量
264682 -
PWM
+關(guān)注
關(guān)注
114文章
5186瀏覽量
213956 -
Arduino
+關(guān)注
關(guān)注
188文章
6469瀏覽量
187091
發(fā)布評論請先 登錄
相關(guān)推薦
評論