Lập trình điều khiển DC motor với board mạch Arduino

Đây là bài 16/17 bài của series môn học Lập trình Arduino cơ bản

1. Giới thiệu DC motor

Motor (động cơ) là một thiết bị tạo ra chuyển động quay liên tục 360°. Có nhiều loại motor nhưng DC motor là một trong những loại motor được sử dụng phổ biến nhất.

DC motor

Chỉ cần cấp nguồn dương (+) vào chân dương và nguồn âm (-) vào chân âm cho DC motor thì nó sẽ tự động quay liên tục 360°. Nếu cấp các nguồn dương và âm vào các chân ngược lại thì động cơ sẽ quay theo chiều ngược lại.

2. Thiết kế mạch điều khiển DC motor với board mạch Arduino

Mạch điều khiển motor với Arduino gồm 1 board Arduino, 1 DC motor, có thể thêm 1 biến trở để điều khiển tốc độ quay của DC motor.

Để DC motor hoạt động, cần cấp nguồn cho DC motor. Một chân của motor phải kết nối với một chân của Arduino có khả năng xuất xung PWM (~3, ~ 5, ~ 6, ~ 9, ~ 10, ~ 11) để chịu sự điều khiển của Arduino.

Sơ đồ mạch DC motor với Arduino

Có thể dùng thêm biến trở để điều khiển tốc độ quay của DC motor.

Hiểu về biến trở

Biến trở

Biến trở chỉ đơn giản chỉ là một điện trở có thể thay đổi được trị số. Mạch Arduino không đọc trực tiếp điện trở này mà đọc gián tiếp qua điện áp mà biến trở gây ra.

Cấu tạo biến trở

Phần màu cam là một lớp điện trở. Cây kim màu xanh dương được đè chặt xuống phần điện trở này.

Khi có dòng điện đi từ chân 1 đến chân 3 thì nó sẽ phải qua phần điện trở được tô màu đỏ. Lúc đó, dòng điện sẽ bị suy giảm đi bởi phần điện trở đó. Từ đó mà xác định được điện trở hiện tại của biến trở.

Chúng ta chỉ việc vặn cây kim màu xanh dương để tăng giảm độ dài của vùng màu đỏ, qua đó tăng giảm giá trị điện trở.

3. Chương trình điều khiển tốc độ quay của DC motor với biến trở

Đọc giá trị điện áp ở chân Arduino kết nối với biến trở nhờ hàm analogRead(). Giá trị nhận được từ 0 đến 1023, tương ứng từ 0 đến 5V. Giá trị này càng lớn thì điện trở của biến trở càng nhỏ, có nghĩa là khả năng cản trở dòng điện của biến trở càng nhỏ.

Giá trị tốc độ của motor từ khoảng 0 đến 255. Sử dụng hàm analogWrite() để gán tốc độ quay của motor.

Sử dụng hàm map() để biến đổi giá trị điện áp lấy ra từ biến trở sang giá trị tốc độ quay của motor. Giá trị tốc độ quay càng lớn thì motor quay càng nhanh và ngược lại.

int motor = 9;//Chân PWM kết nối motor Arduino
int rv = A0;//Chân kết nối biến trở với Arduino
void setup(){
  pinMode(motor, OUTPUT);//Khai báo chân motor sẽ là ngõ ra
}
void loop(){
  int value = analogRead(rv);//Đọc giá trị điện áp từ biến trở
  int motor_speed = map(value,0,1023,0,255);//chuyển thang đo của value từ 0-1023 sang 0-255
  analogWrite(motor, motor_speed);//Gán tốc độ quay của motor dựa vào giá trị biến trở
}
Kết quả
Mời bạn đánh giá bài viết
Bài trước và bài sau trong môn học<< Lập trình giao tiếp cảm biến DHT với board mạch ArduinoLập trình điều khiển Servo motor với board mạch Arduino >>
Chia sẻ trên mạng xã hội:

Tác giả Vinh Lê

Vinh Lê hiện đang là biên tập viên tại Góc Học IT.

Bài viết của Vinh Lê

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.