Mục lục:

Chân AREF Arduino: 6 bước
Chân AREF Arduino: 6 bước

Video: Chân AREF Arduino: 6 bước

Video: Chân AREF Arduino: 6 bước
Video: #166: Một Số Mạch Ra Chân, Mở Rộng I/O Cho Arduino | Arduino I/O Shields 2024, Tháng mười một
Anonim
Chân ISF của Arduino
Chân ISF của Arduino

Trong hướng dẫn này, chúng ta sẽ xem xét cách bạn có thể đo điện áp nhỏ hơn với độ chính xác cao hơn bằng cách sử dụng các chân đầu vào tương tự trên Arduino của bạn hoặc bảng tương thích kết hợp với chân AREF. Tuy nhiên, trước tiên, chúng tôi sẽ thực hiện một số sửa đổi để giúp bạn bắt kịp tốc độ. Vui lòng đọc toàn bộ bài đăng này trước khi làm việc với AREF lần đầu tiên.

Bước 1: Sửa đổi

Ôn tập!
Ôn tập!

Bạn có thể nhớ lại rằng bạn có thể sử dụng chức năng Arduino analogRead () để đo điện áp của dòng điện từ các cảm biến, v.v. bằng cách sử dụng một trong các chân đầu vào tương tự. Giá trị trả về từ analogRead () sẽ nằm trong khoảng từ 0 đến 1023, với 0 đại diện cho 0 volt và 1023 đại diện cho điện áp hoạt động của bảng Arduino đang được sử dụng.

Và khi chúng ta nói điện áp hoạt động - đây là điện áp có sẵn cho Arduino sau mạch cấp nguồn. Ví dụ: nếu bạn có bảng Arduino Uno điển hình và chạy nó từ ổ cắm USB - chắc chắn, có sẵn 5V cho bảng từ ổ cắm USB trên máy tính hoặc trung tâm của bạn - nhưng điện áp sẽ giảm một chút khi dòng điện chạy xung quanh mạch đến bộ vi điều khiển - hoặc nguồn USB không bị trầy xước.

Điều này có thể dễ dàng được chứng minh bằng cách kết nối Arduino Uno với USB và đặt một bộ đồng hồ vạn năng để đo điện áp qua các chân 5V và GND. Một số bo mạch sẽ trở về mức thấp nhất là 4,8 V, một số cao hơn nhưng vẫn dưới 5V. Vì vậy, nếu bạn đang tìm kiếm độ chính xác, hãy cấp nguồn cho bo mạch của bạn từ nguồn điện bên ngoài qua ổ cắm DC hoặc chân Vin - chẳng hạn như 9V DC. Sau đó, sau đó đi qua mạch điều chỉnh nguồn bạn sẽ có một 5V đẹp, ví dụ như hình ảnh.

Điều này rất quan trọng vì độ chính xác của mọi giá trị analogRead () sẽ bị ảnh hưởng do không có giá trị 5 V. Nếu bạn không có bất kỳ tùy chọn nào, bạn có thể sử dụng một số phép toán trong bản phác thảo của mình để bù cho sự sụt giảm điện áp. Ví dụ: nếu điện áp của bạn là 4,8V - phạm vi analogRead () 0 ~ 1023 sẽ liên quan đến 0 ~ 4,8V chứ không phải 0 ~ 5V. Điều này nghe có vẻ tầm thường, tuy nhiên nếu bạn đang sử dụng cảm biến trả về giá trị dưới dạng điện áp (ví dụ: cảm biến nhiệt độ TMP36) - giá trị được tính toán sẽ sai. Vì vậy, vì lợi ích của độ chính xác, hãy sử dụng nguồn điện bên ngoài.

Bước 2: Tại sao AnalogRead () lại trả về giá trị từ 0 đến 1023?

Tại sao AnalogRead () lại trả về giá trị từ 0 đến 1023?
Tại sao AnalogRead () lại trả về giá trị từ 0 đến 1023?

