28BYJ-48 stepmotor: alt hvad du behøver at vide

28byj-48 stepmotor

El 28BYJ-48 er en unipolær stepmotor lave omkostninger og høj præcision, ideel til elektronikprojekter, til 3D-printere, CNC-maskiner og robotteknologi. Dens kompakte størrelse, lave strømforbrug og brugervenlighed gør den til et populært valg for elektronikhobbyister og professionelle.

Desuden, sammen med denne motor, en modul med ULN2003, for din kontrol. På denne måde har vi alt det nødvendige for at kunne bruge dette system fuldstændigt, ved hjælp af en mikrocontroller eller et board Arduino eller lignende.

Hvad er 28BYJ-48 stepmotor?

indendørs elmotor: stator-rotor

Un stepmotor er en type elektrisk motor som bevæger sig i små diskrete vinkeltrin, snarere end en kontinuerlig rotation. Det fungerer ved hjælp af et sæt elektromagneter, der aktiveres i en bestemt rækkefølge. Ved at aktivere forskellige elektromagneter skabes et magnetfelt, der tiltrækker motorrotoren, hvilket får den til at rotere et trin ad gangen. Antallet af trin pr. omdrejning og bevægelsespræcisionen afhænger af det specifikke motordesign og den anvendte kontrolsekvens.

Inden for stepmotorer har vi to typer:

  • Unipolær- De har et enkelt sæt spoler og kræver en speciel controller til at vende strømmen og få motoren til at rotere i begge retninger.
  • Bipolar- De har to sæt uafhængige spoler, så de kan rotere i begge retninger uden behov for en speciel controller.

I tilfældet med 28BYJ-28 er det unipolær type, som jeg nævnte tidligere. Og inden for denne gruppe er den karakteriseret ved at have følgende especificaciones:

  • Unipolær stepper: enkel styring med kun 4 kabler.
  • Integreret reducer: tilbyder høj præcision (0.088° pr. trin) og drejningsmoment (3 N·cm).
  • Lavt forbrug: 83 mA (5V-model) eller 32 mA (12V-model).
  • fodring: 5V eller 12V (afhængig af model).
  • Økonomisk pris: fra €1.2 pr. enhed, eller lidt mere, hvis de inkluderer et ULN2003-modul.

Som mulige anvendelser, Jeg har allerede nævnt nogle af dem før, men her giver jeg dig igen nogle ideer til dine projekter:

  • Styring af hydrauliske og pneumatiske ventiler.
  • Ledede robotter og robotarme.
  • Sensor positionering.
  • Roterende borde til scannere.
  • 3d printere.
  • CNC maskiner.

Stepmotoren fungerer ikke alene, den kræver et andet element. I dette tilfælde, 28BYJ-48 styres af et kort med integreret ULN2003, som gør det muligt at forstærke strømmen af ​​Arduino-udgangene for at drive motorspolerne. Ved at aktivere spolerne i den rigtige rækkefølge, roterer motoren trin for trin med stor præcision.

Typer af kontrolsekvenser og faser

Der forskellige kontrolsekvenser for 28BYJ-48, de mest almindelige er:

  • Fuld bølgesekvens: aktiverer alle spoler på samme tid.
  • Halv trin sekvens: Aktiverer to tilstødende spoler på samme tid.
  • Mikroskopisk trinsekvens: Aktiverer én spole ad gangen.

Lad os se faserne i detaljer:

  • Sekvens 1-faset: I en 1-faset sekvens tænder vi en enkelt spole ad gangen. Tager denne tændingssekvens til en tabel, skal følgende genereres i motorens pinout:
Paso A B EN' B'
1 ON OFF OFF OFF
2 OFF ON OFF OFF
3 OFF OFF ON OFF
4 OFF OFF OFF ON
  • 2-faset sekvens: vi tænder for to korrelative spoler i hver fase, så det genererede magnetfelt er større (41% mere), så motoren har mere moment, det vil sige, vi opnår mere styrke. Som et negativt punkt fordoblede vi energiforbruget. Med hensyn til bordet ville det være:
Paso A B EN' B'
1 ON ON OFF OFF
2 OFF ON ON OFF
3 OFF OFF ON ON
4 ON OFF OFF ON
  • Halv-trins sekvens: Dette er endnu en af ​​de stadier, vi skal se, du kan opleve det, der interesserer dig mest. Her tænder vi skiftevis en og to spoler og opnår en nøjagtighed på et halvt trin. Det bruges i applikationer, hvor den højeste præcision er nødvendig, selvom der kan være problemer, når applikationen er ved drejningsmomentgrænsen. At udtrykke rækkefølgen i tabelform resulterer i:
Halvt trin A B EN' 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 med Arduino

28byj-48 med Arduino

Den første ting er at tilslutte korrekt modul og motor 28byj-48 til vores Arduino-kort, for at gøre dette, skal du blot oprette følgende forbindelser:

  • Pin – fra ULN2003 til GND af Arduino.
  • Pin + på ULN2003 til Vcc (5v eller i andre tilfælde, hvis det er en 12v motor, skal der bruges en strømforsyning med den spænding) fra Arduino.
  • IN1, IN2, IN3 og IN4 på ULN2003 til de digitale indgange D8, D9, D10 og D11 på Arduino.
  • 28byj-48-motoren skal du blot tilslutte den til porten på ULN2003-modulet.

Nu hvor du er tilsluttet, er den næste ting at bruge et eksempel i Arduino IDE, som du kan bruge som den er til at eksperimentere eller ændre den efter din smag. I dette eksempel er alle fasetabellerne kommenteret ud, ligesom // foran linjen, du ved... Hvis du vil bruge en af ​​dem, skal du bare slette // foran instruktionerne.

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


Vær den første til at kommentere

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.