Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-23 14:37
Ovo je shema upravljanja za stepper motor 28BYJ-48 koju sam razvio da koristim kao dio svoje završne godine disertacijskog projekta. Nisam vidio da se ovo radi ranije pa sam mislio prenijeti ono što sam otkrio. Nadam se da će ovo pomoći nekome drugome!
Kod u osnovi omogućava koračnom motoru da "kopira" kutni položaj analognog joystick -a, što znači da ako gurnete joystick prema naprijed, motor pokazuje prema "sjeveru". gurnite joystick prema zapadu, motor će se okrenuti prema istom smjeru.
Za moju implementaciju zahtijevao sam da se, ako se džojstik pusti, tj. Nema kutni položaj, motor vrati u "kućni" smjer. Domaći smjer je okrenut prema istoku, a motor (ili u zakupu bilo koji pokazivač / uređaj koji ste priključili na izlazno vratilo!) Također mora biti okrenut u tom smjeru kada je uključen.
Supplies
Arduino Uno ili slično
matična ploča i odabir kratkospojnih žica (muški na muški, muški na ženski)
5V napajanje
Analogni modul džojstika (idealno sa trenutnom funkcijom pritiska na dugme, ovo 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čki uređaj za pričvršćivanje na motor!)
Korak 1: Korak 1: Podešavanje
Spojite koračni motor na upravljač 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
Priključite napajanje od 5 volti u opskrbne šine na vašoj matičnoj ploči i spojite 5 V ulaze ULN2003 na dovodne šine. spojite uzemljenje sa uzemljenjem na vašem Arduinu.
za joystick spojite na sljedeći način:
Prekidač - Arduino pin 2
X os - 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 Arduino GND pin
Korak 2: Korak 2: Objašnjenje koda
Uključio sam cijeli Arduino kôd koji možete preuzeti i koristiti. Ali potrudit ću se da ovdje objasnim relevantne dijelove.
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 centru, 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.
Kada 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.
Na vrhu petlje nalazi se mali isječak koda koji vam omogućuje da pritisnete trenutačno dugme na joystick -u za pomicanje lokacije "home". Ovo je bilo nevjerojatno korisno za testiranje koda, ali ostavio sam ga jer vidim kako bi u nekim slučajevima mogao biti koristan.
Sada na glavni dio koda! počinjemo čitanjem džojstika X, Y koordinata dvaput odvojenih odgodom od 10 ms, a zatim provjeravamo jesu li iste - otkrio sam da će džojstik povremeno emitirati sporadična očitanja, a ovo malo kašnjenje bilo je dovoljno da zaustavi okretanje motora na temelju ovih. To je također dovoljno kratko kašnjenje da izgleda da ne ometa namjerne unose.
Ostatak koda je prilično jasan i potrudio sam se da ga dokumentiram; Niz IF naredbi upoređuje trenutni ugao džojstika sa uglom motora i pomera motor do tog ugla. 28BYJ-48 ima 5.689 koraka po stepenu, pa zato množimo potrebno kretanje ovim naizgled neparnim brojem!
Jedan dio koda koji zahtijeva najviše objašnjenja je ono što sam nazvao "omotni slučaj". Čak i kada su upravljačka palica i motor bili na pr. +175 °, a džojstik se nakon toga pomaknuo na -175 ° (pomak od samo 10 ° na joystick -u, od sjeverozapada prema jugozapadu), 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đe proverava da li je zbir apsolutnih (to jest pozitivnih vrednosti) džojstika 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, sve što trebate učiniti je prenijeti kôd na svoj Arduino i pokrenuti ga! Pogledajte gornji video za dobru ideju o tome kako projekt funkcionira. Ovo bi bilo korisno za gimbale fotoaparata, robotske ruke i mnoge druge aplikacije!
Ako koristite kôd, obavijestite me, a ako vidite bilo gdje gdje se kôd može poboljšati, volio bih čuti vaše povratne informacije.
Preporučuje se:
Arduino LED kontrola sa analognim džojstikom: 6 koraka
Arduino LED kontrola sa analognim džojstikom: U ovom vodiču ćemo naučiti kako koristiti analogni džojstik za kontrolu LED -a. 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 kontroler koračnog motora TB6600, napajanje od 24 VDC i 6 -žični koračni motor. Vjerojatno sam poput mnogih od vas i slučajno imam " zgrabi torbu " preostale nominalne vrijednosti
Odabir koračnog motora i upravljačkog programa za Arduino automatizirani zasjenjeni zaslon: 12 koraka (sa slikama)
Odabir koračnog motora i upravljačkog programa za Arduino projekt automatiziranog zasjenjivanja: U ovom uputstvu ću proći korake koje sam poduzeo za odabir koračnog motora i pogonskog programa za prototip projekta Automatizirani zasjenjeni zaslon. Zavjese su popularni i jeftini Coolaroo modeli sa ručnim pogonom, a ja sam htio zamijeniti
Eagle Hakovi/trikovi: Primjer TB6600 CNC pogon koračnog motora sa mlinom: 7 koraka
Eagle Hakovi/trikovi: Primjer TB6600 CNC pogona za koračni motor mlina: Ovo čini dobar projekt pokazati nekoliko trikova koji će vam olakšati život pri stvaranju PCB -a. Kako bi vas naučio nekoliko hakova kako biste izvukli više iz Eagle, biram jednostavan projekat koji sam uradio za svoj Kickstarter. Trebao mi je vanjski
Vožnja koračnog motora bez mikrokontrolera .: 7 koraka
Upravljanje koračnim motorom bez mikrokontrolera .: U ovom Uputstvu, vozit ću motor sa 28 koraka od 28 BYJ-48, sa UNL2003 darlington pločom, ponekad nazvanom x113647, bez mikrokontrolera. Imat će start/stop, naprijed/ nazad i kontrola brzine. Motor je jednopolarni stepenasti motor sa