Hướng dẫn kết nối a4988 với shield v năm 2024

Mạch điều khiển động cơ bước Stepper Motor A4988 Module được sử dụng rộng rãi cho Reprap trong máy in 3D kèm với board RAMPS 1.4. Dùng với board CNC Shield v3 cho CNC mini. Hoặc dùng điều khiển động cơ bước.

Mạch điều khiển động cơ bước A4988 là driver điều khiển động cơ bước cực kỳ nhỏ gọn, hỗ trợ nhiều chế độ hoạt động của động cơ bước như: Full, 1/2, 1/4 , 1/8 và 1/16.

Ngoài ra, Module này thể điều chỉnh dòng tối đa thông qua một biến trở. Cho phép động cơ bước hoạt động với công suất tối đa. Chế độ bảo vệ sẽ tự động ngắt điện khi quá nóng.

Hướng dẫn kết nối a4988 với shield v năm 2024

CÁC TÍNH NĂNG CỦA A4988 MODULE

  • Thích hợp để điều khiển động cơ bước dưới 8V ~ 35V 2A.
  • Nhiều chế độ bước khác nhau: full, half, 1/4, 1/8 và 1/16.
  • Có thể điều chỉnh đầu ra dòng điện tối đa, giúp động cơ tăng công suất.
  • Chế độ bảo vệ sẽ tự động ngắt điện khi quá nóng.
  • Nhỏ gọn, giao tiếp và điều khiển đơn giản với Arduino.

THÔNG SỐ KỸ THUẬT CỦA STEPPER MOTOR A4988 MODULE

Điện áp hoạt động 8V~35V Dòng liên tục trên mỗi pha 1A~2A Điện áp logic 3V-5.5V 5 chế độ điều khiển bước Full, 1/2, 1/4, 1/8, 1/16 Kích thước 15,24 x 20,32cm

Hướng dẫn kết nối a4988 với shield v năm 2024
Điều kiển động cơ bước với A4988 Module

Nếu các bạn đang có dự định chế một máy in 3D hoặc một máy Laser CNC Mini thì module A4988 cực kỳ thích hợp để sử dụng.

Nếu bạn đã từng sử dụng qua máy in 3D thì Driver A4988 Arduino là một module không có gì xa lạ. Để nắm rõ hơn cách thức hoạt động và cấu tạo bên trong của A4988 thì các bạn không nên bỏ qua bài viết này.

Để tạo động lực cho Team Arduino KIT ra nhiều bài viết chất lượng hơn, các bạn có thể ủng hộ mình bằng cách Donate qua MoMo, Ngân hàng, Paypal…Nhấn vào link bên dưới nhé.

Xem ngay: Điều khiển động cơ bước Stepper Motor bằng IC L293D và Arduino

Driver điều khiển động cơ bước A4988

A4988 là một loại chip điều khiển động cơ bước đơn giản và mạnh mẽ. Nó được sử dụng rộng rãi trong các ứng dụng Arduino. Với những chức năng như điều khiển dòng động cơ, điều chỉnh tốc độ, và chế độ hoạt động microstep.

Hướng dẫn kết nối a4988 với shield v năm 2024

Để sử dụng A4988 Arduino, bạn cần kết nối các chân đầu vào như STEP (điều khiển bước), DIR (điều khiển hướng), và ENABLE (kích hoạt) từ Arduino. Bạn cũng cần cung cấp nguồn điện và kết nối động cơ bước vào các chân đầu ra.

Thông số kỹ thuật

