Turinys:

28BYJ-48 žingsninio variklio kampinis padėties valdymas su „Arduino“ir analogine vairasvirte: 3 žingsniai
28BYJ-48 žingsninio variklio kampinis padėties valdymas su „Arduino“ir analogine vairasvirte: 3 žingsniai

Video: 28BYJ-48 žingsninio variklio kampinis padėties valdymas su „Arduino“ir analogine vairasvirte: 3 žingsniai

Video: 28BYJ-48 žingsninio variklio kampinis padėties valdymas su „Arduino“ir analogine vairasvirte: 3 žingsniai
Video: 28BYJ-48 Stepper Motor and ULN2003 Arduino #steppermotor #28byj48 #electronics #electrical 2024, Lapkritis
Anonim
28BYJ-48 žingsninio variklio kampinis padėties valdymas su „Arduino“ir analogine vairasvirte
28BYJ-48 žingsninio variklio kampinis padėties valdymas su „Arduino“ir analogine vairasvirte

Tai yra 28BYJ-48 žingsninio variklio valdymo schema, kurią sukūriau kaip savo paskutinių metų disertacijos projekto dalį. Aš to dar nemačiau, todėl galvojau, kad įkelsiu tai, ką atradau. Tikimės, kad tai padės kam nors kitam!

Kodas iš esmės leidžia žingsniniam varikliui „nukopijuoti“analoginės vairasvirtės kampinę padėtį, tai yra, jei stumiate vairasvirtę į priekį, variklis nukreipia „šiaurės“link. stumkite vairasvirtę į vakarus, variklis sukasi ta pačia kryptimi.

Savo įgyvendinimui aš reikalavau, kad jei paleistumėte vairasvirtę, t. Y. Neturėtumėte kampinės padėties, variklis grįžtų į „namų“kryptį. Namų kryptis nukreipta į rytus, o įjungus variklis (arba išnuomojant bet kurį rodiklį / įrenginį, kurį pritvirtinote prie išvesties veleno) taip pat turi būti nukreiptas į šią pusę.

Prekės

„Arduino Uno“ar panašiai

duonos lenta ir jungiamųjų laidų pasirinkimas (nuo vyrų iki vyrų, nuo vyrų iki moterų)

5V maitinimo šaltinis

Analoginis vairasvirtės modulis (idealiu atveju su momentine mygtuko funkcija, tai palengvina „namų“padėties poilsį

28BYJ-48 žingsninis variklis ir ULN2003 žingsninis vairuotojas

Rašiklis, popierius ir „blu-tac“(ar bet koks kitas rodyklės įtaisas, kurį galima pritvirtinti prie variklio!)

1 veiksmas: 1 veiksmas: sąranka

Prijunkite žingsninį variklį prie žingsninio variklio ir kaiščius prijunkite taip:

IN1 - „Arduino“kaištis 8

IN2 - „Arduino“kaištis 9

IN3 - „Arduino“kaištis 10

IN4 - „Arduino“kaištis 11

Prijunkite savo 5 V maitinimo šaltinį prie maitinimo bėgių savo duonos plokštėje, o ULN2003 5 V įėjimus - prie maitinimo bėgelių. prijunkite antžeminį bėgelį prie „Arduino“žemės.

prie vairasvirtės prijunkite taip:

Perjungimo kaištis - „Arduino“kaištis 2

X ašis - „Arduino A0“(analogas 0)

Y ašis - „Arduino A1“

+5 V - „Arduino“5 V išėjimas

GND - Arduino GND

Galiausiai prijunkite savo duonos lentos pagrindą prie kito „Arduino GND“kaiščio

2 veiksmas: 2 žingsnis: kodo paaiškinimas

Aš įtraukiau visą „Arduino“kodą, kurį galite atsisiųsti ir naudoti. Bet aš padarysiu viską, kad paaiškinčiau svarbias dalis.

Šio kodo teorija yra ta, kad vairasvirtės užimama erdvė yra padalinta į grafiką, kurio centre yra 0, 0. tačiau vairasvirtės įvestys yra centre (maždaug) 512, todėl norint įveikti šias dvi funkcijas, naudojamos „nuliui“vertei, nuskaitytai iš X ir Y ašių. Priklausomai nuo naudojamo maitinimo šaltinio, gali tekti pakeisti funkcijų „ZeroX“ir „ZeroY“vertes, kad poilsio metu vairasvirtė patikimai rodytų 0.

Kai skaitomos X, Y reikšmės, jos pirmiausia konvertuojamos į radianus, naudojant funkciją atan2 () math.h bibliotekoje. Šios funkcijos paaiškinimas nepatenka į šios instrukcijos taikymo sritį, tačiau eikite jos ieškoti - tai gana paprastas geometrijos triukas!

Galiausiai, norint palengvinti mūsų, anksčiau dirbusių laipsniais, o ne radais, gyvenimą, rad reikšmė, apskaičiuota pagal atan2 (), konvertuojama į laipsnius.

Kilpos viršuje yra nedidelis kodo fragmentas, leidžiantis spustelėti momentinį kreiptuko mygtuką ir perkelti „namų“vietą. Tai buvo nepaprastai naudinga testuojant kodą, tačiau palikau jį, nes matau, kaip jis gali būti naudingas kai kuriais atvejais.

Dabar pereikite prie pagrindinės kodo dalies! mes pradedame skaityti vairasvirtę X, Y koordinates du kartus, atskirtas 10 ms vėlavimu, ir tada patikrinti, ar jos yra vienodos - radau, kad vairasvirtė retkarčiais rodys atsitiktinius rodmenis, ir šio nedidelio vėlavimo pakako, kad variklis nesisuktų pagal tai. Tai taip pat pakankamai trumpas delsimas, kad neatrodo, kad jis trukdytų tyčiniams įvestims.

Likusi kodo dalis yra gana savaime suprantama ir aš padariau viską, kad tai dokumentuotumėte; IF teiginių serija lygina esamą vairasvirtės kampą su variklio kampu ir perkelia variklį į tą kampą. 28BYJ-48 turi 5,689 žingsnius per laipsnį, todėl reikiamą judesį padauginame iš šio, atrodytų, nelyginio skaičiaus!

Viena kodo dalis, kurią reikia paaiškinti labiausiai, yra tai, ką aš pavadinau „apvyniojimo dėklu“. Net tuo atveju, kai vairasvirtė ir variklis buvo pvz. +175 °, o vairasvirtė vėliau persikėlė į –175 ° (tik 10 ° pasukimas vairasvirtėje, iš šiaurės į vakarus į pietus į vakarus), variklis 350 ° pasuks netinkama kryptimi! tam buvo parašyta speciali byla.

Apvyniojimo atvejis prasideda tikrinant, ar variklis ir vairasvirtė turi priešingus ženklus, ty variklis yra teigiamas, o vairasvirtė - neigiama, arba atvirkščiai. Taip pat tikrinama, ar vairasvirtės ir variklio absoliučių (tai yra teigiamų verčių) suma yra didesnė nei 180 °.

Jei abu šie teiginiai teisingi, funkcija patikrina, ar variklis turi judėti pagal laikrodžio rodyklę (variklio vertė yra neigiama), ar prieš laikrodžio rodyklę (jei variklio vertė teigiama).

Absoliučios variklio kampo ir vairasvirtės kampo vertės susumuojamos ir atimamos iš 360 °, kad būtų galima nustatyti judėjimo atstumą. Galiausiai atnaujinamas variklio kampas (kuris dabar atspindi vairasvirtės kampą).

3 žingsnis: PABAIGA

Taigi, lieka tik įkelti kodą į „Arduino“ir jį paleisti! Žiūrėkite aukščiau esantį vaizdo įrašą, kad suprastumėte, kaip veikia projektas. Tai būtų naudinga fotoaparatų antgaliams, robotinėms rankoms ir daugeliui kitų programų!

Jei naudojate kodą, praneškite man, o jei matote, kur kodą galima patobulinti, norėčiau išgirsti jūsų atsiliepimų.

Rekomenduojamas: