一步步製作下棋機器人之硬件探索

  • 時間過得好快啊,幾周過去了。。。我的效率好低啊!
    陽春佈德澤。本是良辰美景,終是虛度光陰。

前言

  • 開始進入硬件探索階段。
  • 雖然並不鼓勵造輪子,但是想要深耕某一領域,從零開始還是必須要走的路,至少要做到能夠基礎入門。所以本次硬件會在已有的開源軟硬件基礎上,學習瞭解其運行過程和原理,然後實現複製,以後根據需要就能自行在此基礎上進行升級探索。這樣做的好處就是節省資金,因爲沒有參考的話,可能要打板多次才能實現他們已有的功能。

之前使用過多個開源無刷電機驅動器,比如 【燈哥開源】的 SimpleFOC驅動器、ODriver驅動器,以及【Makerbase】的 ODrive3.6 驅動器,但都是止步於使用和簡單的看過原理圖,沒有深入瞭解過內部的程序實現、硬件實現。實際上,使用購買的硬件和提供的程序,完全能夠滿足我們的使用需求。但是爲了深入探索和實現FOC,就算造不出輪子,也還是爭取能夠動手換個輪胎。

硬件相關

電機分類

電機有很多種類,基礎概念可以參考相關資料 電機分類及應用
另外,瞭解電機驅動,必須要瞭解譬如 極對數、KV值等知識,具體可以參考【無刷直流電機基礎知識總結

BLDC電機驅動

BLDC即(Brushless Direct Current Motor)無刷直流電機,是後面我們主要使用到的一種電機。
BLDC電機由於其設計特性,需要將直流通過電子器件轉換爲交流的方式來驅動,驅動原理可以參考無刷直流電機控制簡介,這種轉換控制的方式需要特殊的算法實現:瞭解 BLDC 電機控制算法
實際上,推薦其他更基礎和簡單的介紹,比如:直流無刷電機(BLDC)基礎知識,這裏面提到的【FOC】算法,也是後面需要深入理解和實現的控制算法。
電機基礎知識相關的視頻資料:張飛實戰電子-電機知識講解

軟件相關

FOC控制

目前BLDC控制還是有幾種算法的,但後面主要使用FOC控制算法。
FOC有很多的資料,很多都是詳細的圖文加代碼的教程:
FOC?看這篇文章就夠了
FOC算法入門
使用的【燈哥開源】的硬件也有對應的算法教程視頻:燈哥手把手教你寫FOC算法 系列課程 ,這個教程主要使用了arduino環境。實際上,使用arduino環境可以很快的燒寫他寫好的示例代碼,運行設備。但是此處爲了深入學習FOC電機控制算法,我會使用C語言環境進行編寫和測試。

以下是比較出名的開源FOC驅動體系,SimpleFOC和ODriver。

SimpleFOC

Simple FOC是國外無刷電機愛好者,創立的一個開源無刷電機FOC控制項目。

SimpleFOC中文官網
主要基於Arduino。

ODriver

  • oDriver也是外國的基於FOC的開源作品,包含軟硬件。經過多年發展,目前已經支持多種接口、多種傳感器。支持實時繪製參數曲線等豐富功能。
    ODriver官網

參考設備使用

1:設備介紹

此處使用的是【燈哥開源】的 【燈哥開源 雙路無刷 微型FOC V3P 帶電流環 深度改進SimpleFOC】開發板套裝,包含 【FOC全能套裝】和【2208電機套裝】。

公司還有他家的【燈哥FOC ODrive大電流 深度改進高性能 ODrive單路 基於ODrive3.6 】版本和【Makerbase ODrive3.6 FOC BLDC 伺服 雙電機控制器】,在應用層上都有完整的入門使用教程,跟着教程走即可。

使用他們的電機,按照教程調節參數即可,使用自己的電機,則需要根據電機參數自行配置設備參數。比如使用 【Makerbase】這款驅動器驅動一款大功率無刷電機時,走到最後一步時沒調通,後續由於時間關係也沒有繼續調試。

