Search Code

28BYJ-48 қадамдық моторын ULN2003 драйверімен және Arduino-мен пайдалану

28BYJ-48 қадамдық моторын ULN2003 драйверімен және Arduino-мен пайдалану

Бұл оқулықта біз 28BYJ-48 қадамды моторды ULN2003 драйвері арқылы Arduino-мен басқаруды үйренеміз. Бұл конфигурация мотордың позициясы мен жылдамдығын дәл басқаруға мүмкіндік береді. Осы жобаның соңында сіз моторды екі бағытта айналдырып, оның қадамдарын тиімді басқаруға қабілетті боласыз.

Біз 28BYJ-48 қадамды моторды қолданамыз, ол төмен бағасы мен пайдалану жеңілдігі арқасында әртүрлі робототехника және автоматтандыру жобалары үшін танымал таңдау. ULN2003 драйвер тақтасы қадамды моторды Arduino-мен байланыстырады, бұл бізге мотордың қозғалысын басқару үшін қадам сигналдарын жіберуге мүмкіндік береді. Бұл нұсқаулық сізге моторыңызды айналдыру үшін қажетті сымдарды және кодты көрсетуге көмектеседі.

Қосымша түсініктеме алу үшін, осы оқулықпен байланысты бейнеге (бейне 0:45-те) жүгініңіз.

Аппараттық құралдар түсіндірілді

Бұл жобаның негізгі компоненттері 28BYJ-48 қадамды қозғалтқыш және ULN2003 драйвер тақтасы болып табылады. Қадамды қозғалтқыш бірнеше катушкалардан тұрады, оларды белгілі бір тәртіппен қуаттандыру арқылы айналдыруды жасауға болады. ULN2003 драйвері қосқыш ретінде қызмет етеді, Ардуино-ға әр катушкаға берілетін қуатты басқаруға мүмкіндік береді.

ULN2003 драйвері қадамды мотордың жоғары токын басқару үшін Дарлингтон транзисторлар массивін пайдаланады. Arduino-дан шыққан пин HIGH сигналы шығарғанда, ол мотордағы сәйкес катушкаға токтың ағып кетуіне мүмкіндік береді, бұл мотордың қозғалуына себеп болады. Бұл мотордың айналу бұрышы мен жылдамдығын дәл басқаруға мүмкіндік береді.

Техникалық сипаттама мәліметтері

ӨндірушіULN2003
Бөлшек нөміріULN2003
Логика/Кернеу вх.5 В
Жабдықтау кернеуі5-30 В (макс)
Шығыс токы (арна бойынша)500 мА макс
Шың ток (арна бойынша)2 A макс
PWM жиілігі бойынша нұсқаулықN/A
Кіріс логика шектер0.8 В (төмен), 2.4 В (жоғары)
Кернеу түсуі / RDS(қосулы)жарылыс1.5 В макс
Жылу шектеулері70 °C макс
ПакетDIP-16
Ескертпелер / нұсқалар5В қадамды қозғалтқыштармен жиі қолданылады.

  • Драйвердің сіздің қозғалтқышыңыздың қазіргі талаптарын орындауға қабілетті екеніне көз жеткізіңіз.
  • Қажет болса, жылу шұңқырларын пайдаланыңыз, термиялық шектеулерді басқару үшін.
  • Барлық қосылымдардың қауіпсіз екеніне көз жеткізіңіз, қалқымалы кірістерден аулақ болу үшін.
  • Моторды үлкен жобаларға интеграцияламас бұрын қарапайым қадамдық реттіліктерді іске қосу арқылы тексеріңіз.
  • Моторды жеткілікті қуатпен қамтамасыз етіңіз.

Сымдарды қосу нұсқаулары

stepper_28BYJ-48_wiring_battery
stepper_28BYJ-48_wiring

28BYJ-48 қадамдық моторын ULN2003 драйверіне және Arduino-ға қосу үшін келесі қадамдарды орындаңыз:

