資料介紹
PCB圖如下:
成分
ULN2003LVPWR 德州儀器 |
× 1 |
741C083510JP CTS電阻器產(chǎn)品 |
× 1 |
106CKR063M CDE/伊利諾伊電容器 |
× 1 |
SMBJ5.0CA SMC 二極管解決方案 |
× 1 |
16針公頭 | × 1 |
C503B-RBS-CW0Z0AA2 科銳LED |
× 1 |
描述
DIY ULN2003電機(jī)驅(qū)動(dòng)器
ULN2003驅(qū)動(dòng)板
28BYJ-48 是您能找到的最便宜的步進(jìn)電機(jī)之一。雖然它不是超級(jí)準(zhǔn)確或功能強(qiáng)大,但它是用于小型項(xiàng)目或只想了解步進(jìn)電機(jī)的絕佳電機(jī)。
該電機(jī)通常用于自動(dòng)調(diào)節(jié)空調(diào)機(jī)組的葉片。它有一個(gè)內(nèi)置的變速箱,可以提供一些額外的扭矩并大大降低速度。
您可以在下面找到本教程中使用的步進(jìn)電機(jī)和驅(qū)動(dòng)器的規(guī)格。
重要提示:制造商通常指定電機(jī)具有 64:1 的齒輪減速。Arduino 論壇的一些成員注意到這是不正確的,因此他們拆開(kāi)一些電機(jī)來(lái)檢查實(shí)際的齒輪比。他們確定確切的齒輪比實(shí)際上是 63.68395:1,這導(dǎo)致每整圈大約有 4076 步(在半步模式下)。
我不確定是否所有制造商都使用完全相同的變速箱,但您可以調(diào)整代碼中每轉(zhuǎn)的步數(shù),以匹配您的型號(hào)。
Adafruit Industries 小型減速步進(jìn)電機(jī)使用與 28BYJ-48 相同的外形尺寸,但具有不同的齒輪比。它有一個(gè)大約 1/16 的減速齒輪組,每轉(zhuǎn) 513 步(在全步模式下)。您可以下載它的數(shù)據(jù)表
控制 28BYJ-48 步進(jìn)電機(jī)的基本 Arduino 示例代碼
您可以使用 Arduino IDE 將以下示例代碼上傳到您的 Arduino。
此示例使用 Stepper.h 庫(kù),該庫(kù)應(yīng)與 Arduino IDE 一起預(yù)裝。此草圖將步進(jìn)電機(jī)沿一個(gè)方向轉(zhuǎn)動(dòng) 1 圈,暫停,然后沿另一個(gè)方向轉(zhuǎn)動(dòng) 1 圈。
// 包括 Arduino Stepper.h 庫(kù):
#include
// 定義每次旋轉(zhuǎn)的步數(shù):
常量 int stepsPerRevolution = 2048;
// 接線:
// ULN2003 驅(qū)動(dòng)器上的引腳 8 到 IN1
// ULN2003 驅(qū)動(dòng)器上的引腳 9 到 IN2
// ULN2003 驅(qū)動(dòng)器上的引腳 10 到 IN3
// ULN2003 驅(qū)動(dòng)器上的引腳 11 到 IN4
// 創(chuàng)建名為“myStepper”的步進(jìn)器對(duì)象,注意引腳順序:
步進(jìn)器 myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);
無(wú)效設(shè)置(){
// 將速度設(shè)置為 5 rpm:
myStepper.setSpeed(5);
// 以 9600 的波特率開(kāi)始串行通信:
序列號(hào).開(kāi)始(9600);
}
無(wú)效循環(huán)(){
// 向一個(gè)方向旋轉(zhuǎn)一圈:
Serial.println("順時(shí)針");
myStepper.step(stepsPerRevolution);
延遲(500);
// 向另一個(gè)方向旋轉(zhuǎn)一圈:
Serial.println("逆時(shí)針");
myStepper.step(-stepsPerRevolution);
延遲(500);
}
代碼說(shuō)明:
草圖首先包含 Stepper.h Arduino 庫(kù)。關(guān)于這個(gè)庫(kù)的更多信息可以在 Arduino 網(wǎng)站上找到。
// 包括 Arduino Stepper.h 庫(kù):
#include
接下來(lái),我定義了電機(jī)旋轉(zhuǎn) 1 圈需要多少步。在本例中,我們將在全步模式下使用電機(jī)。這意味著旋轉(zhuǎn) 360 度需要 2048 步(參見(jiàn)上面的電機(jī)規(guī)格)。
// 定義每次旋轉(zhuǎn)的步數(shù):
常量 int stepsPerRevolution = 2048;
接下來(lái),您需要?jiǎng)?chuàng)建 Stepper 類的新實(shí)例,它表示連接到 Arduino 的特定步進(jìn)電機(jī)。為此,我們使用函數(shù)?
步進(jìn)器(步驟,pin1,pin2,pin3,pin4)
?其中steps是每轉(zhuǎn)的步數(shù),pin1到pin4是電機(jī)連接的引腳。要獲得正確的步進(jìn)順序,我們需要按以下順序設(shè)置引腳:8、10、9、11。
// 創(chuàng)建名為“myStepper”的步進(jìn)器對(duì)象,注意引腳順序:
步進(jìn)器 myStepper = Stepper(stepsPerRevolution, 8, 10, 9, 11);
在這種情況下,我將步進(jìn)電機(jī)稱為“myStepper”,但您也可以使用其他名稱,例如“z_motor”或“l(fā)iftmotor”等。?
步進(jìn)電機(jī) = Stepper(stepsPerRevolution, 8, 10, 9, 11);
. 您可以創(chuàng)建多個(gè)具有不同名稱和引腳的步進(jìn)電機(jī)對(duì)象。這使您可以輕松地同時(shí)控制 2 個(gè)或更多步進(jìn)電機(jī)。
在設(shè)置中,您可以使用功能以 rpm 為單位設(shè)置速度?
設(shè)定轉(zhuǎn)速(rpm)
. 28byj-48 步進(jìn)電機(jī)的最大速度在 5 V 時(shí)約為 10-15 rpm。
無(wú)效設(shè)置(){
// 將速度設(shè)置為 5 rpm:
myStepper.setSpeed(5);
// 以 9600 的波特率開(kāi)始串行通信:
序列號(hào).開(kāi)始(9600);
}
在代碼的循環(huán)部分,我們簡(jiǎn)單地調(diào)用?
步驟(步驟)
?以由電機(jī)確定的速度將電機(jī)轉(zhuǎn)動(dòng)特定步數(shù)的功能?
設(shè)定轉(zhuǎn)速(rpm)
?功能。將負(fù)數(shù)傳遞給此函數(shù)會(huì)反轉(zhuǎn)電機(jī)的旋轉(zhuǎn)方向。
無(wú)效循環(huán)(){
// 向一個(gè)方向旋轉(zhuǎn)一圈:
Serial.println("順時(shí)針");
myStepper.step(stepsPerRevolution);
延遲(500);
// 向另一個(gè)方向旋轉(zhuǎn)一圈:
Serial.println("逆時(shí)針");
myStepper.step(-stepsPerRevolution);
延遲(500);
}
帶有 Arduino 和 AccelStepper 庫(kù)的 28BYJ-48 步進(jìn)電機(jī)的示例代碼
在以下三個(gè)示例中,我將向您展示如何控制步進(jìn)電機(jī)的速度、方向和步數(shù)。在這些示例中,我將使用 AccelStepper 庫(kù)。
Mike McCauley 編寫(xiě)的 AccelStepper 庫(kù)是一個(gè)非常棒的庫(kù),可用于您的項(xiàng)目。優(yōu)點(diǎn)之一是它支持加速和減速,但它也有很多其他不錯(cuò)的功能。
你可以下載這個(gè)庫(kù)的最新版本?AccelStepper-1.59.zip
您可以通過(guò)轉(zhuǎn)到 Arduino IDE 中的 Sketch > Include Library > Add .ZIP Library... 來(lái)安裝庫(kù)。
另一種選擇是導(dǎo)航到工具 > 管理庫(kù)...或在 Windows 上鍵入 Ctrl + Shift + I。庫(kù)管理器將打開(kāi)并更新已安裝庫(kù)的列表。
您可以搜索“accelstepper”并查找 Mike McCauley 的庫(kù)。選擇最新版本,然后單擊安裝。
1.連續(xù)旋轉(zhuǎn)示例代碼
以下草圖可用于以恒定速度連續(xù)運(yùn)行一個(gè)或多個(gè)步進(jìn)電機(jī)。(不使用加速或減速)。
您可以通過(guò)單擊代碼字段右上角的按鈕來(lái)復(fù)制代碼。
/* 使用 ULN2003 驅(qū)動(dòng)板、AccelStepper 和 Arduino UNO 控制 28BYJ-48 步進(jìn)電機(jī)的示例草圖:連續(xù)旋轉(zhuǎn)。更多信息:https://www.makerguides.com */
// 包含 AccelStepper 庫(kù):
#include
// 電機(jī)引腳定義:
#define motorPin1 8 // ULN2003 驅(qū)動(dòng)器上的 IN1
#define motorPin2 9 // ULN2003 驅(qū)動(dòng)器上的 IN2
#define motorPin3 10 // ULN2003 驅(qū)動(dòng)器上的 IN3
#define motorPin4 11 // ULN2003 驅(qū)動(dòng)器上的 IN4
// 定義AccelStepper接口類型;半步模式下的 4 線電機(jī):
#define MotorInterfaceType 8
// 使用引腳序列 IN1-IN3-IN2-IN4 進(jìn)行初始化,以便將 AccelStepper 庫(kù)與 28BYJ-48 步進(jìn)電機(jī)一起使用:
AccelStepper stepper = AccelStepper(MotorInterfaceType, motorPin1, motorPin3, motorPin2, motorPin4);
無(wú)效設(shè)置(){
// 設(shè)置每秒最大步數(shù):
stepper.setMaxSpeed(1000);
}
無(wú)效循環(huán)(){
// 以每秒步數(shù)為單位設(shè)置電機(jī)的速度:
stepper.setSpeed(500);
// 以 setSpeed() 設(shè)置的恒定速度步進(jìn)電機(jī):
stepper.runSpeed();
}
代碼如何工作:
同樣,第一步是將庫(kù)包含在?
#include
.
// 包含 AccelStepper 庫(kù):
#include
下一步是定義 ULN2003 到 Arduino 的連接。
該聲明?
#定義
?用于為常量值命名。編譯程序時(shí),編譯器會(huì)將對(duì)該常量的任何引用替換為定義的值。所以你提到的任何地方?
電機(jī)引腳1
,編譯器會(huì)在編譯程序時(shí)將其替換為值 8。
// 電機(jī)引腳定義:
#define motorPin1 8 // ULN2003 驅(qū)動(dòng)器上的 IN1
#define motorPin2 9 // ULN2003 驅(qū)動(dòng)器上的 IN2
#define motorPin3 10 // ULN2003 驅(qū)動(dòng)器上的 IN3
#define motorPin4 11 // ULN2003 驅(qū)動(dòng)器上的 IN4
下一步是為 AccelStepper 庫(kù)指定電機(jī)接口類型。在這種情況下,我們將以半步模式驅(qū)動(dòng) 4 線步進(jìn)電機(jī),因此我們將接口類型設(shè)置為“8”。您可以在此處找到其他接口類型。如果您想以全步模式(每轉(zhuǎn)少步)運(yùn)行電機(jī),只需將 8 更改為 4。
// 定義AccelStepper接口類型;半步模式下的 4 線電機(jī):
#define MotorInterfaceType 8
?
接下來(lái),您需要使用適當(dāng)?shù)碾姍C(jī)接口類型和連接創(chuàng)建 AccelStepper 類的新實(shí)例。為了獲得正確的步進(jìn)順序,我們需要按以下順序設(shè)置引腳:motorPin1、motorPin3、motorPin2、motorPin4。
在這種情況下,我將步進(jìn)電機(jī)稱為“步進(jìn)器”,但您也可以使用其他名稱,例如“z_motor”或“l(fā)iftmotor”等。?
AccelStepper liftmotor = AccelStepper(MotorInterfaceType, motorPin1, motorPin3, motorPin2, motorPin4);
. 您可以創(chuàng)建多個(gè)具有不同名稱和引腳的步進(jìn)電機(jī)對(duì)象。這使您可以輕松地同時(shí)控制 2 個(gè)或更多步進(jìn)電機(jī)。
// 使用引腳序列 IN1-IN3-IN2-IN4 進(jìn)行初始化,以便將 AccelStepper 庫(kù)與 28BYJ-48 步進(jìn)電機(jī)一起使用:
AccelStepper stepper = AccelStepper(MotorInterfaceType, motorPin1, motorPin3, motorPin2, motorPin4);
在代碼的設(shè)置部分,我們使用函數(shù)定義最大速度(步/秒)?
設(shè)置最大速度()
. 每秒超過(guò) 1000 步的速度可能不可靠,因此我將其設(shè)置為最大值。請(qǐng)注意,我指定了步進(jìn)電機(jī)的名稱('stepper'),我想為其定義最大速度。如果您連接了多個(gè)步進(jìn)電機(jī),您可以為每個(gè)電機(jī)指定不同的速度:?
stepper2.setMaxSpeed(500);
.
無(wú)效設(shè)置(){
// 設(shè)置每秒最大步數(shù):
stepper.setMaxSpeed(1000);
}
在循環(huán)中,我們首先使用函數(shù)設(shè)置我們希望電機(jī)運(yùn)行的速度?
設(shè)置速度()
. (您也可以將其放在代碼的設(shè)置部分中)。
stepper.runSpeed()
?輪詢電機(jī),當(dāng)一個(gè)步驟到期時(shí),它執(zhí)行 1 個(gè)步驟。這取決于設(shè)置的速度和自上一步以來(lái)的時(shí)間。如果要改變電機(jī)的方向,可以設(shè)置負(fù)轉(zhuǎn)速:?
stepper.setSpeed(-400);
?以另一種方式轉(zhuǎn)動(dòng)電機(jī)。
無(wú)效循環(huán)(){
// 以每秒步數(shù)為單位設(shè)置電機(jī)的速度:
stepper.setSpeed(500);
// 以 setSpeed() 設(shè)置的恒定速度步進(jìn)電機(jī):
stepper.runSpeed();
}
在半步模式下,一轉(zhuǎn)需要 4096 步,因此 500 步/秒導(dǎo)致大約 7 rpm。
2.草圖控制步數(shù)或轉(zhuǎn)數(shù)
使用以下草圖,您可以控制速度、方向和步數(shù)/轉(zhuǎn)數(shù)。
在這種情況下,步進(jìn)電機(jī)以 500 步/秒順時(shí)針旋轉(zhuǎn) 1 圈,然后以 1000 步/秒逆時(shí)針旋轉(zhuǎn) 1 圈,最后以 1000 步/秒順時(shí)針旋轉(zhuǎn) 2 圈。
/* 使用 ULN2003 驅(qū)動(dòng)板、AccelStepper 和 Arduino UNO 控制 28BYJ-48 步進(jìn)電機(jī)的示例草圖:步數(shù)/轉(zhuǎn)數(shù)。更多信息:https://www.makerguides.com */
// 包含 AccelStepper 庫(kù):
#include
// 電機(jī)引腳定義:
#define motorPin1 8 // ULN2003 驅(qū)動(dòng)器上的 IN1
#define motorPin2 9 // ULN2003 驅(qū)動(dòng)器上的 IN2
#define motorPin3 10 // ULN2003 驅(qū)動(dòng)器上的 IN3
#define motorPin4 11 // ULN2003 驅(qū)動(dòng)器上的 IN4
// 定義AccelStepper接口類型;半步模式下的 4 線電機(jī):
#define MotorInterfaceType 8
// 使用引腳序列 IN1-IN3-IN2-IN4 進(jìn)行初始化,以便將 AccelStepper 庫(kù)與 28BYJ-48 步進(jìn)電機(jī)一起使用:
AccelStepper stepper = AccelStepper(MotorInterfaceType, motorPin1, motorPin3, motorPin2, motorPin4);
無(wú)效設(shè)置(){
// 設(shè)置每秒最大步數(shù):
stepper.setMaxSpeed(1000);
}
無(wú)效循環(huán)(){
// 將當(dāng)前位置設(shè)置為 0:
stepper.setCurrentPosition(0);
// 以 500 步/秒的速度向前運(yùn)行電機(jī),直到電機(jī)達(dá)到 4096 步(1 轉(zhuǎn)):
而(stepper.currentPosition()!= 4096){
stepper.setSpeed(500);
stepper.runSpeed();
}
延遲(1000);
// 將位置重置為 0:
stepper.setCurrentPosition(0);
// 以 1000 步/秒的速度向后運(yùn)行電機(jī),直到電機(jī)達(dá)到 -4096 步(1 轉(zhuǎn)):
而(stepper.currentPosition()!= -4096){
stepper.setSpeed(-1000);
stepper.runSpeed();
}
延遲(1000);
// 將位置重置為 0:
stepper.setCurrentPosition(0);
// 以 1000 步/秒的速度向前運(yùn)行電機(jī),直到電機(jī)達(dá)到 8192 步(2 轉(zhuǎn)):
而(stepper.currentPosition()!= 8192){
stepper.setSpeed(1000);
stepper.runSpeed();
}
延遲(3000);
}
- ULN2003驅(qū)動(dòng)28BYJ48
- cubemx stm32基于uln2003模塊的步進(jìn)電機(jī)驅(qū)動(dòng)代碼
- 基于ULN2003的步進(jìn)電機(jī)驅(qū)動(dòng)
- 基于定時(shí)器中斷的ULN2003驅(qū)動(dòng)器/步進(jìn)電機(jī)驅(qū)動(dòng)程序
- 步進(jìn)電機(jī)驅(qū)動(dòng)板模塊ULN2003芯片資料包 41次下載
- 【51單片機(jī)】 ULN2003模塊 驅(qū)動(dòng)步進(jìn)電機(jī)(5線)正反轉(zhuǎn) 代碼以及接線圖(簡(jiǎn)單教學(xué),一看就會(huì))
- ULN2003驅(qū)動(dòng)步進(jìn)電機(jī)的keil程序和電路圖免費(fèi)下載 127次下載
- 基于ULN2003及單片機(jī)驅(qū)動(dòng)步進(jìn)電機(jī)的應(yīng)用案例 74次下載
- ULN2003中文資料 89次下載
- ULN2003驅(qū)動(dòng)步進(jìn)電機(jī) 157次下載
- ULN2003英文版資料 0次下載
- 基于單片機(jī)實(shí)現(xiàn)74HC595通過(guò)ULN2003驅(qū)動(dòng)2路步進(jìn)電機(jī) 225次下載
- 基于單片機(jī)實(shí)現(xiàn)138譯碼器通過(guò)ULN2003驅(qū)動(dòng)2路步進(jìn)電機(jī) 24次下載
- ULN2003 中文手冊(cè) pdf
- uln2003 pdf datasheet
- 使用ULN2003A的步進(jìn)電機(jī)驅(qū)動(dòng)例程 4870次閱讀
- ULN2003芯片的主要作用 9238次閱讀
- 基于ULN2003A達(dá)林頓管的步進(jìn)電機(jī)驅(qū)動(dòng)設(shè)計(jì) 7594次閱讀
- 基于51單片機(jī)的自動(dòng)門(mén)設(shè)計(jì) 2802次閱讀
- ULN2003內(nèi)部構(gòu)造及等效電路圖 2.4w次閱讀
- 步進(jìn)電機(jī)驅(qū)動(dòng)器有什么參數(shù)_步進(jìn)電機(jī)驅(qū)動(dòng)器常見(jiàn)故障維修 1.5w次閱讀
- 如何利用單片機(jī)來(lái)驅(qū)動(dòng)繼電器 2.2w次閱讀
- 一文看懂a(chǎn)rduino驅(qū)動(dòng)uln2003操作步進(jìn)電機(jī)的方法 8.2w次閱讀
- 74hc595通過(guò)ULN2003驅(qū)動(dòng)8*8LED點(diǎn)陣屏 2.9w次閱讀
- uln2003中文資料匯總(uln2003引腳圖及功能_特性參數(shù)及應(yīng)用電路) 14.4w次閱讀
- 一文看懂uln2803和uln2003區(qū)別 10.6w次閱讀
- uln2003有什么作用_引腳圖及功能_工作原理及驅(qū)動(dòng)應(yīng)用電路 22.2w次閱讀
- ULN2003在自動(dòng)延遲電路中的應(yīng)用 4636次閱讀
- uln2003apg引腳圖及功能介紹 7.4w次閱讀
- ULN2003引腳功能介紹 6.2w次閱讀
下載排行
本周
- 1免費(fèi)開(kāi)源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 137次下載 | 1 積分
- 2基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
- 0.10 MB | 128次下載 | 免費(fèi)
- 3匯川變頻器圖紙
- 0.44 MB | 2次下載 | 免費(fèi)
- 4ADI公司串行端口開(kāi)發(fā)和故障排除指南
- 343.09KB | 1次下載 | 免費(fèi)
- 5英威騰變頻器圖紙
- 1.10 MB | 1次下載 | 免費(fèi)
- 651單片機(jī)pwm和spwm
- 0.19 MB | 1次下載 | 免費(fèi)
- 7AN81-超緊湊型LCD背光逆變器
- 356.1KB | 次下載 | 免費(fèi)
- 8AN107-為汽車和工業(yè)應(yīng)用擴(kuò)展電源路徑電路的輸入電壓范圍
- 74.73KB | 次下載 | 免費(fèi)
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 450次下載 | 免費(fèi)
- 2免費(fèi)開(kāi)源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 137次下載 | 1 積分
- 3基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
- 0.10 MB | 128次下載 | 免費(fèi)
- 4使用單片機(jī)實(shí)現(xiàn)七人表決器的程序和仿真資料免費(fèi)下載
- 2.96 MB | 44次下載 | 免費(fèi)
- 53314A函數(shù)發(fā)生器維修手冊(cè)
- 16.30 MB | 31次下載 | 免費(fèi)
- 6美的電磁爐維修手冊(cè)大全
- 1.56 MB | 22次下載 | 5 積分
- 7如何正確測(cè)試電源的紋波
- 0.36 MB | 12次下載 | 免費(fèi)
- 8使用TL431設(shè)計(jì)電源
- 0.67 MB | 10次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935119次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191367次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65987次下載 | 10 積分
評(píng)論
查看更多