Bài 6: Đọc hiệu điện thế của một nguồn điện qua cổng Analog.

Nội dung chính, cần nắm

Đã bao giờ, bạn từng hỏi bản thân mình làm sao cái đồng hồ điện nó đọc được hiệu điện thế của một nguồn hay chưa? Bạn vẫn thắc mắc nguyên lý và vẫn chưa tìm ra lời giải? Vậy hãy đọc bài này. Chúng ta sẽ tìm cách để đọc tín hiệu từ analog từ đó suy ra giá trị hiệu điện thế của một vị trí xác định. Hiệu điện thế này tối đa chỉ 5V thôi bạn nhé. Nếu muốn đo cao hơn, bạn phải nghiên cứu nhiều hơn nữa!

Phần cứng

Lắp mạch

Bạn chỉ cần lắp chân chính giữa của biến trở vào cổng analog, một chân trong 2 chân còn lại vào cực dương, và chân còn lại vào cực âm.

Chương trình và hướng dẫn

int bientroPin = A2; // Lưu chân biến trở
void setup() {
  //Đối với một chân analog bạn không cần pinMode
  Serial.begin(9600);//Mở cổng Serial ở mức 9600
}

void loop() {
  int value = analogRead(bientroPin); // Ta sẽ đọc giá trị hiệu điện thế của biến trở
                                      // Giá trị được số hóa thành 1 số nguyên có giá trị
                                      // trong khoảng từ 0 đến 1023
  float volt = value / 1023.0 * 5.0;  // Bây giờ ta chỉ cần tính ra giá trị hiệu điện thế
  // Công thức rất đơn giản. Cứ mỗi một giá trị trong khoảng từ 0-1023 
  // có giá trị tương đương 5 / 1023 vol.
  // Vậy nếu có value giá trị thì sẽ có value * 5 / 1023 vol.
  // Vậy tại sao tôi lại phải ghi là 1023.0 và 5.0?
  // Bạn cần nhớ rằng, trong ngôn ngữ lập trình Arduino,
  // kiểu dữ liệu của một giá trị phụ thuộc vào
  // phép tính cuối cùng của một biểu thức và kiểu dữ liệu của biến. 
  // Vì vậy, ta đã khai báo biến volt có kiểu float
  // nên các phép tính ta cũng phải thực hiện trên số thực.
  // Nói như vậy thì chỉ cần viết float volt = val / 1023 * 5.0
  // Đúng là như vậy sẽ trả về một giá trị kiểu float.
  // Nhưng khi ta thực hiện phép tính con val / 1023 thì nó sẽ trả về kiểu int (vì val là int và 1023 cũng vậy)
  // ==> giá trị nhận được chỉ là 0 hoặc 1 ==> hiệu điện thế đo được là 0 Volt hoặc là 5 Volt.
  Serial.println(volt);//Xuất ra serial Monitor. Nhấn Ctrl+Shift+M để xem                                     
  delay(10);
}

Cảnh báo

Nếu bạn cấp một nguồn lớn hơn 5v (thực chất là > 5.3Volt) vào chân analog thì mạch Arduino của bạn sẽ hư ngay. Nếu muốn tự xây dựng cho mình một đồng hồ đo điện điện tử thì bạn cần một bài khác trên Arduino.vn. smiley

Lưu ý

Nếu bạn chỉ đơn thuần thực hiện các thao tác trên và upload đoạn code vừa rồi, bạn sẽ đo được một hiệu điến thế từ biến trở được gắn vào nguồn 5V. Nếu bạn gắn vào nguồn 3.3 Vol thì khoảng giá trị cho phép sẽ ngắn hơn (từ 0 đến 1024 * 5 / 3.3). Nếu như một cảm biến hoặc một biến trở như trên chỉ xuất ra đươc một nguồn tối đa < 5V có thể cực nhỏ đến 0.x vol, thì với đoạn code trên bạn sẽ chỉ có vài giá trị trong khoảng đa được. Như vậy thật là hạn chế, đúng không nào?

Phát triển nâng cao

Nhưng, không sao cả, Arduino IDE đã xây dựng một hàm có tên gọi analogReference() để thực hiện những điều trên. Hãy tham khảo hàm ấy để đươc hướng dẫn chi tiết phần phát triển của bài này!

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

ST7565 và ESP8266 - Màn hình LCD bự chà bá chưa đến 100k cho thế giới IoT

Mình rất thích LCD ST7565 này, và đã đặt liền 4 con mà mỗi con quá rẻ có 20k. Nhưng khổ một điều, điện áp hoạt động và IO của LCD ST7565 có 3.3V. Bản thân mình lại không thích việc chơi điện trở để chơi LCD này với Arduino. Lý do đơn giản là phải hàn quá nhiều, mình lại lười crying. Hổm nay, mình đang làm loạt bài về ESP8266 và cũng phải gặp vấn đề điện trở để làm cầu phân áp khi giao tiếp giữa ESP8266 và Arduino.

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

VMIG - Kết quả vòng chung kết và trao giải thưởng

Như vậy là một kì VMIG đã trải qua, với hơn 140 ý tưởng đăng ký tham gia và 50 sản phẩm đã hoàn thiện, cuộc thi của chúng ta đã để lại những dấu ấn nhất định trong lòng mỗi thí sinh. Các bạn đã có những khoản thời gian làm việc cùng nhau, chia sẻ vui buồn, kỉ niệm từ lúc bắt đầu dự án cho đến khi hoàn thiện. Và ngày 22/01/2016 vừa quá, chính là ngày tỏa sáng của 16 nhóm xuất sắc nhất. Có thể nói, trong cái rét cắt da thịt ở Hà Nội, chính sự năng động, nhiệt huyết và tinh thần khoa học của các bạn đã làm ấm cả hội trường C2. Và giờ đây là lúc nhìn lại kết quả trong buổi trao giải, hãy cùng chúc mừng tất cả các đội đã dành chiến thắng, các bạn nhé heart​.

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