Kazalo:

Kotni pozicijski nadzor koračnega motorja 28BYJ-48 z Arduino in analogno krmilno palico: 3 koraki
Kotni pozicijski nadzor koračnega motorja 28BYJ-48 z Arduino in analogno krmilno palico: 3 koraki

Video: Kotni pozicijski nadzor koračnega motorja 28BYJ-48 z Arduino in analogno krmilno palico: 3 koraki

Video: Kotni pozicijski nadzor koračnega motorja 28BYJ-48 z Arduino in analogno krmilno palico: 3 koraki
Video: Lesson 97: Controlling Servo Motor using Rotary Encoder and Display Angle On LCD 2024, November
Anonim
Kotni pozicijski nadzor koračnega motorja 28BYJ-48 z Arduino in analogno krmilno palico
Kotni pozicijski nadzor koračnega motorja 28BYJ-48 z Arduino in analogno krmilno palico

To je krmilna shema koračnega motorja 28BYJ-48, ki sem jo razvil za uporabo v okviru svojega zadnjega letnega projekta. Tega še nisem videl, zato sem si naložil, kar sem odkril. Upajmo, da bo to pomagalo še komu drugemu!

Koda v bistvu omogoča koračnemu motorju, da "kopira" kotni položaj analogne krmilne palice, se pravi, če krmilno palčko potisnete naprej, motor pokaže proti "severu". pritisnite krmilno palčko proti zahodu, motor se vrti v isto smer.

Za izvedbo sem zahteval, da se motor vrne v "domačo" smer, če spustite krmilno palčko, torej nima kotnega položaja. Domača smer je obrnjena proti vzhodu, motor (ali v najemu, kateri koli kazalec / napravo, ki ste jo pritrdili na izhodno gred!) Pa mora biti tudi obrnjen v to smer.

Zaloge

Arduino Uno ali podobno

načrt in izbira mostičnih žic (moški do moški, moški do ženska)

5V napajanje

Analogni modul krmilne palice (v idealnem primeru s kratko tipko, kar olajša počitek v "domačem" položaju

Koračni motor 28BYJ-48 in gonilnik koraka ULN2003

Svinčnik, papir in blu-tac (ali katera koli druga kazalna naprava za pritrditev na motor!)

1. korak: 1. korak: Nastavitev

Koračni motor priključite na gonilnik koraka in nožice priključite na naslednji način:

IN1 - Arduino pin 8

IN2 - Arduino pin 9

IN3 - Arduino pin 10

IN4 - Arduino pin 11

Priključite 5 -voltno napajanje na napajalne tirnice na plošči in priključite 5 -vhodne vhode ULN2003 na napajalne tirnice. ozemljitveno tirnico priključite na tla na vašem Arduinu.

za krmilno palčko povežite na naslednji način:

Preklopni zatič - Arduino pin 2

Os X - Arduino A0 (analogno v 0)

Os Y - Arduino A1

+5V - Arduino 5V izhod

GND - Arduino GND

Končno priključite ozemljitev vaše plošče na drugi zatič Arduino GND

2. korak: 2. korak: razlaga kode

Vključil sem celotno kodo Arduino, ki jo lahko prenesete in uporabite. Se bom pa potrudil, da tukaj razložim ustrezne dele.

Teorija te kode je, da je prostor, ki ga zaseda igralna palica, razdeljen na graf z 0, 0 v središču. vendar vhodi krmilne palice ležijo na (približno) 512 v sredini, zato se za premagovanje teh dveh funkcij uporabljata za "ničelno" vrednost, odčitano z osi X in Y. odvisno od napajanja, ki ga uporabljate, boste morda morali spremeniti vrednosti v funkcijah ZeroX in ZeroY, tako da krmilna palica med počitkom zanesljivo odčita 0.

Ko se preberejo vrednosti X, Y, se najprej pretvorijo v radiane s pomočjo funkcije atan2 () v knjižnici math.h. Pojasnilo te funkcije ni v obsegu tega navodila, vendar prosim poglejte - to je precej preprost trik geometrije!

Nazadnje, da bi olajšali življenje tistim od nas, ki smo prej delali v stopinjah in ne v rad, se vrednost rad, izračunana z atan2 (), pretvori v stopinje.

Na vrhu zanke je majhen delček kode, ki vam omogoča, da s pritiskom na trenutni gumb na krmilni ročici premaknete »domačo« lokacijo. To je bilo med preskušanjem kode neverjetno uporabno, vendar sem ga pustil, saj vidim, kako bi lahko bil v nekaterih primerih koristen.

Zdaj pa k glavnemu delu kode! začnemo z branjem krmilne palice X, Y koordinat dvakrat ločene z zamikom 10 ms, nato pa preverimo, če so enake - ugotovil sem, da bo krmilna palica občasno oddajala občasne odčitke, in ta rahla zamuda je bila dovolj, da se motor ustavi na podlagi teh. Prav tako je dovolj kratka zamuda, da se zdi, da ne posega v namerne vložke.

Preostali del kode je precej samoumeven in potrudil sem se, da ga dokumentiram; Niz stavkov IF primerja trenutni kot krmilne palice s kotom motorja in motor premakne v ta kot. 28BYJ-48 ima 5,689 korakov na stopinjo, zato zahtevano gibanje pomnožimo s tem na videz neparnim številom!

En del kode, ki zahteva najbolj razlago, je tisto, kar sem poimenoval "ovit primer". Tudi če sta krmilna palica in motor pri npr. +175 °, krmilna palica pa se je nato premaknila na -175 ° (premik le 10 ° na krmilni palici, od severozahoda do juga zahoda), bi se motor pomaknil v NAPAKEM SMERU za 350 °! zaradi tega je bil napisan poseben primer.

Ovojni primer se začne s preverjanjem, ali imata motor in krmilna palica nasprotne znake, tj. Motor je pozitiven, krmilna palica pa negativna, ali obratno. Prav tako preverja, ali je vsota absolutnih (to je pozitivnih vrednosti) krmilne palice in motorja nad 180 °.

Če sta obe izjavi resnični, funkcija nato preveri, ali se mora motor premikati v smeri urinega kazalca (vrednost motorja je negativna) ali v nasprotni smeri urinega kazalca (če je vrednost motorja pozitivna).

Absolutne vrednosti kota motorja in kota krmilne palice se seštejejo in odštejejo od 360 °, da se določi razdalja do premika. Nazadnje se kot tako posodobi kot motorja (ki zdaj odraža kot krmilne palice).

3. korak: KONČANO

Torej, preostane le še, da kodo naložite v svoj Arduino in jo zaženete! Za dobro predstavo o delovanju projekta si oglejte zgornji video. To bi bilo uporabno za gimbale fotoaparatov, robotske roke in številne druge aplikacije!

Če uporabljate kodo, mi to sporočite. Če opazite, da bi kodo lahko izboljšali, bi rad slišal vaše povratne informacije.

Priporočena: