Bài 16. Điều khiển động cơ bước

Động cơ bước có thể được xem như nằm ở nhóm giữa động cơ DC và động cơ servo. Nó có ưu điểm là có thể điều khiển vị trí một cách chính xác, chuyển động tới và lùi mỗi lúc một ‘bước’, nhưng có thể quay liên tục toàn vòng.

Trong bài này, chúng ta sẽ học cách sử dụng Arduino và chip điều khiển động cơ L293D mà bạn đã sử dụng trong bài số 15.

Linh kiện cần thiết

STT Tên linh kiện SL Hình ảnh
1 Board Arduino Uno R3 1
2 Dây nguồn USB 1
3 Breadboard mini 1
4 Dây căm breadboard 1
5 Động cơ Servo 5V 1
6 IC L293N 1

Thử nghiệm

Động cơ bước trong ví dụ này có 5 dây, và chúng ta sẽ sử dụng cả hai phía của L293D cùng lúc. Điều này cũng có nghĩa rằng chúng ta sẽ thực hiện nhiều kết nối trên breadboard.

Động cơ sẽ có một socket năm ngõ ra. Chúng ta sẽ sử dụng dây nối breadboard cắm vào các lỗ để có thể kết nối chúng vào breadboard.

Lưu ý rằng dây màu đỏ của động cơ bước sẽ không kết nối.

Code Arduino

Đoạn sketch sau sẽ sử dụng Serial Monitor, khi sketch được tải lên Arduino và bắt đầu chạy, hãy mở Serial Monitor và gõ vào số lượng ‘bước’. Hãy thử khoảng 500, động cơ sẽ quay một góc chừng 360 độ. Gõ -500, động cơ sẽ quay ngược lại vị trí ban đầu.

Trong các phiên bản Arduino IDE mới, thư viện Stepper được đính kèm khi cài đặt – nếu gặp lỗi trong quá trình thao tác, bạn cần phải cập nhật phiên bản Arduino IDE mới.

/*
Lesson 16. Stepper
*/
 
 #include <Stepper.h>
 
int in1Pin = 12;
int in2Pin = 11;
int in3Pin = 10;
int in4Pin = 9;
 
 Stepper motor(512, in1Pin, in2Pin, in3Pin, in4Pin);  
 
 void setup()
{
  pinMode(in1Pin, OUTPUT);
  pinMode(in2Pin, OUTPUT);
  pinMode(in3Pin, OUTPUT);
  pinMode(in4Pin, OUTPUT);
 
   // this line is for Leonardo's, it delays the serial interface
  // until the terminal window is opened
  while (!Serial);
  
   Serial.begin(9600);
  motor.setSpeed(20);
}
 
 void loop()
{
  if (Serial.available())
  {
    int steps = Serial.parseInt();
    motor.step(steps);
  }
}

Như đã nói ở trên, Arduino có một thư viện dành riêng cho động cơ bước. Điều này giúp cho việc điều khiển động cơ bước trở nên đơn giản hơn.

Sau khi chèn thư viện ‘Stepper’, chúng ta cần phải khai báo bốn chân từ ‘in1’ đến ‘in4’.

Để khai báo với thư viện Arduino Stepper chân nào được kết nối đến mạch điều khiển động cơ, ta sử dụng dòng lệnh sau:

Stepper motor(768, in1Pin, in2Pin, in3Pin, in4Pin);

Thông số đầu tiên là số ‘bước’ mà động cơ phải thực hiện để quay hết một vòng quay. Động cơ có thể chuyển động từng bước một, do đó chuyển động sẽ rất êm.

Giao tiếp Serial được thiết lập, khi đó Arduino có thể nhận được lệnh từ Serial Monitor.

Cuối cùng dòng lệnh sau sẽ thiết lập tốc độ quay của động cơ mà chúng ta mong muốn.

motor.setSpeed (20);

Hàm ‘loop’ rất đơn giản, Nó chờ số bước được nhập từ Serial Monitor và chuyển đổi nó thành số tự nhiên dạng int bằng lệnh ‘parseInt’. Sau đó, nó sẽ ra lệnh cho động cơ quay theo số bước đó.

Động cơ bước

Động cơ bước sử dụng một bộ phận quay cảm ứng và một nam châm điện để đẩy bộ phận quay cảm ứng này quay mỗi lần một ‘bước’

Bằng việc cấp năng lượng cho các cuộn dây theo một trật tự nào đó, mà động cơ được điều khiển quay thành vòng. Số bước mà động cơ phải thực hiện để quay được 360 vòng phụ thụ vào số răng của bộ phận quay.

Động cơ mà chúng ta sử dụng có 48 bước, nhưng động cơ này được gắn với một hộp giảm tốc với tỉ lệ 1:16, do đó để quay được một vòng phải mất 16 x 48 = 768 bước.

Trong bài này, chúng ta sẽ không sử dụng dây chung màu đỏ. Kết nối này chỉ sử dụng nếu như bạn sử dụng loại mạch điều khiển khác không cho phép đảo dòng điện trong mỗi cuộn dây. Nếu kết nối vào dây chung của mỗi cuộn dây, nghĩa là bạn có thể cấp nguồn vào đầu phía bên trải hoặc bên phải của cuộn dây, và dó đó có thể đảo chiều của dòng điện trong cuộn dây mà không cần phải sử dụng mạch đảo chiều.

Vì chúng ta đang sử dụng L293D có khả năng đảo chiều của dòng điện, do đó chúng ta sẽ không cần sử dụng dây chung. Khi đó chúng ta có thể cấp dòng điện trên toàn bộ chiều dài cuộn dây.

Mở rộng

Hãy thử thay đổi dòng lệnh sau để thiết lập lại tốc độ cho động cơ bước:

Motor.setSpeed (20);

thành giá trị thấp hơn (ví dụ 5) và tải sketch lên, bạn sẽ thấy rằng động cơ sẽ quay chậm hơn.

Hãy thử lại và tìm giá trị lớn nhất bằng cách tăng giá trị của tốc lên, trên mức 20. Sau một giá trị nào đó, bạn sẽ thấy rằng động cơ sẽ không dịch chuyển nữa. Điều này sinh ra là do tốc độc của xung quá nhanh khiến nó không thể bắt kịp dòng xung điều khiển.

Hãy thử ngắt hai dây cam và hồng ra khỏi động cơ. Nó vẫn quay, nhưng bạn sẽ thấy rằng nó sẽ yếu hơn, bởi nó không có hai cuộn dây làm việc để đẩy động cơ quay vòng.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.