Біріншіден, моторды ULN2003 драйверіне қосыңыз. Моторда төрт сым бар, әдетте олардың түстері қызғылт сары, сары, қызғылт және көк болып кодталған. Бұл сымдарды ULN2003 драйверінің сәйкес шығыс пиндеріне қосыңыз. Қосылымдар мынадай:

  • OrangeсымғаOUT1
  • YellowсымғаOUT2
  • PinkсымғаOUT3
  • BlueсымғаOUT4

Келесі, ULN2003 драйверін Arduino-ға қосыңыз. Драйвердегі кіріс пиндері Arduino-дағы төрт цифрлық пинге сәйкес келеді. Мысалы:

  • IN1күшіктіPin 10
  • IN2күшіктіPin 11
  • IN3күшіктіPin 12
  • IN4күшіктіPin 13

Соңында, ULN2003 драйверінің қуат және жер пиндерін Arduino-ға қосыңыз. ҚосыңызVCCArduino-ның 5V шығысына пин жәнеGNDArduino-ның жеріне қосыңыз. Жүйені қосар алдында барлық қосылымдардың сенімді екеніне көз жеткізіңіз.

Код мысалдары мен нұсқаулықтар

Arduino кодының баптау бөлімінде ULN2003 драйверіне қосылған пиндерді анықтаймыз:

int Pin1 = 10; 
int Pin2 = 11; 
int Pin3 = 12; 
int Pin4 = 13; 

Мұнда біз төрт бүтін сандық айнымалыны жариялаймыз:Pin1,Pin2,Pin3, жәнеPin4, Arduino-дағы цифрлық пиндерге сәйкес келеді. Бұл пиндер қадамды қозғалтқыштың қозғалысын басқаруға арналған.

Вsetup()функция, біз осы пиндерді шығыс ретінде конфигурациялаймыз:

void setup() { 
 pinMode(Pin1, OUTPUT);  
 pinMode(Pin2, OUTPUT);  
 pinMode(Pin3, OUTPUT);  
 pinMode(Pin4, OUTPUT);  
} 

Бұл конфигурация Arduino-ның моторды басқару үшін ULN2003 драйверіне сигналдар жібере алатынын қамтамасыз етеді.pinModeфункция әр пинді ШЫҒУ режиміне орнатады, оларға сигнал жіберуге мүмкіндік береді.

Соңында, негізгі циклде біз айнымалыға негізделген мотордың қадамдарын басқару үшін ауыстыру жағдайын жасаймыз._step:

switch(_step){ 
   case 0: 
     digitalWrite(Pin1, LOW);  
     digitalWrite(Pin2, LOW); 
     digitalWrite(Pin3, LOW); 
     digitalWrite(Pin4, HIGH); 
   break;  
   // Additional cases follow
}

Бұл үзіндіде біз қолданамызdigitalWriteәр пинге ағымға негізделген ЖОҒАРЫ немесе ТӨМЕН сигналдарын жіберу_stepБұл катушкалардың қайсысының қуаттандырылатынын басқарады, бұл мотордың айналуына мүмкіндік береді. Осы үзінділерді біріктіретін толық код мақала астында жүктеледі.

Көрсетілім / Не күту керек

Барлығы дұрыс қосылған және код жүктелгеннен кейін, қадамды мотор Arduino-дан келген сигналдарға жауап ретінде айналуы тиіс. Моторды сынау үшін циклдегі кідірісті өзгерту немесе қадамдарды өзгерту арқылы оның реакциясын көруге болады. Егер мотор дұрыс қуатталмаса, ол қозғалмауы немесе тұрақсыз әрекет етуі мүмкін екенін ескеріңіз.

Бөлімдер

  • Кіріспе - 0:00
  • Аппараттық құралдар түсіндірілді - 1:30
  • Сымдарды қосу нұсқаулары - 3:15
  • Код мысалдары мен нұсқаулық - 5:00
  • Көрсету / Не күту керек - 7:45

Суреттер

