在本篇文章中,我們將學(xué)習(xí)如何使用搖桿和Arduino開發(fā)板控制步進(jìn)電機(jī)的知識。在這里,我們將使用Arduino UNO開發(fā)板和PS2游戲桿控制步進(jìn)電機(jī)的速度和旋轉(zhuǎn)方向。
我們使用帶有內(nèi)部驅(qū)動(dòng)器的單極5V DC步進(jìn)電機(jī)28BYJ-48。因此,不需要任何步進(jìn)電機(jī)驅(qū)動(dòng)。相反,我們將使用ULN2003A達(dá)林頓雙電機(jī)驅(qū)動(dòng)器IC。 PS2游戲桿由兩個(gè)10k歐姆的電位器組成,即一個(gè)用于X軸,另一個(gè)用于Y軸。它還包括一個(gè)按鈕。但是我們將僅使用X軸來控制步進(jìn)電機(jī)的運(yùn)動(dòng)。
所需的組件
● Arduino UNO開發(fā)板
● 28BYJ-48 5V DC步進(jìn)電機(jī)
● ULN2003芯片
● PS2游戲桿
● 5V DC電源
什么是步進(jìn)電機(jī)
步進(jìn)電動(dòng)機(jī)(stepper motor)是一種無刷直流電動(dòng)機(jī),它將完整的全周長分為多個(gè)相等的步長。然后可以命令電機(jī)的位置移動(dòng)并保持在其中一個(gè)步進(jìn),而無需任何位置傳感器進(jìn)行反饋(開環(huán)控制器),只要在轉(zhuǎn)矩和速度方面仔細(xì)選擇適合電動(dòng)機(jī)尺寸的電動(dòng)機(jī)即可。
步進(jìn)電機(jī)28-BYJ48的連接方式
步進(jìn)電動(dòng)機(jī)28-BYJ48是一個(gè)具有5引線線圈布置的單極電動(dòng)機(jī)。必須按特定順序?yàn)樗膫€(gè)線圈通電。紅線連接到+ 5V電壓,其余四根線將被拉到接地以觸發(fā)相應(yīng)的線圈。我們使用Arduino開發(fā)板以特定順序?yàn)檫@些線圈通電,并使電動(dòng)機(jī)執(zhí)行所需的步數(shù)。
步進(jìn)電機(jī)需要借助驅(qū)動(dòng)器芯片才能進(jìn)行操作。原因是控制器需要較高的電流才能運(yùn)行,但是僅步進(jìn)電機(jī)將無法從其I / O引腳提供足夠的電流來使電機(jī)運(yùn)行。因此使用ULN2003作為驅(qū)動(dòng)模塊,電流被放大了。
連接電路圖
要使用搖桿和Arduino控制步進(jìn)電機(jī),請如下圖所示組裝電路。
步數(shù)計(jì)算
在將代碼上傳到Arduino板上之前需要進(jìn)行步數(shù)計(jì)算
在Arduino中,我們將以4步順序操作電機(jī),因此需要計(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》
#define STEPS 32
// define stepper motor control pins
#define IN1 7
#define IN2 6
#define IN3 5
#define IN4 4
// initialize stepper library
Stepper stepper(STEPS, IN4, IN2, IN3, IN1);
// joystick pot output is connected to Arduino A0
#define joystick A0
void setup()
{
}
void loop()
{
// read analog value from the potentiometer
int val = analogRead(joystick);
// if the joystic is in the middle ===》 stop the motor
if( (val 》 500) && (val 《 523) )
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
else
{
// move the motor in the first direction
while (val 》= 523)
{
// map the speed between 5 and 500 rpm
int speed_ = map(val, 523, 1023, 5, 500);
// set motor speed
stepper.setSpeed(speed_);
// move the motor (1 step)
stepper.step(1);
val = analogRead(joystick);
}
// move the motor in the other direction
while (val 《= 500)
{
// map the speed between 5 and 500 rpm
int speed_ = map(val, 500, 0, 5, 500);
// set motor speed
stepper.setSpeed(speed_);
// move the motor (1 step)
stepper.step(-1);
val = analogRead(joystick);
}
}
}
編輯:hfy
-
驅(qū)動(dòng)器
+關(guān)注
關(guān)注
54文章
9082瀏覽量
155498 -
電位器
+關(guān)注
關(guān)注
14文章
1028瀏覽量
69241 -
步進(jìn)電機(jī)
+關(guān)注
關(guān)注
153文章
3248瀏覽量
152348 -
步進(jìn)電動(dòng)機(jī)
+關(guān)注
關(guān)注
0文章
60瀏覽量
13369
發(fā)布評論請先 登錄
為什么步進(jìn)電機(jī)的力矩會(huì)隨轉(zhuǎn)速的升高而下降
步進(jìn)電機(jī)驅(qū)動(dòng)器的作用介紹
步進(jìn)電機(jī)的控制原理
伺服電機(jī)和步進(jìn)電機(jī)的核心區(qū)別
【上海晶珩睿莓1開發(fā)板試用體驗(yàn)】物聯(lián)網(wǎng)窗簾——步進(jìn)電機(jī)的網(wǎng)絡(luò)遠(yuǎn)程控制
單片機(jī)怎么控制步進(jìn)電機(jī)的
【微五科技CF5010RBT60開發(fā)板試用體驗(yàn)】+步進(jìn)電機(jī)的驅(qū)動(dòng)控制
同步電機(jī)步進(jìn)運(yùn)動(dòng)性能分析
步進(jìn)電機(jī)和伺服電機(jī)的區(qū)別是什么?
實(shí)時(shí)生成步進(jìn)電機(jī)速度曲線
步進(jìn)電機(jī)的 LabVIEW 控制與應(yīng)用
樹莓派 RP2350 實(shí)現(xiàn)步進(jìn)電機(jī)精確控制
剎車步進(jìn)電機(jī)的特點(diǎn)
通過Arduino控制步進(jìn)電機(jī)速度和旋轉(zhuǎn)方向
評論