Silnik krokowy 28BYJ-48 ze sterownikiem ULN2003APG

Silnik krokowy 28BYJ-48 ze sterownikiem ULN2003APG

Opis

Niezwykle popularny silnik krokowy 28BYJ-48 z zintegrowaną przekładnią. Przeciętna cena sprawia, że ten silnik krokowy jest dostępny dla każdego a dzięki sterownikowi i podpięciu pod mikrokontroler daje mnóstwo możliwości sterowania tym silnikiem. Dostępna jest również biblioteka, która upraszcza sterowanie silnikiem tylko do podania prędkości, kierunku obrotu, i możliwości wykonania określonej ilości kroków. Tak więc silnikiem sterujemy bez najmniejszego problemu. Silnik krokowy jest dokładny a więc można wykorzystać go w projektach gdzie potrzebna jest duża dokładność np. drukarka 3D lub innych.

Specyfikacja silnika

  • Napięcie znamionowe: 5 V
  • Pobór prądu na cewkę: 100 mA
  • Przełożenie: 64:1
  • Rezystancja cewki: 50 Ω
  • Moment trzymający na wyjściu przekładni: 0,3 kg*cm (0,03 Nm).
  • Wyprowadzenia: pięć przewodów)
  • Średnica wału: 5 mm ze ścięciami
  • Masa: 35 g
  • Odległość pomiędzy otworami montażowymi: 35 mm
  • Wymiary: ϕ28 x 19 mm (bez wału)

 

Specyfikacja sterownika

  • Napięcie pracy: 5 V
  • Zastosowany układ: ULN2003
  • Złącze zgodne z dołączonym do zestawu silnikiem
  • Diody LED wskazujące aktualną fazę
  • Siedem pinów wejściowych - IN1...IN7
  • Wymiary płytki: 35 x 32 mm

Schemat połączenia silnika ze sterownikiem

Połączenie z Arduino

 

  IN1 >> D8

  IN2 >> D9

  IN3 >> D10

  IN4 >> D11

  VCC >> 5V

  Gnd >> Gnd

 

Przykład kodu programu

#define IN1  8
#define IN2  9
#define IN3  10
#define IN4  11
int Steps = 0;
boolean Direction = true;// gre
unsigned long last_time;
unsigned long currentMillis ;
int steps_left=4095;
long time;
void setup()
{
Serial.begin(115200);
pinMode(IN1, OUTPUT); 
pinMode(IN2, OUTPUT); 
pinMode(IN3, OUTPUT); 
pinMode(IN4, OUTPUT); 
// delay(1000);

}
void loop()
{
  while(steps_left>0){
  currentMillis = micros();
  if(currentMillis-last_time>=1000){
  stepper(1); 
  time=time+micros()-last_time;
  last_time=micros();
  steps_left--;
  }
  }
   Serial.println(time);
  Serial.println("Wait...!");
  delay(2000);
  Direction=!Direction;
  steps_left=4095;
}

void stepper(int xw){
  for (int x=0;x<xw;x++){
switch(Steps){
   case 0:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, HIGH);
   break; 
   case 1:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, HIGH);
     digitalWrite(IN4, HIGH);
   break; 
   case 2:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, HIGH);
     digitalWrite(IN4, LOW);
   break; 
   case 3:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, HIGH);
     digitalWrite(IN3, HIGH);
     digitalWrite(IN4, LOW);
   break; 
   case 4:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, HIGH);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, LOW);
   break; 
   case 5:
     digitalWrite(IN1, HIGH); 
     digitalWrite(IN2, HIGH);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, LOW);
   break; 
     case 6:
     digitalWrite(IN1, HIGH); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, LOW);
   break; 
   case 7:
     digitalWrite(IN1, HIGH); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, HIGH);
   break; 
   default:
     digitalWrite(IN1, LOW); 
     digitalWrite(IN2, LOW);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, LOW);
   break; 
}
SetDirection();
}
} 
void SetDirection(){
if(Direction==1){ Steps++;}
if(Direction==0){ Steps--; }
if(Steps>7){Steps=0;}
if(Steps<0){Steps=7; }
}

 

Datasheet silnika krokowego:

http://robocraft.ru/files/datasheet/28BYJ-48.pdf

 

Datasheet sterownika:

https://datasheet.lcsc.com/szlcsc/ULN2004APG_C14336.pdf

Tagi
Zbudowano na Drupalu