Tìm kiếm mã

Sử dụng cảm biến ánh sáng môi trường Phototransistor TEMT6000 với Arduino

Sử dụng cảm biến ánh sáng môi trường Phototransistor TEMT6000 với Arduino

Trong hướng dẫn này, chúng ta sẽ khám phá cách sử dụng cảm biến ánh sáng xung quanh TEMT6000 với Arduino. Cảm biến này cho phép chúng ta đo cường độ ánh sáng xung quanh và có thể được sử dụng trong nhiều ứng dụng khác nhau, chẳng hạn như điều chỉnh độ sáng màn hình dựa trên điều kiện ánh sáng. Đến cuối hướng dẫn này, bạn sẽ có một ví dụ hoạt động đọc mức ánh sáng và hiển thị chúng trên màn hình nối tiếp.

Cảm biến TEMT6000 hoạt động như một phototransistor, xuất ra điện áp tương ứng với lượng ánh sáng mà nó phát hiện. Điện áp này có thể dễ dàng được đọc bởi các chân đầu vào analog của Arduino, cho phép chúng ta chuyển đổi nó thành các chỉ số có ý nghĩa bằng millivolt hoặc volt. Bạn có thể xem video để biết chi tiết về mã và cách đấu dây (trong video tại 00:00).

Phần cứng được giải thích

Các thành phần chính cho dự án này bao gồm cảm biến TEMT6000 và bo mạch Arduino. TEMT6000 là một cảm biến ánh sáng xung quanh nhỏ và hiệu quả sử dụng phototransistor để phát hiện mức ánh sáng. Nó có ba chân: V (điện áp), G (đất) và S (tín hiệu). Chân tín hiệu xuất ra điện áp thay đổi theo cường độ ánh sáng, mà Arduino đọc thông qua đầu vào analog của nó.

Arduino đóng vai trò là bộ vi điều khiển đọc đầu ra từ cảm biến TEMT6000. Nó xử lý dữ liệu này và có thể được lập trình để thực hiện các hành động dựa trên mức ánh sáng được phát hiện. Điều này làm cho cảm biến phù hợp với nhiều ứng dụng khác nhau, từ phát hiện ánh sáng đơn giản đến các hệ thống phức tạp hơn như điều chỉnh ánh sáng tự động trong các thiết bị thông minh.

Chi tiết từ bảng dữ liệu

Nhà sản xuất Vishay
Số bộ phận TEMT6000
Điện áp logic/IO 3.0 – 5.5 V
Điện áp cung cấp 5 V
Dòng điện đầu ra 20 mA tối đa
Độ nhạy đỉnh 570 nm
Công suất tiêu tán 100 mW
Nhiệt độ mối nối 100 °C
Đóng gói 4 x 2 x 1.05 mm
Ghi chú / biến thể Phototransistor NPN

 

  • Đảm bảo cảm biến được cấp nguồn ổn định 5V.
  • Sử dụng điện trở 10kΩ để kết nối chân tín hiệu với đất để hoạt động đúng.
  • Giữ cảm biến tránh ánh sáng mặt trời trực tiếp để tránh bão hòa.
  • Cân nhắc tản nhiệt nếu sử dụng trong môi trường nhiệt độ cao.
  • Kiểm tra đấu dây đúng cách để tránh đầu vào nổi.
  • Hiệu chỉnh các chỉ số cho các ứng dụng cụ thể khi cần thiết.

Hướng dẫn đấu dây

Arduino-wiring-for-TEMT6000-light-sensor
Using a TEMT6000 phototransistor ambient light sensor for Arduino
Using TEMT6000 Phototransistor Ambient Light Sensor for Arduino — Using a TEMT6000 phototransistor ambient light sensor for Arduino

Để đấu dây cảm biến TEMT6000 với Arduino, bắt đầu bằng cách kết nối chân V của cảm biến với chân 5V trên Arduino. Tiếp theo, kết nối chân G của cảm biến với một trong các chân GND trên Arduino để kết nối đất. Cuối cùng, kết nối chân S, là chân tín hiệu, với chân đầu vào analog A0 trên Arduino. Thiết lập này sẽ cho phép Arduino đọc điện áp đầu ra từ cảm biến dựa trên mức ánh sáng xung quanh.

Điều quan trọng là đảm bảo tất cả các kết nối được chắc chắn để tránh dây lỏng lẻo, có thể dẫn đến các chỉ số không chính xác. Nếu bạn đang sử dụng breadboard, hãy kiểm tra lại các kết nối để đảm bảo cảm biến được đấu dây đúng với Arduino như mô tả.

