Bài 4: Đọc điện áp điều chỉnh bởi biến trở

1. Giới thiệu

Bài ví dụ này sẽ giới thiệu cho các bạn cách đọc giá trị điện áp gây ra bởi một 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.

2. Cấu tạo biến trở

Phần màu vàng là một lớp điện trở. Cây kim màu xanh được đè chặt xuống phần điện trở này. Giả sử có dòng điện đi từ 1 đến 3 thì nó sẽ phải qua phần màu vàng (được tô đỏ) và đó chính là điện trở hiện tại của biến trở. Bạn chỉ việc vặn cây kim để tăng giảm độ dài của vùng màu đỏ, qua đó tăng giảm giá trị điện trở.

Vậy cực thứ 2 dùng để làm gì ? 

Giả sử đặt một hiệu điện thế vào 2 cực 1 và 2, sử dụng công thức định luật Ôm, ta có thể tính được điện áp lấy ra ở cực 3. Khi vặn biến trở, ta sẽ làm thay đổi điện trở ở phần màu đỏ và màu vàng (do điện tích của chúng thay đổi), qua đó làm thay đổi điện áp ở chân 3. Những cái volume vặn âm thanh to / nhỏ cũng có nguyên lí hoạt động tương tự như vậy.

Người ta gọi hệ 2 điện trở này là cầu phân áp, tức là phân chia điện áp nhờ một cầu điện trở.

3. Chuẩn bị

  • Mạch Arduino (trong bài sử dụng Arduino UNO R3).
  • Breadboard.
  • Biến trở (bạn có thể chọn loại bất kì).

4. Lắp mạch

Như bạn đã thấy, ta kết nối chân A0 (dây vàng) của mạch Arduino vào cực thứ 3 của biến trở để đọc điện áp.

Sơ đồ nguyên lí

5. Lập trình

Tham khảo bài viết Hướng dẫn nạp chương trình đơn giản cho Arduino Uno R3 nếu bạn chưa biết cách nạp chương trình.

void setup() {
  Serial.begin(9600);  //Mở cổng Serial để giap tiếp | tham khảo Serial
}

void loop() {
  int value = analogRead(A0);   //đọc giá trị điện áp ở chân A0 
                                //(value luôn nằm trong khoảng 0-1023)
  Serial.println(value);        //xuất ra giá trị vừa đọc
  
  int voltage;
  voltage = map(value,0,1023,0,5000);   //chuyển thang đo của value 
                                        //từ 0-1023 sang 0-5000 (mV)
  Serial.println(voltage);              //xuất ra điện áp (đơn vị là mV)
  
  Serial.println();     //xuống hàng
  delay(200);           //đợi 0.2 giây
}

Nào, bạn hãy bấm Ctrl + Shift + M để mở cửa sổ Serial Monitor và xem kết quả.

Giải thích

  • Dòng đầu tiên là giá trị điện áp đọc được bằng lệnh analogRead();
  • Dòng thứ 2 là giá trị điện áp (tính bằng mV) sau khi dùng hàm map() để chuyển đổi

Giả sử biến trở được sử dụng là loại 10K mắc như sơ đồ trong bài viết, giá trị do hàm analogRead() trả về là 150. Bạn hãy thử tìm cách tính xem biến trở hiện tại đang có giá trị là bao nhiêu Ohm ?

lên
34 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Bộ điều khiển PID - ứng dụng phần 2 - xe dò line dùng thuật toán PID

Tiép nối bài viết về xe dò line cảm ơn Đỗ Hữu Toàn đã viết hộ mình phần 4. hôm nay mình sẽ làm cho chiếc xe dò line đi mượt và có hồn hơn 

lên
34 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

analogWrite()

analogWrite() là lệnh xuất ra từ một chân trên mạch Arduino một mức tín hiệu analog (phát xung PWM). Người ta thường điều khiển mức sáng tối của đèn LED hay hướng quay của động cơ servo bằng cách phát xung PWM như thế này.

lên
31 thành viên đã đánh giá bài viết này hữu ích.

Intel Galileo - Dữ liệu kĩ thuật

Galileo là một bo mạch vi điều khiển dựa trên bộ xử lí ứng dụng Intel Quark SoC X1000 - một bộ xử lí thuộc dòng Pentium 32bit system-on-chip (tích hợp tất cả các thành phần hệ thống vào trong 1 chip xử lí duy nhất). Galileo là bo mạch tương thích với Arduino đầu tiên dựa trên Intel Architecture. Cả phần cứng lẫn phần mềm của Galileo đều tương thích với các Arduino Shield vốn được thiết kế cho Arduino UNO R3 với chuẩn chân cắm Arduino 1.0 pinout.

lên
5 thành viên đã đánh giá bài viết này hữu ích.