Мазмұны:

Arduino және аналогтық джойстикпен 28BYJ-48 қадамдық мотордың бұрыштық позициялық бақылауы: 3 қадам
Arduino және аналогтық джойстикпен 28BYJ-48 қадамдық мотордың бұрыштық позициялық бақылауы: 3 қадам

Бейне: Arduino және аналогтық джойстикпен 28BYJ-48 қадамдық мотордың бұрыштық позициялық бақылауы: 3 қадам

Бейне: Arduino және аналогтық джойстикпен 28BYJ-48 қадамдық мотордың бұрыштық позициялық бақылауы: 3 қадам
Бейне: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Шілде
Anonim
Arduino және аналогтық джойстикпен 28BYJ-48 қадамдық мотордың бұрыштық позициялық бақылауы
Arduino және аналогтық джойстикпен 28BYJ-48 қадамдық мотордың бұрыштық позициялық бақылауы

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

Код негізінен қадамдық моторға аналогтық джойстиктің бұрыштық орнын «көшіруге» мүмкіндік береді, яғни егер сіз джойстикті алға қарай итерсеңіз, қозғалтқыш «солтүстікке» бағытталған. джойстикті батысқа қарай итеріңіз, қозғалтқыш сол бағытта бұрылады.

Іске асыру үшін мен джойстик босатылса, яғни бұрыштық орналасуы болмаса, қозғалтқыш «үй» бағытына қайтуын талап етті. Үйдің бағыты шығысқа қарайды, ал қозғалтқыш (немесе шығыс білігіне бекітілген кез келген көрсеткішті / құрылғыны жалға беру кезінде) қосылған кезде де осы бағытта болуы керек.

Жабдықтар

Arduino Uno немесе ұқсас

нан тақтасы және секіргіш сымдарды таңдау (еркектен еркекке, еркектен әйелге)

5В қуат көзі

Аналогтық джойстик модулі (бір сәтте басу мүмкіндігімен, бұл «үй» жағдайын жеңіл демалуға мүмкіндік береді

28BYJ-48 сатылы қозғалтқыш және ULN2003 қадамдық жүргізушісі

Қалам, қағаз және блютак (немесе қозғалтқышқа бекітуге арналған кез келген басқа көрсеткіш құрылғы!)

1 -қадам: 1 -қадам: Орнату

Қадамдық қозғалтқышты қадам жүргізушісіне қосыңыз және түйреуіштерді келесі түрде қосыңыз:

IN1 - Arduino түйреуіші 8

IN2 - Arduino түйрегіш 9

IN3 - Arduino түйрегіші 10

IN4 - Arduino түйрегіші 11

5В қуат көзін табақшадағы қорек жолдарына, ULN2003 5в кірістерін қорек жолдарына қосыңыз. жерасты рельсін Arduino -да жерге қосыңыз.

джойстик үшін келесі түрде қосылыңыз:

Ажыратқыш түйреуіш - Arduino істікші 2

X осі - Arduino A0 (аналогы 0 -де)

Y осі - Arduino A1

+5V - Arduino 5V шығысы

GND - Arduino GND

Ақырында, тақтаның негізін басқа Arduino GND түйреуішіне қосыңыз

2 -қадам: 2 -қадам: Кодты түсіндіру

Мен жүктеуге және қолдануға арналған Arduino кодын толық енгіздім. Бірақ бұл жерде тиісті бөліктерді түсіндіруге бар күшімді саламын.

Бұл кодтың теориясы - джойстик алатын орын графикке бөлінеді, ортасында 0, 0. алайда джойстиктің кірістері орталықта (шамамен) 512 -де тұрады, сондықтан бұл екі функцияны жеңу үшін X және Y осінен оқылатын мәнді «нөлге» келтіру керек. сіз пайдаланатын қуат көзіне байланысты сізге ZeroX және ZeroY функцияларының мәндерін өзгерту қажет болуы мүмкін, осылайша сіздің джойстик демалыс кезінде сенімді 0 мәнін береді.

X, Y мәндері оқылғанда, олар алдымен math.h кітапханасындағы atan2 () функциясын қолданып радианға айналады. Бұл функцияны түсіндіру бұл нұсқаулықтың шеңберінен тыс, бірақ оны іздеңіз - бұл геометрияның қарапайым трюгі!

Ақырында, бұрын біз радармен емес, градуспен жұмыс істейтіндердің өмірін жеңілдету үшін atan2 () арқылы есептелген рад мәні градусқа айналдырылады.

Циклдің жоғарғы жағында «үй» орнын жылжыту үшін джойстиктің бір сәттік түймесін басуға мүмкіндік беретін кодтың кішкене үзіндісі орналасқан. Бұл кодты тестілеу кезінде өте пайдалы болды, бірақ мен оны кейбір жағдайларда қалай пайдалы болатынын көріп тұрмын.

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

Кодтың қалған бөлігі түсінікті және мен оны құжаттау үшін бар күшімді салдым; IF мәлімдемелерінің сериясы джойстиктің қазіргі бұрышын қозғалтқыш бұрышымен салыстырады және қозғалтқышты сол бұрышқа жылжытады. 28BYJ-48 бір дәрежеде 5.689 қадамға ие, сондықтан біз қажетті қозғалысты осы тақ санға көбейтеміз!

Ең көп түсіндіруді қажет ететін кодтың бір бөлігі - бұл мен «орауыш іс» деп атадым. Тіпті, джойстик пен мотор, мысалы. +175 °, ал джойстик кейіннен -175 ° -қа жылжиды (джойстикте тек 10 ° қозғалысы, батыстың солтүстігінен батысқа қарай оңтүстікке қарай), қозғалтқыш Дұрыс емес бағытта 350 ° жылжиды! бұл үшін арнайы іс жазылды.

Айналдыру жағдайы қозғалтқыш пен джойстиктің қарама -қарсы белгілерін тексеруден басталады, яғни қозғалтқыш оң, джойстик теріс немесе керісінше. Сондай -ақ, джойстик пен қозғалтқыштың абсолюттік (яғни оң мәндерінің) қосындысы 180 ° жоғары екенін тексереді.

Егер бұл екі тұжырым да рас болса, онда функция қозғалтқыштың сағат тілімен (қозғалтқыш мәні теріс) немесе сағат тіліне қарсы (егер қозғалтқыш мәні оң болса) қозғалу керектігін тексереді.

Қозғалтқыш бұрышы мен джойстик бұрышының абсолюттік мәндері жинақталады және 360 ° -тан шегеріліп, қозғалыс қашықтығы анықталады. Соңында, қозғалтқыш бұрышы (қазір джойстиктің бұрышын көрсетеді) осылайша жаңартылады.

3 -қадам: Аяқталды

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

Егер сіз кодты қолдансаңыз, маған хабарлаңыз, егер сіз кодты жақсартуға болатын жерлерді көрсеңіз, мен сіздің пікіріңізді білгім келеді.

Ұсынылған: