Turinys:
- Prekės
- 1 veiksmas: 1 veiksmas: sąranka
- 2 veiksmas: 2 žingsnis: kodo paaiškinimas
- 3 žingsnis: PABAIGA
Video: 28BYJ-48 žingsninio variklio kampinis padėties valdymas su „Arduino“ir analogine vairasvirte: 3 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
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:
„Arduino“LED valdymas su analogine vairasvirte: 6 žingsniai
„Arduino“LED valdymas su analogine vairasvirte: šioje pamokoje mes sužinosime, kaip naudoti analoginę vairasvirtę šviesos diodui valdyti. Žiūrėkite demonstracinį vaizdo įrašą
2 servo valdymas naudojant analoginę vairasvirtę: 5 žingsniai (su paveikslėliais)
2 servų valdymas naudojant analoginę vairasvirtę.: Sveiki, vaikinai, tai yra mano pirmas nurodymas, ir šiame įraše dalinuosi, kaip naudoti analoginę vairasvirtę, kad valdytumėte servus naudojant „Arduino UNO“. Bandysiu tai paaiškinti kuo paprasčiau, tikiuosi, kad jums patinka tai
DC variklio padėties valdymas: 5 žingsniai
DC variklio padėties valdymas: ši instrukcija parodys, kaip valdyti variklio padėtį per vietinį žiniatinklio tinklą. Dabar galite naudoti išmanųjį telefoną ar „iPad“, prijungtą prie tinklo, tada įveskite variklio vietinio žiniatinklio serverio adresą Iš čia mes galime valdyti variklio padėties diską pasukdami
„Arduino“pamoka - žingsninio variklio valdymas naudojant potenciometrą: 5 žingsniai
„Arduino“pamoka - žingsninio variklio valdymas naudojant potenciometrą: ši instrukcija yra rašytinė mano „Arduino: Kaip valdyti žingsninį variklį naudojant potenciometrą“versija. „YouTube“vaizdo įrašas, kurį neseniai įkėliau. Aš primygtinai rekomenduoju jums tai patikrinti. Mano „YouTube“kanale pirmiausia turėtumėte pamatyti
„Arduino“pamoka - žingsninio variklio valdymas su tvarkyklės ULN 2003: 5 žingsniai
„Arduino“pamoka - žingsninio variklio valdymas su vairuotojo ULN 2003: Šis nurodymas yra rašytinė mano „Arduino: Kaip valdyti žingsninį variklį naudojant ULN 2003 variklio tvarkyklę“versija. „YouTube“vaizdo įrašas, kurį neseniai įkėliau. Aš primygtinai rekomenduoju jums tai patikrinti