Ví dụ mã & hướng dẫn chi tiết

Trong mã, chúng ta bắt đầu bằng cách định nghĩa chân đầu vào cho cảm biến ánh sáng bằng #define light A0. Điều này thiết lập Arduino để đọc tín hiệu từ cảm biến TEMT6000 được kết nối với chân A0.

#define light A0 // định nghĩa chân đầu vào

void setup() {
  Serial.begin(9600);
}

Trong hàm setup(), chúng ta khởi tạo giao tiếp nối tiếp ở tốc độ baud 9600, cho phép chúng ta gửi dữ liệu đến màn hình nối tiếp.

Trong hàm loop(), chúng ta đọc mức ánh sáng bằng analogRead(light) và sau đó ánh xạ giá trị đó sang millivolt:

void loop() {
   int Lvalue = analogRead(light); // đọc ánh sáng
   int mVolt = map(Lvalue, 0, 1023, 0, 5000); // ánh xạ chỉ số analog sang 5000mV
   float volt = (double)mVolt / 1000; // chuyển đổi millivolt sang volt

Mã này lấy chỉ số analog thô, ánh xạ nó sang phạm vi 0 đến 5000 millivolt, và sau đó chuyển đổi nó sang volt để dễ diễn giải hơn. Điều này rất quan trọng để hiểu mức ánh sáng được phát hiện bởi cảm biến.

Cuối cùng, chúng ta in các giá trị ra màn hình nối tiếp:

  Serial.print(mVolt); // in millivolt
  Serial.print("mV ");
  Serial.print(volt, 3); // in volt với 3 chữ số thập phân
  Serial.println("V ");
  delay(1000); // chờ 1000 mili giây
}

Phần này của mã hiển thị các chỉ số millivolt và volt trên màn hình nối tiếp mỗi giây. Điều này cho phép bạn thấy mức ánh sáng thay đổi như thế nào trong thời gian thực khi bạn che hoặc để lộ cảm biến với ánh sáng.

Trình diễn / Điều gì sẽ xảy ra

Sau khi hoàn tất việc đấu dây và tải mã lên Arduino, bạn sẽ thấy các chỉ số mức ánh sáng bằng millivolt và volt trên màn hình nối tiếp. Ví dụ, trong ánh sáng mạnh, bạn có thể thấy các giá trị khoảng 2500 mV, trong khi trong bóng tối, các giá trị có thể giảm đáng kể (thấp tới 2000 mV). Nếu bạn che cảm biến hoặc tắt đèn, các chỉ số sẽ phản ánh những thay đổi này gần như ngay lập tức, chứng minh độ nhạy của cảm biến (trong video tại 02:30).

Hình ảnh

Using a TEMT6000 phototransistor ambient light sensor for Arduino
Using TEMT6000 Phototransistor Ambient Light Sensor for Arduino
TEMT6000-Ambient-Light-Sensor-Module
TEMT6000-Ambient-Light-Sensor-Module
Arduino-wiring-for-TEMT6000-light-sensor
Arduino-wiring-for-TEMT6000-light-sensor
106-Using the TEMT6000 phototransistor ambient light sensor for Arduino
Ngôn ngữ: C++
/*
 * This is an Arduino Sketch for the TEMT6000 Phototransistor Module
 * This code reads the voltage of a common collector configuration
 * and displays the voltage in volts.
 * V pin is connected to 5V
 * G pin is connected to ground GND
 * S pin is signal connected to A0 of Arduino
 * 
   Written by Ahmad Shamshiri for Robojax.com
 * on May 10, 2018 at 14:14 in Ajax, Ontario, Canada
 * This code is provided at http://robojax.com 
 * Watch a video instruction for this code: https://youtu.be/pxR6e-3XkIk
 */
#define light A0 // define input pin

void setup() {
  // TEMT6000 Robojax.com code
  Serial.begin(9600);
  
}

void loop() {
   // TEMT6000 Robojax.com code
  int Lvalue = analogRead(light);// read the light
  int mVolt = map(Lvalue,0, 1023, 0, 5000);// map analogue reading to 5000mV
  float volt =(double)mVolt/1000;// convert millivolt to volt

  Serial.print(mVolt);// print millivolt
  Serial.print( "mV ");
  Serial.print(volt,3);// print volts with 3 decimal places
  Serial.println( "V ");
  delay(1000);// wait for 1000 milliseconds
   // TEMT6000 Robojax.com code

}

Nghĩ bạn có thể cần

Tài nguyên & tài liệu tham khảo

Tập tin📁

Không có tệp nào khả dụng.