Saturday, January 17, 2026

LDR ашиглан гэрлийн хүчийг хэмжих

 

Оршил

Люксметр нь гэрэлтэлтийг (illuminance) болон гэрлийн цацралтыг SI нэгж болох люкс-ээр хэмждэг төхөөрөмж юм. Энэ нь тодорхой нэгж талбай дээр тусаж буй гэрлийн чадлын хэмжээг үр дүнтэйгээр хэмждэг боловч уг хэмжилт нь хүний нүд янз бүрийн долгионы уртад хэр мэдрэмтгий байдгийг харгалзан жинлэгддэг. Илүү энгийнээр тайлбарлавал, люксметр нь мэдрэгч дээр тусаж буй гэрэл хэр тод байгааг хэмждэг гэж ойлгож болно. Зах зээл дээрх бэлэн люксметрүүд ойролцоогоор 15 ам.доллараас эхлээд хэдэн зуун ам.долларын үнэтэй байдаг ч өөрөө хийж бүтээх нь хямд төдийгүй илүү сонирхолтой байдаг.

Гэрэл мэдрэгч

Люксметрийн гэрэл мэдрэгч нь фотодиод, фототранзистор зэрэг хэд хэдэн төрлийн мэдрэгч байж болох ч ашиглахад хамгийн хялбар, мөн хамгийн түгээмэл олддог нь фоторезистор буюу гэрлээс хамааралтай эсэргүүцэл (LDR) юм. Нэрнээс нь харахад LDR-ийн эсэргүүцэл нь түүн дээр тусаж буй гэрлийн хэмжээнээс хамаарч өөрчлөгдөнө. Хэрэв та LDR-ийн эсэргүүцлийг хэмжиж чадвал, мөн тухайн LDR-ийн шинж чанарыг мэддэг бол, түүн дээр тусаж буй люксийн хэмжээг тодорхойлох боломжтой.

Ерөнхийдөө гэрэл ихсэх тусам эсэргүүцэл багасдаг. Гэвч харамсалтай нь LDR-ийн эсэргүүцэл ба люксийн хоорондын хамаарал нь шулуун (шугаман) биш юм. Харин энэ нь экспоненциал хамааралтай байдаг тул тооцоход арай төвөгтэй. Гэсэн хэдий ч бага зэрэг хугацаа зарцуулж, хэд хэдэн хэмжилт хийснээр эсэргүүцэл ба люксийн хоорондын математик хамаарлыг тодорхойлж, түүнийг микроконтроллерт програмчилснаар энгийн бөгөөд хангалттай үр ашигтай люксметр хийх боломжтой.

Төслийн зорилго

Энэ төслөөр би танд LDR-ийн шинж чанарыг тодорхойлох, гэрэлтэлтийг тооцоолох программ бичих, мөн LDR ба Arduino-д суурилсан люксметр бүтээх үйл явцыг шат дараатайгаар танилцуулах болно.

Шаардлагатай тоног төхөөрөмж

  • 1 ширхэг гэрлээс хамааралтай эсэргүүцэл (LDR) — яг аль загвар байх нь хамаагүй, бүр эд ангийн дугаарыг нь мэдэх шаардлагагүй

  • 5 кОм эсэргүүцэл

  • Arduino

  • 2×16 LCD дэлгэцтэй шилд (LCD shield)

  • Breadboard (туршилтын плат)

  • Дижитал мультиметр (DMM)

  • Бэлэн (арилжааны) люксметр — LDR-ийг шинжлэх, тохируулахад ашиглана




#include <Wire.h>

#define LDR_PIN 0
#define MAX_ADC_READING 1023
#define ADC_REF_VOLTAGE 5.0
#define REF_RESISTANCE 5030 // measure this for best results
#define LUX_CALC_SCALAR 12518931 // from experiment
#define LUX_CALC_EXPONENT -1.405 // from experiment


void setup(void) {
Serial.begin(9600);
Serial.println(F("Light Sensor Test")); Serial.println("");
}


void loop(void) {
int ldrRawData;
float resistorVoltage, ldrVoltage;
float ldrResistance;
float ldrLux;

ldrRawData = analogRead(LDR_PIN);
resistorVoltage = (float)ldrRawData / MAX_ADC_READING * ADC_REF_VOLTAGE;

// voltage across the LDR is the 5V supply minus the 5k resistor voltage
ldrVoltage = ADC_REF_VOLTAGE - resistorVoltage;

ldrResistance = ldrVoltage / resistorVoltage * REF_RESISTANCE;
ldrLux = LUX_CALC_SCALAR * pow(ldrResistance, LUX_CALC_EXPONENT);

Serial.print("LDR Raw Data : "); Serial.println(ldrRawData);
Serial.print("LDR Voltage : "); Serial.print(ldrVoltage); Serial.println(" volts");
Serial.print("LDR Resistance : "); Serial.print(ldrResistance); Serial.println(" Ohms");
Serial.print("LDR Illuminance: "); Serial.print(ldrLux); Serial.println(" lux");

delay(1000);
}

No comments:

Post a Comment