在本篇文章中,我們將學(xué)習(xí)如何使用電位器和Arduino開發(fā)板實(shí)現(xiàn)步進(jìn)電機(jī)控制。步進(jìn)電機(jī)可用于軟盤驅(qū)動器、平板掃描儀、計算機(jī)打印機(jī)、繪圖儀、圖像掃描儀、光盤驅(qū)動器、智能照明、相機(jī)鏡頭、CNC機(jī)器以及最近比較流行的3D打印機(jī)。
因此,在本文中我們將學(xué)習(xí)有關(guān)步進(jìn)電機(jī)及其應(yīng)用的基礎(chǔ)知識。我們還將步進(jìn)電機(jī)與Arduino進(jìn)行連接。步進(jìn)電機(jī)的運(yùn)動和旋轉(zhuǎn)方向?qū)⑼ㄟ^電位器控制。
什么是步進(jìn)電機(jī)
步進(jìn)電動機(jī)(stepper motor)是一種無刷直流電動機(jī),它將完整的全周長分為多個相等的步長。然后可以命令電機(jī)的位置移動并保持在其中一個步進(jìn),而無需任何位置傳感器進(jìn)行反饋(開環(huán)控制器),只要在轉(zhuǎn)矩和速度方面仔細(xì)選擇適合電動機(jī)尺寸的電動機(jī)即可。
步進(jìn)電機(jī)的構(gòu)造和工作原理
步進(jìn)電機(jī)以其特性而聞名,它將一系列輸入脈沖(通常為方波脈沖)轉(zhuǎn)換為軸位置中精確定義的增量。每個脈沖將軸移動固定角度。
實(shí)際上,步進(jìn)電機(jī)具有多個“帶齒”電磁鐵,圍繞中央齒輪狀鐵片排列。電磁鐵由外部驅(qū)動器電路或微控制器供電。為了使電動機(jī)軸旋轉(zhuǎn),首先,給電磁鐵供電,該電磁鐵以磁性方式吸引齒輪的齒。當(dāng)齒輪的齒與第一個電磁鐵對齊時,它們與下一個電磁鐵稍有偏移。這意味著當(dāng)下一個電磁鐵打開并且第一個電磁鐵關(guān)閉時,齒輪會輕微旋轉(zhuǎn)以與下一個電磁鐵對齊。然后從該處開始重復(fù)該過程。這些旋轉(zhuǎn)中的每一個都稱為一個“步”,其中整數(shù)個步進(jìn)行完整的旋轉(zhuǎn)。這樣,電動機(jī)可以旋轉(zhuǎn)一個精確的角度。
電磁鐵的圓形排列分為幾組,每組稱為一個相,每組中有相等數(shù)量的電磁鐵。組數(shù)由步進(jìn)電機(jī)的設(shè)計者選擇。每組的電磁鐵與其他組的電磁鐵交錯以形成均勻的布置圖案。例如,如果步進(jìn)電動機(jī)具有兩個組,分別標(biāo)識為A或B,總共有十個電磁鐵,則分組模式將為ABABABABAB。
同一組中的電磁鐵都一起通電。因此,具有更多相位的步進(jìn)電動機(jī)通常具有更多的導(dǎo)線(或引線)來控制電動機(jī)。
所需的組件
為了學(xué)習(xí)使用電位器和Arduino控制步進(jìn)電機(jī),我們需要以下組件:
● Arduino UNO開發(fā)板
● ULN2003驅(qū)動芯片
● 10K電位器
● 步進(jìn)電機(jī)28-BYJ48
● 面包板和連接線
電路連接圖
以下是Arduino控制步進(jìn)電機(jī)的電路圖:
步進(jìn)電動機(jī)28-BYJ48是一個具有5引線線圈布置的單極電動機(jī)。必須按特定順序?yàn)樗膫€線圈通電。紅線連接到+ 5V電壓,其余四根線將被拉到接地以觸發(fā)相應(yīng)的線圈。我們使用Arduino開發(fā)板以特定順序?yàn)檫@些線圈通電,并使電動機(jī)執(zhí)行所需的步數(shù)。
步進(jìn)電機(jī)需要借助驅(qū)動器芯片才能進(jìn)行操作。原因是控制器需要較高的電流才能運(yùn)行,但是僅步進(jìn)電機(jī)將無法從其I / O引腳提供足夠的電流來使電機(jī)運(yùn)行。因此使用ULN2003作為驅(qū)動模塊,電流被放大了。
步數(shù)計算
在將代碼上傳到Arduino板上之前需要進(jìn)行步數(shù)計算
在Arduino中,我們將以4步順序操作電機(jī),因此需要計算步幅角(Stride Angle)。
步幅角= 5.625°
Arduino步驟順序= 4
所需步驟順序= 8
步數(shù)角度= 5.625 * 2 = 11.25
每轉(zhuǎn)的步數(shù)= 360 /步角= 360 / 11.25 =每轉(zhuǎn)32步。
源代碼/程序:
#include 《Stepper.h》 // Include the header file
#define STEPS 64
Stepper stepper(STEPS, 8, 10, 9, 11);
int Pv = 0;
int potV = 0;
void setup() {
Serial.begin(9600);
stepper.setSpeed(200);
}
void loop() {
potV = map(analogRead(A0),0,1024,0,360);
if (potV》Pv)
stepper.step(5);
if (potV《Pv)
stepper.step(-5);
Pv = potV;
Serial.println(Pv);
}
編輯:hfy
-
電位器
+關(guān)注
關(guān)注
14文章
1012瀏覽量
66897 -
步進(jìn)電動機(jī)
+關(guān)注
關(guān)注
0文章
60瀏覽量
12794 -
Arduino
+關(guān)注
關(guān)注
188文章
6474瀏覽量
187432 -
3D打印機(jī)
+關(guān)注
關(guān)注
9文章
527瀏覽量
44208
發(fā)布評論請先 登錄
相關(guān)推薦
評論