Sadržaj:
Video: Kutna pozicijska kontrola koračnog motora 28BYJ-48 s Arduino i analognom joystickom: 3 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
Ovo je shema upravljanja koračnim motorom 28BYJ-48 koju sam razvio za korištenje u sklopu svog završnog diplomskog projekta. Nisam vidio da je to učinjeno prije pa sam mislio prenijeti ono što sam otkrio. Nadam se da će ovo pomoći nekome drugome!
Kod u osnovi dopušta koračni motor da "kopira" kutni položaj analogne upravljačke palice, što znači da ako gurnete navigacijsku tipku prema naprijed, motor pokazuje prema "sjeveru". gurnite joystick prema zapadu, motor se okreće prema istoj smjeru.
Za moju implementaciju zahtijevao sam da se motor, ako se pusti, odnosno nema kutni položaj, vrati u smjer "doma". Domaći smjer je okrenut prema istoku, a motor (ili u najmu bez obzira na pokazivač / uređaj koji ste priključili na izlazno vratilo!) Također mora biti okrenut u tom smjeru kada je uključen.
Pribor
Arduino Uno ili slično
oplata i odabir kratkospojnih žica (muško na muško, muško na žensko)
5V napajanje
Analogni modul upravljačke palice (idealno s trenutnom funkcijom pritiska na gumb, to olakšava odmaranje u "kućnom" položaju
Koračni motor 28BYJ-48 i pokretač koraka ULN2003
Olovka, papir i blu-tac (ili bilo koji drugi pokazivač za pričvršćivanje na motor!)
Korak 1: Korak 1: Postavljanje
Spojite koračni motor na pokretač koraka i spojite pinove na sljedeći način:
IN1 - Arduino pin 8
IN2 - Arduino pin 9
IN3 - Arduino pin 10
IN4 - Arduino pin 11
Spojite svoje napajanje od 5 V na opskrbne vodilice na vašoj ploči, a 5 V ulaze ULN2003 s opskrbnim vodilicama. spojite uzemljenje sa uzemljenjem na svom Arduinu.
za joystick spojite na sljedeći način:
Prekidač - Arduino pin 2
Os X - Arduino A0 (analogno u 0)
Os Y - Arduino A1
+5V - Arduino 5V izlaz
GND - Arduino GND
Konačno spojite uzemljenje svoje matične ploče na drugi pin Arduino GND
Korak 2: Korak 2: Objašnjenje koda
Uključio sam cijeli Arduino kôd koji možete preuzeti i koristiti. Ali potrudit ću se objasniti relevantne dijelove ovdje.
Teorija koja stoji iza ovog koda je da je prostor koji zauzima joystick podijeljen u grafikon, s 0, 0 u središtu. međutim ulazi džojstika leže na (približno) 512 u sredini, pa se za prevladavanje ove dvije funkcije koriste za "nuliranje" vrijednosti očitane s osi X i Y. ovisno o izvoru napajanja koje koristite, možda ćete morati promijeniti vrijednosti u funkcijama ZeroX i ZeroY tako da vaš joystick daje pouzdano očitanje 0 tijekom odmora.
Kad se pročitaju vrijednosti X, Y, one se prvo pretvaraju u radijane pomoću funkcije atan2 () u biblioteci math.h. Objašnjenje ove funkcije izvan je opsega ovog uputstva, ali molimo vas da to potražite - to je prilično jednostavan trik geometrije!
Konačno, kako bismo olakšali život onima od nas koji smo radili u stupnjevima, a ne u radima, vrijednost rada koju izračunava atan2 () pretvara se u stupnjeve.
Pri vrhu petlje nalazi se mali isječak koda koji vam omogućuje da pritisnete trenutni gumb na upravljačkoj palici za pomicanje "kućnog" mjesta. Ovo je bilo nevjerojatno korisno tijekom testiranja koda, ali ostavio sam ga jer vidim kako bi u nekim slučajevima mogao biti koristan.
Sada na glavni dio koda! započinjemo čitanjem joystick -a X, Y koordinata dvaput odvojenih odgodom od 10 ms, a zatim provjeravamo jesu li isti - otkrio sam da će joystick povremeno emitirati sporadična očitanja, a to malo kašnjenje bilo je dovoljno da zaustavi okretanje motora na temelju ovih. To je također dovoljno kratko kašnjenje da se ne čini da ometa namjerne unose.
Ostatak koda prilično je jasan i dao sam sve od sebe da ga dokumentiram; Niz IF izjava uspoređuje trenutni kut upravljačke palice s kutom motora i pomiče motor do tog kuta. 28BYJ-48 ima 5.689 koraka po stupnju, pa zato potrebno kretanje pomnožimo s ovim naizgled neparnim brojem!
Jedan dio koda koji zahtijeva najviše objašnjenja je ono što sam nazvao "omotni slučaj". Čak i kad su joystick i motor bili na pr. +175 °, a joystick se nakon toga pomaknuo na -175 ° (pomak od samo 10 ° na joystick -u, od sjeverozapada do jugozapada), motor bi se pomaknuo u pogrešnom smjeru za 350 °! da bi se ovo objasnilo napisan je poseban slučaj.
Slučaj zaokruživanja počinje provjerom da li motor i joystick imaju suprotne znakove, tj. Motor je pozitivan, a joystick negativan, ili obrnuto. Također provjerava da li je zbroj apsolutnih (to jest pozitivnih vrijednosti) upravljačke palice i motora iznad 180 °.
Ako su obje izjave točne, funkcija tada provjerava treba li se motor kretati u smjeru kazaljke na satu (vrijednost motora je negativna) ili u smjeru suprotnom od kazaljke na satu (ako je vrijednost motora pozitivna).
Apsolutne vrijednosti kuta motora i kuta upravljačke palice zbrajaju se i oduzimaju od 360 ° kako bi se odredila udaljenost za kretanje. Konačno, kut motora (koji sada odražava kut upravljačke palice) je ažuriran kao takav.
Korak 3: ZAVRŠENO
Dakle, preostaje samo prenijeti kôd na svoj Arduino i pokrenuti ga! Za bolji uvid u funkcioniranje projekta pogledajte gornji video. Ovo bi bilo korisno za gimbale fotoaparata, robotske ruke i mnoge druge aplikacije!
Ako koristite kôd, javite mi. Ako vidite bilo gdje gdje se kôd može poboljšati, volio bih čuti vaše povratne informacije.
Preporučeni:
Arduino LED upravljanje s analognom joystickom: 6 koraka
Arduino LED kontrola s analognom joystickom: U ovom vodiču naučit ćemo kako koristiti analognu joystick za upravljanje LED diodom. Pogledajte demonstracijski video
Raspberry Pi, Python i upravljački program koračnog motora TB6600: 9 koraka
Raspberry Pi, Python i upravljački program koračnog motora TB6600: Ovo uputstvo slijedi korake koje sam poduzeo za spajanje Raspberry Pi 3b na upravljač koračnim motorom TB6600, napajanje od 24 VDC i 6 -žični koračni motor. Vjerojatno sam poput mnogih vas i slučajno imam " zgrabi torbu " preostale nominalne vrijednosti
Korištenje mjerača vremena 556 za pogon koračnog motora: 5 koraka
Korištenje mjerača vremena 556 za pogon koračnog motora: Ova instrukcija će objasniti kako mjerač vremena 556 može upravljati koračnim motorom. Za ovaj krug nije potreban kôd
Odabir koračnog motora i upravljačkog programa za Arduino automatizirani zasjenjeni zaslon: 12 koraka (sa slikama)
Odabir koračnog motora i pokretača za Arduino projekt s automatiziranim zasjenom: U ovom Instructableu proći ću korake koje sam poduzeo za odabir koračnog motora i upravljačkog programa za prototip projekta Automatizirani zasjenjeni zaslon. Zavjese su popularni i jeftini Coolaroo modeli s ručnim pogonom, a ja sam htio zamijeniti t
Arduino vodič - Kontrola servo motora s joystickom: 4 koraka
Arduino vodič - Kontrola servo motora s joystickom: U ovom ćemo vodiču naučiti kako koristiti servo s joystickom. Kontrolirat ćemo 1 kom servo motora s 1 joystickom. Možete implementirati svoje projekte robotskih ruku s pozivom na ovaj vodič. Naravno da ćemo pri tome koristiti vanjsku bateriju / napajanje