Dưới đây là một số tính năng và thông số kỹ thuật quan trọng của chip A4988:

  • Điện áp hoạt động: Tính từ 8V đến 35V.
  • Dòng điều khiển động cơ: Tối đa 2A.
  • Chế độ hoạt động microstep: Hỗ trợ từ full step đến 1/16 step.
  • Chức năng tắt nguồn tự động (Automatic Power-Down): Giúp tiết kiệm năng lượng khi động cơ không hoạt động.
  • Chức năng bảo vệ quá nhiệt (Thermal Shutdown): Ngắt kết nối nguồn khi nhiệt độ vượt quá mức cho phép.
  • Chức năng giảm dòng động cơ (Current Decay Mode): Điều chỉnh cách giảm dòng điện khi động cơ không hoạt động để giảm tiếng ồn và tiết kiệm năng lượng.

Sơ đồ chân Driver điều khiển động cơ bước A4988

Hướng dẫn kết nối a4988 với shield v năm 2024

Chân nguồn (Power Pins)

Trong Driver A4988, các Power Pins (chân nguồn) bao gồm:

Hướng dẫn kết nối a4988 với shield v năm 2024

  • VDD: Chân cung cấp điện tích dương (+). Nó được kết nối với nguồn điện dương DC từ 8V đến 35V. Đây là nguồn điện chính cung cấp cho chip điều khiển động cơ.
  • GND: Chân nối đất (-). Nó được kết nối với mối tiếp đất của nguồn điện và các thành phần khác trong mạch.
  • VMOT: Chân cung cấp điện tích dương (+) cho động cơ. Nó được kết nối với nguồn điện động cơ DC từ 8V đến 35V.

Lưu ý rằng các chân nguồn này cần được đấu nối chính xác và đúng điện áp để đảm bảo Driver A4988 arduino hoạt động đúng. Nếu điện áp không đúng, có thể gây hư hỏng cho chip và động cơ hoặc làm giảm hiệu suất.

Xem ngay: Điều khiển động cơ DC, Stepper Motor và Servo bằng Motor Shield L293D & Arduino

Chân lựa chọn microstep (Microstep Selection Pins)

Chân lựa chọn microstep (Microstep Selection Pins) trong Driver A4988 là các chân đầu vào trên module điều khiển động cơ bước A4988 để thiết lập chế độ hoạt động microstep của động cơ bước.

Hướng dẫn kết nối a4988 với shield v năm 2024

Driver A4988 hỗ trợ các chế độ microstep như full step, half step, 1/4 step, 1/8 step và 1/16 step. Bằng cách kết hợp các chân microstep selection (MS1, MS2 và MS3) với mức điện áp (VREF) được cấp cho chân REF pin, bạn có thể lựa chọn chế độ microstep phù hợp với yêu cầu.

Dưới đây là bảng mô tả cách lựa chọn chế độ microstep bằng các chân microstep selection trên Driver A4988:

MS1 Pin MS2 Pin MS3 Pin Chế độ microstep LOW LOW LOW Full step HIGH LOW LOW Half step LOW HIGH LOW 1/4 step HIGH HIGH LOW 1/8 step HIGH HIGH HIGH 1/16 step

Bằng cách cấu hình các chân microstep selection theo ý muốn, bạn có thể điều chỉnh độ phân giải và độ chính xác của động cơ bước khi hoạt động.

Chân điều khiển đầu vào (Control Input Pins)

Chân điều khiển đầu vào được sử dụng để điều khiển hoạt động của động cơ bước. Các chân này bao gồm:

Hướng dẫn kết nối a4988 với shield v năm 2024

  • STEP (Step Pin): Chân này được sử dụng để cung cấp các xung điều khiển để di chuyển động cơ bước một bước. Mỗi lần có xung điện trên chân này, động cơ sẽ di chuyển một bước tương ứng.
  • DIR (Direction Pin): Chân này được sử dụng để xác định hướng di chuyển của động cơ. Khi điện áp trên chân này thay đổi, động cơ sẽ di chuyển theo hướng tương ứng (về phía trước hoặc phía sau).

Chân điều khiển các trạng thái nguồn (Pins For Controlling Power States)

Có ba chân được sử dụng để điều khiển các trạng thái nguồn (power states) của driver và động cơ bước. Các chân này bao gồm:

Hướng dẫn kết nối a4988 với shield v năm 2024

  • EN (Enable Pin): Chân này được sử dụng để bật hoặc tắt hoạt động của driver A4988 arduino. Khi chân EN ở mức logic HIGH, driver và động cơ bước hoạt động. Khi chân EN ở mức logic LOW, driver và động cơ bước bị tắt.
  • RST (Reset Pin): Chân này được sử dụng để đặt lại (reset) trạng thái của driver A4988. Khi một xung điện ở mức logic LOW được đưa vào chân này, driver sẽ trở về trạng thái ban đầu.
  • SLP (Sleep Pin): Chân này được sử dụng để đưa driver A4988 vào chế độ ngủ (sleep mode). Khi chân SLP được đặt ở mức logic HIGH, driver vào chế độ ngủ và hoạt động của động cơ bước bị tạm dừng. Khi chân SLP được đặt ở mức logic LOW, driver thoát khỏi chế độ ngủ và hoạt động bình thường.

Các chân EN, RST và SLP cần được kết nối chính xác theo datasheet của Driver A4988 để điều khiển nguồn và trạng thái hoạt động của driver và động cơ bước.

Chân đầu ra (Output Pins)

Trong Driver A4988, có bốn chân đầu ra (output pins) được sử dụng để điều khiển các cuộn dây của động cơ bước. Các chân này được đánh số như sau: 1B, 1A, 2A, 2B

Hướng dẫn kết nối a4988 với shield v năm 2024

Qua việc kiểm soát các chân đầu ra này, Driver A4988 thực hiện các xung điện để kích hoạt các cuộn dây của động cơ bước và tạo ra các bước xoay cần thiết để động cơ di chuyển.

Chú ý rằng việc kết nối đúng các chân đầu ra với đúng cuộn dây của động cơ bước rất quan trọng để đảm bảo hoạt động chính xác của động cơ. Bạn cần tham khảo datasheet A4988 và sơ đồ chân của động cơ bước để kết nối chính xác các chân đầu ra với cuộn dây tương ứng.

Tản nhiệt (Heatsink)

Heatsink (tản nhiệt) là một thành phần được sử dụng để giải nhiệt cho vi mạch điện tử bên trong driver. Vì trong quá trình hoạt động, driver có thể tạo ra lượng nhiệt cao do tổn thất công suất.

Hướng dẫn kết nối a4988 với shield v năm 2024

Tản nhiệt là một tấm kim loại có thiết kế vừa với diện tích tiếp xúc của IC A4988. Heatsink được gắn trực tiếp lên driver điều khiển động cơ bước A4988 arduino để hút nhiệt từ vi mạch và truyền nhiệt ra không khí xung quanh, giúp làm mát driver và duy trì nhiệt độ hoạt động an toàn.

Giới hạn dòng điện (Current limiting)

Hướng dẫn kết nối a4988 với shield v năm 2024

Cách 1

Trong cách đầu tiên này, mình sẽ dùng phương pháp giới hạn dòng điện trong động cơ bước NEMA 17 thông qua đo điện áp (Vref) tại chân “ref”.

Vì động cơ bước NEMA 17 có thông số 200 bước/vòng, và điện áp sử dụng 12V 350mA nên để giới hạn dòng điện của động cơ này bạn có thể làm theo các bước sau:

  • Kết nối một resistor chịu dòng điện (current-sensing resistor) giữa chân “ref” và chân GND của driver động cơ bước.
  • Sử dụng một voltmeter hoặc thiết bị đo điện áp để đo điện áp tại chân “ref” và chân GND. Điện áp này được gọi là Vref.

Vref = Current Limit / 2.5

  • Vì động cơ bước NEMA 17 có dòng điện định mức là 350mA, nên điện áp tham chiếu sẽ là 0,14V

Hướng dẫn kết nối a4988 với shield v năm 2024

Cách 2

Trong cách thứ 2 này, mình sẽ dùng phương pháp giới hạn dòng điện được xác định bằng cách đo dòng điện chạy qua cuộn dây.

Bằng cách đấu nối theo sơ đồ bên dưới, sử dụng một tua vít nhỏ, điều chỉnh biến trở cho đến khi đạt được dòng điện định mức.

Hướng dẫn kết nối a4988 với shield v năm 2024

Linh kiện cần thiết cho dự án

TÊN LINH KIỆN SỐ LƯỢNG NƠI BÁN Arduino Uno R3 1 Shopee | Cytron Driver A4988 1 Shopee | Cytron Động cơ bước NEMA 17 1 Shopee | Cytron Đồng hồ đo ZOYI ZT S4 1 Shopee | Cytron Dây cắm 10-20 Shopee | Cytron

Sơ đồ đấu nối Driver điều khiển động cơ bước A4988 với Arduino

Hướng dẫn kết nối a4988 với shield v năm 2024

Code – Không sử dụng thư viện

Đoạn code bên dưới sẽ làm động cơ bước NEMA 17 quay theo hướng kim đồng hồ rồi đổi hướng ngược chiều kim đồng hồ và quay nhanh. Khi động cơ quay, mỗi lần bước xoay sẽ có thời gian chờ giữa các bước để tạo ra tốc độ và hướng quay mong muốn.

// Define pin connections & motor's steps per revolution const int dirPin = 2; const int stepPin = 3; const int stepsPerRevolution = 200; void setup() { // Declare pins as Outputs pinMode(stepPin, OUTPUT); pinMode(dirPin, OUTPUT); } void loop() { // Set motor direction clockwise digitalWrite(dirPin, HIGH); // Spin motor slowly for(int x = 0; x < stepsPerRevolution; x++) {

digitalWrite(stepPin, HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin, LOW);
delayMicroseconds(2000);
} delay(1000); // Wait a second // Set motor direction counterclockwise digitalWrite(dirPin, LOW); // Spin motor quickly for(int x = 0; x < stepsPerRevolution; x++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(1000);
digitalWrite(stepPin, LOW);
delayMicroseconds(1000);
} delay(1000); // Wait a second }

Giải thích Code

// Define pin connections & motor's steps per revolution const int dirPin = 2; const int stepPin = 3; const int stepsPerRevolution = 200;

Đầu tiên, cần khai báo các chân kết nối và số bước quay của động cơ:

  • // Define pin connections & motor's steps per revolution const int dirPin = 2; const int stepPin = 3; const int stepsPerRevolution = 200; 0 là chân kết nối điều khiển hướng quay của động cơ.
  • // Define pin connections & motor's steps per revolution const int dirPin = 2; const int stepPin = 3; const int stepsPerRevolution = 200; 1 là chân kết nối điều khiển bước xoay của động cơ.
  • // Define pin connections & motor's steps per revolution const int dirPin = 2; const int stepPin = 3; const int stepsPerRevolution = 200; 2 là số bước mà động cơ cần thực hiện để hoàn thành một vòng quay.

void setup() { // Declare pins as Outputs pinMode(stepPin, OUTPUT); pinMode(dirPin, OUTPUT); }

Trong hàm setup(), các chân kết nối được khai báo là đầu ra (OUTPUT) để điều khiển động cơ bước NEMA 17.

void loop() { // Set motor direction clockwise digitalWrite(dirPin, HIGH); // Spin motor slowly for(int x = 0; x < stepsPerRevolution; x++) {

digitalWrite(stepPin, HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin, LOW);
delayMicroseconds(2000);
} delay(1000); // Wait a second // Set motor direction counterclockwise digitalWrite(dirPin, LOW); // Spin motor quickly for(int x = 0; x < stepsPerRevolution; x++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(1000);
digitalWrite(stepPin, LOW);
delayMicroseconds(1000);
} delay(1000); // Wait a second }

Trong hàm loop(), quá trình điều khiển động cơ được thực hiện:

Đầu tiên, hướng quay của động cơ được đặt là theo chiều kim đồng hồ bằng cách đưa giá trị HIGH vào

// Define pin connections & motor's steps per revolution const int dirPin = 2; const int stepPin = 3; const int stepsPerRevolution = 200;

0.

  • Sau đó, động cơ được quay chậm bằng cách thực hiện một vòng lặp từ 0 đến // Define pin connections & motor's steps per revolution const int dirPin = 2; const int stepPin = 3; const int stepsPerRevolution = 200; 2:
  • Đưa giá trị HIGH vào stepPin để thực hiện bước xoay của động cơ.
  • Chờ một khoảng thời gian ngắn (2000 microseconds) bằng cách sử dụng delayMicroseconds().
  • Đưa giá trị LOW vào stepPin để kết thúc bước xoay.
  • Chờ một khoảng thời gian ngắn (2000 microseconds). Sau đó, chờ một giây bằng cách sử dụng delay(1000) để tạm dừng.

Hướng quay của động cơ được đặt ngược chiều kim đồng hồ bằng cách đưa giá trị LOW vào dirPin.

  • Động cơ được quay nhanh bằng cách thực hiện lại quá trình quay tương tự như trên, nhưng thời gian chờ giữa các bước xoay là ngắn hơn (1000 microseconds).

Cuối cùng, sử dụng hàm delay(1000) và chờ một giây trước khi lặp lại quá trình.

Code – Sử dụng thư viện AccelStepper

Cài đặt thư viện

Để cài đặt thư viện AccelStepper trên Arduino IDE, các bạn cần làm theo các bước sau: Sketch > Include Libraries > Manage Libraries…

Hướng dẫn kết nối a4988 với shield v năm 2024

Nhập vào ô tìm kiếm tư khóa “accelstepper” chọn phiên bản mới nhất và tiến hành Download.

Hướng dẫn kết nối a4988 với shield v năm 2024

Code

Trong ví dụ này mình sẽ sử dụng thư viện AccelStepper để điều khiển một động cơ bước thông qua Arduino.

Đoạn code sẽ điều khiển động cơ bước quay theo một hướng với tốc độ, gia tốc, và vị trí mục tiêu đã được thiết lập, sau đó thay đổi hướng quay khi đạt đến vị trí mục tiêu. Quá trình này được lặp lại trong vòng lặp loop().

// Include the AccelStepper Library

include

// Define pin connections const int dirPin = 2; const int stepPin = 3; // Define motor interface type

define motorInterfaceType 1

// Creates an instance AccelStepper myStepper(motorInterfaceType, stepPin, dirPin); void setup() { // set the maximum speed, acceleration factor, // initial speed and the target position myStepper.setMaxSpeed(1000); myStepper.setAcceleration(50); myStepper.setSpeed(200); myStepper.moveTo(200); } void loop() { // Change direction once the motor reaches target position if (myStepper.distanceToGo() == 0)

myStepper.moveTo(-myStepper.currentPosition());
// Move the motor one step myStepper.run(); }

Giải thích Code

// Include the AccelStepper Library

include

Đầu tiên cần khai báo thư viện AccelStepper.h để điều khiển động cơ bước NEMA 17.

// Define motor interface type

define motorInterfaceType 1

Tiếp theo, kiểu Driver động cơ bước A4988 arduino được định nghĩa thông qua

// Define pin connections & motor's steps per revolution const int dirPin = 2; const int stepPin = 3; const int stepsPerRevolution = 200;

5. Trong ví dụ này, Driver sử dụng các chân STEP và DIRECTION.

// Creates an instance AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);

Sau đó, một đối tượng myStepper của lớp AccelStepper được khởi tạo với các tham số là kiểu chân STEP và chân DIRECTION..