Chuyên đề arduino – Giao tiếp quang trở với arduino

     Quang trở là một trong những cảm biến đơn giản và thường hay sử dụng trong cuộc sống. Linh kiện này thường được sử dụng ở các bóng đèn thông minh hoặc điều khiển đóng mở các thiết bị khác. Bài viết này các bạn sẽ cùng tôi tìm hiểu cách giao tiếp quảng trở với arduino. Các bạn sẽ nắm được nguyên lý hoạt động của biến trở. Từ đó có thể thực hiện được các ứng dụng giao tiếp với arduino.

 NỘI DUNG BÀI VIẾT 

  • Tìm hiểu về quang trở
  • Nguyên lý hoạt động của quang trở
  • Cách thiết kế phần cứng giao tiếp với arduino
  • Ứng dụng giao tiếp quang trở với arduino

1.  TÌM HIỂU VỀ QUANG TRỞ 

     Quang trở hay điện trở quang (LDR) có tên tiếng anh là Light-dependent resistor là linh kiện điện tử được sử dụng để nhận biết ánh sáng để thay đổi nội trở của linh kiện. Chính vì vậy, mục đích chính của quang trở là sử dụng để arduino nhận biết được lượng sáng và là điều kiện để điều khiển các thiết bị khác.

     Quang trở là linh kiện thay đổi điện trở, nên bản chất của nó là điện trở. Do đó, khi kết nối với bo arduino chúng ta cần phải cấp nguồn cho quang trở và đo điện áp rơi trên nó.

     Trên thị trường hiện nay, bạn có 2 lựa chọn để thực hiện đo lượng sáng. Cách thứ nhất là bạn sử dụng trực tiếp quang trở kết hợp với cầu phân áp. Với cách kết nối đơn giản này thì chúng ta kết nối chân của quang trở với mạch cầu phân áp mà  thôi.

Quang trở – cảm biến ánh sáng

     Cách thứ hai là sử dụng sẵn module tích hợp IC LM393. Khi sử dụng module tích hợp này thì chúng ta cần kết nối 3 chân bắt buộc. Chân thứ nhất là VCC đó là chân nguồn 5V. Chân GND kết nối với chân GND của nguồn. Chân D0 là chân tín hiệu để kết nối với arduino. Chân D0 chính là chân để arduino đọc dữ liệu từ quang trở.

Module quang trở

 2. NGUYÊN LÝ HOẠT ĐỘNG QUANG TRỞ 

     Quang trở được là bằng chất bán dẫn có trở kháng rất cao. Ở trong bóng tối, quang trở thường có điện trở lên vài MΩ. Còn khi có ánh sáng chiếu vào thì giá trị điện trở có thể giảm xuống mức một cho đến vài trăm Ω. 

     Nguyên lý hoạt động của quang trở dựa trên nguyên lý hiệu ứng quang điện trong một khối vật chất. Khi mà các photon có năng lượng đủ lớn đập vào, sẽ khiến cho các electron bật ra khỏi các phân tử và trở thành các electron tự do trong khối chất và từ chất bán dẫn chuyển thành dẫn điện. Mức độ dẫn điện của quang trở tùy thuộc vào phần lớn các photon được hấp thụ. 

     Khi ánh sáng chiếu vào quang trở, các electron sẽ được giải phóng và độ dẫn điện tăng lên. Tùy thuộc vào chất bán dẫn mà các quang trở sẽ có những mức dẫn điện khác nhau, phụ thuộc vào mức độ giải phóng photon.

 3. CÁCH THIẾT KẾ PHẦN CỨNG GIAO TIẾP VỚI ARDUINO

Để giao tiếp quang trở với arduino, chúng ta cần phải sử dụng cầu phân áp. Bởi bản chất của quang trở vẫn là điện trở, do đó điện áp đưa vào arduino sẽ dựa trên điện áp rơi trên điện trở.

     Các bạn có thể nhận thấy tín hiệu đưa vào cho arduino sẽ chính là điện áp trên điện trở R1. Điện trở R1 rất quan trọng, bởi nếu không có R1, khi có ánh sáng chiếu vào quang trở sẽ điện trở quang trở về 0 ohm. Điều này dẫn đến tình trạng ngắn mạch vì đang bị nối tắt giữa 5V với GND. Do đó, R1 luôn phải có trong mạch cầu phân áp này.

     Nguyên lý cơ bản của cầu phân áp này là khi có ánh sáng chiếu vào quang trở sẽ làm điện trở của quang trở giảm. Nghĩa là áp trên quang trở giảm, đồng nghĩa áp trên R1 tăng. Như vậy, tín hiệu đang đưa vào arduino có sự thay đổi. Từ sự thay đổi điện áp này sẽ phát hiện được có ánh sáng chiếu vào quang trở hay ko.

 4. ỨNG DỤNG GIAO TIẾP QUANG TRỞ VỚI ARDUINO 

     Viết chương trình sử dụng quang trở để điều khiển bật tắt bóng đèn led. Cụ thể, khi che ánh sáng thì chương trình bật bóng đèn led. Khi có ánh sáng chiếu đến quang trở thì bóng đèn led tắt đi.

     Linh kiện cần thiết

Linh kiện Số lượng
Bo arduino UNO 01
Quang trở 01
Điện trở 02

     Sơ đồ kết nối mạch

     Đoạn code chương trình

int quangtro = 0;
int giatri;

void setup()
{
  pinMode(A0, INPUT);
  pinMode(9, OUTPUT);
}

void loop()
{
  quangtro = analogRead(A0);
  giatri=map(quangtro,0,1023,0,255);
  analogWrite(9,255-giatri);
  delay(10); 
}

 

 

 

 

 

 


Categories:

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *