如何使用Arduino開發板控制無刷直流電機(BLDC)

2021-02-19 一板網電子技術論壇

製作一些小物件,並且讓它們按照自己想要的方式,這一直是一項非常有趣的事情。在達成一致意見的同時,製作飛行器會讓業餘愛好者顯得不是那麼很自信。這裡,我所說的是滑翔機、直升機、飛機和多功能運輸機。今天,由於在線提供社區的支持,很容易自己製作一個類似的產品。在這些飛行器中,它們都使用BLDC電機,那麼什麼是BLDC電機?為什麼我們需要它來飛行?有什麼特別之處呢?如何購買合適的電機並與控制器連接?什麼是ESC,我們為什麼要使用它?如果您有這些問題,那麼本篇文章可以解決您所有的疑惑。

因此,在本篇文章中,我們將使用Arduino開發板和20A電子速度控制器(ESC)控制A2212 / 1T無感BLDC外轉子電機(通常用於製作無人機)的速度。

所需的材料

●    A2212 / 13T BLDC電機

●    ESC控制器(20A)

●    電源(12V 20A)

●    Arduino開發板

●    電位器

了解BLDC電機

BLDC電機表示無刷直流電機,由於其平穩運行,常用於吊扇和電動汽車。與其他電機不同,BLDC電機引出來三根導線,每根導線形成自己的相位,因此對於我們來說,它是一個三相電機。

是的,雖然BLDC電機被認為是直流電機,它們工作在脈衝波模式下。電子速度控制器(ESC)將來自電池的直流電壓轉換為脈衝,並將其提供給電機的3根電線。在任何給定時間,只有兩相電動機將被供電,因此電流通過一相進入並通過另一相。在此過程中,電動機內的線圈通電,因此轉子上的磁鐵自身與通電線圈對齊。接下來的兩根導線由ESC通電,繼續該過程使電機旋轉。電動機的速度取決於線圈通電的速度,電動機的方向取決於線圈通電的順序。我們將在本文後面詳細了解ESC。

有許多類型的BLDC電機可供選擇,讓我們來看看最常見的分類。

●    內轉子和外轉子BLDC電機:內轉子BLDC電機的工作方式與其他電機相同。也就是說,電機內部的軸旋轉,而外殼保持固定。外轉子BLDC電機正好相反,電機的外殼隨著軸一起旋轉,而線圈內部保持固定。外轉子電機在電動自行車中是非常有優勢的,因為外殼(旋轉的外殼)本身被製成輪胎的輪輞,因此避免了聯接機構。此外,外轉子電機往往比內轉子電機提供更大的扭矩,因此它成為EV和無人機的理想選擇。我們在這裡使用的電機也是外轉子電機。

注意:還有另一種電機,稱為無芯BLDC電機,也用於袖珍無人機,它們的工作原理不同,本篇文章不對其進行介紹。

●    有傳感器和無傳感器BLDC電機:對於無需任何加速度即可旋轉的BLDC電機,需要一個反饋信號。也就是說,ESC必須知道轉子中磁鐵的位置和極點,以便據此激勵定子。這些信息可以通過兩種方式獲得:一種是將霍爾傳感器放在電機內。霍爾傳感器將檢測磁鐵並將信息發送到ESC,這種類型的電機稱為Sensord BLDC電機,用於電動車輛。第二種方法是通過使用線圈在磁鐵交叉時產生的反電動勢,這不需要額外的硬體或電線,相線本身用作反饋來檢查反電動勢。我們的電機使用的是這種方法,常用於無人機和其他飛行項目。

為什麼無人機和其他多功能直升機使用BLDC電機?

從四輪直升機到直升機以及滑翔機,有很多類型的無人機,所有這些飛行器都有一個共同的硬體。那就是BLDC電機,但為什麼呢?為什麼他們使用比直流電機貴一些的BLDC電機?

這有很多正當理由,其中一個主要原因是這些電機提供的扭矩非常高,這對於快速獲得/鬆動推力來起飛或降落無人機非常重要。這些電動機也可用作外圈,再次增加了電動機的推力。選擇BLDC電機的另一個原因是它的平穩振動操作較少,這對我們的無人機在半空中穩定非常理想。

BLDC電機的功率重量比非常高。這一點非常重要,因為無人機上使用的電機應具有高功率(高速和高扭矩),但重量也應較小。可以提供與BLDC電機相同的轉矩和速度的直流電動機將是BLDC電動機的兩倍重量。

為什麼我們需要一個ESC,它的作用是什麼?

我們知道每個BLDC電機都需要某種控制器來將電池的直流電壓轉換成脈衝,為電機的相線供電。該控制器稱為ESC,表示電子速度控制器。控制器的主要職責是按順序激勵BLDC電機的相線,以便電機旋轉。這是通過檢測每根導線的反電動勢來完成的,並在磁鐵穿過線圈時準確地激勵線圈。所以ESC內部有很多硬體亮點,我們這裡不打算詳細介紹。但是要提一下它有速度控制器和電池消除器電路。

●    基於PWM的速度控制:ESC可以通過讀取橙色線上提供的PWM信號來控制BLDC電機的速度。它的工作原理與伺服電機非常相似,所提供的PWM信號應具有20ms的周期,並且可以改變佔空比以改變BLDC電機的速度。由於同樣的邏輯也適用於伺服電機來控制位置,我們可以在Arduino程序中使用相同的伺服庫。

●    電池消除電路(BEC):幾乎所有ESC都配有電池消除電路。顧名思義,這個電路不需要為微控制器提供單獨的電池,在這種情況下,我們不需要單獨的電源為Arduino供電; ESC本身將提供一個+ 5V的穩壓電源,可以用來為我們的Arduino供電。有許多類型的電路可以調節這個電壓,通常它會對廉價的ESC進行線性調節,但你也可以找到帶開關電路的電路。

●    固件:每個ESC都有一個由製造商寫入的固件程序。該固件極大地決定了您的ESC如何響應;一些流行的固件是Traditional、Simon-K和BL-Heli。該固件也是用戶可編程的,但我們在本教程中不會涉及到大部分內容。

Arduino開發板控制BLDC電機的連接原理圖

BLDC電機與Arduino開發板的連接非常簡單。 ESC需要一個最小12V/5A的電源。 在本篇文章中,我使用的是RPS作為電源,但您也可以使用Li-Po電池為ESC供電。 ESC的三相線應連接到電機的三相線,這些線的連接沒有順序,您可以按任意順序連接它們。

注意:某些ESC控制器上沒有連接接口,在這種情況下,請確保連接方式牢固,並使用絕緣膠帶保護裸露的電線。由於會有大電流通過相線,任何短路都會導致ESC和電機永久性損壞。

ESC中的BEC(電池消除器電路)將會調節輸出一個+5V,可用於向Arduino開發板供電。 最後為了設置BLDC電機的速度,我們還使用一個電位器,連接到Arduino的A0引腳。

BLDC電機的Arduino程序

我們需要創建一個PWM信號,其佔空比從0%變化到100%,頻率為50Hz。使用電位器控制佔空比,以便控制電機的速度。該操作的代碼類似於控制伺服電機,因為它們也需要具有50Hz頻率的PWM信號;因此我們使用來自Arduino的相同的伺服電機庫。完整的代碼可以在下面的本頁末尾處找到。

PWM信號只能在硬體支持PWM的引腳上產生,這些引腳通常用〜符號表示。在Arduino UNO開發板上,引腳9可以產生PWM信號,所以我們將ESC信號引腳(橙色線)連接到引腳9;我們使用以下代碼來表示這種連接:

ESC.attach(9);

複製代碼

我們需要產生從0%到100%的不同佔空比的PWM信號。對於0%佔空比,POT將輸出0V(0),對於100%佔空比,POT將輸出5V(1023)。這裡,電位器連接到引腳A0,因此我們必須使用模擬信號讀取函數從POT讀取模擬電壓,如下所示

int throttle = analogRead(A0);

複製代碼

然後我們必須將值從0到1023轉換為0到180,因為值0將生成0%PWM,值180將生成100%佔空比。任何高於180的值都沒有意義。因此,我們使用map函數將值映射到0-180,如下所示。

throttle = map(throttle, 0, 1023, 0, 180);

複製代碼

最後,我們需要將此值發送到伺服函數,以便它可以在該引腳上生成PWM信號。由於我們已將伺服對象命名為ESC,因此代碼如下所示,其中變量throttle包含0-180的值以控制PWM信號的佔空比

ESC.write(throttle);

複製代碼

用Arduino控制BLDC電機

根據電路圖進行連接,並將代碼上傳到Arduino開發板並啟動ESC。確保已將BLDC電機安裝在某物上,因為電機在旋轉時會四處跳轉。一旦裝置通電,ESC將發出歡迎音並持續發出嘟嘟聲,直到throttle信號在閾值限制範圍內,只需將POT從0V逐漸增加,然後蜂鳴聲將停止,這意味著我們現在提供的PWM信號高於下限閾值,當您進一步增加時,電機將開始緩慢旋轉。您提供的電壓越高,電機將獲得的速度越快,最終當電壓達到閾值上限以上時,電機將停止加速。然後,您可以重複此過程。

