Mundarija:

Arduino va analogli joystikli 28BYJ-48 qadamli dvigatelning burchakli pozitsion nazorati: 3 qadam
Arduino va analogli joystikli 28BYJ-48 qadamli dvigatelning burchakli pozitsion nazorati: 3 qadam

Video: Arduino va analogli joystikli 28BYJ-48 qadamli dvigatelning burchakli pozitsion nazorati: 3 qadam

Video: Arduino va analogli joystikli 28BYJ-48 qadamli dvigatelning burchakli pozitsion nazorati: 3 qadam
Video: #5 Аналоговый ввод FLProg на ЖК-дисплее I2C | ESP32 NodeMCU |Визуальное программирование для Arduino 2024, Iyul
Anonim
Arduino va analogli joystikli 28BYJ-48 qadamli dvigatelning burchakli pozitsion nazorati
Arduino va analogli joystikli 28BYJ-48 qadamli dvigatelning burchakli pozitsion nazorati

Bu men 28BYJ-48 pog'onali dvigatelni boshqarish sxemasi bo'lib, men uni oxirgi yillik dissertatsiya loyiham doirasida ishlatish uchun ishlab chiqdim. Men buni oldin ko'rmaganman, shuning uchun men kashf qilgan narsalarni yuklayman deb o'yladim. Umid qilamanki, bu boshqa birovga yordam beradi!

Kod, asosan, qadam dvigateliga analog joystikning burchak holatini "nusxalash" imkonini beradi, ya'ni agar siz joystikni oldinga sursangiz, vosita "shimolga" ishora qiladi. joystickni g'arbga suring, dvigatel xuddi shu yo'nalishda ishora qiladi.

Amalga oshirish uchun, agar joystik qo'yib yuborilsa, ya'ni burchakli pozitsiyasi bo'lmasa, dvigatel "uy" yo'nalishiga qaytishini talab qildim. Uy yo'nalishi sharqqa qaragan va dvigatel (yoki chiqish miliga biriktirilgan har qanday ko'rsatgichni / qurilmani ijaraga olganingizda) ham yoqilganda bu tomonga qaragan bo'lishi kerak.

Ta'minotlar

Arduino Uno yoki shunga o'xshash

non paneli va o'tish simlarini tanlash (erkakdan erkakgacha, erkakdan ayolga)

5V quvvat manbai

Analog joystik moduli (ideal, bir zumda tugmachani bosish bilan "uy" holatini osonroq dam olishni ta'minlaydi.

28BYJ-48 qadamli dvigatel va ULN2003 qadam haydovchisi

Qalam, qog'oz va blu-tac (yoki dvigatelga ulanadigan boshqa ko'rsatkich qurilmasi!)

1 -qadam: 1 -qadam: O'rnatish

Step motorini qadam haydovchiga ulang va pimlarni quyidagicha ulang:

IN1 - Arduino pin 8

IN2 - Arduino pin 9

IN3 - Arduino pin 10

IN4 - Arduino pin 11

5V quvvat manbaini non panelidagi besleme panjarasiga ulang va ULN2003 5v kirishini besleme panjarasiga ulang. er osti temir yo'lini Arduino -ga ulang.

joystik uchun quyidagicha ulang:

Kommutator pin - Arduino pin 2

X o'qi - Arduino A0 (analogi 0 da)

Y o'qi - Arduino A1

+5V - Arduino 5V chiqishi

GND - Arduino GND

Oxir -oqibat, non panelidagi erni boshqa Arduino GND piniga ulang

2 -qadam: 2 -qadam: Kodni tushuntirish

Men yuklab olish va ishlatish uchun to'liq Arduino kodini qo'shdim. Lekin bu erda tegishli qismlarni tushuntirish uchun qo'limdan kelganicha harakat qilaman.

Bu kodning nazariyasi shundan iboratki, joystik egallagan joy grafikka bo'linadi, markazda 0, 0 bo'ladi. lekin joystikning kirishlari taxminan 512 markazda joylashgan, shuning uchun bu ikkita funktsiyani bajarish uchun X va Y o'qidan o'qilgan qiymatni "nol" qilish kerak. Siz foydalanadigan quvvat manbaiga qarab, siz ZeroX va ZeroY funktsiyalaridagi qiymatlarni o'zgartirishingiz kerak bo'ladi, shunda sizning joystikingiz dam olish paytida ishonchli 0 ko'rsatkichini beradi.