這款設備主要使用ESP32爲驅動核心,編程環境爲【Arduino】
ESP32】是一款偏重於物聯網領域的高度集成和豐富外設的MCU(單片機),自帶wifi和藍牙(有些型號並不同時具備)。設備使用的ESP32的型號屬於ESP32-D0WD,屬於較早的型號,資源較多,應用豐富,最新的還有S、C、H等系列,可以自行在【樂鑫】官網查找和下載對應資料。
Arduino】是一款便捷靈活、方便上手的開源電子原型平臺,包含硬件(各種型號的Arduino板)和軟件(ArduinoIDE),以及衍生的規範化的可拓展硬件,可以通過簡單的插接和簡單的編程代碼就能實現豐富的應用,非常適合入門學習。由於其入門開銷低、受衆廣泛、資源和教程較多、拓展簡單等原因,在國內外都很受歡迎。
不過,並不推薦使用【ArduinoIDE】,因爲它非常不好用,只適合敲一些簡單的代碼,無法實現追蹤定位代碼等一些必要的功能。可以使用【VisualCode】作爲開發IDE來開發【Arduino】。但後面Arduino只作爲體驗設備所提供的例程來偶爾使用,所以此處不做過多介紹。後面會簡單的介紹一下環境的安裝。

2:設備資料

我們使用的這款設備是有不少教程資料的,資料如下:
SimpleFOCDocs
燈哥手把手教你寫FOC算法 系列課程】等,還有一些資料和參考代碼都在賣家提供的QQ羣文件中,可以自行搜索添加並下載。

設備運行測試

這款設備主要運行環境爲【Arduino】,有官方的rduinoIDE,推薦使用VSCode來搭建Arduino環境,這個編輯器更適合人類。
因爲後面寫程序不會用到,所以此處不做過多介紹。但是爲了體驗示例代碼,此處還是搭建一下環境,只簡單介紹一下ArduinoIDE的搭建流程,至於VSCode的搭建流程,請自行實現。
可以到提供的QQ羣下載資料,裏面有搭建好環境的【ArduinoIDE】,可以直接使用。但是很大,下載很慢,所以此處展示一下如何自己搭建最小系統。教程在他們提供的文檔中【SimpleFOCDocs】。

  • 1:下載最新版:【Arduino官網下載地址
  • 2:在 【工具 -> 管理庫】 中搜索並安裝 【Simple FOC】庫,然後就能在【文件->示例】中找到相關的示例代碼
  • 3:安裝ESP32 2.0.4的庫,方法如下:
    • 在 【ArduinoIDE】的 【文件->首選項】 的 其他開發板管理器地址 中填入 【 https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json 】,然後在 【工具->開發板->開發板管理器】中搜索 ESP32,選擇2.0.4版本(目前最新版本是2.0.9,實測發現安裝不通過)後安裝。注意,這部分可能需要科學的上網(FQ)才能正確安裝。
  • 安裝完成後,插上設備的ESP32的數據線到電腦上,在【工具->開發板->ESP32】中選擇【WEMOS LOLIN32 Lite】,在【工具->端口】中選擇正確的串口。可以任選一個simpleFOC的示例代碼進行編譯測試,編譯通過即表示安裝正確。也可以使用【燈哥開源】提供的示例代碼進行編譯下載測試了。具體的arduino使用過程不做贅述。

所用的這款FOC開發板提供如下開發源碼:
image
按照教程,裝好電機,接好線,供給合適的電源電壓,即可進行燒錄測試。此處電源使用的是正點原子的小型數字電源,供給16V電壓。
比如燒錄 7_雙電機閉環位置力矩互控 ,即可實現旋轉其中一個電機,另一個跟隨轉動。
從他的資料中,我們也可以簡單的看出電機控制的幾個重點:位置、速度、力矩,電流。

程序環境

IDE環境搭建

