Koračni motor 28BYJ-48: sve što trebate znati

28byj-48 koračni motor

El 28BYJ-48 je unipolarni koračni motor niska cijena i visoka preciznost, idealno za projekte elektronike, za 3D štampače, CNC mašine i robotiku. Njegova kompaktna veličina, niska potrošnja energije i jednostavna upotreba čine ga popularnim izborom za ljubitelje elektronike i profesionalce.

Nadalje, zajedno sa ovim motorom, a modul sa ULN2003, za vašu kontrolu. Na taj način imamo sve što je potrebno da možemo u potpunosti koristiti ovaj sistem, koristeći mikrokontroler ili ploču Arduino ili slično.

Šta je 28BYJ-48 koračni motor?

unutarnji elektromotor: stator-rotor

Un koračni motor je vrsta elektromotora koji se kreće malim diskretnim ugaonim koracima, a ne kontinuiranom rotacijom. Radi pomoću seta elektromagneta koji se aktiviraju određenim redoslijedom. Aktiviranjem različitih elektromagneta stvara se magnetsko polje koje privlači rotor motora, uzrokujući da se okreće korak po korak. Broj koraka po obrtaju i preciznost kretanja ovise o specifičnom dizajnu motora i korištenom upravljačkom nizu.

Unutar koračnih motora imamo dva tipa:

  • Unipolar- Imaju jedan set namotaja i zahtijevaju poseban kontroler da preokrene struju i učini da se motor okreće u oba smjera.
  • Bipolarni- Imaju dva seta nezavisnih zavojnica, što im omogućava da se rotiraju u oba smjera bez potrebe za posebnim kontrolerom.

U slučaju 28BYJ-28 on je unipolarnog tipa, kao što sam već pomenuo. I, u okviru ove grupe, karakteriše ga sledeće specifikacije:

  • Unipolarni steper: jednostavna kontrola sa samo 4 kabla.
  • Integrisani reduktor: nudi visoku preciznost (0.088° po koraku) i obrtni moment (3 N·cm).
  • Mala potrošnja: 83 mA (5V model) ili 32 mA (12V model).
  • Hrana: 5V ili 12V (ovisno o modelu).
  • Ekonomska cijena: od 1.2 € po jedinici, ili malo više ako uključuju ULN2003 modul.

Što se tiče moguće primjene, već sam pomenuo neke od njih ranije, ali evo vam opet dajem neke ideje za vaše projekte:

  • Kontrola hidrauličkih i pneumatskih ventila.
  • Zglobni roboti i robotske ruke.
  • Pozicioniranje senzora.
  • Rotirajući stolovi za skenere.
  • 3d štampači.
  • CNC mašine.

Koračni motor ne radi sam, zahtijeva još jedan element. U ovom slučaju, 28BYJ-48 kontroliše ploča sa integrisanim ULN2003, koji omogućava da se struja Arduino izlaza pojača za napajanje zavojnica motora. Aktiviranjem zavojnica u ispravnom redoslijedu, motor se okreće korak po korak s velikom preciznošću.

Vrste kontrolnih sekvenci i faza

Postoje razne kontrolne sekvence za 28BYJ-48, najčešći su:

  • Puni talasni niz: aktivira sve zavojnice u isto vrijeme.
  • Sekvenca pola koraka: Aktivira dva susjedna namotaja u isto vrijeme.
  • Mikroskopski slijed koraka: Aktivira jednu po jednu zavojnicu.

Da vidimo faze detaljno:

  • Slijed 1-fazni: U 1-faznom nizu uključujemo jednu po jednu zavojnicu. Uzimajući ovu sekvencu paljenja u tabelu, sljedeće bi se moralo generirati u pinoutu motora:
paso A B A' B'
1 ON OFF OFF OFF
2 OFF ON OFF OFF
3 OFF OFF ON OFF
4 OFF OFF OFF ON
  • 2-fazni niz: u svakoj fazi uključujemo dva korelativna namotaja, tako da je generirano magnetno polje veće (41% više) pa motor ima veći moment, odnosno dobijamo veću snagu. Kao negativnu točku, udvostručili smo potrošnju energije. Što se tiče tabele, to bi bilo:
