Koračni motor 28BYJ-48: vse, kar morate vedeti

Koračni motor 28byj-48

El 28BYJ-48 je unipolarni koračni motor nizki stroški in visoka natančnost, idealni za elektronske projekte, za 3D tiskalnike, CNC stroje in robotiko. Zaradi svoje kompaktne velikosti, nizke porabe energije in enostavne uporabe je priljubljena izbira za ljubitelje elektronike in profesionalce.

Poleg tega je skupaj s tem motorjem a modul z ULN2003, za vaš nadzor. Na ta način imamo vse, kar je potrebno, da lahko ta sistem v celoti uporabljamo z uporabo mikrokontrolerja ali plošče Arduino ali podobno.

Kaj je koračni motor 28BYJ-48?

notranji elektromotor: stator-rotor

Un koračni motor je vrsta elektromotorja ki se premika v majhnih diskretnih kotnih korakih, namesto v neprekinjenem vrtenju. Deluje s pomočjo nabora elektromagnetov, ki se aktivirajo v določenem zaporedju. Z aktiviranjem različnih elektromagnetov se ustvari magnetno polje, ki privlači rotor motorja in povzroči, da se vrti korak za korakom. Število korakov na vrtljaj in natančnost gibanja sta odvisna od specifične zasnove motorja in uporabljenega krmilnega zaporedja.

Znotraj koračnih motorjev poznamo dve vrsti:

  • Unipolarni- Imajo en komplet tuljav in potrebujejo poseben krmilnik za obračanje toka in omogočanje vrtenja motorja v obe smeri.
  • Bipolarna- Imajo dva sklopa neodvisnih tuljav, ki jim omogočata vrtenje v obe smeri brez potrebe po posebnem krmilniku.

V primeru 28BYJ-28 je unipolarni tip, kot sem že omenil. In znotraj te skupine je značilno, da ima naslednje specifikacije:

  • Unipolarni steper: preprosto upravljanje s samo 4 kabli.
  • Integriran reduktor: ponuja visoko natančnost (0.088° na korak) in navor (3 N·cm).
  • Nizka poraba: 83 mA (5V model) ali 32 mA (12V model).
  • hranjenje: 5V ali 12V (odvisno od modela).
  • Ekonomična cena: od 1.2 € na enoto ali malo več, če imajo vključen modul ULN2003.

Kot za možne aplikacije, nekatere sem že omenil, tukaj pa vam ponovno podajam nekaj idej za vaše projekte:

  • Krmiljenje hidravličnih in pnevmatskih ventilov.
  • Zgibni roboti in robotske roke.
  • Položaj senzorja.
  • Vrtljive mize za skenerje.
  • 3d tiskalniki.
  • CNC stroji.

Koračni motor ne deluje sam, potrebuje še en element. V tem primeru, 28BYJ-48 krmili plošča z integriranim ULN2003, ki omogoča, da se tok izhodov Arduino ojača za napajanje tuljav motorja. Z aktiviranjem tuljav v pravilnem zaporedju se motor vrti korak za korakom z veliko natančnostjo.

Vrste krmilnih sekvenc in faz

Tu različna krmilna zaporedja za 28BYJ-48, najpogostejši so:

  • Celotno zaporedje valov: Aktivira vse tuljave hkrati.
  • Zaporedje pol korakov: hkrati aktivira dve sosednji tuljavi.
  • Mikroskopsko zaporedje korakov: Aktivira eno tuljavo naenkrat.

Poglejmo faze Podrobno:

  • Zaporedje 1-fazno: V 1-faznem zaporedju vklopimo eno tuljavo naenkrat. Če to zaporedje vžiga prenesemo v tabelo, bi bilo treba v pinoutu motorja ustvariti naslednje:
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-fazno zaporedje: v vsaki fazi vključimo dve korelativni tuljavi, zato je generirano magnetno polje večje (41% več), zato ima motor večji navor, torej dobimo večjo moč. Kot negativno točko podvojimo porabo energije. Kar se tiče tabele, 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
  • Zaporedje pol korakov: To je še ena od stopenj, ki si jih bomo ogledali, izkusite lahko tisto, kar vas najbolj zanima. Tukaj izmenično vklopimo eno in dve tuljavi, pri čemer dosežemo natančnost pol koraka. Uporablja se v aplikacijah, kjer je potrebna največja natančnost, čeprav lahko pride do težav, ko je aplikacija na meji navora. Izražanje zaporedja v obliki tabele povzroči:
Pol-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 z Arduinom

28byj-48 z Arduinom

Prva stvar je pravilno povezati modul in motor 28byj-48 na našo ploščo Arduino, morate za to narediti preprosto naslednje povezave:

  • Pin – od ULN2003 do GND Arduina.
  • Pin + ULN2003 na Vcc (5 V ali v drugih primerih, če je motor 12 V, bi bilo treba uporabiti napajalnik s to napetostjo) iz Arduina.
  • IN1, IN2, IN3 in IN4 ULN2003 na digitalne vhode D8, D9, D10 in D11 Arduina.
  • Motor 28byj-48 preprosto priključite na vrata na modulu ULN2003.

Zdaj, ko ste povezani, je naslednja stvar uporaba primer v Arduino IDE, ki ga lahko uporabite takšnega, kot je, da eksperimentirate ali ga spremenite po svojih željah. V tem primeru so vse fazne tabele komentirane, na primer // pred vrstico, saj veste ... Če želite uporabiti eno od njih, samo izbrišite // pred navodili.

//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));
}


Bodite prvi komentar

Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.