Silnik krokowy 28BYJ-48: wszystko, co musisz wiedzieć

Silnik krokowy 28byj-48

El 28BYJ-48 to jednobiegunowy silnik krokowy niski koszt i wysoka precyzja, idealny do projektów elektronicznych, do drukarek 3D, maszyn CNC i robotyki. Jego niewielkie rozmiary, niskie zużycie energii i łatwość obsługi sprawiają, że jest to popularny wybór wśród hobbystów i profesjonalistów zajmujących się elektroniką.

Ponadto, wraz z tym silnikiem, a moduł z ULN2003, do Twojej kontroli. W ten sposób mamy wszystko, co niezbędne, aby móc w pełni korzystać z tego układu, wykorzystując mikrokontroler lub płytkę Arduino lub podobne.

Co to jest silnik krokowy 28BYJ-48?

wewnętrzny silnik elektryczny: stojan-wirnik

Un silnik krokowy jest rodzajem silnika elektrycznego który porusza się w małych dyskretnych krokach kątowych, a nie w ciągłym obrocie. Działa za pomocą zestawu elektromagnesów, które uruchamiają się w określonej kolejności. Aktywując różne elektromagnesy, wytwarzane jest pole magnetyczne, które przyciąga wirnik silnika, powodując jego obrót krok po kroku. Liczba kroków na obrót i precyzja ruchu zależą od konkretnej konstrukcji silnika i zastosowanej sekwencji sterowania.

W obrębie silników krokowych wyróżniamy dwa typy:

  • Jednobiegunowy- Mają pojedynczy zestaw cewek i wymagają specjalnego sterownika, który odwraca prąd i powoduje, że silnik obraca się w obu kierunkach.
  • Dwubiegunowy- Posiadają dwa zestawy niezależnych cewek, dzięki czemu mogą obracać się w obu kierunkach bez konieczności stosowania specjalnego sterownika.

W przypadku 28BYJ-28 jest to typ jednobiegunowy, o czym wspomniałem wcześniej. W tej grupie charakteryzuje się następującymi cechami specyfikacje:

  • Steper jednobiegunowy: proste sterowanie za pomocą tylko 4 kabli.
  • Zintegrowany reduktor: oferuje wysoką precyzję (0.088° na krok) i moment obrotowy (3 N·cm).
  • Niskie zużycie: 83 mA (model 5 V) lub 32 mA (model 12 V).
  • karmienie: 5 V lub 12 V (w zależności od modelu).
  • Ekonomiczna cena: od 1.2 € za sztukę lub nieco więcej, jeśli zawierają moduł ULN2003.

W możliwe zastosowania, o niektórych z nich wspominałem już wcześniej, ale tutaj ponownie podam kilka pomysłów na Twoje projekty:

  • Sterowanie zaworami hydraulicznymi i pneumatycznymi.
  • Roboty przegubowe i ramiona robotyczne.
  • Pozycjonowanie czujnika.
  • Stoły obrotowe do skanerów.
  • drukarki 3D.
  • Maszyny CNC.

Silnik krokowy nie działa sam, wymaga innego elementu. W tym przypadku, 28BYJ-48 jest kontrolowany przez płytkę ze zintegrowanym ULN2003, co umożliwia wzmocnienie prądu wyjściowego Arduino w celu zasilania cewek silnika. Aktywując cewki we właściwej kolejności, silnik obraca się krok po kroku z dużą precyzją.

Rodzaje sekwencji i faz sterowania

Tam różne sekwencje sterujące dla 28BYJ-48, najczęstsze to:

  • Sekwencja pełnej fali: Aktywuje wszystkie cewki jednocześnie.
  • Sekwencja pół kroku: Aktywuje jednocześnie dwie sąsiednie cewki.
  • Mikroskopijna sekwencja kroków: Aktywuje jedną cewkę na raz.

Zobaczmy fazy szczegółowo:

  • Sekwencja 1-fazowa: W sekwencji 1-fazowej włączamy pojedynczo jedną cewkę. Biorąc tę ​​sekwencję zapłonu do tabeli, w układzie pinów silnika należałoby wygenerować następujące informacje:
Paso A B ZA' B '
1 ON OFF OFF OFF
2 OFF ON OFF OFF
3 OFF OFF ON OFF
4 OFF OFF OFF ON
  • Sekwencja 2-fazowa: w każdej fazie włączamy dwie korelacyjne cewki, dzięki czemu generowane pole magnetyczne jest większe (o 41% więcej), dzięki czemu silnik ma większy moment obrotowy, czyli uzyskujemy większą wytrzymałość. Jako punkt ujemny podwajamy zużycie energii. Jeśli chodzi o tabelę to będzie tak:
Paso A B ZA' B '
1 ON ON OFF OFF
2 OFF ON ON OFF
3 OFF OFF ON ON
4 ON OFF OFF ON
  • Sekwencja półetapowa: To kolejny z etapów, który zobaczymy, możesz doświadczyć tego, co Cię najbardziej interesuje. Tutaj na przemian włączamy jedną i dwie cewki, osiągając dokładność pół kroku. Jest stosowany w zastosowaniach, w których wymagana jest najwyższa precyzja, chociaż mogą wystąpić problemy, gdy aplikacja osiąga limit momentu obrotowego. Wyrażenie sekwencji w formie tabelarycznej daje w wyniku:
Pół kroku A B ZA' 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 z Arduino

28byj-48 z Arduino

Pierwszą rzeczą jest prawidłowe podłączenie moduł i silnik 28byj-48 do naszej płytki Arduino, w tym celu wystarczy wykonać następujące połączenia:

  • Pin – od ULN2003 do GND Arduino.
  • Pin + ULN2003 do Vcc (5 V lub w innych przypadkach, jeśli jest to silnik 12 V, konieczne byłoby użycie zasilacza o tym napięciu) z Arduino.
  • IN1, IN2, IN3 i IN4 ULN2003 do wejść cyfrowych D8, D9, D10 i D11 Arduino.
  • Silnik 28byj-48 wystarczy podłączyć do portu na module ULN2003.

Teraz, gdy jesteś podłączony, następną rzeczą jest użycie przykład w Arduino IDE, którego możesz używać do eksperymentowania lub modyfikowania według własnych upodobań. W tym przykładzie wszystkie tabele faz są zakomentowane, jak // przed linią, wiesz... Jeśli chcesz użyć jednej z nich, po prostu usuń // przed instrukcjami.

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


Bądź pierwszym który skomentuje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.