課程目標(biāo)
- 了解步進(jìn)電機(jī)的原理及應(yīng)用
- 學(xué)習(xí)步進(jìn)電機(jī)的控制方式
- 了解步進(jìn)電機(jī)的不同勵(lì)磁方式
相關(guān)知識(shí)
步進(jìn)電機(jī): 步進(jìn)電機(jī)是一種將電脈沖信號(hào)轉(zhuǎn)換成相應(yīng)角位移或線位移的電動(dòng)機(jī)。每輸入一個(gè)脈沖信號(hào),轉(zhuǎn)子就轉(zhuǎn)動(dòng)一個(gè)角度或前進(jìn)一步,其輸出的角位移或線位移與輸入的脈沖數(shù)成正比,轉(zhuǎn)速與脈沖頻率成正比。簡(jiǎn)單來(lái)說(shuō)當(dāng)步進(jìn)驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度。
步進(jìn)電機(jī)原理: 利用電磁鐵原理,各個(gè)線圈繞組通電,利用電生磁原理,產(chǎn)生磁力,帶動(dòng)中央轉(zhuǎn)子鐵芯轉(zhuǎn)動(dòng)從而將脈沖信號(hào)轉(zhuǎn)換成線位移或角位移。
步進(jìn)電機(jī)介紹:
- 步進(jìn)電機(jī)每次能轉(zhuǎn)動(dòng)的最小角度叫做步距角。
- 每當(dāng)步進(jìn)電機(jī)接收到一個(gè)驅(qū)動(dòng)信號(hào)后,步進(jìn)電機(jī)將按照一定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度。
- 通過(guò)控制脈沖的個(gè)數(shù)來(lái)精確的控制步進(jìn)電機(jī)的角位移量,通過(guò)控制脈沖的頻率來(lái)控制電機(jī)轉(zhuǎn)動(dòng)的速度及加速度,從而達(dá)到調(diào)速的目的。
- 步進(jìn)電機(jī)按照相數(shù)不同分為單相、雙相、多相三種,勵(lì)磁方式分為全步勵(lì)磁和半步勵(lì)磁,全步勵(lì)磁分1相勵(lì)磁方式、2相勵(lì)磁方式;半步勵(lì)磁又稱1-2相勵(lì)磁方式。
**ULN2003電機(jī)驅(qū)動(dòng):**由于Arduino開(kāi)發(fā)板的通用IO驅(qū)動(dòng)能力有限,有些外設(shè)不能直接使用IO進(jìn)行驅(qū)動(dòng),需要借助一些驅(qū)動(dòng)電路間接控制大功率器件。ULN2003是大電流驅(qū)動(dòng)陣列,多用于單片機(jī)、智能儀表、PLC、數(shù)字量輸出卡等控制電路中,可直接驅(qū)動(dòng)繼電器等負(fù)載。
電路搭建
所需材料:
ArduinoUNO * 1
28BYJ-48步進(jìn)電機(jī) * 1
ULN2003電機(jī)驅(qū)動(dòng)模塊 * 1
杜邦線若干
電路連接:
ULN2003驅(qū)動(dòng)板上IN1、IN2、IN3、IN4分別連接UNO開(kāi)發(fā)板的數(shù)字引腳2,3,4,5;驅(qū)動(dòng)板電源輸入+、-引腳分別連接UNO開(kāi)發(fā)板的5V、GND。
程序編寫(xiě)
練習(xí)一:一相勵(lì)磁方式****控制步進(jìn)電機(jī)正轉(zhuǎn)90°再反轉(zhuǎn)90°
一相勵(lì)磁控制方式及特點(diǎn): 在每一個(gè)瞬間,步進(jìn)電機(jī)只有一個(gè)線圈導(dǎo)通,每送一個(gè)信號(hào),步進(jìn)電機(jī)能轉(zhuǎn)1.8°。這種方式,其精確度好、消耗電力小,但是輸出轉(zhuǎn)矩最小,振動(dòng)較大。
一相****勵(lì)磁順序表:
圖形化方式:
代碼方式:
/* 項(xiàng)目名稱:一相勵(lì)磁控制步進(jìn)電機(jī)正反轉(zhuǎn)90°
* 項(xiàng)目時(shí)間:2022.03.21
* 項(xiàng)目作者:MRX
*/
void setup() {
for (int i = 2; i < 6; i++) {
pinMode(i, OUTPUT);
}
}
void clockwise(int num)
{
for (int count = 0; count < num; count++)
{
for (int i = 2; i < 6; i++)
{
digitalWrite(i, HIGH);
delay(5);
digitalWrite(i, LOW);
}
}
}
void anticlockwise(int num)
{
for (int count = 0; count < num; count++)
{
for (int i = 5; i > 1; i--)
{
digitalWrite(i, HIGH);
delay(5);
digitalWrite(i, LOW);
}
}
}
void loop() {
clockwise(130);
delay(1000);
anticlockwise(130);
delay(1000);
}
練習(xí)二:二相勵(lì)磁方式控制步進(jìn)電機(jī)正轉(zhuǎn)90°再反轉(zhuǎn)90°****
二相勵(lì)磁控制方式及特點(diǎn): 在每一個(gè)瞬間,步進(jìn)電機(jī)有兩個(gè)線圈導(dǎo)通,每送一個(gè)信號(hào),步進(jìn)電機(jī)能轉(zhuǎn)1.8°。這種方式,其輸出轉(zhuǎn)矩最大,振動(dòng)較小。是現(xiàn)在較常用的一種控制方式。
二相勵(lì)磁順序表:
圖形化方式:
代碼方式:
/* 項(xiàng)目名稱:二相勵(lì)磁控制步進(jìn)電機(jī)正反轉(zhuǎn)90°
* 項(xiàng)目時(shí)間:2022.03.21
* 項(xiàng)目作者:MRX
*/
void setup() {
for (int i = 2; i < 6; i++) {
pinMode(i, OUTPUT);
}
}
void clockwise(int num)
{
for (int count = 0; count < num; count++)
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
delay(5);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
delay(5);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
delay(5);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
delay(5);
}
}
void anticlockwise(int num)
{
for (int count = 0; count < num; count++)
{
digitalWrite(2,HIGH);
digitalWrite(5,LOW);
digitalWrite(4,LOW);
digitalWrite(3,HIGH);
delay(5);
digitalWrite(2,HIGH);
digitalWrite(5,HIGH);
digitalWrite(4,LOW);
digitalWrite(3,LOW);
delay(5);
digitalWrite(2,LOW);
digitalWrite(5,HIGH);
digitalWrite(4,HIGH);
digitalWrite(3,LOW);
delay(5);
digitalWrite(2,LOW);
digitalWrite(5,LOW);
digitalWrite(4,HIGH);
digitalWrite(3,HIGH);
delay(5);
}
}
void loop() {
clockwise(130);
delay(1000);
anticlockwise(130);
delay(1000);
}
練習(xí)三:一二相勵(lì)磁方式控制步進(jìn)電機(jī)正****
一二相勵(lì)磁控制方式及特點(diǎn): 為一相和二相交替導(dǎo)通的方式,每送一個(gè)信號(hào),步進(jìn)電機(jī)能轉(zhuǎn)0.9°。這種方式,其分辨率高,運(yùn)轉(zhuǎn)平滑。也是現(xiàn)在較常用的一種控制方式。
二相勵(lì)磁順序表:
圖形化方式:
代碼方式:
/* 項(xiàng)目名稱:1-2相勵(lì)磁控制步進(jìn)電機(jī)正轉(zhuǎn)
* 項(xiàng)目時(shí)間:2022.03.21
* 項(xiàng)目作者:MRX
*/
void setup() {
for (int i = 2; i < 6; i++) {
pinMode(i, OUTPUT);
}
}
void S1()
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
delay(5);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
delay(5);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
delay(5);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
delay(5);
}
void S2()
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
delay(5);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
delay(5);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
delay(5);
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
delay(5);
}
void loop() {
for (int i = 1; i <= 130; i++)
{
S1();
S2();
}
delay(1000);
}
程序分析:
需求為旋轉(zhuǎn)90°,在程序中循環(huán)次數(shù)為什么是130次呢?這是根據(jù)我們使用的步進(jìn)電機(jī)參數(shù)計(jì)算而來(lái)的:
1、步進(jìn)電機(jī)電壓5V,步距角5.625,減速比1:64。
2、計(jì)算A-B-C-D通電一次轉(zhuǎn)動(dòng)的角度5.625X2X4/64=0.703125 (2是表示1相勵(lì)磁方 式每步是2倍的步距角,4表示走了4步, 64指電機(jī)減速比)。
3、轉(zhuǎn)動(dòng)360度循環(huán)ABCD通電的次數(shù)360/0.7031=512。
4、那么轉(zhuǎn)動(dòng)90度循環(huán)ABCD通電的次數(shù)90/0.7031≈130。
-
步進(jìn)電機(jī)
+關(guān)注
關(guān)注
152文章
3145瀏覽量
148825 -
電磁鐵
+關(guān)注
關(guān)注
2文章
169瀏覽量
15261 -
脈沖信號(hào)
+關(guān)注
關(guān)注
6文章
402瀏覽量
37405 -
Arduino
+關(guān)注
關(guān)注
188文章
6485瀏覽量
189691 -
步進(jìn)驅(qū)動(dòng)器
+關(guān)注
關(guān)注
7文章
81瀏覽量
58486
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
通過(guò)Arduino控制步進(jìn)電機(jī)速度和旋轉(zhuǎn)方向
blinker控制步進(jìn)電機(jī)起保停相關(guān)資料分享
用arduino和步進(jìn)電機(jī)控制器驅(qū)動(dòng)兩個(gè)步進(jìn)電機(jī)
Stepper庫(kù)函數(shù)控制步進(jìn)電機(jī)
如何使用Arduino實(shí)現(xiàn)步進(jìn)電機(jī)的分析與設(shè)計(jì)

動(dòng)手玩轉(zhuǎn)Arduino---運(yùn)動(dòng)控制(直流電機(jī)步進(jìn)電機(jī)舵機(jī))

arduino+A4889+步進(jìn)電機(jī)

如何使用MATALB和Arduino控制步進(jìn)電機(jī)

Arduino實(shí)驗(yàn)16步進(jìn)電機(jī)的控制

步進(jìn)電機(jī)與Arduino使用教程

Arduino RTOS控制多個(gè)步進(jìn)電機(jī)

使用電位器和Arduino實(shí)現(xiàn)步進(jìn)電機(jī)控制

Arduino mega 2560控制42步進(jìn)電機(jī)接線

評(píng)論