Mafunzo haya ni sehemu ya: Somo la 107 28BYJ-48 Miradi ya Stepper 8
Video hii ina miradi 8. Kila mradi una msimbo tofauti. Viungo vya video zingine viko chini ya makala haya.
Somo la 107-8: Kudhibiti Kasi ya Motor ya Hatua ya 28BYJ-48 Kwa Kutumia Potentiometer
Mradi wa 8: Kudhibiti Motor ya Stepper Kwa Kutumia Potentiometer – Motor ya Stepper ya 28BYJ-48
Makala hii inawasilisha sehemu ya mwisho ya mfululizo wa miradi 8 ya kudhibiti motor ya stepper ya 28BYJ-48 na Arduino. Katika Mradi wa 8, motor ya stepper inadhibitiwa kupitia potentiometer, ambayo inamruhusu mtumiaji kubadilisha kasi na mwelekeo wa motor kwa njia ya nguvu kwa kuzungusha tu kifungo. Njia hii ya kuingiza data ya analogi ni mbinu ya kudhibiti inayoeleweka kwa urahisi na yenye matumizi mengi, inayotumika sana katika robotiki na mifumo ya kudhibiti mwendo.
Michoro kamili ya wiring na msimbo wa mradi huu zinapatikana kwa kupakuliwa chini ya makala.
📘 Utangulizi
Mpangilio huu unatumia potentiometer ya analogi iliyounganishwa na Arduino kusoma thamani za voltage zinazobadilika kati ya 0 na 1023. Kulingana na ingizo hili, kasi na mwelekeo wa motor hubadilishwa kwa njia ya nguvu:
-
Kuzungusha potentiometer kwa mwelekeo wa saa huongeza kasi katika mwelekeo mmoja.
-
Kuzungusha kinyume cha saa kunabadilisha mwelekeo.
⚙️ Wiring
Mradi huu unaunganisha potentiometer na motor ya stepper kwa Arduino kama ifuatavyo:
-
Pini ya katikati ya potentiometer → Pini ya analogi A0
-
Pini nyingine mbili → 5V na GND
-
Kidhibiti cha ULN2003 → Pini 8, 10, 9, 11 kwa motor ya stepper
Maelezo: Wiring ya Mradi wa 8: Potentiometer inasoma ingizo la analogi kudhibiti kasi na mwelekeo.
💻 Maelezo ya Msimbo
Msimbo unasoma thamani za analogi na kuzibadilisha kuwa kasi na mwelekeo:
-
Jumuisha Maktaba na Fafanua Pini:
#include <Stepper.h>
const int stepsPerRevolution = 2048;
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
-
Kazi ya Setup:
void setup() {
Serial.begin(9600);
myStepper.setSpeed(10);
}
-
Kazi ya Loop na Udhibiti wa Potentiometer:
void loop() {
int sensorValue = analogRead(A0);
int speed = map(sensorValue, 0, 1023, -15, 15);
if (speed != 0) {
myStepper.setSpeed(abs(speed));
myStepper.step((speed > 0) ? 1 : -1);
}
delay(2);
}
-
Kazi ya
map()inabadilisha 0–1023 kuwa -15 hadi +15 RPM. -
Kasi na mwelekeo hubadilika kwa wakati halisi wakati potentiometer inapozunguka.
-
abs(speed)inahakikisha thamani chanya ya RPM; mwelekeo unashughulikiwa katikastep().
🎬 Nyakati kutoka Video Kamili
Hapa kuna nyakati muhimu za video za mradi huu:
-
1:39:24 – Mradi wa 8: Utangulizi
-
1:40:58 – Mradi wa 8: Wiring
-
1:44:04 – Mradi wa 8: Msimbo
-
1:53:19 – Mradi wa 8: Maonyesho
Mafunzo haya ni sehemu ya: Somo la 107 28BYJ-48 Miradi ya Stepper 8
- Somo la 107-1: Anzisha na Simamisha Motor ya Hatua ya 28BYJ-48 na Mwelekeo Uliowekwa kwenye Msimbo
- Somo la 107-2: Kudhibiti Motor ya Hatua ya 28BYJ-48 kupitia Monitor ya Serial
- Somo la 107-3: Kudhibiti Motor ya Hatua ya 28BYJ-48 Kwa Kutumia Vitufe Vitatu vya Kushinikiza: CW, CCW, na Simama (STPB-1)
- Somo la 107-4: Kudhibiti Motor ya Hatua ya 28BYJ-48 Kwa Kutumia Vitufe Viwili vya Kushinikiza, CW, CCW (Bonyeza na Ushikilie), STPB-2
- Somo la 107-5: Tuma Motor ya 28BYJ-48 kwa Mzunguko Mmoja katika Mwelekeo wa CW au CCW, STPB-3
- Somo la 107-6: Kudhibiti Motor ya Hatua ya 28BYJ-48 Kwa Kutumia Vitufe Vitatu vya Kushinikiza, pamoja na Pembe na Kasi STPB-4
- Somo la 107-7: Kutuma Motor ya Hatua ya 28BYJ-48 kwa Pembe Yoyote na Vitufe vya Kushinikiza vya STPB-5 Vilivyofafanuliwa
++
/*
* Lesson 107-8: * This is Arduino code to control the speed of a 28BYJ-48
* stepper motor with a potentiometer.
See the video for details and a demonstration.
In this lesson, we learn how to use a mini stepper motor, the 28BYJ-48, for our projects. 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 1: Running motor
Project 2: Controlling stepper motor from Serial Monitor
Project 3: Controlling 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 stepper motor using potentiometer (this code)
* Watch the video instruction 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
* Written by Ahmad Shamshiri for Robojax Robojax.com
* on June 30, 2019 at 19:04 in Ajax, Ontario, Canada
*
*
* * 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/>.
*/
const int desiredValue = 20;//time in sec for a Revolution
const int dir = 2; // 1 for CW and 2 for CCW
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 potPin = A0;// center pin of pot is connected to this pin
int vcc2 = 2;// additional 5V for potentiometer
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 poleStep = 0;
int calcDelayfromTime(int t);
void driveStepper(int c);
int N = calcDelayfromTime(desiredValue);
void setup()
{
pinMode(Pin1, OUTPUT);//define pin for ULN2003 in1
pinMode(Pin2, OUTPUT);//define pin for ULN2003 in2
pinMode(Pin3, OUTPUT);//define pin for ULN2003 in3
pinMode(Pin4, OUTPUT);//define pin for ULN2003 in4
pinMode(vcc2, OUTPUT);//define pin as output for 5V for pot
digitalWrite(vcc2, HIGH);//set vcc2 pin HIGH to have 5V for pot
Serial.begin(9600);
Serial.println("Robojax Stepper Control");
Serial.print("Max time per rev set: ");
Serial.print(desiredValue);
Serial.print(" loop delay: ");
Serial.println(N);
delay(4000);//give use time to read
}// setup
void loop()
{
// Robojax Stepper code S8BYJ-48
if(dir ==1){
poleStep++;
driveStepper(poleStep);
}else if(dir ==2){
poleStep--;
driveStepper(poleStep);
}else{
driveStepper(8);
}
if(poleStep>7){
poleStep=0;
}
if(poleStep<0){
poleStep=7;
}
int potValue =analogRead(potPin);// read potentiometer value
int speed = map(potValue,0, 1023, 1,N);
delay(speed);
}// loop
int calcDelayfromTime(int t){
return ((t-5)/4)+1;
}//
/*
* @brief sends signal to the motor
* @param c is an integer representing the pole of the motor
* @return does not return anything
*
* www.Robojax.com code June 2019
*/
void driveStepper(int c)
{
digitalWrite(Pin1, pole1[c]);
digitalWrite(Pin2, pole2[c]);
digitalWrite(Pin3, pole3[c]);
digitalWrite(Pin4, pole4[c]);
}//driveStepper end here
Tänker att du kanske behöver
-
Amazon
-
Amazon
-
AliExpressPurchase 5 pcs 28BYJ-48 stepper motors from AliExpresss.click.aliexpress.com
Resurser och referenser
-
Extern.
-
Extern.
-
Extern.
Filer📁
Fritzing-fil
-
28BYJ-48 Stepper Motor
28BYJ-48 Stepper Motor.fzpz0.01 MB