Arduino Điều Khiển Động Cơ Bước Qua Mạch L298N

Một trong những cách dễ dàng nhất và rẻ tiền để điều khiển động cơ bước là sử dụng mạch điều khiển động cơ L298N & Arduino. Nó có thể điều khiển tốc độ lẫn hướng quay của bất kỳ động cơ bước lưỡng cực nào.

Trong trường hợp bạn muốn xây dựng máy in 3D hoặc máy CNC, bạn sẽ cần điều khiển cùng lúc các động cơ bước khác nhau. Do đó, để 1 Arduino có thể điều khiển tất cả chúng thông qua L298N không phải là một lựa chọn tốt. Thay vào đó, bạn nên board driver điều khiển động cơ bước chuyên dụng như A4988.

Điều khiển động cơ bước dùng L298N – Mạch cầu H

Module L298N có hai Cầu H, mỗi Cầu H sẽ điều khiển 1 cuộn dây của động cơ bước.

Bằng cách cấp điện cho các cuộn dây này theo một trình tự nhất định, trục của động cơ bước có thể được di chuyển tiến hoặc lùi chính xác theo từng bước nhỏ.

Tuy nhiên, tốc độ của động cơ được xác định bởi tần suất các tín hiệu điện cung cấp cho các cuộn dây.

Hình ảnh dưới đây minh họa với điều khiển động cơ bước với mạch cầu H

Trong bài viết này, chúng tôi sử dụng động cơ bước lưỡng cực với hiệu điện thế 12V. Độ phân giải là 200 bước với tốc độ tối đa vào khoảng 60 vòng/phút. Nếu bạn không rõ về những thông số trên thì có thể search google.

Trước khi bắt đầu nối dây với module, bạn cần phải xác định các dây: A+, A-, B+, B-. Bạn có thể kiểm tra datasheet của động cơ hoặc dùng VOM để xác định. Thông thường chúng sẽ có màu: Đỏ, xanh lá, vàng, xanh dương.

http://forum.cncprovn.com/threads/4081-Co-ban-Cach-xac-dinh-thu-tu-day-dong-co-buoc

Việc kết nối là khá đơn giản. Kết nối nguồn điện 12 V với VCC & GND. Giữ jumper 5V-EN.

Bạn cũng cần giữ jumper ENA & ENB để động cơ luôn được bật.

Tiếp theo, kết nối các chân đầu vào (IN1, IN2, IN3 và IN4) của module L298N với bốn chân digital output Arduino (8, 9, 10 và 11).

Cuối cùng, kết nối dây A +, A-, B + và B- từ động cơ bước với module như hình dưới.

Code Arduino điều khiển động cơ bước thông qua L298N

Ví dụ 1:

/*
  Điều khiển động cơ bước

  Chương trình này điều khiển động cơ bước lưỡng cực.
  Động cơ bước được nối với digital pins 8 - 11 của Arduino.

  Động cơ sẽ được xoay theo chiều thuận với 1 độ phân giải
  sau đó sẽ quay theo chiều ngược lại

  Created 11 Mar. 2007
  Modified 30 Nov. 2009
  by Tom Igoe

*/

#include <Stepper.h>

const int stepsPerRevolution = 200;
// thay đổi con số này cho phù hợp với động cơ bước của bạn

// khai báo step motor từ pins 8 đến 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {
  // set tốc độ động cơ là 60 rpm:
  myStepper.setSpeed(60);
  // khai báo cổng serial
  Serial.begin(9600);
}

void loop() {
  // Quay động cơ theo chiều thuận
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);

  // Quay động cơ theo chiều nghịch
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}

Ví dụ 2

/*
  Điều khiển động cơ bước
  Chương trình này điều khiển động cơ bước lưỡng cực.
  Động cơ bước được nối với digital pins 8 - 11 của Arduino.

  Động cơ sẽ được điều khiển theo từng bước một, tốc độ rất chậm.
  Bạn có thể dùng code này để test việc nối dây của động cơ.
  Nếu động cơ được nối dây đúng, tất cả các bước sẽ theo cùng 1 chiều.

  Bạn có thể dùng cách này để test độ phân giải của động cơ bước.
  Nếu bạn không biết thông số này,
  bạn có thể thay đổi nó cho đến khi nó đúng.

  Created 30 Nov. 2009
  by Tom Igoe

*/

#include <Stepper.h>

const int stepsPerRevolution = 200;
// Thay đổi số này phù hợp với độ phân giải động cơ bước của bạn.

// Khai báo động cơ bước từ pins 8 đến 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

int stepCount = 0;         // số bước đã được bước

void setup() {
  // khai báo cổng serial
  Serial.begin(9600);
}

void loop() {
  // bước 1 bước
  myStepper.step(1);
  Serial.print("steps:");
  Serial.println(stepCount);
  stepCount++;
  delay(500);
}

Ví dụ 3:

/*
  Điều khiển động cơ bước
  Chương trình này điều khiển động cơ bước lưỡng cực.
  Động cơ bước được nối với digital pins 8 - 11 của Arduino.
  Biến trở được kết nối với analog input 0.

  Động cơ được điều khiển quay theo chiều kim đồng hồ
  biến trở được quay càng nhiều, động cơ càng quay nhanh.
  Bởi vì hàm setSpeed() sẽ điều khiển thời gian delay giữa các bước,
*/

#include <Stepper.h>

const int stepsPerRevolution = 200;
// thay đổi giá trị này phù hợp với động cơ bước của bạn


// khai báo động cơ bước từ pins 8 đến 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

int stepCount = 0;  // số bước đã được bước

void setup() {
  // nothing to do inside the setup
}

void loop() {
  // Đọc giá trị biến trở qua chân A0
  int sensorReading = analogRead(A0);
  // map nó với giá trị từ 0 đến 100:
  int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
  // Set tốc độ động cơ
  if (motorSpeed > 0) {
    myStepper.setSpeed(motorSpeed);
    // bước 1/100 theo độ phân giải của động cơ
    myStepper.step(stepsPerRevolution / 100);
  }
}

Video:

Nhận xét

Mới hơn Cũ hơn