Điều này là do độ phân giải của ADC. Độ phân giải (cho bài viết này) là mức độ mà một cái gì đó có thể được biểu diễn bằng số. Độ phân giải càng cao, độ chính xác càng cao mà cái gì đó có thể được biểu diễn. Chúng tôi đo độ phân giải theo số bit độ phân giải.

Ví dụ: độ phân giải 1 bit sẽ chỉ cho phép hai (hai bằng lũy thừa của một) giá trị - không và một. Độ phân giải 2 bit sẽ cho phép bốn (hai bằng lũy thừa của hai) giá trị - không, một, hai và ba. Nếu chúng tôi cố gắng đo dải năm vôn với độ phân giải hai bit và điện áp đo được là bốn vôn, thì ADC của chúng tôi sẽ trả về giá trị số là 3 - vì bốn vôn rơi vào khoảng từ 3,75 đến 5V. Có thể dễ dàng hình dung điều này bằng hình ảnh.

Vì vậy, với ví dụ ADC của chúng tôi với độ phân giải 2-bit, nó chỉ có thể đại diện cho điện áp với bốn giá trị kết quả có thể có. Nếu điện áp đầu vào rơi vào khoảng từ 0 đến 1,25, ADC trả về số 0; nếu điện áp rơi vào giữa 1,25 và 2,5, ADC trả về giá trị số là 1. Và cứ tiếp tục như vậy. Với phạm vi ADC của Arduino là 0 ~ 1023 - chúng tôi có 1024 giá trị có thể - hoặc 2 đến sức mạnh của 10. Vì vậy, Arduinos của chúng tôi có ADC với độ phân giải 10 bit.

Bước 3: Vậy AREF là gì?

Để cắt ngắn một câu chuyện dài, khi Arduino của bạn đọc tín hiệu tương tự, nó sẽ so sánh điện áp đo được tại chân tương tự đang được sử dụng với điện áp được gọi là điện áp tham chiếu. Trong sử dụng analogRead bình thường, điện áp tham chiếu là điện áp hoạt động của bo mạch.

Đối với các bảng Arduino phổ biến hơn như bảng Uno, Mega, Duemilanove và Leonardo / Yún, điện áp hoạt động là 5V. Nếu bạn có bảng Arduino Due, điện áp hoạt động là 3,3V. Nếu bạn có thứ gì khác - hãy kiểm tra trang sản phẩm Arduino hoặc hỏi nhà cung cấp bo mạch của bạn.

Vì vậy, nếu bạn có điện áp tham chiếu là 5V, mỗi đơn vị được trả về bởi analogRead () có giá trị là 0,00488 V. (Điều này được tính bằng cách chia 1024 thành 5V). Điều gì sẽ xảy ra nếu chúng ta muốn đo điện áp từ 0 đến 2, hoặc 0 và 4,6? Làm thế nào ADC có thể biết 100% dải điện áp của chúng ta là gì?

Và đó là lý do cho chân AREF. AREF có nghĩa là sự phản hồi tương tự. Nó cho phép chúng tôi cấp cho Arduino một điện áp tham chiếu từ nguồn điện bên ngoài. Ví dụ, nếu chúng ta muốn đo điện áp với phạm vi tối đa là 3,3V, chúng ta sẽ cấp một 3,3V mượt mà đẹp mắt vào chân AREF - có lẽ từ một IC điều chỉnh điện áp.

Sau đó, mỗi bước của ADC sẽ đại diện cho khoảng 3,22 milivôn (chia 1024 thành 3,3). Lưu ý rằng điện áp tham chiếu thấp nhất mà bạn có thể có là 1,1V. Có hai dạng AREF - bên trong và bên ngoài, vì vậy hãy cùng tìm hiểu chúng.

Bước 4: AREF bên ngoài

