Хичээл 26 Фоторезистор

Энэхүү хичээлээр бид фотоэсэргүүцэл ашиглан орчны гэрэлтүүлэг хэр байгаагаас хамаараад асаж, унтардаг гэрэл хийх бөгөөд үр дүнд нь бид фотоэсэргүүцэл хэрхэн ажилладаг түүнийг яаж ашиглах талаар мэдлэгтэй болох юм.

Хэрэглэгдэхүүн:

  1. Ардиуно 1ш
  2. Туршилтын хавтан 1ш
  3. Лед гэрэл 8ш
  4. 220 ом эсэргүүцэл 8ш
  5. 1к ом эсэргүүцэл 1ш
  6. 74HC595 IC 1ш
  7. Фоторезистор 1ш
  8. М-М утас 16ш

Фотоэсэргүүцэл гэж юу вэ?

Фоторезистор

Фотоэсэргүүцэл нь түүн дээр туссан гэрлийн хэмжээнээс хамаарч эсэргүүцэл нь өөрчилдөг резистор юм. Энэ хагас дамжуулагчийн фото дамжуулалт дээр үндэслэдэг. Өөрөөр хэлбэл хагас дамжуулагчийг мөргөх гэрлийн фотонуудын энерги нь электронуудыг урсгаж, эсэргүүцлийг бууруулдаг. Харанхуйд энэ фотоэсэргүүцэл нь ойролцоогоор 500 кОм эсэргүүцэлтэй байдаг бөгөөд тод гэрэлд эсэргүүцэл нь ойролцоогоор 10 кОм хүртэл буурдаг. Фото эсэргүүцэл нь маш жижиг, хэрэглэхэд маш хялбар байдаг бөгөөд түгээмэл ашигладдаг мэдрэгч юм.

Фоторезистор бүтэц

Зарчмын схем

Зарчмын схем
Зарчмын схем

Программ

Программын гол зорилго нь фотоэсэргүүцлийн эсэргүүцлийн хэмжээнээс хамааран лед гэрлүүд дарааллан асах юм. Өөрөөр хэлвэл харанхуй болох үед лед гэрэлнүүд асаж гэрэлтэй байх үед лед ггэрэлнүүд унтардаг болгох юм. Доорх кодыг хуулаад туршиж үзээрэй. Ямар үр дүн гарч байгааг сайтар ажиглан программыг хөжгүүлэн сайжруулаарай.

int lightPin = 0;
int latchPin = 11;
int clockPin = 9;
int dataPin = 12;

int leds = 0;

void setup() 
{
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);  
  pinMode(clockPin, OUTPUT);
}
void updateShiftRegister()
{
   digitalWrite(latchPin, LOW);
   shiftOut(dataPin, clockPin, LSBFIRST, leds);
   digitalWrite(latchPin, HIGH);
}
void loop() 
{
  int reading  = analogRead(lightPin);
  int numLEDSLit = reading / 57;  //1023 / 9 / 2
  if (numLEDSLit > 8) numLEDSLit = 8;
  leds = 0;   // no LEDs lit to start
  for (int i = 0; i < numLEDSLit; i++)
  {
    leds = leds + (1 << i);  // sets the i'th bit
  }
  updateShiftRegister();
}

Бодит зураг