課程目標
相關知識
步進電機: 步進電機是一種將電脈沖信號轉換成相應角位移或線位移的電動機。每輸入一個脈沖信號,轉子就轉動一個角度或前進一步,其輸出的角位移或線位移與輸入的脈沖數成正比,轉速與脈沖頻率成正比。簡單來說當步進驅動器接收到一個脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度。
步進電機原理: 利用電磁鐵原理,各個線圈繞組通電,利用電生磁原理,產生磁力,帶動中央轉子鐵芯轉動從而將脈沖信號轉換成線位移或角位移。
步進電機介紹:
- 步進電機每次能轉動的最小角度叫做步距角。
- 每當步進電機接收到一個驅動信號后,步進電機將按照一定的方向轉動一個固定的角度。
- 通過控制脈沖的個數來精確的控制步進電機的角位移量,通過控制脈沖的頻率來控制電機轉動的速度及加速度,從而達到調速的目的。
- 步進電機按照相數不同分為單相、雙相、多相三種,勵磁方式分為全步勵磁和半步勵磁,全步勵磁分1相勵磁方式、2相勵磁方式;半步勵磁又稱1-2相勵磁方式。
**ULN2003電機驅動:**由于Arduino開發板的通用IO驅動能力有限,有些外設不能直接使用IO進行驅動,需要借助一些驅動電路間接控制大功率器件。ULN2003是大電流驅動陣列,多用于單片機、智能儀表、PLC、數字量輸出卡等控制電路中,可直接驅動繼電器等負載。
電路搭建
所需材料:
ArduinoUNO * 1
28BYJ-48步進電機 * 1
ULN2003電機驅動模塊 * 1
杜邦線若干
電路連接:
ULN2003驅動板上IN1、IN2、IN3、IN4分別連接UNO開發板的數字引腳2,3,4,5;驅動板電源輸入+、-引腳分別連接UNO開發板的5V、GND。
程序編寫
練習一:一相勵磁方式****控制步進電機正轉90°再反轉90°
一相勵磁控制方式及特點: 在每一個瞬間,步進電機只有一個線圈導通,每送一個信號,步進電機能轉1.8°。這種方式,其精確度好、消耗電力小,但是輸出轉矩最小,振動較大。
一相****勵磁順序表:
圖形化方式:
代碼方式:
/* 項目名稱:一相勵磁控制步進電機正反轉90°
* 項目時間:2022.03.21
* 項目作者: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);
}
練習二:二相勵磁方式控制步進電機正轉90°再反轉90°****
二相勵磁控制方式及特點: 在每一個瞬間,步進電機有兩個線圈導通,每送一個信號,步進電機能轉1.8°。這種方式,其輸出轉矩最大,振動較小。是現在較常用的一種控制方式。
二相勵磁順序表:
圖形化方式:
代碼方式:
/* 項目名稱:二相勵磁控制步進電機正反轉90°
* 項目時間:2022.03.21
* 項目作者: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);
}
練習三:一二相勵磁方式控制步進電機正****
一二相勵磁控制方式及特點: 為一相和二相交替導通的方式,每送一個信號,步進電機能轉0.9°。這種方式,其分辨率高,運轉平滑。也是現在較常用的一種控制方式。
二相勵磁順序表:
圖形化方式:
代碼方式:
/* 項目名稱:1-2相勵磁控制步進電機正轉
* 項目時間:2022.03.21
* 項目作者: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);
}
程序分析:
需求為旋轉90°,在程序中循環次數為什么是130次呢?這是根據我們使用的步進電機參數計算而來的:
1、步進電機電壓5V,步距角5.625,減速比1:64。
2、計算A-B-C-D通電一次轉動的角度5.625X2X4/64=0.703125 (2是表示1相勵磁方 式每步是2倍的步距角,4表示走了4步, 64指電機減速比)。
3、轉動360度循環ABCD通電的次數360/0.7031=512。
4、那么轉動90度循環ABCD通電的次數90/0.7031≈130。
-
步進電機
+關注
關注
150文章
3109瀏覽量
147443 -
電磁鐵
+關注
關注
2文章
165瀏覽量
14831 -
脈沖信號
+關注
關注
6文章
398瀏覽量
36956 -
Arduino
+關注
關注
188文章
6468瀏覽量
186952 -
步進驅動器
+關注
關注
7文章
81瀏覽量
58173
發布評論請先 登錄
相關推薦
評論