在當(dāng)今的自動(dòng)化世界中,步進(jìn)電機(jī)和伺服電機(jī)是嵌入式系統(tǒng)中最常用的兩種電機(jī)。兩者都用于各種自動(dòng)化機(jī)器,如機(jī)械臂、CNC 機(jī)器、相機(jī)等。在本教程中,我們將了解如何將步進(jìn)電機(jī)與 ARM7-LPC2148 連接以及如何控制它的速度。
步進(jìn)電機(jī)
步進(jìn)電機(jī)是無刷直流電機(jī),可以小角度旋轉(zhuǎn),這些角度稱為步進(jìn)。我們可以通過向其引腳提供數(shù)字脈沖來逐步旋轉(zhuǎn)步進(jìn)電機(jī)。步進(jìn)電機(jī)價(jià)格便宜且設(shè)計(jì)堅(jiān)固。電機(jī)的速度可以通過改變數(shù)字脈沖的頻率來控制。
根據(jù)定子繞組的類型,有兩種類型的步進(jìn)電機(jī)可用: 單極 和 雙極。這里我們使用的是最常用的步進(jìn)電機(jī)UNIPOLAR步進(jìn)電機(jī)。要旋轉(zhuǎn)步進(jìn)電機(jī),我們需要按順序?yàn)椴竭M(jìn)電機(jī)的線圈通電。根據(jù)旋轉(zhuǎn)操作,它們分為兩種模式:
全步模式:(4步序列)
單相步進(jìn)(WAVE STEPPING)
兩相步進(jìn)
半步模式(8 步序列)
要了解有關(guān)步進(jìn)電機(jī)及其操作的更多信息,請(qǐng)點(diǎn)擊鏈接。
使用 ARM7-LPC2148 旋轉(zhuǎn)步進(jìn)電機(jī)
在這里,我們將使用FULL STEP: ONE PHASE ON 或 WAVE STEPPING模式使用 ARM7-LPC2148 旋轉(zhuǎn)步進(jìn)電機(jī)
在這種方法中,我們一次只能為一個(gè)線圈(LPC2148 的一個(gè)引腳)通電。也就是說,如果第一個(gè)線圈A通電一小段時(shí)間,軸將改變其位置,然后線圈B同樣通電,軸將再次改變其位置。與此相同,線圈 C 和線圈 D 通電以進(jìn)一步移動(dòng)軸。這使得步進(jìn)電機(jī)的軸通過一次激勵(lì)一個(gè)線圈來逐步旋轉(zhuǎn)。
通過這種方法,我們通過依次為線圈通電來逐步旋轉(zhuǎn)軸。這被稱為四步序列,因?yàn)樗枰膫€(gè)步驟。
您可以根據(jù)下面給出的值使用半步法(8 序列法)旋轉(zhuǎn)步進(jìn)電機(jī)。
所需組件
硬件:
ARM7-LPC2148
ULN2003電機(jī)驅(qū)動(dòng)IC
LED – 4
步進(jìn)電機(jī) (28BYJ-48)
面包板
連接線
軟件:
凱爾uVision5
Flasic 魔法工具
步進(jìn)電機(jī) (28BYJ-48)
28BYJ-48步進(jìn)電機(jī)已如上圖所示。它是一個(gè) 單極步進(jìn) 電機(jī),需要 5V 電源。該電機(jī)采用 4 線圈單極排列,每個(gè)線圈的額定電壓為 +5V,因此使用任何微控制器(如 Arduino、Raspberry Pi、STM32、ARM 等)都相對(duì)容易控制。
但是我們需要一個(gè)像 ULN2003 這樣的電機(jī)驅(qū)動(dòng) IC 來驅(qū)動(dòng)它,因?yàn)椴竭M(jìn)電機(jī)消耗大電流并且可能會(huì)損壞微控制器。
28BYJ-48 的規(guī)格在以下數(shù)據(jù)表中提供:
ULN2003步進(jìn)電機(jī)驅(qū)動(dòng)器
大多數(shù) 步進(jìn)電機(jī) 只能在驅(qū)動(dòng)模塊的幫助下運(yùn)行。這是因?yàn)?a target="_blank">控制器模塊(在我們的例子中為 LPC2148)將無法從其 I/O 引腳提供足夠的電流以供電機(jī)運(yùn)行。所以我們將使用像 ULN2003 模塊這樣的外部模塊作為 步進(jìn)電機(jī)驅(qū)動(dòng)器。
在這個(gè)項(xiàng)目中,我們將使用 ULN2003 電機(jī)驅(qū)動(dòng)器 IC。IC的管腳圖如下:
引腳(IN1 至 IN7)是用于連接微控制器輸出的輸入引腳,OUT1 至 OUT7 是用于連接步進(jìn)電機(jī)輸入的相應(yīng)輸出引腳。COM 提供輸出設(shè)備和外部電源輸入源所需的正電源電壓。
電路原理圖
下面給出了將步進(jìn)電機(jī)與 ARM-7 LPC2148 連接的電路圖
帶有 ULN2003 電機(jī)驅(qū)動(dòng)器 IC 的 ARM7-LPC2148
LPC2148 的 GPIO 引腳(P0.7 至 P0.10)被視為與 ULN2003 IC 的輸入引腳(IN1-IN4)相連的輸出引腳。
ULN2003 IC與步進(jìn)電機(jī)的連接(28BYJ-48)
ULN2003 IC 的輸出引腳 (OUT1-OUT4) 連接到步進(jìn)電機(jī)引腳(藍(lán)色、粉色、黃色和橙色)。
ULN2003 的 IN1 到 IN4 的 LED
四個(gè) LED(LED1、LED2、LED4、LED 4)陽極引腳分別與 ULN2003 的引腳 IN1、IN2、IN3 和 IN4 連接,LED 的陰極連接到 GND,用于指示來自 LPC2148 的脈沖。我們可以注意到所提供的脈沖模式。模式顯示在最后附上的演示視頻中。
為步進(jìn)電機(jī)編程 ARM7-LPC2148
要對(duì) ARM7-LPC2148 進(jìn)行編程,我們需要 keil uVision 和 Flash Magic 工具。我們正在使用 USB 電纜通過微型 USB 端口對(duì) ARM7 Stick 進(jìn)行編程。我們使用 Keil 編寫代碼并創(chuàng)建一個(gè) hex 文件,然后使用 Flash Magic 將 HEX 文件閃存到 ARM7 棒。
使用 ARM 7 控制步進(jìn)電機(jī)的完整代碼 在本教程的末尾給出,這里我們解釋它的幾個(gè)部分。
1.為了使用完整的 STEP-ONE PHASE ON方法,我們需要包含以下命令。所以我們?cè)诔绦蛑惺褂孟旅孢@行
無符號(hào)字符順時(shí)針[4] = {0x1,0x2,0x4,0x8};//順時(shí)針旋轉(zhuǎn)命令
unsigned char antilateral[4] = {0x8,0x4,0x2,0x1}; //逆時(shí)針旋轉(zhuǎn)命令
2.以下行用于將 PORT0 引腳初始化為輸出并將它們?cè)O(shè)置為 LOW
PINSEL0 = 0x00000000;//設(shè)置PORT0引腳
IO0DIR |= 0x00000780; //設(shè)置引腳P0.7、P0.8、P0.9、P0.10為OUTPUT
IO0CLR = 0x00000780; //設(shè)置P0.7、P0.8、P0.9、P0.10引腳輸出為低
3.通過使用此for循環(huán)延遲,根據(jù)順時(shí)針命令將 PORT 引腳(P0.7 至 P0.10)設(shè)置為高電平
for (int j=0; j
for(int i=0; i<4;i++)
{
IOPIN0 = 順時(shí)針[i]<<7; // 左移后將引腳值逐一設(shè)置為 HIGH
delay(0x10000); //改變這個(gè)值來改變旋轉(zhuǎn)速度
}
}
Anti-clock Wise 也一樣
for (int z=0;z
for(int i=0; i<4;i++)
{
IOPIN0 =逆時(shí)針[i]<<7;
延遲(0x10000);//改變這個(gè)值來改變旋轉(zhuǎn)速度
}
}
4.改變延遲時(shí)間改變步進(jìn)電機(jī)的轉(zhuǎn)速
延遲(0x10000);//更改此值以更改旋轉(zhuǎn)速度
(0x10000)-全速
(0x50000)-變慢
(0x90000)-比以前變慢。因此,通過增加延遲,我們降低了旋轉(zhuǎn)速度。
5.一整圈的步數(shù)可以用下面的代碼改變
int no_of_steps = 550; //將此值更改為所需的旋轉(zhuǎn)步數(shù)(550 為一個(gè)完整的旋轉(zhuǎn))
對(duì)于我的步進(jìn)電機(jī),完全旋轉(zhuǎn)有 550 步,半旋轉(zhuǎn)有 225 步。所以根據(jù)你的要求改變它。
6.此功能用于創(chuàng)建延遲時(shí)間。
void delay(unsigned int value) //產(chǎn)生延遲的函數(shù)
{
unsigned int z;
for(z=0;z<值;z++);
}
-
步進(jìn)電機(jī)
+關(guān)注
關(guān)注
150文章
3114瀏覽量
147599 -
ARM7
+關(guān)注
關(guān)注
3文章
207瀏覽量
50370 -
LPC2148
+關(guān)注
關(guān)注
0文章
25瀏覽量
14940
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論