Mundarija:

DC motorini boshqarish Arduino Uno R3: 6 qadam
DC motorini boshqarish Arduino Uno R3: 6 qadam

Video: DC motorini boshqarish Arduino Uno R3: 6 qadam

Video: DC motorini boshqarish Arduino Uno R3: 6 qadam
Video: Lesson 29: Car-7 Controlling SunFounder Smart Car using Remote Controller | Robojax 2024, Iyul
Anonim
DC motorini boshqarish Arduino Uno R3
DC motorini boshqarish Arduino Uno R3

Ushbu tajribada biz L293D haydovchi chipi yordamida kichik o'lchamli shahar motorining yo'nalishi va tezligini boshqarishni o'rganamiz. Oddiy tajribalar qilib, biz faqat dvigatelni chapga va o'ngga aylantiramiz va avtomatik ravishda tezlashamiz yoki sekinlashamiz.

1 -qadam: komponentlar

- Arduino Uno taxtasi * 1

- USB kabeli * 1

- L293D *1

- Kichik shahar dvigateli * 1

- Non paneli * 1

- o'tish simlari

2 -qadam: printsip

Arduino kirish -chiqish portining maksimal oqimi 20mA, lekin dvigatelning haydovchi oqimi kamida 70mA. Shuning uchun biz oqimni boshqarish uchun kirish -chiqish portidan to'g'ridan -to'g'ri foydalana olmaymiz; Buning o'rniga, biz motorni haydash uchun L293D dan foydalanishimiz mumkin. L293D L293D 4,5V dan 36V gacha bo'lgan kuchlanishlarda 600mA gacha bo'lgan ikki tomonlama haydovchi oqimlarini ta'minlash uchun mo'ljallangan. U o'rni, solenoidlar, doimiy va bipolyar pog'onali dvigatellar kabi induktiv yuklarni, shuningdek musbat etkazib berishda yuqori va yuqori kuchlanishli boshqa yuklarni haydash uchun ishlatiladi.

Quyidagi pinlar rasmiga qarang. L293D quvvat manbai uchun ikkita pinli (Vcc1 va Vcc2). Vcc2 dvigatel uchun quvvat, Vcc1 esa chip uchun ishlatiladi. Bu erda kichik o'lchamli doimiy dvigatel ishlatilganligi sababli, ikkala pinni +5V ga ulang. Agar siz yuqori quvvatli dvigateldan foydalansangiz, Vcc2 ni tashqi quvvat manbaiga ulashingiz kerak.

3 -qadam: sxematik diagramma

Sxematik diagramma
Sxematik diagramma

4 -qadam: protseduralar

Protseduralar
Protseduralar
Protseduralar
Protseduralar

L293D ning 1, 2EN pinlarini yoqish 5V ga ulangan, shuning uchun L293D har doim ish holatida bo'ladi. 1A va 2A pinlarini mos ravishda boshqaruv kartasining 9 va 10 -pinlariga ulang. Dvigatelning ikkita pimi mos ravishda 1Y va 2Y pinlariga ulangan. 10 -pin yuqori darajali, 9 -pin past bo'lsa, vosita bir tomonga burila boshlaydi. 10 -pin past va 9 -pin baland bo'lsa, u teskari yo'nalishda aylanadi.

1 -qadam:

Zanjirni yarating.

2 -qadam:

Kodni https://github.com/primerobotics/Arduino saytidan yuklab oling

3 -qadam:

Eskizni Arduino Uno taxtasiga yuklang

Kodni boshqaruv paneliga yuklash uchun Yuklash belgisini bosing.

Agar oynaning pastki qismida "Yuklandi" tugmasi paydo bo'lsa, bu eskiz muvaffaqiyatli yuklanganligini bildiradi.

Endi, shahar motorining pichog'i mos ravishda o'zgarib turadigan tezlikda chapga va o'ngga aylana boshlaydi.

5 -qadam: kod

Kod
Kod

// shahar motorini boshqarish

// DC motor

chap va o'ngga aylana boshlaydi va uning tezligi mos ravishda o'zgaradi.

// Veb -sayt: www.primerobotics.in

/***************************************/

const int motorIn1

= 9; // dvigatel pinidan biriga ulang

const int motorIn2

= 10; // dvigatelning boshqa piniga ulang

/***************************************/

bo'sh o'rnatish ()

{

pinMode (motorIn1, OUTPUT); // motorIn1 pinini chiqish sifatida ishga tushiring

pin rejimi (motorIn2, OUTPUT); // motorIn2 pinini chiqish sifatida ishga tushiring

}

/****************************************/

bo'sh halqa ()

{

soat yo'nalishi bo'yicha (200); // soat yo'nalishi bo'yicha aylantiring

kechikish (1000);

// bir soniya kuting

soat sohasi farqli o'laroq (200); // soat sohasi farqli ravishda aylantiring

kechikish (1000);

// bir soniya kuting

}

/****************************************

/Funksiyasi

qo'zg'aysan dvigateli soat yo'nalishi bo'yicha aylanadi

soat yo'nalishi bo'yicha bo'sh (int

Tezlik)

{

analogWrite (motorIn1, Tezlik); // vosita tezligini belgilang

analogWrite (motorIn2, 0); // dvigatelni to'xtating

}

// Haydash funktsiyasi

vosita soat sohasi farqli o'laroq aylanadi

bo'sh

soat sohasi farqli o'laroq (int tezligi)

{

analogWrite (motorIn1, 0); // motorni to'xtatingIn1 pinli dvigatel

analogWrite (motorIn2, Tezlik); // vosita tezligini belgilang

}

/****************************************/

Tavsiya: