Cách đọc dữ liệu từ quang trở và xây dựng cảm biến ánh sáng

Giới thiệu và nội dung cần nắm

Quang trở là một loại "vật liệu" điện tử rất hay gặp và được sử dụng trong những mạch cảm biến ánh sáng. Có thể hiểu một cách dễ dàng rằng, quang trở là một loại ĐIỆN TRỞ có điện trở thay đổi theo cường độ ánh sáng. Nếu đặt ở môi trường có ít ánh sáng, có bóng râm hoặc tối thì điện trở của quang trở sẽ tăng cao còn nếu đặt ở ngoài nắng, hoặc nơi có ánh sáng thì điện trở sẽ giảm. Qua bài viết này, ta sẽ học đươc cách xây dựng một cảm biến ánh sáng sử dụng quang trở dựa trên nguyên lý hoạt động lý thú của nó!

Hôm nay, bạn sẽ làm dược gì

Mạch này trên breadboard nên không được đẹp lắm
Bạn hãy hàn mạch để làm nó đẹp hơn!

Phần cứng

Thời gian 20 phút

Tiến hành

Như đã giới thiệu ở trên, tớ đã nói về cách hoạt động của quang trở. Bây giờ câu hỏi đặt ra là: "Làm thế nào để đọc tín hiệu từ quang trở? Như thế nào là tối, như thế nào là sáng, mỗi nơi có mức sáng tối khác nhau, vậy có thay đổi được không?"

Làm thế nào để đọc tín hiệu từ quang trở?

Không chỉ quang trở, bạn có thể thực hiện phương pháp sau đây với tất cả những loại thiết bị điện có 2 chân. Đây là phương pháp có tên gọi là đọc hiệu điến thế từ cầu phân áp, để xem về cầu phân áp bạn có thể kích vào đây (gợi ý, quang trở bạn cứ xem là điện trở R1, vào phía trước mỗi chân Analog của Arduino có một điện trở, và xem đó là điện trở R2 = 10k). Bây giờ, chúng ta xem cách mắc thôi.

Bây giờ bạn upload code này lên và xem giá trị của quang trở, nhớ là hãy thay đổi độ sáng của môi trường để xem sự thay đổi của quang trở (chẳng hạn bạn lấy bàn tay che ánh sáng chiếu trực tiếp vào quang trở chẳng hạn).

int quangtro = A5; //Thiết đặt chân analog đọc quang trở
void setup() {
  // Khởi tạo cộng Serial 9600
  Serial.begin(9600);
}

void loop() {
  int giatriQuangtro = analogRead(quangtro);// đọc giá trị quang trở
  
  Serial.println(giatriQuangtro); // Xuất giá trị ra Serial Monitor
}

Như thế nào là tối, như thế nào là sáng, mỗi nơi có mức sáng tối khác nhau, vậy có thay đổi được không?

Bây giờ, bạn có thể thấy rằng, khi rê tay lại gần quang trở (giảm cường độ ánh sáng chiều vào) thì hiệu điện thế khá nhỏ ⇒ giá trị đọc được khoảng cỡ vài trăm. Bây giờ ta sẽ dùng biến trở để xây dựng một mức (ta có thể thay đổi được) và nếu giá trị của quang trở bé hơn mức này thì đèn sáng và ngược lại thì đèn tắt. Bạn hãy lắp mạch như sau:

  • Đèn led được nối với chân digital 2
  • Biến trở được nối tới chân analog 4

Bây giờ bạn upload đoạn code sau và điều chỉnh biến trở để đèn LED sáng hoặc tắt

int quangtro = A5; //Thiết đặt chân analog đọc quang trở
int bientro = A4; // Thiết đặt chân analog đọc biến trở
int led = 2;// Thiết đặt chân digital là đèn led
void setup() {
  // Khởi tạo cộng Serial 9600
  Serial.begin(9600);
  //pinMode
  pinMode(led,OUTPUT);
}

void loop() {
  int giatriQuangtro = analogRead(quangtro);// đọc giá trị quang trở
  int giatriBientro = analogRead(bientro);// đọc giá trị biến trở
  
  // Nếu giá trị quang trở <= giá trị biến trở thì bật đèn
  if (giatriQuangtro <= giatriBientro) {
    digitalWrite(led,HIGH);
  } else {
    digitalWrite(led,LOW);
  }
  // Xuất giá trị ra Serial Monitor
  Serial.print("Quang tro ");
  Serial.print(giatriQuangtro);
  Serial.print(", bien tro ");
  Serial.print(giatriBientro);
  Serial.print(" => ");
  // Dòng nay tương đương đoạn code sau
  /*
    if (giatriQuangtro <= giatriBientro) {
      Serial.println("Sang");
    } else {
      Serial.println("Tat");
    }
  */
  Serial.println((giatriQuangtro <= giatriBientro) ? "Sang" : "Tat"); 
  
} 

Hehe, thử làm như giống video của tớ xem hehe

Lời kết

Bạn hãy hàn mạch và ứng dụng mạch cảm biến ánh sáng trên xe dò đường thử xem. Sắp tới tớ sẽ có bài hướng dẫn về xe dò đường bằng cảm biến ánh sáng, các bạn đón đọc nhé!

lên
33 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
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ả

Ra mắt thư viện iNut cho Arduino, điều khiển từ xa qua Internet bằng mạch iNut cảm biến

Bạn muốn làm thiết bị điện điều khiển từ xa, quản lý hệ thống cảm biến nhà vườn, nhà kính của mình qua Internet? Hay bạn muốn làm các startup liên quan đến nông nghiệp thông minh, nhà máy thông minh hay thành phố thông minh mà không biết bắt đầu từ đâu? Và đây, iNut Platform chính là giải pháp dành cho bạn. Qua bài viết này này, thư viện iNut cho Arduino sẽ giúp bạn thực hiện hóa vấn đề này, cùng khám phá nhé.

Nếu bạn đã từng làm qua sóng bluetooth với thư viện SerialCommand thì bạn sẽ thấy cực kỳ quen thuộc khi sử dụng thư viện iNut này!

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

Code Arduino trên MÂY, bạn có muốn thử hay không?

Từ trước đến giờ, mỗi khi muốn lập trình một bé Arduino, bạn cần phải chuẩn bị driver cho Arduino (hiển nhiên buộc phải có, vì phải giao tiếp với thiết bị ngoại vi là mạch Arduino) và phần mềm lập trình Arduino IDE. Và khi bạn muốn chia sẻ code của mình cho bạn của mình thì cách đơn giản nhất là gửi file sketch cho họ, hoặc nếu cao cấp hơn là sử dụng github hoặc bitbucket (tất nhiên là phải include các thư viện bên thứ ba nếu có). Vậy vấn đề đặt ra trong ngày hôm nay là, liệu có cách nào để có thể chia sẻ sketch của mình với bạn bè và lớn hơn nữa là với cộng đồng Arduino trên thế giới (nói chung) và Việt Nam (nói riêng) hay không?

Và mình đã tìm ra câu trả lời, và không những thế, câu trả lời còn vượt ra ngoài sức mong đợi của chúng ta.

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