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