由於Arduino的特性,我不是很喜歡使用,所以後續我會先在當前購買的硬件基礎上編寫非Arduino的程序,並考慮移植,爭取能夠移植到其他MCU上。
關於ESP32的IDF原生C語言開發環境,可以參考我以前寫過的有關ESP32的IDF環境的搭建教程【ESP32 環境搭建以及入門編程流程和體驗-windows】,此教程編寫的時間較早,可能與最新版本有些出入,請自行分辨。由於我的電腦上安裝過環境(不是教程中的老版本,但也應該不是最新版本了),所以此處不再贅述。
由於官方的ESP-IDF開發框架是針對ESP系列獨有的,無法移植,考慮到移植性,我會在程序中儘可能的再抽象一層,以方便後續移植使用(如果實在不行,後續就也使用ESP32作爲驅動芯片,哈哈)

IDF框架

ESP-IDF 是樂鑫官方的物聯網開發框架,適用於 ESP32、ESP32-S、ESP32-C 和 ESP32-H 系列 SoC。它基於 C/C++ 語言提供了一個自給自足的 SDK,方便用戶在這些平臺上開發通用應用程序。ESP-IDF 目前已服務支持數以億計的物聯網設備,並已開發構建了多種物聯網產品,例如照明、消費電子大小家電、支付終端、工控等各類物聯網設備。

有關ESP32的資源,包括手冊、原理圖、開發文檔等都可以在【樂鑫官網】中找到,他們提供的資源還是很豐富的,比如官方的編程指南文檔:
IDF編程指南

硬件分析:

學習和使用一款硬件設備,直接分析原理圖是最快速的。購買的設備提供底板的原理圖。
購買的驅動板是雙路版本的,即能同時驅動兩個電機,所以原理圖上是兩路的。
注意,下面分析的原理圖出自【燈哥開源】的【 雙路無刷 微型FOC V3P 】版本驅動板。
另外,關於硬件芯片的手冊,請自行查找,此處不再放出。

電源部分

image
使用一款 最大28V輸入電壓、最大3A輸出電流的DCDC穩壓器 【TPS54331】來將外部電壓轉爲5V,再由【AMS1117】轉爲3.3V。

電機驅動電路

image
使用兩顆 EG2133柵極驅動專用芯片來驅動每路6個共計12個MOS管,實現電機運動的控制。

  • EG2133 是一款高性價比的大功率 MOS 管、IGBT 管柵極驅動專用芯片,內部集成了邏輯信號輸入處理電路、死區時控制電路、閉鎖電路、電平位移電路、脈衝濾波電路及輸出驅動電路。
  • WSD3066DN33 :30V,50A,N溝道場效應管(MOSFET)。
    MOS管兩個一組,每路電機需要三組,實現電機換項的算法,具體實現原理可以參考之前提到的資料:
    image

電流檢測接口

image
使用每路兩顆,共計4顆INA240芯片來獲取電機的電流。也就是說,每路電機只檢測兩項電流就能得出需要的電流檢測結果。

  • INA240 器件是一款電壓輸出、電流檢測放大器,具有增強型 PWM 抑制功能,可在獨立於電源電壓的 –4V至 80V 寬共模電壓範圍內檢測分流器電阻上的壓降。

各項接口

image

一個ESP32接口,兩路引出的IIC接口和一路串口接口,兩路三相電機接口。
ESP32使用的是 WEMOS Lite 1.0.0 模塊。
兩路IIC接口主要用於接外部編碼器傳感器,用於獲取電機運動角度。設備配套的磁編碼器型號是 AS5600 ,需要在電機的轉動軸上粘一個圓形的磁鐵配套使用。

  • AS5600 是一個易於編程的磁性旋轉位置傳感器,具有高分辨率的12位模擬或PWM輸出。這種非接觸式系統測量一個直徑磁化的軸上磁鐵的絕對角度。

總結

至此,電機相關的基礎知識和驅動知識瞭解完畢,可以開始FOC的實現了。
完成FOC的實現後,就可以真正的着手搭建機械臂了。

  • 本文水平有限,內容很多詞語由於知識水平問題不嚴謹或很離譜,但主要作爲記錄作用,希望以後的自己和路過的大神對必要的錯誤提出批評與指點,對可笑的錯誤請指出來,我會改正的。
  • 另外,轉載使用請註明作者和出處,不要刪除文檔中的關於作者的註釋。

隨夢,隨心,隨願,恆執念,爲夢執戰,執戰蒼天! ------------------執念執戰

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章