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

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…

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
5VDây màu đỏ
GNDDây màu đen
D9Dâ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 độ).

Scroll to Top