Ovaj tutorijal je dio: Lekcija 107 28BYJ-48 Stepper 8 Projekti
Ovaj video ima 8 projekata. Svaki projekat ima zaseban kod. Linkovi do drugih videa nalaze se ispod ovog članka.
Lekcija 107-2: Upravljanje 28BYJ-48 koračnim motorom putem serijskog monitora
Projekat 2: Upravljanje koračnim motorom putem serijskog monitora – 28BYJ-48 koračni motor
Ovaj članak je drugi dio tutorijala od 8 dijelova o upravljanju 28BYJ-48 koračnim motorom koristeći Arduino. U ovom projektu predstavljamo serijsku komunikaciju kao metodu unosa od strane korisnika. Koristeći Arduino serijski monitor, korisnici mogu unijeti komande za rotaciju motora u oba smjera.
Svi izvorni kodovi i šeme povezivanja vezani za ovaj projekat dostupni su za preuzimanje na kraju ovog članka.
📘 Uvod
Ovaj projekat proširuje osnovno upravljanje motorom omogućavajući interakciju u realnom vremenu putem serijskog monitora. Umjesto fiksiranja logike rotacije u loop(), korisnik unosi komandu kroz monitor kako bi motor okrenuo naprijed ili nazad. Ovo je idealno za otklanjanje grešaka ili kreiranje interaktivnih alata za testiranje hardverskih postavki.
⚙️ Šema povezivanja
Hardverska postavka ostaje nepromijenjena u odnosu na Projekat 1. 28BYJ-48 koračni motor povezuje se na ULN2003 drajver, koji se zatim povezuje s Arduinom na sljedeći način:
-
IN1 → Arduino pin 8
-
IN2 → Arduino pin 9
-
IN3 → Arduino pin 10
-
IN4 → Arduino pin 11
-
Napajanje i GND na ULN2003 s Arduina
Naslov: Povezivanje za Projekat 2 koristeći ULN2003 i Arduino Uno. Ista konfiguracija kao u Projektu 1.
💻 Objašnjenje koda
Kod uvodi Serial.readStringUntil() za prihvatanje korisničkog unosa sa serijskog monitora:
-
Postavka koračnog motora:
#include <Stepper.h>
const int stepsPerRevolution = 2048;
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
2 Inicijalizacija
void setup() {
myStepper.setSpeed(10);
Serial.begin(9600);
Serial.println("Unesite smjer: f=naprijed, r=nazad");
}
-
Glavna petlja sa serijskim unosom:
void loop() {
if (Serial.available()) {
String input = Serial.readStringUntil('\n');
input.trim();
if (input == "f") {
myStepper.step(stepsPerRevolution);
} else if (input == "r") {
myStepper.step(-stepsPerRevolution);
} else {
Serial.println("Nevažeći unos. Koristite 'f' ili 'r'.");
}
}
}
-
fuzrokuje jedan puni okret naprijed. -
rokreće jedan puni okret nazad.
Ovo dodaje osnovnu kontrolu zasnovanu na tekstu za interaktivno testiranje koračnog motora.
🎬 Vremenske oznake iz punog videa
Pogledajte puni tutorijal video za ovaj projekat na sljedećim vremenskim oznakama:
-
22:23 – Projekat 2: Uvod i objašnjenje koda
-
32:03 – Projekat 2: Demonstracija koristeći serijski monitor
📁 Sekcija za preuzimanje
Kod i šema povezivanja za ovaj projekat mogu se preuzeti ispod. Ovi resursi pomoći će vam da izgradite, testirate i prilagodite koračni motor upravljan putem serijskog monitora u vašim vlastitim projektima.
Sljedeći je [Projekat 3: Upravljanje koračnim motorom koristeći push dugme STPB-1].
Ovaj tutorijal je dio: Lekcija 107 28BYJ-48 Stepper 8 Projekti
- Lekcija 107-1: Pokretanje i zaustavljanje 28BYJ-48 koračnog motora sa smjerom postavljenim u kodu
- Lekcija 107-3: Upravljanje 28BYJ-48 koračnim motorom pomoću tri tipke: CW, CCW i Stop (STPB-1)
- Lekcija 107-4: Upravljanje 28BYJ-48 koračnim motorom pomoću dva tastera, CW, CCW (držati pritisnutim), STPB-2
- Lekcija 107-5: Pošalji 28BYJ-48 motor za jednu revoluciju u CW ili CCW smjeru, STPB-3
- Lekcija 107-6: Upravljanje 28BYJ-48 koračnim motorom pomoću tri tipke, s uglom i brzinom STPB-4
- Lekcija 107-7: Slanje 28BYJ-48 koračnog motora na bilo koji ugao s definiranim STPB-5 tipkama
- Lekcija 107-8: Kontrola brzine 28BYJ-48 koračnog motora pomoću potenciometra
/*
* Lesson 107-2: Controlling a stepper motor from the Serial Monitor
In this lesson, we learn how to use a mini stepper motor 28BYJ-48 for our project. I am presenting eight projects
so you can use it in almost any application. In the video, I have explained the code, shown the full wiring diagram, and
how to connect the wires, push buttons, and breadboard.
Project 2: We will push different keys on the keyboard and control the motor
Project 1: Running the motor
Project 2: Controlling a stepper motor from the Serial Monitor (this code)
Project 3: Controlling a stepper motor using push button STPB-1
Project 4: Controlling using push button STPB-2 keep pressing
Project 5: One Revolution using push button STPB-3
Project 6: Push button for any angle and speed STPB-4
Project 7: Using multiple buttons for any angle STPB-5 angle, speed, and direction
Project 8: Controlling a stepper motor using a potentiometer
* Watch video instructions for this code: https://youtu.be/TQ7R2bY-MWU
*
* This code is part of the Arduino Step by Step Course, which starts here: https://youtu.be/-6qSrDUA5a8
*
* For the library for this code, visit http://robojax.com/
*
If you found this tutorial helpful, please support me so I can continue creating
content like this. Make a donation using PayPal or a credit card: https://bit.ly/donate-robojax
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
int Pin1 = 10;//IN1 is connected to 10
int Pin2 = 11;//IN2 is connected to 11
int Pin3 = 12;//IN3 is connected to 12
int Pin4 = 13;//IN4 is connected to 13
int pole1[] ={0,0,0,0, 0,1,1,1, 0};//pole1, 8 step values
int pole2[] ={0,0,0,1, 1,1,0,0, 0};//pole2, 8 step values
int pole3[] ={0,1,1,1, 0,0,0,0, 0};//pole3, 8 step values
int pole4[] ={1,1,0,0, 0,0,0,1, 0};//pole4, 8 step values
int commandLeft =106;// 106 is ASCII value for lowercase L (l) rotate CW
int commandStop =107;// 107 is ASCII value for lowercase K (k) stops
int commandRight =108;// 108 is ASCII value for lowercase J (j) rotate CCW
int poleStep = 0;
int dirStatus = 3;// stores direction status 3= stop (do not change)
int directionCommand = commandStop;
void setup()
{
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
Serial.begin(9600);
Serial.println("Robojax 28BYJ-48 Stepper");
}
void loop()
{
directionCommand =getCommand();
if(directionCommand ==commandRight)
{
dirStatus =1;
}else if(directionCommand ==commandLeft)
{
dirStatus = 2;
}else if(directionCommand ==commandStop)
{
dirStatus =3;
}
if(dirStatus ==1){
poleStep++;
driveStepper(poleStep);
}else if(dirStatus ==2){
poleStep--;
driveStepper(poleStep);
}else{
driveStepper(8);
}
if(poleStep>7){
poleStep=0;
}
if(poleStep<0){
poleStep=7;
}
delay(1);
}// loop
void driveStepper(int c)
{
digitalWrite(Pin1, pole1[c]);
digitalWrite(Pin2, pole2[c]);
digitalWrite(Pin3, pole3[c]);
digitalWrite(Pin4, pole4[c]);
}
/*
*
* @brief Turns gets command from Serial monitor to control
* direction of stepper motor
* @param none
* @return integer value of ASCII character
*/
int getCommand()
{
int command =0;
if (Serial.available() > 0) {
command =Serial.read() ;
}
//Serial.println(command);
if(command >= commandLeft && command <= commandRight){
return command;
}else{
return 1000;//nothing was received
}
}//getCommand() end
Stvari koje bi vam mogle zatrebati
-
Amazon
-
Amazon
-
AliExpressPurchase 5 pcs 28BYJ-48 stepper motors from AliExpresss.click.aliexpress.com
Resursi i reference
-
Eksterno
-
Eksterno
-
Eksterno
Datoteke📁
Fritzing datoteka
-
28BYJ-48 Stepper Motor
28BYJ-48 Stepper Motor.fzpz0.01 MB