Krokový motor 28BYJ-48: všetko, čo potrebujete vedieť

Krokový motor 28byj-48

El 28BYJ-48 je unipolárny krokový motor nízke náklady a vysoká presnosť, ideálne pre elektronické projekty, pre 3D tlačiarne, CNC stroje a robotiku. Vďaka kompaktným rozmerom, nízkej spotrebe energie a jednoduchému použitiu je obľúbenou voľbou pre nadšencov a profesionálov v oblasti elektroniky.

Ďalej spolu s týmto motorom a modul s ULN2003, pre vašu kontrolu. Týmto spôsobom máme všetko potrebné na to, aby sme tento systém mohli úplne využívať pomocou mikrokontroléra alebo dosky Arduino alebo podobne.

Čo je krokový motor 28BYJ-48?

vnútorný elektromotor: stator-rotor

Un krokový motor je typ elektromotora ktorý sa pohybuje skôr v malých diskrétnych uhlových krokoch než v nepretržitej rotácii. Funguje pomocou sady elektromagnetov, ktoré sa aktivujú v špecifickom poradí. Aktiváciou rôznych elektromagnetov sa vytvára magnetické pole, ktoré priťahuje rotor motora a spôsobuje jeho otáčanie o krok za krokom. Počet krokov na otáčku a presnosť pohybu závisia od konkrétnej konštrukcie motora a použitej riadiacej sekvencie.

V rámci krokových motorov máme dva typy:

  • Unipolárne- Majú jednu súpravu cievok a vyžadujú špeciálny ovládač na obrátenie prúdu a otáčanie motora v oboch smeroch.
  • bipolárny- Majú dve sady nezávislých cievok, čo im umožňuje otáčať sa v oboch smeroch bez potreby špeciálneho ovládača.

V prípade 28BYJ-28 ide o unipolárny typ, ako som už spomenul. A v rámci tejto skupiny sa vyznačuje tým, že má nasledujúce especificaciones:

  • Unipolárny stepper: jednoduché ovládanie len pomocou 4 káblov.
  • Integrovaná redukcia: ponúka vysokú presnosť (0.088° na krok) a krútiaci moment (3 N·cm).
  • Nízka spotreba: 83 mA (5V model) alebo 32 mA (12V model).
  • Alimentación: 5V alebo 12V (v závislosti od modelu).
  • Ekonomická cena: od 1.2 EUR za jednotku alebo o niečo viac, ak obsahujú modul ULN2003.

Vzhľadom k tomu, možné aplikácie, Niektoré z nich som už spomenul predtým, ale tu vám opäť dám niekoľko nápadov pre vaše projekty:

  • Ovládanie hydraulických a pneumatických ventilov.
  • Kĺbové roboty a robotické ramená.
  • Umiestnenie snímača.
  • Otočné stoly pre skenery.
  • 3D tlačiarní.
  • CNC stroje.

Krokový motor nefunguje sám, vyžaduje si ďalší prvok. V tomto prípade, 28BYJ-48 je riadený doskou s integrovaným ULN2003, ktorý umožňuje zosilnenie prúdu výstupov Arduina na napájanie cievok motora. Aktiváciou cievok v správnom poradí sa motor otáča krok za krokom s veľkou presnosťou.

Typy riadiacich sekvencií a fáz

Tam rôzne riadiace sekvencie pre 28BYJ-48, najbežnejšie sú:

  • Úplná vlnová sekvencia: Aktivuje všetky cievky súčasne.
  • Postupnosť polovičných krokov: Aktivuje dve susedné cievky súčasne.
  • Mikroskopická postupnosť krokov: Aktivuje jednu cievku naraz.

Pozrime sa fázy podrobne:

  • Sekvencia 1-fázová: V 1-fázovej sekvencii zapíname naraz len jednu cievku. Ak zoberieme túto sekvenciu zapaľovania do tabuľky, v pinoute motora by sa muselo vygenerovať nasledovné:
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-fázová sekvencia: zapneme dve korelačné cievky v každej fáze, takže generované magnetické pole je väčšie (o 41% viac), takže motor má väčší krútiaci moment, to znamená, že získame väčšiu silu. Ako negatívny bod zdvojnásobujeme spotrebu energie. Čo sa týka tabuľky, bude to:
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
  • Polkroková sekvencia: Toto je ďalšia z etáp, ktoré uvidíme, môžete zažiť to, čo vás najviac zaujíma. Tu striedavo zapíname jednu a dve cievky, čím dosiahneme presnosť pol kroku. Používa sa v aplikáciách, kde je potrebná najvyššia presnosť, aj keď môžu nastať problémy, keď je aplikácia na hranici krútiaceho momentu. Výsledkom vyjadrenia sekvencie vo forme tabuľky je:
Polkrok 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 s Arduinom

28byj-48 s Arduinom

Prvá vec je správne pripojiť modul a motor 28byj-48 k našej doske Arduino, aby ste to urobili, musíte jednoducho vykonať nasledujúce pripojenia:

  • Pin – od ULN2003 po GND Arduina.
  • Pin + ULN2003 na Vcc (5V alebo v iných prípadoch, ak ide o 12V motor, musel by sa použiť zdroj s týmto napätím) od Arduina.
  • IN1, IN2, IN3 a IN4 ULN2003 k digitálnym vstupom D8, D9, D10 a D11 Arduina.
  • Motor 28byj-48 jednoducho pripojte k portu na module ULN2003.

Teraz, keď ste pripojení, ďalšia vec je použiť príklad v Arduino IDE, ktorý môžete použiť tak, ako je, na experimentovanie alebo si ho upraviť podľa svojich predstáv. V tomto príklade sú všetky tabuľky fáz zakomentované, napríklad // pred riadkom, viete... Ak chcete použiť jednu z nich, jednoducho vymažte // pred pokynmi.

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


Buďte prvý komentár

Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.