28BYJ-48 samm-mootor: kõik, mida pead teadma

28byj-48 samm-mootor

El 28BYJ-48 on unipolaarne samm-mootor madal hind ja kõrge täpsus, ideaalne elektroonikaprojektide, 3D-printerite, CNC-masinate ja robootika jaoks. Selle kompaktne suurus, madal energiatarve ja kasutuslihtsus teevad sellest populaarse valiku elektroonikahuviliste ja professionaalide seas.

Lisaks on koos selle mootoriga a moodul ULN2003-ga, teie kontrolliks. Nii on meil olemas kõik vajalik selle süsteemi täielikuks kasutamiseks mikrokontrolleri või plaadi abil Arduino või muu sarnane.

Mis on 28BYJ-48 samm-mootor?

siseelektrimootor: staator-rootor

Un samm-mootor on teatud tüüpi elektrimootor mis liigub väikeste diskreetsete nurksammudega, mitte pideva pöörlemisega. See töötab kindlas järjestuses aktiveeritud elektromagnetide komplekti abil. Erinevate elektromagnetite aktiveerimisel tekib magnetväli, mis tõmbab ligi mootori rootorit, pannes selle ühe sammu kaupa pöörlema. Sammude arv pöörde kohta ja liikumise täpsus sõltuvad konkreetsest mootori konstruktsioonist ja kasutatavast juhtimisjärjestusest.

Sammmootorites on kahte tüüpi:

  • Unipolaarne- Neil on üks mähiste komplekt ja voolu pööramiseks ja mootori mõlemas suunas pöörlemiseks on vaja spetsiaalset kontrollerit.
  • Bipolaarne- Neil on kaks sõltumatute mähiste komplekti, mis võimaldavad neil mõlemas suunas pöörata, ilma et oleks vaja spetsiaalset kontrollerit.

28BYJ-28 puhul on see unipolaarne, nagu ma varem mainisin. Ja selles rühmas iseloomustab seda järgmine näitajad:

  • Unipolaarne stepper: lihtne juhtimine ainult 4 kaabliga.
  • Integreeritud reduktor: pakub suurt täpsust (0.088° sammu kohta) ja pöördemomenti (3 N·cm).
  • Madal tarbimine: 83 mA (5 V mudel) või 32 mA (12 V mudel).
  • toitmine: 5V või 12V (olenevalt mudelist).
  • Ökonoomne hind: alates 1.2 eurost ühiku kohta või veidi rohkem, kui need sisaldavad ULN2003 moodulit.

Kuna võimalikud rakendused, mainisin mõnda neist juba varem, kuid siin annan teile taas mõned ideed teie projektide jaoks:

  • Hüdrauliliste ja pneumaatiliste ventiilide juhtimine.
  • Liigendatud robotid ja robotkäed.
  • Anduri positsioneerimine.
  • Skannerite pöörlevad lauad.
  • 3D-printerid.
  • CNC masinad.

Sammmootor üksi ei tööta, selleks on vaja teist elementi. Sel juhul, 28BYJ-48 juhib integreeritud ULN2003-ga tahvel, mis võimaldab mootoripoolide toiteks Arduino väljundite voolu võimendada. Aktiveerides mähised õiges järjestuses, pöörleb mootor samm-sammult väga täpselt.

Juhtjadade ja faaside tüübid

seal 28BYJ-48 erinevad juhtimisjärjestused, kõige levinumad on:

  • Täielik lainejada: aktiveerib kõik mähised korraga.
  • Poole sammu jada: Aktiveerib kaks kõrvuti asetsevat mähist korraga.
  • Mikroskoopiline sammude jada: Aktiveerib ühe mähise korraga.

Vaatame faasid üksikasjalikult:

  • Jada 1-faas: 1-faasilises järjestuses lülitame sisse ühe mähise korraga. Võttes selle süütejärjestuse tabelisse, tuleb mootori pistikupesas genereerida järgmine:
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-faasiline järjestus: lülitame igas faasis sisse kaks korrelatiivset mähist, nii et genereeritav magnetväli on suurem (41% rohkem), nii et mootoril on suurem pöördemoment, see tähendab, et me saame rohkem tugevust. Negatiivse punktina kahekordistame energiatarbimist. Mis puudutab tabelit, siis see oleks:
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
  • Poolesammuline jada: See on veel üks etapp, mida me vaatame, saate kogeda seda, mis teile kõige rohkem huvi pakub. Siin lülitame vaheldumisi sisse ühe ja kaks mähist, saavutades poole sammu täpsuse. Seda kasutatakse rakendustes, kus on vaja suurimat täpsust, kuigi võib esineda probleeme, kui rakendus on pöördemomendi piiril. Jada väljendamine tabeli kujul annab tulemuseks:
Poolsamm 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 koos Arduinoga

28byj-48 koos Arduinoga

Esimene asi on korralikult ühendada moodul ja mootor 28byj-48 meie Arduino tahvlile, selleks peate lihtsalt looma järgmised ühendused:

  • Pin – alates ULN2003 kuni Arduino GND.
  • ULN2003 pin + Vcc-le (5 V või muudel juhtudel, kui see on 12 V mootor, tuleks kasutada selle pingega toiteallikat) Arduinost.
  • ULN1 IN2, IN3, IN4 ja IN2003 Arduino digitaalsisenditele D8, D9, D10 ja D11.
  • 28byj-48 mootor, ühendage see lihtsalt mooduli ULN2003 porti.

Nüüd, kui olete ühenduses, on järgmine asi kasutada näide Arduino IDE-s, mida saate kasutada katsetamiseks või oma maitse järgi muutmiseks. Selles näites on kõik faasitabelid välja kommenteeritud, näiteks // rea ees, tead... Kui tahad mõnda neist kasutada, siis lihtsalt kustuta // juhiste ees.

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


Ole esimene kommentaar

Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.