Bài 11: Điều khiển động cơ Servo bằng biến trở sử dụng Arduino

Bài 11: Điều khiển động cơ Servo bằng biến trở sử dụng Arduino

Trong chuỗi bài viết khóa học lập trình Arduino cơ bản dành cho người mới nhập môn, trong bài viết hôm nay chúng ta sẽ đi vào tìm hiểu cấu tạo và nguyên lý hoạt động của biến trở.

Qua đó sẽ vận dụng biến trở để có thể điều khiển góc quay của servo, nếu các bạn chưa biết cách hoạt động của servo ra làm sao? Các bạn xem bài viết Điều khiển động cơ RC Servo sử dụng Arduino để có thể hiểu hơn nhé.

Biến trở là gì?

Biến trở là một linh kiện khá phổ biến trong thiết kế mạch điện tử, thường dùng để phân áp, phân dòng trong mạch.

Biến trở thường được ứng dụng trong các mạch điều chỉnh âm lượng hay là điều chỉnh ánh sáng của đèn…

Biến trở than

Cấu tạo của biến trở

Thông thường có 3 dạng biến trở:

  • Biến trở tay quay và biến trở con chạy: Cuộn dây dẫn bằng hợp kim có điện trở xuất lớn Nikelin, Nicrom…, được quấn đều đặn dọc theo một lõi bằng sứ.
  • Biến trở than: Chạy trên một lớp than và được chỉnh bằng tay quay “3”.

Nguyên lý hoạt động

Ví dụ : Khi có một nguồn điện đi vào (Vin), trong trường hợp núm vặn được xoay về hướng R1 thì lúc này điện trở sẽ nhỏ nhất và cường độ dòng điện sẽ cao nhất. Và ngược lại khi vặn về hướng R2 thì điện trở sẽ cao nhất và cường độ dòng điện sẽ giảm dần.

Sơ đồ đấu nối

Arduino Uno Động cơ Servo SG90
5V Dây màu đỏ
GND Dây màu đen
D9 Dây màu vàng

Hình ảnh minh họa

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

  • Board Arduino Uno
  • Động cơ Servo SG90

Code

#include <Servo.h> 
Servo myservo;

int potpin = 0;
int val;

void setup() { 
  myservo.attach(9); 
} 

void loop() { 
  val = analogRead(potpin);
  val = map(val, 0, 1023, 0, 179);
  myservo.write(val);
  delay(15);
}

Giải thích code

Hàm map()

Hàm map() dùng để chuyển đổi giá trị từ thang đo này sang một giá trị của thang đo khác.

Giá trị trả về của hàm map() luôn là một số nguyên.

Cú pháp:

map(val, A1, A2, B1, B2);

Trong đó:

  • val: Là giá trị cần chuyển đổi.
  • A1, A2: Là giới hạn trên và dưới của thang đo hiện tại.
  • B1, B2: là giới hạn trên và dưới của thang đo cần chuyển tới.
val = map(val, 0, 1023, 0, 179);

Trong bài viết này mình chuyển đổi giá trị điện áp 0 – 1023 (0 – 5V) và giá trị chuyển đổi 0 – 179 (tức là góc quay của Servo là 180 độ).

Lời kết

Tham gia cộng đồng Arduino KIT Để nhận được nhiều kiến thức bổ ích, các bạn Đăng ký để nhận thông báo khi có bài viết mới nhé. Tham gia Cộng đồng Arduino KIT để cùng nhau thảo luận và chia sẽ kiến thức về lập trình Arduino. Nếu các bạn thấy bài viết bổ ích nhớ LikeShare cho mọi người cùng học nhé.

Bài viết liên quan

Subscribe
Notify of
guest

1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Thắng

Sơ đồ lắp mạch thiếu dây nối vào nguồn ạ.