如果您在使用此工作時遇到任何問題,請在本帖下面進行回復,以獲取更多的技術幫助。

歡迎打賞+點讚+留言+轉發!

相關焦點

  • 經典的無刷直流電機控制系統方案
    可以訂閱哦在Matlab/Simulink下,結合Simulink基礎模塊與S-Function,提出了無刷直流電機控制系統的設計方案該系統採用雙閉環控制:速度環採用PI控制,電流環由電流滯環比較器構成。仿真結果表明,該方案所設計的無刷直流電機控制系統具有快速、實用的優點。  1.引言  無刷直流電機(Brushless DC Motor,以下簡稱BLDCM)是隨著電力電子技術及新型永磁材料的發展而迅速成熟起來的一種新型電機。
  • 12槽10極直流無刷電機中三角和星型接法的霍爾傳感器的安裝定位的討論
    發帖內容本文討論的內容有以下幾個方面1、直流無刷電機中三角和星型接法的霍爾傳感器的用處,尤其是與反電動勢的關係2、直流無刷電機霍爾傳感器的安裝位置3、直流無刷電機三角和星型接法,霍爾傳感器在的安裝位置有什麼區別論壇回復第一個問題「12槽10極直流無刷電機中三角和星型接法的霍爾傳感器的安裝定位」討論如下:1  amen-awen在學習譚建成直流無刷電機技術的一文中,有關於三角形和星型接法的對比,其中有一句兩種接法也會導致霍爾安裝位置的不同。
  • 無刷直流電機的基本工作原理
    無刷直流電機簡介    無刷直流電機,英語縮寫為BLDC(Brushless Direct Current Motor)。電機的定子是線圈,或者叫繞組。轉子是永磁體,就是磁鐵 。根據轉子的位置,利用單片機來控制每個線圈的通電,使線圈產生的磁場變化,從而不斷在前面勾引轉子讓轉子轉動,這就是無刷直流電機的轉動原理。下面深入一下。
  • 小白的機器人學習之路 | (三) BLDC的六步方波控制
    BLDC 泛指直流無刷電機,常應用於新能源汽車、無人機、平衡車、高精度雲臺、機器人、機械硬碟等;相對於有刷電機,BLDC噪音小
  • 融創技術社區丨47篇BLDC/PMSM/步進電機等驅動設計資料匯:原理圖PCB圖源碼培訓資料等
    詳細設計資料分享(含源碼/參考設計手冊)http://club.digiic.com/Forum/PostDetail/p-9485.html分享MICROCHIP的FOC方案的源碼an1078:資料分享http://club.digiic.com/Forum/PostDetail/p-1479.html原廠11月21到23日培訓資料:分享之數位訊號控制器無刷直流電機控制技術
  • 最全無刷電機乾貨,一篇文章帶你了解其控制原理
    簡單而言,直流無刷電機就是依靠改變輸入到無刷電機定子線圈上的電流波交變頻率和波形,在繞組線圈周圍形成一個繞電機幾何軸心全轉的磁場,這個磁場驅動轉子上的永磁磁鋼轉動,電機就轉起來了,電機的性能和磁鋼數量、磁鋼磁通強度、電機輸入電壓大小等因素有關,更與無刷電機的控制性能有很大關係,因為輸入的是直流電,電流需要電子調速器將其變成3相交流電,還需要從遙控器接收機那裡接收控制信號,控制電機的轉速
  • 如何在Arduino開發板上使用SD卡模塊
    採用直流電壓供電,廣泛應用於計算機、印表機、複印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產品中作發聲器件。蜂鳴器分為有源蜂鳴器和無源蜂鳴器兩種。有源蜂鳴器:內部帶有震蕩源,只要一通電就會發出固定頻率的聲音。無源蜂鳴器:內部不帶震蕩源,需要使用2KHz到5KHz的脈衝信號驅動發聲,聲音頻率可變。
  • 簡單無刷直流 (BLDC) 電機旋轉基礎知識入門,第2部分:傳感與無傳感器電機控制比較
    從我發表這個簡單無刷DC (BLDC) 電機旋轉基礎知識入門博客系列的第一部分到現在,已經有一段時間了
  • arduino與超聲波傳感器之超聲波雷達
    超聲波雷達簡介:arduino功能真的很強大,很多傳感器都可以用arduino製作出很有趣的東西出來,今天將用arduino
  • 這兒集合了11個電機驅動設計方案
    BLDC電機正弦驅動特性:·作為 50W、24V 驅動器,能夠以正弦換向方式驅動無刷直流 (BLDC) 電機·MSP430G2303 的作用是接受 IR 輸入和關閉外部速度環路·DRV10983 使用專有無傳感器控制方案來提供連續正弦驅動,顯著減少換向過程中通常會產生的純音·通過集成降壓/線性穩壓器來高效地將電源電壓降至 3.3V
  • Arduino基礎入門篇27—步進電機驅動庫的使用
    本篇介紹步進電機驅動庫的使用,通過讀取電位器輸入,控制步進電機轉動相應角度。
  • 案例 | 一文解析—電機驅動設計方案
    24V無刷直流 (BLDC) 電機正弦波驅動,應用於空氣淨化器風扇此參考設計是用於無刷直流 (BLDC) 電機的經濟實惠型、小尺寸 (SFF)、三相正弦電機驅動,在 24V 時的功率高達 50W。此板接受 24V 輸入並提供三路電機輸出,從而以正弦方式驅動 BLDC 電機。
  • 【高訓工控】專業課堂第96期:製作Arduino智能小車(四)認識L298N電機驅動模塊
    而在實際應用中,廠商會將微型電子元件通過半導體工藝集成在一小塊半導體晶片上,然後進行封裝,製作成集成電路(Integrated Circuit,簡稱為IC)方便使用。而L298則集成了兩個H橋驅動電路,通過對引腳的輸入控制,可同時對兩臺直流電機進行驅動。兩個H橋的電流反饋引腳,在該引腳和地之間接入電流檢測電阻或電流表,檢測H橋中流通的電流。
  • 如何在Arduino開發板上使用機器人作業系統(ROS)
    ROS提供了一種標準的通信體系結構,用於無縫集成、使用、開發和部署機器人系統的不同組件,包括控制、感知、計劃等。這是一個與語言無關的平臺,無論部署在何處,都可以為不同的計算機提供跨平臺的通信支持。Arduino可能是最常用的開源微控制器開發板,它提供了易於使用的軟體-硬體界面以及不斷擴展的用戶社區。
  • 使用Arduino Mega控制多個步進電機進行同方向轉動
    #一、簡介 本次項目主要使用Arduino Mega開發板和Arduino Mega傳感器擴展板結合PAJ7620手勢傳感器對六個
  • 第一課 Arduino環境配置
    的軟體程序開發環境) ) 點擊下面連結進行下載:  WindowsMac OS X (請自行下載)連結:http://pan.baidu.com/s/1nvhd5hv 密碼:t1tr②驅動安裝 下載後自己找地方解壓縮放好就行了。
  • arduino控制步進電機移動絲杆實現撥片架水平移動
    這篇博客不同於前面的樹莓派和底盤子系統的控制了,而是要進行講解分析如何通過arduino控制步進電機移動絲杆實現撥片架的水平移動了,那麼為什麼要實現這麼一個功能呢?按照上述方法連接好信號線後,就可以編寫arduino程序控制步進電機了,在這裡我使用了2種方法控制步進電機。按鍵控制之前做電賽的時候還有一塊調參的板子,上面有按鍵還有撥碼,因此我就將其用作按鍵控制絲杆的調試工具了。
  • arduino與蔽障小車的連接使用
    一般舵機的旋轉角度範圍都是0-180度旋轉的,也有一種數字電機可以在電機和舵機這兩種狀態下切換,既可以控制精確的旋轉角度也可以連續旋轉作為電機使用。舵機轉動的角度是由控制器的脈衝寬度決定的,假如舵機處在中間位置(90度),這時的脈衝寬度設定為1.5ms那麼我們想讓舵機轉動到0度的時候可以給他1ms的脈衝,如果想讓它轉動到180度的時候可以給2ms的脈衝,這就是舵機角度控制的基本原理了。
  • 伺服電機一直在使用,但他是如何工作的呢?
    「伺服電機」可以理解為絕對服從控制信號指揮的電機:在控制信號發出之前,轉子靜止不動;當控制信號發出時,轉子立即轉動;當控制信號消失時,轉子能即時停轉。伺服電機是自動控制裝置中被用作執行元件的微特電機,其功能是將電信號轉換成轉軸的角位移或角速度。
  • 伺服電機是如何工作的?
    「伺服電機」可以理解為絕對服從控制信號指揮的電機:在控制信號發出之前,轉子靜止不動;當控制信號發出時,轉子立即轉動;當控制信號消失時,轉子能即時停轉。伺服電機是自動控制裝置中被用作執行元件的微特電機,其功能是將電信號轉換成轉軸的角位移或角速度。