Điều chỉnh điện áp đọc được tối đa ở các chân Analog

Lâu nay chúng ta đã quen với việc đọc tín hiệu từ các chân nalog với mức điện áp từ 0V - 5V. Thế nhưng với Arduino ta có thể thay đổi mức điện áp đó bằng cả cách cách lập trình với code và cách phần cứng. HeHe bắt đầu tìm hiểu thôi.

Thay đổi bằng Code

Ta sẽ sử dụng câu lệnh analogReference để thay đổi mức điện áp đọc được tối đa ở các chân analog. Cấu trúc câu lệnh như sau:

analogReference(type);

Trong đó tham số type thiết lập chế độ đọc analog, nó bao gồm các chế độ sau:

  • DEFAULT: Chế độ mặc định, mức điện áp tối đa sẽ là 5V như bình thường đối với bản arduino 5V và 3V3 đối với bản arduino 3v3. Nếu bạn không gọi hàm analogReference, đây sẽ là chế độ đọc.
  • INTERNAL: Chế độ này cho ta mức điện áp đọc tối đa là 1V1 đối với VĐK ATmega168, ATmega328 và là 2.56V đối với vđk ATmega8. (Chế độ này không hỗ trợ cho Arduino Mega).
  • INTERNAL1V1: Thiết lập mức 1V1 cho bản Arduino Mega.
  • INTERNAL2V56: Thiết lập mức 2V56 cho bản Arduino Mega.
  • EXTERNAL: Đặt chế độ này để thay đổi bằng phần cứng.

Code mẫu:

int val;
void setup()
{
  Serial.begin(9600);
  analogReference(INTERNAL);
}

void loop()
{
  val=analogRead(A3);
  Serial.println(val);
  delay(1000);
}

Thay đổi bằng phần cứng

Ta sẽ thay đổi bằng cách đưa vào chân AREF của board arduino một điện áp tương đương với mức điện áp đọc được tối đa. Chúng ta nên đưa vào chân AREF điện áp ổn định (Qua ic nguồn) để tránh tình trạng thay đổi mức tối đa ngoài ý muốn khi đang chạy chương trình.

Mình nối AREF pin với chân 3V3 của Arduino.

Code ví dụ

int val;
void setup()
{
  Serial.begin(9600);
  analogReference(EXTERNAL);
}

void loop()
{
  val=analogRead(A3);
  Serial.println(val);
  delay(1000);
}

Lưu ý

Sau đây là một số lưu ý khi thay đổi điện áp đọc tối đa ở các chân anlog:

  • Sau khi thay đổi điện áp tối đa đọc được, một vài lệnh đọc analog đầu có thể không chính xác.
  • Nếu thay đổi bằng AREF pin thì cần cung cấp cho pin ấy điện áp từ 0V => 5V (Không cao hơn 5V mà cũng không thấp hơn 0V). Và phải khai báo câu lệnh analogReference(EXTERNAL); trước khi đọc tín hiệu analog. Nếu làm sai điều này sẽ gây đoản mạch.

Kết luận

Ngoài ra, nếu bạn không có module điều chỉnh nguồn để cho điện áp vào AREF pin thì bạn cũng có thể thay đổi điện áp vào pin AREF bằng điện trở. Điện áp vào pin AREF được tính theo công thức sau: UAREF = Unguồn*32000/(32000+R). Trong công thức ấy tại sao lại có con số 32000 nhỉ, đó là giá trị nội trở của chân AREF pin ý mà. Ví dụ: Mình nối chân AREF với chân 3V3 và nối với điện trở 5K thì được điện áp vào chân AREF như sau: UAREF = 3.3*32000/(32000+5000) = ~2.85 V. Từ công thức ấy bạn có thể tính được điện trở khi biết điện áp ra chân AREF và điện áp vào.

Chúc các bạn lập trình, sáng tạo vui vẻ và có nhiểu dự án hay để chia sẻ với cộng đồng Arduino VN. Tạm biệt và cảm ơn đã theo dõi. Nếu thấy hay thì cho mình cái Rate Note ủng hộ.

lên
18 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ả

Giới thiệu board Romeo BLE

Xin chào mọi người! Sau đây mình xin giới thiệu với các bạn một board cực kì bá đạo cho các dự án xe robot. Đó là board Romeo BLE. Nó bá đạo về mọi mặt từ phần cấu hình đến phần lập trình và tất nhiên là cả giá @@.

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

Vỗ tay bật đèn với cảm biến âm thanh CN07

Chúng ta đã biết được rất nhiều cách để bật tắt các thiết bị qua nhiều bài viết ở cộng đồng, nhưng mình thấy chưa có bài nào dùng cảm biến âm thanh để bật tắt thiết bị, nên hôm nay mình xin viết bài này nhằm giới thiệu thêm cho các bạn.

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