Кодты іздеу

ESP32 оқулығы 15/55 - ESP32 L293D көмегімен тұрақты ток қозғалтқышының жылдамдығын басқару | SunFounder ESP32 IoT оқу жинағы

ESP32 оқулығы 15/55 - ESP32 L293D көмегімен тұрақты ток қозғалтқышының жылдамдығын басқару | SunFounder ESP32 IoT оқу жинағы

ESP32 Оқулық 15/55 - ESP32 L293D көмегімен тұрақты ток қозғалтқышының жылдамдығын басқару | SunFounder ESP32 IoT оқу жиынтығы

ESP32 көмегімен тұрақты ток қозғалтқышын басқару қиын болып көрінуі мүмкін, бірақ дұрыс компоненттер мен түсінік болса, бұл өте оңай. Бұл оқулықта біз L293D қозғалтқыш драйверін пайдаланып, тұрақты ток қозғалтқышының жылдамдығы мен бағытын басқаруға мүмкіндік беретін жоба құрастырамыз. Соңында сізде қозғалтқышты алға және артқа айналдырып, оның жылдамдығын реттей алатын жұмыс істейтін қондырғы болады. Көрнекі анықтама үшін бейнені (00:00-дегі бейнеде) міндетті түрде қараңыз.

ESP32-15_L293D_қозғалтқыш_сұлбасы

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

Бұл жобаның негізгі компоненттеріне ESP32 микроконтроллері және L293D қозғалтқыш драйвері кіреді. ESP32 - кірістірілген Wi-Fi және Bluetooth мүмкіндіктері бар қуатты микроконтроллер, бұл оны IoT қолданбалары үшін қолайлы етеді. Ол GPIO түйреуіштері арқылы қозғалтқыштарды қоса алғанда, әртүрлі аппараттық компоненттерді басқара алады. L293D - қос H-көпір қозғалтқыш драйвері, ол екі тұрақты ток қозғалтқышының бағыты мен жылдамдығын басқаруға мүмкіндік береді. Әрбір H-көпір қозғалтқыш терминалдарына қолданылатын кернеудің полярлығын өзгерту арқылы қозғалтқышты кез келген бағытта жүргізе алады. Сонымен қатар, L293D әр арнаға 600 мА дейінгі токты өңдей алады, бұл оны кіші және орташа қозғалтқыштар үшін қолайлы етеді.

L293D-Қозғалтқыш-Драйвер-ИК

Деректер парағының мәліметтері

Өндіруші Texas Instruments
Бөлшек нөмірі L293D
Логика/IO кернеуі 2.5 – 7 В
Қоректендіру кернеуі 4.5 – 36 В
Шығыс тогы (әр арна) 600 мА (тип.)
Ең жоғары ток (әр арна) 1.2 А (макс)
ШИМ жиілігі бойынша нұсқау 20 кГц (тип.)
Кіріс логикалық шектері 0.8 В (жоғары), 2.0 В (төмен)
Кернеудің төмендеуі / RDS(on) / қанығу 1.5 В (макс)
Жылулық шектер 150 °C (макс)
Қаптама 16-DIP
Ескертулер / нұсқалар Төрт еселі жартылай H драйвер

 

  • Жоғары ток қолданбалары үшін дұрыс жылу таратуды қамтамасыз етіңіз.
  • Кернеу секірулерін болдырмау үшін қоректендіру көзін конденсаторлармен ажыратыңыз.
  • Полярлықтың ауысуын болдырмау үшін сымдарды қосуда абай болыңыз.
  • Қызып кетуді болдырмау үшін жылдамдықты басқаруда ШИМ қолданыңыз.
  • Зақымдануды болдырмау үшін қозғалтқыштың номиналды кернеуін тексеріңіз.

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

ESP32-15_L293D_motor_wiring

