FPGA 和 Arduino 推動馬達控制
任何工程師若曾設計能推、拉、轉動或旋轉的機電系統,就必然熟悉馬達控制。其應用非常廣泛,即使是簡單的微控制器 (MCU) 也能提供充足的時脈速度和訊號處理性能,以各種速度和負載來驅動複雜的馬達。
但是這些實用的 MCU 的效能極限究竟有多高?如果用高解析度正交編碼器來測量馬達速度或方向,效能足夠嗎?如果需要一次驅動多個馬達呢?
隆重向您介紹六足機器人 Hexy(圖 1)。Hexy 是 ArcBotics 的低成本 Arduino 型機器人套件。此機器人的六支腳各有三個伺服馬達,加上頭上一個,總共 19 個伺服馬達。
由於 Hexy 是專為 Arduino 社群所設計,因此能相容多款 8 至 32 位元的 MCU。這些 MCU 在依序驅動 Hexy 足部馬達等簡單工作中展現優異效能。然而使用正交編碼器的系統均會導入中斷服務常式,屆時這些 MCU 的效能就顯然不足。
在這些較複雜的使用案例中,採用的解決方案之一是 FPGA 加速器。
省去撰寫程式的麻煩
FPGA 的主要優點即是可重新編程,滿足個別應用的確切需求。FPGA 結構可進行最佳化,以提供馬達驅動 PWM 訊號實際所需的確定性、控制與抖動。同時,亦可設定更多 FPGA 邏輯區塊來支援額外馬達,提供其他嵌入式處理器架構所無法實現的平行處理效能。
事實上,FPGA 正是因為能夠確切依照系統需求加以設定,所以在馬達控制應用上,更勝於強大的高端馬達控制 MCU、DSP 與 ASIC。
影片 1 為 Hexy 機器人使用 8 位元和 32 位元 MCU 來示範馬達控制。如您所見,開始導入 50 微秒中斷時,機器人手臂動作就不再順暢;因為此時 MCU 負擔太多並行工作,無法補償可以驅動伺服馬達的 PWM 訊號抖動。
影片 1. 馬達控制示範,Hexy 機器人上的 8 位元和 32 位元 MCU 難以順利執行並行工作。(資料來源:Alorium Technology)
這段影片接著示範 FPGA 在複雜、中斷式多馬達驅動使用案例中,能夠有效進行精準的平行處理。單一 FPGA 即可驅動多個馬達,同時讀取及處理正交資料,無需使用多個處理器或控制板。如此可降低設計成本、耗電量和系統大小。
但是 FPGA 程式設計向來令工程師卻步。這是因為 VHDL 和 Verilog 這兩種描述 FPGA 結構的硬體描述語言 (HDL) 均屬於電子設計自動化 (EDA) 的設計典範。
這些語言的運作方式與一般軟體不同。若要將 HDL 程式碼轉換為可定義邏輯閘道、產生位元流等功能的設計實作,就會需要複雜的邏輯合成工具。
對大多數工程團隊來說,是否使用 FPGA 的決定是個兩難的抉擇;雖可獲得平行處理與效能提升的效益,但同時卻必須面對複雜的程式設計。一家為無人航空載具 (UAV) 設計自訂 BLDC 馬達控制應用程式的公司,就發現自己面臨此一抉擇。
該公司為兼顧兩全,決定與開發 FPGA 加速嵌入式解決方案的 Alorium Technology 成為合作夥伴。
增強型自訂 BLDC 馬達控制
該家 UAV 公司開始根據 MCU 架構來設計 BLDC 系統,並使用 Arduino IDE 來編寫和測試馬達控制軟體。此一應用需要能在各種高速下運轉馬達的處理元件,並且還要能夠讀取感測器資料。由於系統變得過於複雜而無法在 MCU 上執行,最後決定移轉至自訂硬體。
然而此決定卻有一大問題,該公司的程式碼都在 Arduino 環境下設計,且均為 Arduino 環境所設計。這代表馬達控制系統無論採用何種運算架構,都必須能以高效率執行 Arduino 的簡化 C++ 程式碼。
該公司最終採用 Alorium Technology 的 XLR8 開發板(圖 2)。XLR8 是 Arduino 可程式化且採用 FPGA 架構的原型設計平台,內建 8 位元 AVR MCU。這張主機板是外型規格與針腳均相容的 Arduino Uno 替代品。該 UAV 工程公司成功將此主機板納入其設計,也能立即執行原有的程式碼。
XLR8 FPGA 結構採用 Intel® MAX® 10 FPGA,具有 8,000 個邏輯元件 (LE) 及 500 個邏輯陣列區塊 (LAB)。其最大操作頻率為 450 MHz,即使是最複雜的馬達控制應用也能提供充足馬力。
MAX 10 亦能夠原生整合快閃記憶體、ADC、數位和類比 I/O 及其他元件,使其成為符合成本效益且能部屬於工業應用的解決方案(圖 3)。
但是讓 XLR8 開發板廣受 UAV BLDC 自訂設計歡迎的理由,在於其具有特定功能的 Xcelerator Block (XB)。將 XB 整合至 MAX 10 FPGA 結構,以便將特定功能的效能最佳化,例如伺服控制、正交編碼、類比至數位轉換、浮點運算等等。
XB 透過可定址的暫存器介面與 AVR MCU 通訊(圖 4)。也因為 Arduino IDE 可安裝 Alorium 提供的 XB 程式庫,讓使用者可透過標準 API 呼叫來存取功能。這一切均不需要修改程式碼。系統甚至可透過 Arduino IDE 更新 FPGA 影像。
為支援 BLDC 應用的獨特控制演算法,硬體需使用自訂規格。Alorium 客戶可使用名為 OpenXLR8 的開發方法來建立自己的特化 XB。這雖然需要 VHDL 或 Verilog 程式設計,但有為使用者提供範本化的環境。它甚至能產生相容於 Arduino 的 .RPD 檔案。
在本例的 UAV 專案中,Alorium 即協助開發多個自訂硬體區塊。其中包括:
- 可解讀無線電控制裝置的傳入訊號之 RC 輸入 XB
- 實施可設定 PWM 和三相正弦波 PWM 的 PWM XB
- 可在訊號傳送至馬達控制 XB 之前先進行靜態調整的霍爾效應感測器 XB
- 可根據馬達速度動態調整系統的能力
- 專屬區塊
因為新增的 BLDC 功能需要更多 FPGA 結構,所以該 UAV 設計最後改用 Alorium 的高效能 Snō FPGA 模組。Snō 屬於生產級規格,支援 8 位元 MCU 和 Arduino 相容性。同時還能將 FPGA 升級至具有 16k LE 的 MAX® 10。
就在該 UAV 系統接近生產階段之時,還發現其需要抵擋高電壓切換所造成的訊號雜訊。為解決此問題,Alorium 為 Snō 模組開發了名為 AT10 的雜訊免疫載板(圖 5)。
製造廠到專家均適用
這個 UAV BLDC 案例研究是個優秀的例子,呈現開放原始碼的教育硬體如何獲得專業工程社群的認同。
除了此應用之外,Alorium 也有許多來自測試、測量和科學儀器等產業的客戶,其資料擷取與訊號處理系統需要極高的保真度。若要在擴張規模的同時滿足多種特定的使用需求,則硬體平台必須具備彈性。由於這些系統的主要使用者是科學家與領域專家,因此新手必須能夠迅速精通平台軟體技術。
透過高效能、低成本、相容於 Arduino 的 FPGA 解決方案,業界已將可程式化邏輯技術大眾化。在部分情況下,這些解決方案的可得性將促成快速創新。至於其他場合,則能提供更有效率、更經濟實惠的可擴充方法,用於解決既有的挑戰。
若要下載 XLR8 影像、XB 和應用說明,請造訪 Alorium Technology 的 Github。