Search Code

TEMT6000 포토트랜지스터 주변광 센서를 Arduino와 함께 사용하기

TEMT6000 포토트랜지스터 주변광 센서를 Arduino와 함께 사용하기

이 튜토리얼에서는 Arduino와 함께 TEMT6000 주변 광 센서를 사용하는 방법을 살펴보겠습니다. 이 센서는 주변 광의 강도를 측정할 수 있게 해주며, 조명 조건에 따라 화면 밝기를 조정하는 것과 같은 다양한 응용 분야에서 사용할 수 있습니다. 이 가이드가 끝나면 조도 값을 읽고 시리얼 모니터에 표시하는 작동 예제를 갖게 될 것입니다.

TEMT6000 센서는 포토트랜지스터로 작동하며, 감지하는 빛의 양에 해당하는 전압을 출력합니다. 이 전압은 Arduino의 아날로그 입력 핀으로 쉽게 읽을 수 있어, 이를 밀리볼트 또는 볼트 단위의 의미 있는 값으로 변환할 수 있습니다. 코드와 배선에 대한 자세한 설명은 비디오(00:00 부분)에서 확인할 수 있습니다.

하드웨어 설명

이 프로젝트의 주요 구성 요소는 TEMT6000 센서와 Arduino 보드입니다. TEMT6000은 포토트랜지스터를 사용하여 조도 수준을 감지하는 작고 효율적인 주변 광 센서입니다. V(전압), G(접지), S(신호)의 세 개의 핀이 있습니다. 신호 핀은 빛의 강도에 따라 변하는 전압을 출력하며, Arduino는 이를 아날로그 입력을 통해 읽습니다.

Arduino는 TEMT6000 센서의 출력을 읽는 마이크로컨트롤러 역할을 합니다. 이 데이터를 처리하고 감지된 조도 수준에 따라 작업을 수행하도록 프로그래밍할 수 있습니다. 이로 인해 이 센서는 단순한 광 감지부터 스마트 기기의 자동 조명 조정과 같은 더 복잡한 시스템까지 다양한 응용 분야에 적합합니다.

데이터시트 세부 정보

제조업체 Vishay
부품 번호 TEMT6000
로직/IO 전압 3.0 – 5.5 V
공급 전압 5 V
출력 전류 최대 20 mA
최대 감도 570 nm
전력 소비 100 mW
접합 온도 100 °C
패키지 4 x 2 x 1.05 mm
참고 사항 / 변형 NPN 포토트랜지스터

 

  • 센서에 안정적인 5V 전원을 공급하세요.
  • 신호 핀을 접지에 연결할 때 10kΩ 저항을 사용하여 올바르게 작동시키세요.
  • 포화를 방지하기 위해 센서를 직사광선으로부터 멀리 두세요.
  • 고온 환경에서 사용하는 경우 방열 처리를 고려하세요.
  • 플로팅 입력을 방지하기 위해 배선이 올바른지 확인하세요.
  • 필요에 따라 특정 응용 분야에 맞게 판독값을 보정하세요.

배선 지침

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

TEMT6000 센서를 Arduino에 배선하려면 먼저 센서의 V 핀을 Arduino의 5V 핀에 연결하세요. 다음으로 센서의 G 핀을 Arduino의 GND 핀 중 하나에 연결하여 접지 연결을 만드세요. 마지막으로 신호 핀인 S 핀을 Arduino의 아날로그 입력 핀 A0에 연결하세요. 이 설정을 통해 Arduino는 주변 조도 수준에 따라 센서의 전압 출력을 읽을 수 있습니다.

모든 연결이 안전한지 확인하는 것이 중요합니다. 느슨한 배선은 부정확한 판독값을 초래할 수 있습니다. 브레드보드를 사용하는 경우 설명된 대로 센서가 Arduino에 올바르게 배선되었는지 연결을 다시 확인하세요.

코드 예제 및 설명

코드에서는 먼저 #define light A0을 사용하여 광 센서의 입력 핀을 정의합니다. 이는 A0 핀에 연결된 TEMT6000 센서의 신호를 읽도록 Arduino를 설정합니다.

#define light A0 // 입력 핀 정의

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

setup() 함수에서는 9600의 보드 레이트로 시리얼 통신을 초기화하여 데이터를 시리얼 모니터로 보낼 수 있게 합니다.

loop() 함수에서는 analogRead(light)를 사용하여 조도 수준을 읽고 해당 값을 밀리볼트로 매핑합니다:

void loop() {
   int Lvalue = analogRead(light); // 조도 값 읽기
   int mVolt = map(Lvalue, 0, 1023, 0, 5000); // 아날로그 판독값을 5000mV로 매핑
   float volt = (double)mVolt / 1000; // 밀리볼트를 볼트로 변환

이 코드는 원시 아날로그 판독값을 가져와 0~5000밀리볼트 범위로 매핑한 다음, 더 쉽게 해석할 수 있도록 볼트로 변환합니다. 이는 센서가 감지한 조도 수준을 이해하는 데 중요합니다.

마지막으로 값을 시리얼 모니터에 출력합니다:

  Serial.print(mVolt); // 밀리볼트 출력
  Serial.print("mV ");
  Serial.print(volt, 3); // 소수점 3자리로 볼트 출력
  Serial.println("V ");
  delay(1000); // 1000밀리초 대기
}

이 코드 부분은 매초 밀리볼트 및 볼트 판독값을 시리얼 모니터에 표시합니다. 이를 통해 센서를 빛에 노출하거나 가릴 때 조도 수준이 실시간으로 어떻게 변하는지 확인할 수 있습니다.

시연 / 예상 결과

배선이 완료되고 코드가 Arduino에 업로드되면 시리얼 모니터에서 밀리볼트 및 볼트 단위의 조도 판독값을 볼 수 있습니다. 예를 들어, 밝은 빛에서는 약 2500mV의 값을 볼 수 있고, 어두운 곳에서는 값이 크게 떨어질 수 있습니다(2000mV까지 낮아질 수 있음). 센서를 가리거나 조명을 끄면 판독값이 거의 즉시 이러한 변화를 반영하여 센서의 반응성을 보여줍니다(비디오 02:30 부분).

이미지

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
언어: 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

}

필요할 수 있는 것들

자원 및 참고자료

파일📁

파일이 없습니다.