Dịch Vụ Sửa Chữa 24h Tại Hà Nội

Điều khiển động cơ bước với Arduino và driver A4988

Điều khiển động cơ bước với Arduino và driver A4988

♦ Xem thêm: Điều khiển Step motor bằng L298N | PWM | Mạch Cầu H

Trong Hướng dẫn Arduino này, tất cả chúng ta sẽ khám phá cách điều khiển động cơ bước bằng Driver A4988. Bạn hoàn toàn có thể xem video sau hoặc đọc hướng dẫn dưới đây .

động cơ bước 42

Tổng quan về Driver A4988

A4988 là một trình điều khiển vi bước để điều khiển động cơ bước lưỡng cực có bộ dịch tích hợp để quản lý và vận hành thuận tiện. Điều này có nghĩa là tất cả chúng ta hoàn toàn có thể điều khiển động cơ bước chỉ với 2 chân từ bộ điều khiển của tất cả chúng ta hoặc một chân để điều khiển hướng quay và chân kia để điều khiển những bước .

A4988-Trình điều khiển bước
Driver phân phối năm độ phân giải bước khác nhau : bước đủ, ½ bước, ¼ bước, 1/8 bước và 1/16 bước. Ngoài ra, nó có một biến trở để kiểm soát và điều chỉnh đầu ra hiện tại, tắt khi nhiệt độ quá cao và bảo vệ dòng điện chéo .
Nguồn vào của nó là từ 3 đến 5,5 V và dòng điện tối đa trên mỗi pha là 2A nếu được làm mát bổ trợ tốt hoặc dòng điện liên tục 1A mỗi pha mà không cần tản nhiệt hoặc làm mát .

A4988-Thông số kỹ thuật

Chân ra Driver A4988

Bây giờ, hãy nhìn kỹ vào sơ đồ chân của trình điều khiển và nối nó với động cơ bước và bộ điều khiển. Vì vậy, chúng tôi sẽ mở màn với 2 chân ở nút bên phải để cấp nguồn cho trình điều khiển, chân VDD và Ground mà chúng tôi cần liên kết chúng với nguồn điện từ 3 đến 5,5 V và trong trường hợp của chúng tôi sẽ là bộ điều khiển của chúng tôi, Arduino Board sẽ cung ứng 5 V. 4 chân sau đây để liên kết động cơ. Các chân 1A và 1B sẽ được liên kết với một cuộn dây của động cơ và chân 2A và 2B với cuộn dây khác của động cơ. Để phân phối nguồn năng lượng cho động cơ, chúng tôi sử dụng 2 chân tiếp theo, Ground và VMOT mà chúng tôi cần liên kết chúng với Nguồn cung ứng từ 8 đến 35 V và chúng tôi cũng cần sử dụng tụ tách rời với tối thiểu 47 PhaF để bảo vệ board điều khiển khỏi những xung điện áp .

A4988-Sơ đồ nối dây
Hai chân tiếp theo, Step và Direction là những chân mà tất cả chúng ta thực sự sử dụng để điều khiển hoạt động của động cơ. Chân Direction điều khiển hướng quay của động cơ và tất cả chúng ta cần liên kết nó với một trong những chân kỹ thuật số trên vi điều khiển, hoặc trong trường hợp của tôi, tôi sẽ liên kết nó với chân số 4 của Board Arduino .
Với chân Step, tất cả chúng ta điều khiển mirosteps của động cơ và với mỗi xung được gửi tới chân này, động cơ sẽ chuyển dời một bước. Vì vậy, điều đó có nghĩa là không cần bất kể chương trình phức tạp, board chuyển pha, dòng điều khiển tần số, v.v., vì trình dịch tích hợp của Driver A4988 đảm nhiệm mọi thứ. Ở đây tất cả chúng ta không nên nối chúng trong chương trình của mình .
Tiếp theo là chân SLEEP và mức logic thấp đặt board ở chính sách nghỉ để giảm thiểu mức tiêu thụ điện khi động cơ không được sử dụng .

Tiếp theo, chân RESET đặt trình dịch sang trạng thái Home được xác định trước. Trạng thái Home hoặc Vị trí Microstep Home này có thể được nhìn thấy từ Board dữ liệu A4988. Vì vậy, đây là vị trí ban đầu từ nơi động cơ khởi động và chúng khác nhau tùy thuộc vào độ phân giải microstep. Nếu trạng thái đầu vào của chân này ở mức logic thấp, tất cả các đầu vào STEP sẽ bị bỏ qua. Chân Reset là một chân nổi, vì vậy nếu chúng ta không có ý định điều khiển nó trong chương trình của mình, chúng ta cần kết nối nó với chân SLEEP để đưa nó lên mức cao và bật board.

3 chân tiếp theo ( MS1, MS2 và MS3 ) là để chọn một trong năm độ phân giải theo board ở trên. Các chân này có điện trở bên trong, vì thế nếu tất cả chúng ta ngắt liên kết, board sẽ hoạt động giải trí ở chính sách bước đủ .
Cuối cùng, chân ENABLE được sử dụng để bật hoặc tắt những đầu ra FET. Vì vậy, mức cao sẽ giữ cho đầu ra bị vô hiệu .

Các linh kiện cần thiết

  • Động cơ bước => Xem nơi mua động cơ Step mới tốt nhất: Tại đây
  • Trình điều khiển A4988 Stepper Driver
  • Bộ chuyển đổi 12V/2A
  • Bộ nguồn
  • Board Arduino
  • Breadboard và dây dẫn

Sơ đồ mạch

Đây là sơ đồ mạch hoàn hảo. Tôi sẽ sử dụng ổ đĩa ở bước đủ thế cho nên tôi sẽ ngắt liên kết 3 chân MS và chỉ liên kết những chân Direction và chân của ổ đĩa với những chân số 3 và 4 trên Board Arduino và cả chân Ground và 5 V để cấp nguồn cho board. Ngoài ra, tôi sẽ sử dụng một tụ 100 uF để tách rời và bộ chuyển đổi 12V, 1.5 A để cấp nguồn cho động cơ. Tôi sẽ sử dụng Động cơ bước Nema 17 và những dây A và C của nó sẽ được liên kết với những chân 1A và 1B và dây B và D với những chân 2A và 2B .

Sơ đồ điều khiển-động cơ-mạch-động cơ

Giới hạn dòng điện

Trước khi liên kết động cơ, tất cả chúng ta nên kiểm soát và điều chỉnh số lượng giới hạn dòng điện của trình điều khiển để chắc như đinh rằng dòng điện nằm trong số lượng giới hạn hiện tại của động cơ. Chúng ta hoàn toàn có thể làm điều đó bằng cách kiểm soát và điều chỉnh điện áp tham chiếu bằng biến trở trên board và xem xét phương trình này :
Giới hạn dòng điện = VRef x 2

Tuy nhiên phương trình này không phải khi nào cũng đúng vì có những nhà phân phối board điều khiển A4988 khác nhau. Đây là một vật chứng cho trường hợp của tôi : Tôi đã kiểm soát và điều chỉnh biến trở và đo điện áp tham chiếu 0,6 V. Vì vậy, số lượng giới hạn dòng điện phải là giá trị 0,6 * 2, bằng 1,2 A .

Bây giờ vì tôi đang sử dụng Trình điều khiển ở Chế độ STEP và theo Board dữ liệu A4988 ở chính sách này, dòng điện của cuộn dây chỉ hoàn toàn có thể đạt tới 70 % số lượng giới hạn dòng điện, 1,2 A * 0,7 sẽ bằng 0,84 A. Để kiểm tra điều này, tôi đã tải lên một code đơn thuần với mức cao liên tục ở chân STEP ( để tất cả chúng ta hoàn toàn có thể nhận thấy dòng điện tốt hơn ) và liên kết đồng hồ đeo tay của mình tiếp nối đuôi nhau với một cuộn dây của động cơ và cấp nguồn cho nó. Những gì tôi nhận được là dòng 0,5 A có nghĩa là phương trình không đúng với trường hợp này .

Code lập trình Arduino và A4988

Đây là một code ví dụ. Đầu tiên tất cả chúng ta phải xác lập những chân STEP và DIRECTION. Trong trường hợp này, chúng là những chân 3 và 4 trên Board Arduino và chúng được đặt tên là stepPin và dirPin và phần thiết lập tất cả chúng ta phải xác lập chúng đầu ra .


// defines pins numbers
const int stepPin = 3; 
const int dirPin = 4; 
 
void setup() {
  // Sets the two pins as Outputs
  pinMode(stepPin,OUTPUT); 
  pinMode(dirPin,OUTPUT);
}
void loop() {
  digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction
  // Makes 200 pulses for making one full cycle rotation
  for(int x = 0; x 

Trong phần vòng lặp đầu tiên, chúng ta sẽ đặt chân Direction ở trạng thái cao cho phép động cơ di chuyển theo một hướng cụ thể. Bây giờ bằng cách sử dụng vòng lặp này, chúng ta sẽ làm cho động cơ thực hiện một vòng lặp đầy đủ. Khi trình điều khiển được đặt ở Chế độ bước đủ và Động cơ bước có góc bước 1,8 độ hoặc 200 bước, chúng ta cần gửi 200 xung vào chân Step để thực hiện một vòng quay toàn chu kỳ. Vì vậy, vòng lặp for sẽ có 200 lần lặp và mỗi lần nó sẽ đặt chân Step ở mức cao và sau đó ở mức thấp để tạo xung. Giữa mỗi DigitalWrite, chúng ta cần thêm một số delay để rang buộc tốc độ của động cơ.

Sau vòng xoay toàn chu kỳ luân hồi này, tất cả chúng ta sẽ thực thi delay một giây, sau đó biến hóa hướng quay bằng cách đặt dirPin ở mức thấp và giờ đây triển khai 2 vòng xoay toàn chu kỳ luân hồi với vòng lặp 400 lần lặp. Vào cuối hàm có thêm một giây delay. Bây giờ hãy tải lên code và xem nó sẽ hoạt động giải trí như thế nào .
Tôi đã làm thêm một ví dụ cho hướng dẫn này, nơi tôi điều khiển vận tốc của động cơ bằng biến trở. Đây là code của ví dụ đó :


// Defines pins numbers
const int stepPin = 3;
const int dirPin = 4; 

int customDelay,customDelayMapped; // Defines variables
 
void setup() {
  // Sets the two pins as Outputs
  pinMode(stepPin,OUTPUT);
  pinMode(dirPin,OUTPUT);
 
  digitalWrite(dirPin,HIGH); //Enables the motor to move in a particular direction
}
void loop() {
  
  customDelayMapped = speedUp(); // Gets custom delay values from the custom speedUp function
  // Makes pules with custom delay, depending on the Potentiometer, from which the speed of the motor depends
  digitalWrite(stepPin, HIGH);
  delayMicroseconds(customDelayMapped);
  digitalWrite(stepPin, LOW);
  delayMicroseconds(customDelayMapped);
}
// Function for reading the Potentiometer
int speedUp() {
  int customDelay = analogRead(A0); // Reads the potentiometer
  int newCustom = map(customDelay, 0, 1023, 300,4000); // Convrests the read values of the potentiometer from 0 to 1023 into desireded delay values (300 to 4000)
  return newCustom;  
}

Dịch từ: https://howtomechatronics.com/tutorials/arduino/how-to-control-stepper-motor-with-a4988-driver-and-arduino/