Tartalomjegyzék:
Videó: 28BYJ-48 léptetőmotor szögletes helyzetvezérlése Arduino és analóg joystick-kal: 3 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Ez a 28BYJ-48 léptetőmotor vezérlési rendszere, amelyet az utolsó éves dolgozatom részeként fejlesztettem ki. Még nem láttam ilyet, ezért gondoltam, hogy felteszem, amit felfedeztem. Remélhetőleg ez másnak is segít!
A kód alapvetően lehetővé teszi, hogy a léptetőmotor "másolja" az analóg joystick szöghelyzetét, vagyis ha előre tolja a joystickot, a motor "észak" felé mutat. tolja a joystickot nyugat felé, a motor ugyanabba az irányba forog.
A megvalósításhoz megköveteltem, hogy ha a joystickot elengedik, azaz nincs szöghelyzete, a motor visszatér az "otthoni" irányba. Az otthoni irány kelet felé néz, és a motornak (vagy bérelve bármilyen mutatót / eszközt, amelyet a kimeneti tengelyhez csatlakoztatott!) Szintén be kell mutatnia ebbe az irányba, amikor be van kapcsolva.
Kellékek
Arduino Uno vagy hasonló
kenyérlap és jumper vezetékek kiválasztása (férfi -férfi, férfi -nő)
5V -os tápegység
Analóg joystick modul (ideális esetben egy pillanatnyi nyomógomb funkcióval, ez megkönnyíti az "otthoni" helyzet pihenését)
28BYJ-48 léptetőmotor és ULN2003 léptető
Toll, papír és blu-tac (vagy bármely más mutatóeszköz, amelyet a motorhoz rögzíthet!)
1. lépés: 1. lépés: Beállítás
Csatlakoztassa a léptetőmotort a léptetőhöz, és kösse össze a csapokat az alábbiak szerint:
IN1 - Arduino pin 8
IN2 - Arduino pin 9
IN3 - Arduino pin 10
IN4 - Arduino pin 11
Csatlakoztassa az 5 V -os tápegységet a kenyérszekrény tápcsöveihez, és az ULN2003 5 V -os bemeneteket a tápcsövekhez. csatlakoztassa a földsínt az Arduino földjéhez.
a joystickhoz az alábbiak szerint csatlakoztassa:
Kapcsolócsap - Arduino csap 2
X tengely - Arduino A0 (analóg 0 -ban)
Y tengely - Arduino A1
+5V - Arduino 5V kimenet
GND - Arduino GND
Végül csatlakoztassa a kenyeretábla talaját a másik Arduino GND csaphoz
2. lépés: 2. lépés: A kód magyarázata
Mellékeltem a teljes Arduino kódot, amelyet letölthet és használhat. De mindent megteszek, hogy elmagyarázzam az ide vonatkozó részeket.
Ennek a kódnak az elmélete az, hogy a joystick által elfoglalt helyet gráfra osztjuk, középen 0, 0. a joystick bemenetek azonban (kb.) 512 középpontban helyezkednek el a középpontban, így ennek leküzdésére két funkciót használunk az X és Y tengelyről leolvasott érték "nullázására". az Ön által használt tápegységtől függően előfordulhat, hogy módosítania kell a ZeroX és ZeroY funkciók értékeit, hogy a joystick nyugalmi állapotban megbízható 0 -t adjon.
Az X, Y értékek olvasásakor először radiánra konvertálják őket a math.h könyvtár atan2 () függvényével. Ennek a funkciónak a kifejtése kívül esik ezen utasításon, de kérjük, nézze meg - ez egy meglehetősen egyszerű geometriai trükk!
Végezetül, hogy megkönnyítsük azoknak az életét, akik régen nem fokokban, hanem fokokban dolgoztak, az atan2 () által számított rad értéket fokra konvertáljuk.
A ciklus tetején egy kis kódrészlet található, amely lehetővé teszi, hogy a joystick pillanatnyi gombjára kattintva mozgassa az "otthoni" helyet. Ez hihetetlenül hasznos volt a kód tesztelése során, de belehagytam, mert látom, hogyan lehet hasznos néhány esetben.
Most a kód fő tömege! először a joystick X, Y koordinátáit olvassuk be kétszer 10 ms késleltetéssel, majd ellenőrizzük, hogy megegyeznek -e - megállapítottam, hogy a joystick időnként szórványos leolvasást eredményez, és ez az enyhe késleltetés elegendő volt ahhoz, hogy megállítsa a motor forgását ezek alapján. Ez is elég rövid késés, hogy úgy tűnik, hogy nem zavarja a szándékos bemeneteket.
A kód többi része meglehetősen magától értetődő, és mindent megtettem, hogy dokumentáljam; Egy sor IF utasítás összehasonlítja az aktuális joystick szöget a motor szögével, és mozgatja a motort erre a szögre. A 28BYJ-48 fokonként 5,689 lépést tartalmaz, ezért a szükséges mozgást megszorozzuk ezzel a páratlannak tűnő számmal!
A kód egyik része, amely a legtöbb magyarázatot igényli, az, amit "burkoló esetnek" neveztem. Még abban az esetben is, amikor a joystick és a motor pl. +175 °, és a joystick ezt követően -175 ° -ra mozdult el (a joystickon csak 10 ° -os elmozdulás, északról nyugatra nyugatra délnyugatra), a motor 350 ° -kal elmozdul a ROSSZ IRÁNYBAN! ennek elszámolására a különleges esetet írták.
A burkoló eset azzal kezdődik, hogy ellenőrzi, hogy a motor és a joystick ellentétes jelekkel rendelkezik -e, azaz a motor pozitív, a joystick negatív, vagy fordítva. Azt is ellenőrzi, hogy a joystick és a motor abszolút értékének (azaz pozitív értékeinek) összege 180 ° felett van -e.
Ha mindkét állítás igaz, akkor a függvény ellenőrzi, hogy a motornak az óramutató járásával megegyező irányba kell -e mozognia (a motor értéke negatív) vagy az óramutató járásával ellentétes irányba (ha a motor értéke pozitív).
A motor szögének és a joystick szögének abszolút értékeit összeadjuk, és 360 ° -ból kivonjuk, hogy meghatározzuk a mozgást. Végül a motor szöge (amely most a joystick szögét tükrözi) frissül.
3. lépés: VÉGE
Tehát nincs más hátra, mint feltölteni a kódot az Arduino -ra, és futtatni! Tekintse meg a fenti videót, hogy jó ötletet kapjon a projekt működéséről. Ez hasznos lehet a kardántengelyek, a robotkarok és sok más alkalmazás esetén!
Ha használja a kódot, kérjük, tudassa velem, és ha lát olyan helyet, ahol a kód javítható, szívesen várom visszajelzését.
Ajánlott:
28BYJ-48 5V léptetőmotor és A4988 meghajtó: 4 lépés
28BYJ-48 5V léptetőmotor és A4988 illesztőprogram: Valaha is szerettél volna egy robotot pontos szögben elfordítani, csak néhány Arduino vagy micro: bit kimenet segítségével? Mindezt olcsón? Ez tanulságos számodra! Ebben az oktatóanyagban látni fogjuk, hogyan lehet nagyon olcsó léptetőmotort vezetni csak
Léptetőmotor vezérelt léptetőmotor mikrokontroller nélkül !: 6 lépés
Léptetőmotor vezérelt léptetőmotor mikrokontroller nélkül!: Ebben a gyors utasításban egy egyszerű léptetőmotor -vezérlőt készítünk léptetőmotor segítségével. Ez a projekt nem igényel komplex áramkört vagy mikrokontrollert. Tehát minden további nélkül, kezdjük el
Léptetőmotor vezérelt léptetőmotor mikrokontroller nélkül (V2): 9 lépés (képekkel)
Léptetőmotor vezérelt léptetőmotor mikrokontroller nélkül (V2): Az egyik korábbi utasításomban megmutattam, hogyan lehet egy léptetőmotort mikrovezérlő nélküli léptetőmotor segítségével vezérelni. Gyors és szórakoztató projekt volt, de két problémával járt, amelyeket ebben az utasításban megoldanak. Szóval, okosan
Léptetőmotor -vezérlésű mozdonymodell - Léptetőmotor forgó kódolóként: 11 lépés (képekkel)
Léptetőmotor -vezérlésű mozdonymodell | Léptetőmotor forgó kódolóként: Az egyik korábbi utasításban megtanultuk, hogyan kell léptetőmotort használni forgó kódolóként. Ebben a projektben most ezt a léptetőmotoros forgó kódolót fogjuk használni egy modellmozdony vezérlésére Arduino mikrokontroller segítségével. Szóval fu nélkül
Léptetőmotor vezérelt léptetőmotor - Léptetőmotor forgó kódolóként: 11 lépés (képekkel)
Léptetőmotor vezérelt léptetőmotor | Léptetőmotor forgó kódolóként: Van pár léptetőmotor, és szeretne valamit tenni? Ebben az utasításban használjunk léptetőmotort forgó jeladóként, hogy egy másik léptetőmotor helyzetét egy Arduino mikrokontroller segítségével vezéreljük. Szóval minden további nélkül menjünk