Động cơ bước 28BYJ-48: mọi thứ bạn cần biết

động cơ bước 28byj-48

El 28BYJ-48 là động cơ bước đơn cực chi phí thấp và độ chính xác cao, lý tưởng cho các dự án điện tử, máy in 3D, máy CNC và robot. Kích thước nhỏ gọn, mức tiêu thụ điện năng thấp và dễ sử dụng khiến nó trở thành lựa chọn phổ biến cho những người có sở thích điện tử và các chuyên gia.

Hơn nữa, cùng với động cơ này, một mô-đun với ULN2003, để bạn kiểm soát. Bằng cách này, chúng tôi có mọi thứ cần thiết để có thể sử dụng hoàn toàn hệ thống này bằng cách sử dụng bộ vi điều khiển hoặc bảng mạch Arduino hoặc tương tự.

Động cơ bước 28BYJ-48 là gì?

động cơ điện trong nhà: stato-rôto

Un Động cơ bước là một loại động cơ điện chuyển động theo những bước góc nhỏ riêng biệt, thay vì quay liên tục. Nó hoạt động bằng cách sử dụng một bộ nam châm điện được kích hoạt theo một trình tự cụ thể. Bằng cách kích hoạt các nam châm điện khác nhau, một từ trường được tạo ra sẽ thu hút rôto động cơ, khiến nó quay từng bước một. Số bước trên mỗi vòng quay và độ chính xác của chuyển động phụ thuộc vào thiết kế động cơ cụ thể và trình tự điều khiển được sử dụng.

Trong động cơ bước chúng ta có hai loại:

  • Đơn cực- Chúng có một bộ cuộn dây duy nhất và cần một bộ điều khiển đặc biệt để đảo ngược dòng điện và làm cho động cơ quay theo cả hai hướng.
  • Lưỡng cực- Chúng có hai bộ cuộn dây độc lập, cho phép chúng quay theo cả hai hướng mà không cần bộ điều khiển đặc biệt.

Trong trường hợp 28BYJ-28, nó là loại đơn cực, như tôi đã đề cập trước đây. Và, trong nhóm này, nó được đặc trưng bởi có những điều sau đây thông số kỹ thuật:

  • Bước đơn cực: điều khiển đơn giản chỉ với 4 dây cáp.
  • Bộ giảm tốc tích hợp: mang lại độ chính xác cao (0.088° mỗi bước) và mô-men xoắn (3 N·cm).
  • Tiêu thụ thấp: 83 mA (kiểu 5V) hoặc 32 mA (kiểu 12V).
  • Alimentacion: 5V hoặc 12V (tùy model).
  • Giá tiết kiệm: từ €1.2 mỗi đơn vị hoặc nhiều hơn một chút nếu chúng bao gồm mô-đun ULN2003.

Khi ứng dụng khả thi, Tôi đã đề cập đến một số trong số chúng trước đây, nhưng ở đây tôi lại cung cấp cho bạn một số ý tưởng cho dự án của bạn:

  • Điều khiển van thủy lực và khí nén.
  • Robot có khớp nối và cánh tay robot.
  • Định vị cảm biến.
  • Bàn xoay cho máy quét.
  • máy in 3d.
  • Máy CNC.

Động cơ bước không hoạt động một mình, nó cần một bộ phận khác. Trong trường hợp này, 28BYJ-48 được điều khiển bởi một bo mạch có ULN2003 tích hợp, cho phép khuếch đại dòng điện đầu ra của Arduino để cấp nguồn cho cuộn dây động cơ. Bằng cách kích hoạt các cuộn dây theo đúng trình tự, động cơ sẽ quay từng bước với độ chính xác cao.

Các loại trình tự và giai đoạn điều khiển

đó các trình tự điều khiển khác nhau cho 28BYJ-48, các điểm phổ biến nhất là:

  • Chuỗi sóng đầy đủ: kích hoạt tất cả các cuộn dây cùng một lúc.
  • Trình tự nửa bước: Kích hoạt hai cuộn dây liền kề cùng một lúc.
  • Trình tự bước vi mô: Kích hoạt một cuộn dây tại một thời điểm.

Để xem nào các giai đoạn chi tiết:

  • Trình tự 1 pha: Trong chuỗi 1 pha, chúng ta bật từng cuộn dây một. Đưa trình tự đánh lửa này vào bảng, thông tin sau sẽ phải được tạo ra trong sơ đồ động cơ:
Paso A B A ' B'
1 ON TẮT TẮT TẮT
2 TẮT ON TẮT TẮT
3 TẮT TẮT ON TẮT
4 TẮT TẮT TẮT ON
  • Trình tự 2 pha: chúng ta bật hai cuộn dây tương ứng trong mỗi pha nên từ trường sinh ra lớn hơn (nhiều hơn 41%) nên động cơ có nhiều mô-men xoắn hơn, tức là chúng ta thu được nhiều sức mạnh hơn. Như một điểm tiêu cực, chúng tôi đã tăng gấp đôi mức tiêu thụ năng lượng. Đối với bảng, nó sẽ là:
Paso A B A ' B'
1 ON ON TẮT TẮT
2 TẮT ON ON TẮT
3 TẮT TẮT ON ON
4 ON TẮT TẮT ON
  • Trình tự nửa bước: Đây là một giai đoạn khác mà chúng ta sẽ xem, bạn có thể trải nghiệm những gì bạn quan tâm nhất. Ở đây chúng tôi lần lượt bật một và hai cuộn dây, đạt độ chính xác nửa bước. Nó được sử dụng trong các ứng dụng cần độ chính xác cao nhất, mặc dù có thể có vấn đề khi ứng dụng ở giới hạn mô-men xoắn. Biểu diễn trình tự dưới dạng bảng sẽ cho kết quả:
Nửa bước A B A ' B'
1 ON TẮT TẮT TẮT
2 ON ON TẮT TẮT
3 TẮT ON TẮT TẮT
4 TẮT ON ON TẮT
5 TẮT TẮT ON TẮT
6 TẮT TẮT ON ON
7 TẮT TẮT TẮT ON
8 ON TẮT TẮT ON

28BYJ-28 với Arduino

28byj-48 với Arduino

Điều đầu tiên là kết nối đúng cách mô-đun và động cơ 28byj-48 với bo mạch Arduino của chúng tôi, để thực hiện việc này, bạn chỉ cần thực hiện các kết nối sau:

  • Pin – từ ULN2003 tới GND của Arduino.
  • Chân + của ULN2003 tới Vcc (5v hoặc trong các trường hợp khác, nếu là động cơ 12v thì phải sử dụng nguồn điện có điện áp đó) từ Arduino.
  • IN1, IN2, IN3 và IN4 của ULN2003 tới các đầu vào kỹ thuật số D8, D9, D10 và D11 của Arduino.
  • Động cơ 28byj-48, chỉ cần kết nối nó với cổng trên mô-đun ULN2003.

Bây giờ bạn đã kết nối, việc tiếp theo là sử dụng một ví dụ trong Arduino IDE, bạn có thể sử dụng để thử nghiệm hoặc sửa đổi nó theo ý thích của mình. Trong ví dụ này, tất cả các bảng pha đều được nhận xét, như // ở phía trước dòng, bạn biết đấy... Nếu bạn muốn sử dụng một trong số chúng, chỉ cần xóa // ở phía trước hướng dẫn.

//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ắt đầu cuộc trò chuyện

Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.