2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:54
Bu, son illik dissertasiya layihəm çərçivəsində istifadə etmək üçün hazırladığım 28BYJ-48 pilləli mühərrikin idarəetmə sxemidir. Bunu əvvəllər görməmişdim, buna görə də kəşf etdiyimi yükləyəcəyimi düşünürdüm. Ümid edirik ki, bu, başqasına kömək edəcək!
Kod əsasən bir step motorunun analoq joystikin açısal mövqeyini "kopyalamasına" imkan verir, yəni joysticki irəli itələsəniz, motor "şimala" işarə edir. joystick'i qərbə doğru itələyin, motor eyni istiqamətə dönmək üçün dönər.
Həyata keçirmək üçün tələb etdim ki, joystick buraxılsa, yəni bucaq mövqeyi yoxdursa, motor "ev" istiqamətinə qayıdır. Ev istiqaməti şərqə baxır və mühərrik (və ya çıxış milinə bağladığınız hər hansı bir göstərici / cihazı icarəyə götürəndə) işə salındıqda da bu istiqamətə baxmalıdır.
Təchizat
Arduino Uno və ya bənzəri
çörək taxtası və tullanan tellərin seçimi (kişidən kişiyə, kişidən qadına)
5V enerji təchizatı
Analoq joystick modulu (ideal olaraq bir anlıq düymə xüsusiyyəti ilə "ev" mövqeyinin rahat istirahətini təmin edir.
28BYJ-48 step motor və ULN2003 step sürücü
Qələm, kağız və blu-tac (və ya mühərrikə qoşulmaq üçün hər hansı digər göstərici cihazı!)
Addım 1: Adım 1: Quraşdırma
Step motorunu step sürücüsünə bağlayın və pinləri aşağıdakı kimi bağlayın:
IN1 - Arduino pin 8
IN2 - Arduino pin 9
IN3 - Arduino pin 10
IN4 - Arduino pin 11
5v enerji təchizatını çörək taxtanızdakı təchizat raylarına qoşun və ULN2003 5v girişlərini təchizat raylarına qoşun. yer rayını Arduino cihazınızla yerə bağlayın.
joystick üçün aşağıdakı kimi bağlayın:
Keçid pimi - Arduino pin 2
X oxu - Arduino A0 (Analog 0 -da)
Y oxu - Arduino A1
+5V - Arduino 5V çıxışı
GND - Arduino GND
Nəhayət, çörək taxtanızın zəminini digər Arduino GND pininə bağlayın
Addım 2: Adım 2: Kodun izahı
Yükləmək və istifadə etmək üçün tam Arduino kodunu daxil etdim. Ancaq burada əlaqəli hissələri izah etmək üçün əlimdən gələni edəcəyəm.
Bu kodun arxasında duran nəzəriyyə, joystickin tutduğu yerin ortada 0, 0 olduğu bir qrafikə bölünməsidir. lakin joystick girişləri mərkəzdə (təxminən) 512 -də dayanır, buna görə də bu iki funksiyanı aşmaq üçün X və Y oxundan oxunan dəyəri "sıfırlamaq" üçün istifadə olunur. İstifadə etdiyiniz enerji mənbəyindən asılı olaraq ZeroX və ZeroY funksiyalarının dəyərlərini dəyişdirməyiniz lazım ola bilər ki, istirahət edərkən joystickiniz 0 -un etibarlı oxunmasını təmin etsin.
X, Y dəyərləri oxunduqda, əvvəlcə math.h kitabxanasındakı atan2 () funksiyasından istifadə edərək radiana çevrilir. Bu funksiyanı izah etmək bu təlimatlandırmanın əhatə dairəsindən kənardır, amma lütfən gedin baxın - bu olduqca sadə bir həndəsə hiyləsidir!
Nəhayət, əvvəllər radlardan çox dərəcə işləyənlərin həyatını asanlaşdırmaq üçün atan2 () ilə hesablanan rad dəyəri dərəcələrə çevrilir.
Döngünün yuxarı hissəsində, "ev" yerini köçürmək üçün joystickdəki ani düyməni basmağa imkan verən kiçik bir kod parçası var. Kodu sınayarkən bu inanılmaz dərəcədə faydalı oldu, amma bəzi hallarda necə faydalı ola biləcəyini görə bildiyim üçün buraxdım.
İndi kodun əsas hissəsinə keçək! Joystick X, Y koordinatlarını iki dəfə ayrılaraq 10ms gecikmə ilə oxuduqdan sonra eyni olub olmadığını yoxlayırıq - joystickin ara -sıra oxunuşlar çıxardığını gördüm və bu kiçik gecikmə motorun dönməsini dayandırmaq üçün kifayət idi. Bu da qəsdən girişlərə müdaxilə etmədiyi üçün kifayət qədər qısa bir gecikmədir.
Kodun qalan hissəsi özünü izah edir və bunu sənədləşdirmək üçün əlimdən gələni etdim; IF bir sıra ifadələr, indiki joystick açısını motor bucağı ilə müqayisə edir və mühərriki bu bucağa keçirir. 28BYJ-48-in hər dərəcəsi 5.689 addımdır, buna görə lazım olan hərəkəti bu qəribə sayla vururuq!
Kodun ən çox izah edilməsini tələb edən bir hissəsi, "dolama işi" adlandırdığım şeydir. Joystick və motorun belə olduğu halda. +175 ° və joystick sonradan -175 ° -ə keçdi (joystickdə yalnız 10 ° bir hərəkət, yalnız şimaldan qərbdən cənubdan qərbə), motor səhv istiqamətdə 350 ° hərəkət edəcək! bunun üçün xüsusi bir iş yazıldı.
Mühərrik işi, motorun və joystikin əks işarələrə malik olduğunu yoxlamaqla başlayır, yəni motor müsbət və joystick mənfi və ya əksinə. Joystick və motorun mütləq (yəni müsbət dəyərlər) cəminin 180 ° -dən yuxarı olduğunu da yoxlayır.
Bu ifadələrin hər ikisi də doğrudursa, funksiya sonra motorun saat əqrəbi istiqamətində (motor dəyəri mənfi) və ya saat əqrəbinin əksinə (əgər motor dəyəri müsbətdirsə) hərəkət etməli olub olmadığını yoxlayır.
Mühərrik bucağının və joystick açısının mütləq dəyərləri cəmlənir və hərəkət etmək məsafəsini təyin etmək üçün 360 ° -dən çıxılır. Nəhayət, motor bucağı (indi joystick açısını əks etdirir) bu şəkildə yenilənir.
Addım 3: BİTDİ
Beləliklə, qalan yalnız kodu Arduino -ya yükləmək və işə salmaqdır! Layihənin necə işlədiyini bilmək üçün yuxarıdakı videoya baxın. Bu kamera gimbals, robot qolları və bir çox digər tətbiqlər üçün faydalı olardı!
Kodu istifadə edirsinizsə, mənə bildirin və kodun təkmilləşdirilə biləcəyi hər hansı bir yer görürsünüzsə, rəyinizi eşitmək istərdim.
Tövsiyə:
Analog Joystick ilə Arduino LED İdarəetmə: 6 addım
Analog Joystick ilə Arduino LED İdarəetmə: Bu dərslikdə LED -i idarə etmək üçün analog Joystick -dən istifadə etməyi öyrənəcəyik
28BYJ-48 5V Step Motor və A4988 Sürücü: 4 Addım
28BYJ-48 5V Step Motor və A4988 Sürücü: Heç bir robotu Arduino və ya micro: bitinizin yalnız bir neçə çıxışından istifadə edərək dəqiq bir açı ilə döndərmək istəyirdinizmi? Bütün bunlar ucuzdur? Sizin üçün təlimat budur! Bu təlimatda çox ucuz bir step motoru necə idarə edəcəyimizi görəcəyik
Obyektlərin Pozisyon Dəyişikliklərini Tutmaq üçün Ultrasonik Sensor: 3 Addım
Obyektlərin Pozisyon Dəyişikliklərini Tutmaq üçün Ultrasonik Sensor: Qiymətli əşyalarınızın təhlükəsiz olması vacibdir, bütün gün qalanızın mühafizəsinə davam etsəniz, topal olarsınız. Raspberry pi kamerasından istifadə edərək lazımi anda şəkilləri çəkə bilərsiniz. Bu təlimat video çəkməyə və ya şəkil çəkməyə kömək edəcək
Step Motor Nəzarətli Step Motor - Döner kodlayıcı olaraq Step Motor: 11 addım (şəkillərlə birlikdə)
Step Motor Nəzarətli Step Motor | Bir Döner Enkoder Olaraq Step Motor: Ətrafında yatan və bir şey etmək istəyən bir neçə step motoru varmı? Bu Təlimat kitabında, bir Arduino mikro nəzarətçisindən istifadə edərək başqa bir step motorun mövqeyini idarə etmək üçün dönər kodlayıcı olaraq bir step motor istifadə edək. Elə isə çox uzatmadan, gəlin
LABVIEW (PWM) VƏ ARDUINO İSTİFADƏ EDƏN DC MOTORUN YÖNÜ VƏ HIZ NƏZARƏTİ: 5 Addım
LABVIEW (PWM) VƏ ARDUINO İSTİFADƏ EDƏN DC MOTORUN YÖNÜ VƏ HIZ NƏZARƏTİ: Salam uşaqlar əvvəlcə mənim gülməli ingilis dilim üçün üzr istəyirəm.Bu təlimatda sizə labview istifadə edərək bir DC motorunun sürətini necə idarə edəcəyinizi göstərəcəyəm