28BYJ-48 pakāpju motors: viss, kas jums jāzina

28byj-48 stepper motors

El 28BYJ-48 ir vienpolārs pakāpju motors zemas izmaksas un augsta precizitāte, ideāli piemērots elektronikas projektiem, 3D printeriem, CNC iekārtām un robotikai. Tā kompaktais izmērs, zemais enerģijas patēriņš un lietošanas vienkāršība padara to par populāru izvēli elektronikas cienītājiem un profesionāļiem.

Turklāt kopā ar šo dzinēju a modulis ar ULN2003, jūsu kontrolei. Tādā veidā mums ir viss nepieciešamais, lai varētu pilnībā izmantot šo sistēmu, izmantojot mikrokontrolleri vai plati Arduino vai līdzīgi.

Kas ir 28BYJ-48 pakāpju motors?

iekštelpu elektromotors: stators-rotors

Un pakāpju motors ir elektromotora veids kas kustas ar maziem diskrētiem leņķiskajiem soļiem, nevis nepārtraukti griežas. Tas darbojas, izmantojot elektromagnētu komplektu, kas tiek aktivizēti noteiktā secībā. Aktivizējot dažādus elektromagnētus, tiek izveidots magnētiskais lauks, kas pievelk motora rotoru, liekot tam griezties pa soli. Pakāpju skaits vienā apgriezienā un kustības precizitāte ir atkarīga no konkrētā motora konstrukcijas un izmantotās vadības secības.

Pakāpju motoros mums ir divi veidi:

  • Unipolārs- Viņiem ir viens spoļu komplekts, un tiem ir nepieciešams īpašs kontrolieris, lai mainītu strāvu un liktu motoram griezties abos virzienos.
  • Bipolāri- Tiem ir divi neatkarīgu spoļu komplekti, kas ļauj tiem griezties abos virzienos, neizmantojot īpašu kontrolieri.

28BYJ-28 gadījumā tas ir vienpolārais tips, kā jau minēju iepriekš. Un šajā grupā to raksturo sekojošais specs:

  • Unipolārs steperis: vienkārša vadība tikai ar 4 kabeļiem.
  • Integrēts reduktors: nodrošina augstu precizitāti (0.088° uz soli) un griezes momentu (3 N·cm).
  • Zems patēriņš: 83 mA (5 V modelis) vai 32 mA (12 V modelis).
  • barošana: 5V vai 12V (atkarībā no modeļa).
  • Ekonomiska cena: no 1.2 eiro par vienību vai nedaudz vairāk, ja tajos ir ULN2003 modulis.

iespējamās lietojumprogrammas, es jau minēju dažus no tiem iepriekš, bet šeit es vēlreiz sniedzu dažas idejas jūsu projektiem:

  • Hidraulisko un pneimatisko vārstu vadība.
  • Šarnīrveida roboti un robotu rokas.
  • Sensoru pozicionēšana.
  • Rotējošie galdi skeneriem.
  • 3D printeri.
  • CNC mašīnas.

Stepper motors nedarbojas viens, tam ir nepieciešams cits elements. Šajā gadījumā, 28BYJ-48 kontrolē plate ar integrētu ULN2003, kas ļauj pastiprināt Arduino izeju strāvu, lai darbinātu motora spoles. Aktivizējot spoles pareizā secībā, motors soli pa solim griežas ļoti precīzi.

Kontroles secību un fāžu veidi

Tur dažādas vadības secības 28BYJ-48, visizplatītākie ir:

  • Pilna viļņu secība: aktivizē visas spoles vienlaicīgi.
  • Puse soļu secība: aktivizē divas blakus esošās spoles vienlaikus.
  • Mikroskopiskā soļu secība: aktivizē vienu spoli vienlaikus.

Redzēsim fāzes detalizēti:

  • Secība 1-fāze: 1 fāzes secībā mēs vienlaikus ieslēdzam vienu spoli. Pārņemot šo aizdedzes secību tabulā, dzinēja kontaktligzdā būtu jāģenerē:
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āžu secība: katrā fāzē ieslēdzam divas korelatīvās spoles, tāpēc radītais magnētiskais lauks ir lielāks (par 41% vairāk), tāpēc motoram ir lielāks griezes moments, tas ir, mēs iegūstam lielāku spēku. Kā negatīvs moments mēs dubultojām enerģijas patēriņu. Kas attiecas uz tabulu, tas būtu:
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
  • Puspakāpju secība: Šis ir vēl viens no posmiem, ko mēs apskatīsim, jūs varat piedzīvot to, kas jūs visvairāk interesē. Šeit mēs pārmaiņus ieslēdzam vienu un divas spoles, panākot pussoļa precizitāti. To izmanto lietojumos, kur nepieciešama visaugstākā precizitāte, lai gan var rasties problēmas, ja pielietojums ir pie griezes momenta robežas. Secības izteikšana tabulas formā rada:
Pussolis 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 ar Arduino

28byj-48 ar Arduino

Pirmā lieta ir pareizi savienot modulis un motors 28byj-48 ar mūsu Arduino dēli, lai to izdarītu, jums vienkārši ir jāizveido šādi savienojumi:

  • Pin — no ULN2003 līdz Arduino GND.
  • ULN2003 kontakts + uz Vcc (5 v vai citos gadījumos, ja tas ir 12 v motors, ir jāizmanto barošanas avots ar šādu spriegumu) no Arduino.
  • ULN1 IN2, IN3, IN4 un IN2003 uz Arduino digitālajām ieejām D8, D9, D10 un D11.
  • 28byj-48 motors, vienkārši pievienojiet to moduļa ULN2003 portam.

Tagad, kad esat izveidojis savienojumu, nākamā lieta ir izmantot piemērs Arduino IDE, ko varat izmantot, lai eksperimentētu vai modificētu to pēc savām vēlmēm. Šajā piemērā visas fāžu tabulas ir komentētas, piemēram, // rindas priekšā, jūs zināt... Ja vēlaties izmantot kādu no tām, vienkārši izdzēsiet // instrukciju priekšā.

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


Esi pirmais, kas komentārus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.