ESP32 мен L293D қозғалтқыш драйверін қосу үшін алдымен қуатты қосудан бастаңыз. L293D-нің 16-шы түйреуішін қоректендіру көзінің оң терминалына, ал 4-ші түйреуішті жерге қосыңыз. Әрі қарай, қозғалтқышты қосыңыз: бір терминалды L293D-дегі 3-ші түйреуішке, ал екіншісін 6-шы түйреуішке қосыңыз. Басқару сигналдары үшін ESP32-нің GPIO 13 түйреуішін L293D-дегі 2-ші түйреуішке және GPIO 14 түйреуішін 7-ші түйреуішке қосыңыз. Соңында, ортақ сілтемені қамтамасыз ету үшін ESP32-нің жерін L293D жеріне қосуды ұмытпаңыз. Егер бейнеде балама сымдар қосу айтылса (05:00-дегі бейнеде), көрсетілген нақты өзгерістерді орындаңыз.

Код мысалдары және түсіндірме

Қозғалтқышты басқаруға арналған код қозғалтқышқа арналған түйреуіштерді анықтаудан және олардың режимдерін орнатудан тұрады. Міне, setup функциясынан үзінді:

#define motor1A 13
#define motor2A 14

void setup() {
  pinMode(motor1A, OUTPUT);
  pinMode(motor2A, OUTPUT);  
}

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

void loop() {
  digitalWrite(motor1A, HIGH);     
  digitalWrite(motor2A, LOW);   
  delay(2000); 

  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, HIGH);    
  delay(2000); 

  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, LOW);    
  delay(3000);
}

Бұл код қозғалтқышты бір бағытта 2 секунд айналдырады, содан кейін бағытты тағы 2 секундқа өзгертеді, ақырында қозғалтқышты 3 секундқа тоқтатады. Бұл цикл үздіксіз қайталанады, бұл үздіксіз басқаруға мүмкіндік береді. Толығырақ ақпарат пен толық код алу үшін мақаланың астында жүктелетін толық бағдарламаны қараңыз.

Демонстрация / Не күтуге болады

Сымдарды сәтті қосып, кодты жүктегеннен кейін, қозғалтқыштың бір бағытта 2 секунд айналып, бағытын тағы 2 секундқа өзгертіп, содан кейін 3 секунд тоқтайтынын көруіңіз керек. Егер қозғалтқыш күтілгендей жауап бермесе, полярлықтың ауысуы немесе түйреуіш қосылымдарының қате болуы сияқты жиі кездесетін қателіктерді тексеріңіз (08:00-дегі бейнеде). Бұл қондырғы ESP32 мен L293D көмегімен тұрақты ток қозғалтқышының жылдамдығы мен бағытын басқарудың қарапайым әдісін қамтамасыз етеді.

Бейне уақыт белгілері

  • 00:00 Бастау
  • 2:01 Тұрақты ток қозғалтқышына кіріспе
  • 6:14 L293D қозғалтқыш драйвері
  • 9:17 Жоба құжаттары
  • 11:04 Сымдарды қосу түсіндірмесі
  • 14:41 ESP32 арқылы Arduino қозғалтқышын басқару
  • 17:10 ESP32 платасы үшін Arduino порттарын таңдау
  • 18:52 Жобаның көрсетілімі
  • 22:08 ESP32 көмегімен қозғалтқыш жылдамдығын басқару
  • 26:22 Жылдамдықты басқару демо-көрсетілімі
  • 28:01 Жылдамдық пен бағытты басқару Arduino коды
  • 29:05 Жылдамдық пен бағыттың демо-көрсетілімі

Суреттер

L293D-Motor-Driver-IC
L293D-Motor-Driver-IC
ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_wiring
ESP32-15_L293D_motor_wiring
814-ESP32 Tutorial 15/55- Arduino code for L293D motor control
Тіл: C++
#define motor1A 13
#define motor2A 14

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin as an output.
  pinMode(motor1A, OUTPUT);
  pinMode(motor2A, OUTPUT);  
}

// the loop function runs over and over again forever
void loop() {
  
  // Rotate
  digitalWrite(motor1A, HIGH);     
  digitalWrite(motor2A, LOW);   
  delay(2000); 

  // Rotate in the opposite direction
  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, HIGH);    
  delay(2000); 

  // Stop
  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, LOW);    
  delay(3000);
}

Сізге қажет болуы мүмкін нәрселер

Ресурстар мен сілтемелер

Файлдар📁

Техникалық сипаттама (pdf)