stepper_28BYJ-48_wiring_battery
stepper_28BYJ-48_wiring_battery
stepper_28BYJ-48_poles
stepper_28BYJ-48_poles
stepper_28BYJ-48_waveform_actual
stepper_28BYJ-48_waveform_actual
stepper_28BYJ-48_waveform_inverted
stepper_28BYJ-48_waveform_inverted
stepper_28BYJ-48_wiring
stepper_28BYJ-48_wiring
6-The source code for stepper motor 28BYJ-48 with ULN2003 for Arduino
Тіл: C++
// Original source is http://www.geeetech.com/wiki/index.php/Stepper_Motor_5V_4-Phase_5-Wire_%26_ULN2003_Driver_Board_for_Arduino
// Update by Ahmad Shamshiri for RoboJax.com
// Published on March 27, 2017 in Ajax, ON, Canada.
/*
 * 
  Need wiring diagram from this code:  https://youtu.be/0glBk917HPg
  Purchase My Arduino course on Udemy.com http://robojax.com/L/?id=62
 * 

 * Get this code and other Arduino codes from RoboJax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place. Purchase My course on Udemy.com http://robojax.com/L/?id=62

If you found this tutorial helpful, please support me so I can continue creating 
content like this. 

or make a donation using PayPal http://robojax.com/L/?id=64

 *  * 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; 
int Pin2 = 11; 
int Pin3 = 12; 
int Pin4 = 13; 
int _step = 0; 
boolean dir = true;// false=clockwise, true=counter clockwise
int count=0;
void setup() 
{ 
 pinMode(Pin1, OUTPUT);  
 pinMode(Pin2, OUTPUT);  
 pinMode(Pin3, OUTPUT);  
 pinMode(Pin4, OUTPUT);  
} 
 void loop() 
{ 
 switch(_step){ 
   case 0: 
     digitalWrite(Pin1, LOW);  
     digitalWrite(Pin2, LOW); 
     digitalWrite(Pin3, LOW); 
     digitalWrite(Pin4, HIGH); 
   break;  
   case 1: 
     digitalWrite(Pin1, LOW);  
     digitalWrite(Pin2, LOW); 
     digitalWrite(Pin3, HIGH); 
     digitalWrite(Pin4, HIGH); 
   break;  
   case 2: 
     digitalWrite(Pin1, LOW);  
     digitalWrite(Pin2, LOW); 
     digitalWrite(Pin3, HIGH); 
     digitalWrite(Pin4, LOW); 
   break;  
   case 3: 
     digitalWrite(Pin1, LOW);  
     digitalWrite(Pin2, HIGH); 
     digitalWrite(Pin3, HIGH); 
     digitalWrite(Pin4, LOW); 
   break;  
   case 4: 
     digitalWrite(Pin1, LOW);  
     digitalWrite(Pin2, HIGH); 
     digitalWrite(Pin3, LOW); 
     digitalWrite(Pin4, LOW); 
   break;  
   case 5: 
     digitalWrite(Pin1, HIGH);  
     digitalWrite(Pin2, HIGH); 
     digitalWrite(Pin3, LOW); 
     digitalWrite(Pin4, LOW); 
   break;  
     case 6: 
     digitalWrite(Pin1, HIGH);  
     digitalWrite(Pin2, LOW); 
     digitalWrite(Pin3, LOW); 
     digitalWrite(Pin4, LOW); 
   break;  
   case 7: 
     digitalWrite(Pin1, HIGH);  
     digitalWrite(Pin2, LOW); 
     digitalWrite(Pin3, LOW); 
     digitalWrite(Pin4, HIGH); 
   break;  
   default: 
     digitalWrite(Pin1, LOW);  
     digitalWrite(Pin2, LOW); 
     digitalWrite(Pin3, LOW); 
     digitalWrite(Pin4, LOW); 
   break;  
 } 
 if(dir){ 
   _step++; 
 }else{ 
   _step--; 
 } 
 if(_step>7){ 
   _step=0; 
 } 
 if(_step<0){ 
   _step=7; 
 } 
 delay(1); 

}

Файлдар📁

Файлдар жоқ.