AREF bên ngoài là nơi bạn cung cấp điện áp tham chiếu bên ngoài cho bảng Arduino. Điều này có thể đến từ nguồn điện được điều chỉnh hoặc nếu bạn cần 3.3V, bạn có thể lấy nó từ chân 3.3V của Arduino. Nếu bạn đang sử dụng nguồn điện bên ngoài, hãy đảm bảo kết nối GND với chân GND của Arduino. Hoặc nếu bạn đang sử dụng nguồn 3.3V của Arduno - chỉ cần chạy một jumper từ chân 3,3V đến chân AREF.

Để kích hoạt AREF bên ngoài, hãy sử dụng phần sau trong void setup ():

analogReference (BÊN NGOÀI); // sử dụng AREF cho điện áp tham chiếu

Điều này đặt điện áp tham chiếu thành bất kỳ thứ gì bạn đã kết nối với chân AREF - tất nhiên sẽ có điện áp giữa 1,1V và điện áp hoạt động của bo mạch. trước khi sử dụng analogRead (). Điều này sẽ ngăn bạn làm ngắn điện áp tham chiếu bên trong hoạt động và chân AREF, có thể làm hỏng bộ vi điều khiển trên bo mạch. Nếu cần thiết cho ứng dụng của bạn, bạn có thể hoàn nguyên trở lại điện áp hoạt động của bo mạch cho AREF (nghĩa là - trở lại bình thường) bằng các cách sau

analogReference (DEFAULT);

Bây giờ để chứng minh AREF bên ngoài tại nơi làm việc. Sử dụng AREF 3,3V, bản phác thảo sau đây đo điện áp từ A0 và hiển thị phần trăm của tổng AREF và điện áp được tính toán:

#include "LiquidCrystal.h"

Màn hình LCD LiquidCrystal (8, 9, 4, 5, 6, 7);

int analoginput = 0; // pin tương tự của chúng tôi

int analogamount = 0; // lưu trữ giá trị đến float phần trăm = 0; // được sử dụng để lưu trữ giá trị phần trăm floattage = 0; // dùng để lưu trữ giá trị điện áp

void setup ()

{lcd.begin (16, 2); analogReference (BÊN NGOÀI); // sử dụng AREF cho điện áp tham chiếu}

void loop ()

{lcd.clear (); analogamount = analogRead (thông lượng tương tự); tỷ lệ phần trăm = (số lượng tương tự / 1024,00) * 100; điện áp = số lượng tương tự * 3,222; // tính bằng milivôn lcd.setCursor (0, 0); lcd.print ("% AREF:"); lcd.print (phần trăm, 2); lcd.setCursor (0, 1); lcd.print ("A0 (mV):"); lcd.println (điện áp, 2); chậm trễ (250); }

Kết quả của bản phác thảo trên được hiển thị trong video.

Bước 5: AREF nội bộ

Các bộ vi điều khiển trên bảng Arduino của chúng tôi cũng có thể tạo ra điện áp tham chiếu bên trong là 1,1V và chúng tôi có thể sử dụng điện áp này cho công việc AREF. Đơn giản chỉ cần sử dụng dòng:

analogReference (NỘI BỘ);

Đối với bảng Arduino Mega, hãy sử dụng:

analogReference (INTERNAL1V1);

trong void setup () và bạn đã tắt. Nếu bạn có Arduino Mega thì cũng có sẵn điện áp tham chiếu 2,56V được kích hoạt bằng:

analogReference (INTERNAL2V56);

Cuối cùng - trước khi xác định kết quả từ chân AREF của bạn, hãy luôn hiệu chỉnh các kết quả đọc với một đồng hồ vạn năng tốt đã biết.

Phần kết luận

Chức năng AREF giúp bạn linh hoạt hơn khi đo các tín hiệu tương tự.

Bài đăng này do pmdway.com mang đến cho bạn - mọi thứ dành cho các nhà sản xuất và những người đam mê điện tử, với giao hàng miễn phí trên toàn thế giới.

Đề xuất: