概述
步進電機介于常規(guī)直流電機和伺服電機之間。它們的優(yōu)點是可以精確定位,一次可以向前或向后移動一個“步”,但是它們也可以連續(xù)旋轉。
在本課程中,您將學習如何使用Arduino和Arduino控制步進電機。與第15課中的直流電動機一起使用的相同的L293D電動機控制芯片。
零件
要構建本課中描述的項目,您將需要以下零件。
零件 數(shù)量
5V步進電機 1
L293D IC
1
半尺寸面包板
1
Arduino Uno R3
1
跳線束
1
電路板布局
步進電機有五根引線,這次我們將使用L293D的兩半。這意味著面包板上有很多連接。
電動機的末端有一個5路插座。
i》
請注意,步進電機的紅色導線未連接任何東西。
Arduino代碼
下面的草圖使用串行監(jiān)視器,在草圖安裝并運行后,打開串行監(jiān)視器并輸入許多“步驟”。嘗試將其設置為大約500,這將導致電動機旋轉大約360度。輸入-500,它將向反方向返回。
Stepper庫是包含在較新的Arduino IDE發(fā)行版中-您可能需要升級。
下載:文件
復制代碼
/*
Adafruit Arduino - Lesson 16. Stepper
*/
#include
int in1Pin = 12;
int in2Pin = 11;
int in3Pin = 10;
int in4Pin = 9;
Stepper motor(512, in1Pin, in2Pin, in3Pin, in4Pin);
void setup()
{
pinMode(in1Pin, OUTPUT);
pinMode(in2Pin, OUTPUT);
pinMode(in3Pin, OUTPUT);
pinMode(in4Pin, OUTPUT);
// this line is for Leonardo‘s, it delays the serial interface
// until the terminal window is opened
while (!Serial);
Serial.begin(9600);
motor.setSpeed(20);
}
void loop()
{
if (Serial.available())
{
int steps = Serial.parseInt();
motor.step(steps);
}
} /*
Adafruit Arduino - Lesson 16. Stepper
*/
#include
int in1Pin = 12;
int in2Pin = 11;
int in3Pin = 10;
int in4Pin = 9;
Stepper motor(512, in1Pin, in2Pin, in3Pin, in4Pin);
void setup()
{
pinMode(in1Pin, OUTPUT);
pinMode(in2Pin, OUTPUT);
pinMode(in3Pin, OUTPUT);
pinMode(in4Pin, OUTPUT);
// this line is for Leonardo’s, it delays the serial interface
// until the terminal window is opened
while (!Serial);
Serial.begin(9600);
motor.setSpeed(20);
}
void loop()
{
if (Serial.available())
{
int steps = Serial.parseInt();
motor.step(steps);
}
}
正如您所期望的,有一個支持步進電機的Arduino庫。
在包括“ Stepper”庫之后,定義了四個控制引腳“ in1”至“ in4”。
告訴ArduinoStepper哪些引腳連接到電機控制器的庫,使用以下命令:
下載:文件
復制代碼
Stepper motor(768, in1Pin, in2Pin, in3Pin, in4Pin); Stepper motor(768, in1Pin, in2Pin, in3Pin, in4Pin);
第一個參數(shù)是電機完成一次公轉所需要的“步數(shù)”。電機可以一次移動一步,以進行非常精確的定位。
然后開始串行通信,以便Arduino準備從串行監(jiān)視器接收命令。
最后, followingcommand設置我們希望步進電動機移動的速度,隨后我們告訴它旋轉多少步。
下載:文件
復制代碼
motor.setSpeed(10); motor.setSpeed(10);
“循環(huán)”功能非常簡單。它等待來自SerialMonitor的命令輸入,然后使用‘parseInt’將發(fā)送的數(shù)字文本轉換為int。然后,它指示電動機旋轉該步數(shù)。
步進電機
步進電機使用帶齒的輪和電磁體一次將輪微調為“步進”。
通過以正確的順序給線圈通電,電動機被驅趕。步進電機在360度旋轉中的步數(shù)實際上就是齒輪上的齒數(shù)。
我們正在使用的電機具有48步,但是該電機還集成了一個減速齒輪箱:1: 16表示它需要16 x 48 = 768步。
在本課程中,我們不使用公共Redconnection。僅在使用不同類型的驅動電路時才提供此連接,該驅動電路不允許每個線圈中的電流反向。每個線圈都有一個中心連接,這意味著您可以為線圈的左側或右側通電,并獲得反向電流的效果,而無需使用可以反向電流的電路。
如果使用L293D具有非常好的反向電流,則不需要這種公共連接,我們可以向每個線圈的整個方向提供電流。
其他要做的事情
嘗試更改設置步進電動機速度的命令:
下載:文件
復制代碼
motor.setSpeed(20); motor.setSpeed(20);
到較低的值(例如5)上傳草圖,并注意步進器旋轉得更慢。
現(xiàn)在嘗試通過將速度提高到20以上來找到步進器的最大速度。在確定一點之后,您會發(fā)現(xiàn)電機完全不動。這是因為它跟不上要求它步進的脈沖流。
嘗試斷開步進器的橙色和粉紅色引線。它仍然應該轉動,但是您會注意到它較弱,因為它沒有兩個線圈都在推動電機運轉。
責任編輯:wv
-
步進電機
+關注
關注
150文章
3095瀏覽量
147344 -
Arduino
+關注
關注
187文章
6464瀏覽量
186642
發(fā)布評論請先 登錄
相關推薦
評論