X, Y qiymatlari o'qilganda, ular birinchi navbatda math.h kutubxonasidagi atan2 () funktsiyasi yordamida radianlarga aylantiriladi. Ushbu funktsiyani tushuntirish bu ko'rsatma doirasidan tashqarida, lekin iltimos, uni ko'rib chiqing - bu geometriyaning juda oddiy hiylasi!

Va nihoyat, biz radlarni emas, darajalarda ishlagan odamlarning hayotini osonlashtirish uchun atan2 () bilan hisoblangan rad qiymati gradusga aylanadi.

Loopning yuqori qismida "uy" manzilini ko'chirish uchun joystikdagi bir lahzali tugmani bosishga imkon beruvchi kichik kod parchasi joylashgan. Bu kodni sinab ko'rishda juda foydali bo'ldi, lekin men uni ba'zi holatlarda qanday foydali bo'lishi mumkinligini ko'rib turganimdek qoldirdim.

Endi kodning asosiy qismiga o'ting! biz joystik X, Y koordinatalarini ikki marta ajratib, 10ms kechikish bilan o'qishni boshlaymiz va keyin ularning bir xilligini tekshirib ko'ramiz - men joystik vaqti -vaqti bilan vaqti -vaqti bilan o'qib turishini aniqladim va bu biroz kechikish dvigatelning burilishini to'xtatish uchun etarli edi.. Bu, shuningdek, qasddan kirishga xalaqit bermaydigan etarlicha qisqa kechikish.

Kodning qolgan qismi o'z -o'zidan tushunarli va men uni hujjatlashtirish uchun qo'limdan kelganini qildim; Bir qator IF bayonotlari joystikning joriy burchagini dvigatel burchagi bilan solishtiradi va dvigatelni shu burchakka o'tkazadi. 28BYJ-48 darajasida 5,689 qadam bor, shuning uchun biz kerakli harakatni g'alati ko'rinadigan songa ko'paytiramiz!

Kodning eng tushuntirishni talab qiladigan qismi - bu "o'ralgan ish" deb nomlaganim. Hatto, joystik va dvigatel, masalan. +175 °, va joystick keyinchalik -175 ° ga (joystikda faqat 10 °, g'arbning shimolidan g'arbidan janubigacha) siljiydi, dvigatel noto'g'ri yo'nalishda 350 ° ga siljiydi! buning uchun maxsus ish yozildi.

Qoplamali holat dvigatel va joystikda qarama -qarshi belgilar mavjudligini tekshirishdan boshlanadi, ya'ni dvigatel musbat, joystik salbiy yoki aksincha. Shuningdek, u joystik va dvigatelning mutlaq (ya'ni ijobiy qiymatlari) yig'indisi 180 ° dan yuqori ekanligini tekshiradi.

Agar ikkala bayonot ham to'g'ri bo'lsa, funktsiya dvigatelning soat yo'nalishi bo'yicha (dvigatel qiymati manfiy) yoki soat sohasi farqli ravishda (agar vosita qiymati ijobiy bo'lsa) harakatlanishi kerakligini tekshiradi.

Dvigatel burchagi va joystik burchagining mutlaq qiymatlari yig'iladi va 360 ° dan olib tashlanib, harakatlanadigan masofani aniqlanadi. Nihoyat, vosita burchagi (hozirda joystik burchagini aks ettiradi) shunday yangilanadi.

3 -qadam: Bajarildi

Shunday qilib, kodni Arduino -ga yuklash va ishga tushirish kifoya! Loyihaning qanday ishlashini bilish uchun yuqoridagi videoni ko'ring. Bu kamera gimballari, robot qo'llar va boshqa ko'plab ilovalar uchun foydali bo'ladi!

Agar siz koddan foydalansangiz, iltimos, menga xabar bering va agar siz kodni yaxshilash mumkin bo'lgan joyni ko'rsangiz, men sizning fikr -mulohazangizni eshitishni istardim.

Tavsiya: