28BYJ-48 stappenmotor: alles wat u moet weten

28byj-48 stappenmotor

El 28BYJ-48 is een unipolaire stappenmotor lage kosten en hoge precisie, ideaal voor elektronicaprojecten, voor 3D-printers, CNC-machines en robotica. Het compacte formaat, het lage energieverbruik en het gebruiksgemak maken het een populaire keuze voor elektronicahobbyisten en professionals.

Bovendien, samen met deze motor, een module met ULN2003, voor uw controle. Op deze manier hebben we alles in huis om dit systeem volledig te kunnen gebruiken, met behulp van een microcontroller of een bord Arduino of iets dergelijks.

Wat is een 28BYJ-48 stappenmotor?

indoor elektromotor: stator-rotor

Un stappenmotor is een type elektromotor die beweegt in kleine discrete hoekstappen, in plaats van een continue rotatie. Het werkt met behulp van een reeks elektromagneten die in een specifieke volgorde worden geactiveerd. Door verschillende elektromagneten te activeren ontstaat er een magnetisch veld dat de rotor van de motor aantrekt, waardoor deze stap voor stap gaat draaien. Het aantal stappen per omwenteling en de nauwkeurigheid van de beweging zijn afhankelijk van het specifieke motorontwerp en de gebruikte besturingsvolgorde.

Binnen stappenmotoren kennen we twee typen:

  • unipolair- Ze hebben een enkele set spoelen en vereisen een speciale controller om de stroom om te keren en de motor in beide richtingen te laten draaien.
  • Bipolair- Ze hebben twee sets onafhankelijke spoelen, waardoor ze in beide richtingen kunnen draaien zonder dat er een speciale controller nodig is.

In het geval van de 28BYJ-28 is het een unipolair type, zoals ik eerder al zei. En binnen deze groep wordt het gekenmerkt door het volgende bril:

  • Unipolaire stappenmotor: eenvoudige bediening met slechts 4 kabels.
  • Geïntegreerd verloopstuk: biedt hoge precisie (0.088° per stap) en koppel (3 N·cm).
  • Laag verbruik: 83 mA (5V-model) of 32 mA (12V-model).
  • voeden: 5V of 12V (afhankelijk van model).
  • Voordelige prijs: vanaf € 1.2 per eenheid, of iets meer als ze een ULN2003-module bevatten.

De mogelijke toepassingen, Ik heb er al een aantal genoemd, maar hier geef ik je opnieuw enkele ideeën voor je projecten:

  • Aansturing van hydraulische en pneumatische kleppen.
  • Gelede robots en robotarmen.
  • Sensorpositionering.
  • Draaitafels voor scanners.
  • 3D-printers.
  • CNC-machines.

De stappenmotor werkt niet alleen, er is een ander element voor nodig. In dit geval, De 28BYJ-48 wordt bestuurd door een bord met een geïntegreerde ULN2003, waarmee de stroom van de Arduino-uitgangen kan worden versterkt om de motorspoelen van stroom te voorzien. Door de spoelen in de juiste volgorde te activeren, draait de motor met grote precisie stap voor stap.

Soorten controlesequenties en fasen

Er verschillende besturingssequenties voor de 28BYJ-48, de meest voorkomende zijn:

  • Volledige golfreeks: activeert alle spoelen tegelijkertijd.
  • Halve stapreeks: Activeert twee aangrenzende spoelen tegelijkertijd.
  • Microscopische stappenreeks: Activeert één spoel tegelijk.

Eens kijken de fasen in detail:

  • Volgorde 1-fase: In een 1-fasereeks schakelen we één enkele spoel tegelijk in. Als we deze ontstekingsvolgorde in een tabel zetten, zou het volgende in de pinout van de motor moeten worden gegenereerd:
Paso A B EEN' B'
1 ON UIT UIT UIT
2 UIT ON UIT UIT
3 UIT UIT ON UIT
4 UIT UIT UIT ON
  • 2-fasenvolgorde: we schakelen in elke fase twee correlatieve spoelen in, zodat het gegenereerde magnetische veld groter is (41% meer), zodat de motor meer koppel heeft, dat wil zeggen dat we meer kracht krijgen. Als negatief punt hebben we het energieverbruik verdubbeld. Wat de tabel betreft, zou het zijn:
Paso A B EEN' B'
1 ON ON UIT UIT
2 UIT ON ON UIT
3 UIT UIT ON ON
4 ON UIT UIT ON
  • Halve stapreeks: Dit is weer een van de fasen die we gaan zien, je kunt ervaren wat je het meest interesseert. Hier schakelen we afwisselend één en twee spoelen in, waardoor een nauwkeurigheid van een halve stap wordt bereikt. Het wordt gebruikt in toepassingen waar de hoogste nauwkeurigheid nodig is, hoewel er problemen kunnen optreden wanneer de toepassing zich op de koppellimiet bevindt. Het uitdrukken van de reeks in tabelvorm resulteert in:
Halve stap A B EEN' B'
1 ON UIT UIT UIT
2 ON ON UIT UIT
3 UIT ON UIT UIT
4 UIT ON ON UIT
5 UIT UIT ON UIT
6 UIT UIT ON ON
7 UIT UIT UIT ON
8 ON UIT UIT ON

28BYJ-28 met Arduino

28byj-48 met Arduino

Het eerste dat u moet doen, is het correct aansluiten van de module en motor 28byj-48 op ons Arduino-bord, hiervoor hoeft u alleen maar de volgende verbindingen te maken:

  • Pin – van ULN2003 naar GND van Arduino.
  • Pin + van de ULN2003 naar Vcc (5v of in andere gevallen, als het een 12v-motor is, zou een voeding met die spanning moeten worden gebruikt) van Arduino.
  • IN1, IN2, IN3 en IN4 van de ULN2003 op de digitale ingangen D8, D9, D10 en D11 van de Arduino.
  • De 28byj-48-motor sluit u eenvoudig aan op de poort van de ULN2003-module.

Nu u verbonden bent, is het volgende wat u moet doen: gebruiken een voorbeeld in Arduino IDE, die u kunt gebruiken om te experimenteren of naar wens aan te passen. In dit voorbeeld zijn alle fasetabellen van commentaar voorzien, zoals // voor de regel, weet je... Als je er één wilt gebruiken, verwijder dan // gewoon vóór de instructies.

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


Wees de eerste om te reageren

Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.