Đ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

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Chạy hàm song song với delay

Xin chào các bạn! Trong cuộc sống, đôi khi chúng ta đang làm một việc gì đó và sẽ có lúc chúng ta phải đợi một khoảng thời gian rồi mới làm tiếp công việc ấy, và khi ấy ta sẽ tận dụng khoảng thời gian ấy để làm một việc khác. Vậy trong arduino ta có thể làm tương tự không, trong khi ta cho chương trình delay thì ta lại cho nó thực hiện một việc gì đó. Đáp án là được, bài viết này sẽ chia sẻ thủ thuật khá hay này.

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

Lập trình Arduino không cần viết code - Phần 6: Điều khiển led bằng nút nhấn kiểu 2

Đây là phần 6 của chuỗi bài viết "Lập trình arduino không cần viết code".

- Xem lại phần 5 tại đây

​Ở phần trước, mình đã hướng dẫn lập trình điều khiển led bằng nút nhấn kiểu 1, tuy nhiên kiểu này có 1 điểm yếu là giữ nút thì mới sáng led. Và ở phần này, mình sẽ nói đến kiểu 2 khắc phục nhược điểm trên. Tuy nhiên có thể nó cũng không phải là nhược điểm nếu như bạn cần nó vào 1 việc gì đó.

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