Đ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ả

Lịch sử phát triển của vi điều khiển và vi xử lí

Ở bài trước mình đã so sánh sự khác nhau giữa vi xử lí và vi điều khiển (Bạn có thể xem lại tại đây). Ở bài này mình sẽ nói về lịch sử phát triển của chúng để trọn bộ luôn ha. Ok

lên
19 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 12: Tạo hàm điều khiển motor

Đây là phần 12 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 11 tại đây

Ở phần 9 mình đã hướng dẫn cách điều khiển motor với module L298, đồng thời ở phần trước mình cũng đã hướng dẫn cách tạo một hàm riêng. Hôm nay mình sẽ hướng dẫn các bạn tạo hàm điều khiển motor cho module L298. Vào luôn!

 

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