paso A B A' B'
1 ON ON OFF OFF
2 OFF ON ON OFF
3 OFF OFF ON ON
4 ON OFF OFF ON
  • Sekvenca u pola koraka: Ovo je još jedna od faza koju ćemo vidjeti, možete doživjeti ono što vas najviše zanima. Ovdje naizmjenično uključujemo jednu i dvije zavojnice, postižući preciznost od pola koraka. Koristi se u aplikacijama gdje je potrebna najveća preciznost, iako bi moglo doći do problema kada je primjena na granici obrtnog momenta. Izražavanje niza u obliku tabele rezultira:
Pola korak A B A' B'
1 ON OFF OFF OFF
2 ON ON OFF OFF
3 OFF ON OFF OFF
4 OFF ON ON OFF
5 OFF OFF ON OFF
6 OFF OFF ON ON
7 OFF OFF OFF ON
8 ON OFF OFF ON

28BYJ-28 sa Arduinom

28byj-48 sa Arduinom

Prva stvar je da pravilno povežete modul i motor 28byj-48 na našu Arduino ploču, da biste to učinili, jednostavno morate napraviti sljedeće veze:

  • Pin – od ULN2003 do GND Arduina.
  • Pin + ULN2003 na Vcc (5v ili u drugim slučajevima, ako se radi o 12v motoru, moralo bi se koristiti napajanje s tim naponom) iz Arduina.
  • IN1, IN2, IN3 i IN4 ULN2003 na digitalne ulaze D8, D9, D10 i D11 Arduina.
  • 28byj-48 motor, jednostavno ga povežite na port na ULN2003 modulu.

Sada kada ste povezani, sljedeća stvar je korištenje primjer u Arduino IDE, koji možete koristiti kao što jeste da eksperimentišete ili ga modifikujete po svom ukusu. U ovom primjeru, sve tablice faza su komentirane, kao // ispred reda, znate... Ako želite koristiti jednu od njih, samo izbrišite // ispred instrukcija.

//Definir los pines
const int motorPin1 = 8;    // 28BYJ48 In1
const int motorPin2 = 9;    // 28BYJ48 In2
const int motorPin3 = 10;   // 28BYJ48 In3
const int motorPin4 = 11;   // 28BYJ48 In4
                   
//Definición de variables
int motorSpeed = 1200;   //Velocidad del motor
int stepCounter = 0;     //Contador de pasos
int stepsPerRev = 4076;  //Pasos para un giro completo

//Tablas de secuencia (descomentar la que necesites)
//Secuencia 1-fase
//const int numSteps = 4;
//const int stepsLookup[4] = { B1000, B0100, B0010, B0001 };

//Secuencia 2-fases
//const int numSteps = 4;
//const int stepsLookup[4] = { B1100, B0110, B0011, B1001 };

//Secuencia media fase
//const int numSteps = 8;
//const int stepsLookup[8] = { B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001 };

void setup()
{
  //Declarar los pines usados como salida
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
}

void loop()
{
  for (int i = 0; i < stepsPerRev * 2; i++)
  {
    clockwise();
    delayMicroseconds(motorSpeed);
  }
  for (int i = 0; i < stepsPerRev * 2; i++)
  {
    anticlockwise();
    delayMicroseconds(motorSpeed);
  }
  delay(1000);
}

void clockwise()
{
  stepCounter++;
  if (stepCounter >= numSteps) stepCounter = 0;
  setOutput(stepCounter);
}

void anticlockwise()
{
  stepCounter--;
  if (stepCounter < 0) stepCounter = numSteps - 1;
  setOutput(stepCounter);
}

void setOutput(int step)
{
  digitalWrite(motorPin1, bitRead(stepsLookup[step], 0));
  digitalWrite(motorPin2, bitRead(stepsLookup[step], 1));
  digitalWrite(motorPin3, bitRead(stepsLookup[step], 2));
  digitalWrite(motorPin4, bitRead(stepsLookup[step], 3));
}


Budite prvi koji komentarišete

Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.