【STM32】步进电机及其驱动(ULN2003驱动28BYJ-48丨按键控制电机旋转)
本篇文章包含的內容
- 一、步進電機的結構和工作原理
- 1.1 步進控制系統的組成
- 1.2 步進電機簡介
- 1.3 步進電機的分類
- 1.4 步進電機的工作原理
- 1.4.1 單極性步進電機(5線4相)
- 1.4.2 雙極性步進電機(4線2相)
- 1.4.3 細分器驅動原理
- 1.5 步進電機工作參數
- 1.5.1 靜態參數
- 1.5.2 動態參數
- 1.6 步進電機的特點
- 二、步進電機驅動
- 2.1 ULN2003驅動芯片
- 2.2 驅動模塊電路圖
- 三、代碼實現
參考文章與課程:
??【視頻課程】步進電機基礎原理和應用——程子華主講
??【視頻課程】電機系列教學視頻(基于STM32硬件)——野火
??【霄耀在努力】STM32驅動步進電機(原理、程序、解決電機只震動不轉動問題)
一、步進電機的結構和工作原理
1.1 步進控制系統的組成
??步進控制系統由以下三個部分組成:
- 控制器:可以是PLC、定位控制模塊或單片機,主要作用是產生控制脈沖信號(博主采用STM32作為控制器)。
- 驅動器:對控制器發出的控制信號進行分配和功率放大,控制步進電機每一相的線圈是否通電。
- 電機:電機本身,或用步進電機驅動其他設備。
1.2 步進電機簡介
??步進電機是一種特種電機,又稱為脈沖電動機,是一種將電脈沖信號轉化為角位移或線位移的開環(無反饋)控制元件。在非超載的條件下,電機的轉速、角位移只取決于控制脈沖信號的頻率和脈沖數。
??“步進”的意義是電機轉動遵從固定的步幅,即每一個控制脈沖來臨,電機就轉動一個步進角 θ\thetaθ。步進角θ\thetaθ與電機本身的結構(和其拓展結構,例如減速齒輪可以減小步進角)有關。脈沖數越多,電機轉動的角度就越大。同時,脈沖的頻率越高,電機轉速就越快,但不能超過最高頻率,否則電機的力矩將迅速減小,電機停轉。
??下圖所示的是較為常見的42步進電機?!?2”的意思是該電機的外殼尺寸是42mm×42mm??梢栽谄滢D軸上加裝減速齒輪實現減速功能,來增大輸出力矩和減小步進角θ\thetaθ;也可以在將轉軸替換為絲杠,常見于需要驅動設備直線運動的場合。
??博主在這里使用的步進電機型號是28BYJ-48,是套件中常見的步進電機。它也是一種減速步進電機,內部的減速齒輪由塑料制成,具有重量輕,體積小,結構簡單等特點。它常被用在監控探頭的云臺上。這種電機及其驅動模塊如下圖所示:
1.3 步進電機的分類
??步進電機的分類方法非常多,按照不同的分類方法,步進電機可以被分為以下幾種:
-
磁阻式:又稱為反應式步進電機。轉子采用軟磁材料,一般式硅鋼片,本身沒有磁性,但極易被磁化。其特點是結構簡單,步進角小(可達1.2°),但效率低,發熱量大,可靠性難以保障,很早之前就被市場淘汰了。
-
永磁式:又稱為PM步進電機,轉子使用永磁性材料,通過改變定子線圈的磁極來驅動轉子。內部的圓柱形轉子外表均勻分布著N極和S極。一般都為兩相,扭矩和體積都比較小。步進角θ\thetaθ一般為3.75°、7.5°、15°、18°,特點是步進角一般較大,力矩較小,精度比較低,發熱小,結構簡單,價格低廉,一般用在一些較為低端的產品中。今年來設備小型化,微型永磁式步進電機的應用范圍也有了進一步的擴展,例如帶可升降型的攝像頭的手機。
-
混合式:定子由兩個轉子鐵芯(一般是硅鋼片)和一個磁鋼(永磁體)組成,兩個轉子鐵芯極性相反。它的特點是產生的力矩相較于永磁式步進電機更大,發熱較小,效率高,轉速相對較大,噪音低,步進角小等。兩相混合式步進電機的步進角一般為1.8°,三相混合式步進電機的步進角一般為1.2°,五相混合式步進電機的步進角可以達到0.72°。它的相應速度快,適用于頻繁啟停的場合。
- 伺服式:輸出力矩在小于1N·m的范圍內,只能驅動較小的負載,要與液壓扭矩放大器配合使用才能驅動機床、工作臺等較大的負載
- 功率式:輸出力矩在5~50N·m之間,甚至更高,可以直接驅動機床工作臺等較大的負載
- 單定子式
- 雙定子式
- 三定子式
- 多定子式
- 徑向分布式:電機各相按圓周依次排列
- 軸向分布式:電機各相按軸向依次排列
??按照以上的一些分類方法,可以舉出一些例子:
??28BYJ-48就是一種常見的單極性五線四相步進電機,“單極性”指線圈中電流的方向是確定的,不可翻轉;對應的,“雙極性”指線圈沖存在兩種不同地電流方向。
1.4 步進電機的工作原理
??對于雙極性步進電機和單極性步進電機,它們二者繞組極性的不同,它們的工作方式也略有差異。
1.4.1 單極性步進電機(5線4相)
??單極性步進電機有共陰極接法和共陽極接法,兩種接法對于控制信號而言只是控制信號的極性的不同。要控制電機的旋轉方向,只需要將拍之間的導電順序顛倒即可。接下來的幾種驅動方式都采用共陰極接法為例說明,且電機為順時針轉動。
單相整步驅動:“單相”指每一拍只有一相導電,“整步”指每一拍走過的角度是相鄰兩相之間的一整步。如下圖所示,四個相的導電順序為:A→B→C→D→A→...A\rightarrow B \rightarrow C \rightarrow D \rightarrow A \rightarrow...A→B→C→D→A→...,依次循環,步距角θ=90°\theta=90°θ=90°。
雙相整步驅動:“雙相”指每一拍有兩相同時導通,且在數字信號驅動下,兩相線圈通電產生的磁場大小相等。四拍的導電順序為AB→BC→CD→DA→AB→...AB\rightarrow BC \rightarrow CD \rightarrow DA \rightarrow AB \rightarrow...AB→BC→CD→DA→AB→...,與單相整步驅動相比,雙相整步驅動擁有更大的轉動力矩(是單相整步驅動力矩的2\sqrt{2}2?倍)。
半步驅動:半步驅動方式實際上是單相整步驅動和雙相整步驅動的結合。相較于前兩者,半步驅動有更小的步距角(45°),八拍的導電順序為:A→AB→B→BC→C→CD→D→DA→A→...A\rightarrow AB \rightarrow B \rightarrow BC \rightarrow C \rightarrow CD \rightarrow D \rightarrow DA \rightarrow A \rightarrow...A→AB→B→BC→C→CD→D→DA→A→...,其缺點為轉動力矩不穩定,有可能會導致電機本身的震動或者驅動設備的動力不穩定等問題。
1.4.2 雙極性步進電機(4線2相)
??雙極性步進電機中的線圈中的電流方向是雙相的,通過配置A+A^+A+和A?A^-A?,B+B^+B+和B?B^-B?的高低電平來控制電機的旋轉。其原理與單極性步進電機類似,優點是相較于前者可以具有更大的轉動力矩(可以通過配置一個線圈上的兩端電壓分別為+5V和-5V來使線圈上的電流增大),缺點是驅動電路和程序較為復雜。由于原理與單極性步進電機類似,以下不做過多贅述。
單相整步驅動
雙相整步驅動
半步驅動
1.4.3 細分器驅動原理
??如果驅動電路可以改變每一相通電時的電流大小,就可以控制每一相產生的磁場大小。這樣不僅能解決半步驅動時力矩忽大忽小的問題,還能使步距角進一步減小以達到更高的精度控制。
1.5 步進電機工作參數
1.5.1 靜態參數
- 相數:產生不同對極 N、S 磁場的激磁線圈對數(雙極性),也可以理解為步進電機中線圈的組數。一般而言,兩相步進電機步距角為 1.8°,三相的步進電機步距角為 1.5°,相數越多的步進電機,其步距角就越小。
- 拍數:完成一個磁場周期性變化所需脈沖數或導電狀態,用 nnn 表示;或指電機轉過一個齒距角所需脈沖數。以四相電機為例,四相四拍運行方式即 AB→BC→CD→DA→AB→...AB\rightarrow BC \rightarrow CD \rightarrow DA \rightarrow AB \rightarrow...AB→BC→CD→DA→AB→...,四相八拍運行方式即 A→AB→B→BC→C→CD→D→DA→A→...A\rightarrow AB \rightarrow B \rightarrow BC \rightarrow C \rightarrow CD \rightarrow D \rightarrow DA \rightarrow A \rightarrow...A→AB→B→BC→C→CD→D→DA→A→...
- 步距角:一個脈沖信號所對應的電機轉動的角度,可以簡單理解為一個脈沖信號驅動的角度,電機上都有標注,一般 42 步進電機的步距角為 1.8°
- 定位轉矩:電機在不通電狀態下,電機轉子自身的鎖定力矩(由磁場齒形的諧波以及機械誤差造成)。
- 靜轉矩:電機在額定靜態電壓作用下,電機不作旋轉運動時,電機轉軸的鎖定力矩。此力矩是衡量電機體積的標準,與驅動電壓及驅動電源等無關。
1.5.2 動態參數
- 步距角精度:步進電機轉動一個步距角度的理論值與實際值的誤差。用百分比表示:誤差/步距角*100%。
- 失步:電機運轉時運轉的步數,不等于理論上的步數。也可以叫做丟步,一般都是因負載太大或者是頻率過快。
- 失調角:轉子齒軸線偏移定子齒軸線的角度,電機運轉必存在失調角,由失調角產生的誤差,采用細分驅動是不能解決的。
- 最大空載起動頻率:在不加負載的情況下,能夠直接起動的最大頻率。
- 最大空載的運行頻率:電機不帶負載的最高轉速頻率。
- 運行轉矩特性:電機的動態力矩取決于電機運行時的平均電流(而非靜態電流),平均電流越大,電機輸出力矩越大,即電機的頻率特性越硬。
- 電機正反轉控制:通過改變通電順序而改變電機的正反轉。
1.6 步進電機的特點
二、步進電機驅動
2.1 ULN2003驅動芯片
??ULN2003是一個單片高電壓(最高可達50V)、高電流(單個額定輸出500mA)的達林頓晶體管陣列集成電路。 它是由7對NPN達林頓晶體管組成的,它的高電壓輸出特性和陰極鉗位二極管可以轉換感應負載。單個達林頓晶體管對的集電極電流為500mA,達林頓管并聯可以承受更大的電流。
??ULN2003可以作為繼電器驅動器,字錘驅動器、燈驅動器、顯示驅動器(LED氣體放電),線路驅動器和邏輯緩沖器。ULN2003的每一對達林頓晶體管的基極都有一個2.7k的串聯電阻,可以直接和TTL或者5V的CMOS裝置連接。它實際上就是一個功率放大器,輸出端具有較大的驅動能力(電流較大)。
??ULN2003的芯片內部原理圖和引腳定義圖如下所示:
2.2 驅動模塊電路圖
??與28BYJ-48配套的ULN2003驅動模塊原理圖如下圖所示:
??該模塊的電路原理比較簡單,具體使用時IN1、IN2、IN3、IN4分別對應A、B、C、D四相,且都為高電平有效。輸入某一相為高電平時對應相的LED指示燈亮起,標識該相目前輸入為有效電平。
三、代碼實現
??博主在寫代碼的時候饒了很多彎路……,最后也參考了一些網上的代碼。參考的文章和課程在文章開頭有所標識。IN1~IN4分別接STM32的PA0,PA1,PA2,PA3,驅動模塊的電源(5V)直接連接到ST-Link的電源輸入口上,驅動模塊與STM32共地。接線圖略。
- Stepper.h
- Stepper.c
??Stepper_RotateByLoop函數中Loop * 2048是博主根據28BYJ-48步進電機的性能參數列表計算和實踐調試所得。這里博主使用四拍驅動方式,如果要使用8拍的半步驅動方式,2048應該改為4096。讀者手中的28BYJ-48的齒輪減速比可能與博主的有所不同(1:16 or 1:64),根據測試,博主手頭的28BYJ-48的參數如下表所示:
| 28BYJ-48 | 5V | 4 | 5.625° / 32 | 1:32 | 600Hz | 1000Hz |
- Key.c(Key.h在這里省略,在頭文件中將函數進行聲明即可)
- main.c
??原創內容,整理不易,歡迎點贊,收藏~ 如有謬誤敬請在評論區不吝告知,感激不盡!博主將持續更新有關嵌入式開發、機器學習方面的學習筆記~
總結
以上是生活随笔為你收集整理的【STM32】步进电机及其驱动(ULN2003驱动28BYJ-48丨按键控制电机旋转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 回归预测 | MATLAB实现SVR(支
- 下一篇: php168模板制作教程,PHP168风