Портал для радиолюбителей
   Arduino UNO урок 8 - Ночник
    Главная -> Статьи -> Проекты на Arduino -> Arduino UNO урок 8 - Ночник


<< Назад в раздел   Распечатать Дата добавления: 2011-10-25 | Просмотров: 10615

Для нашего следующего проекта мы будем использовать фоторезистор. А рассмотрим мы реализацию ночника в спальню, который будет автоматически включаться когда темно и выключаться когда становится светло.

Сопротивление фоторезистора зависит от света, попадающего на него. Используя фоторезистор в связке с обычным резистором 4.7 кОм, мы получаем делитель напряжения, в котором напряжение проходящее через фоторезистор, изменяется, в зависимости от уровня освещенности.


Напряжение с делителя, мы подаем на вход АЦП Arduino. Там мы сравниваем полученное значение с определенным порогом и включаем или выключаем светильник.

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

Принципиальная схема делителя показана ниже. Когда освещенность увеличивается, сопротивление фоторезистора падает и соответственно на выходе делителя (и входе АЦП) напряжение увеличивается. Когда освещенность падает все наоборот.

Делитель напряжения

На фото ниже, показана собранная схема на макетной плате. Напряжения 0В и 5В берутся с Arduino. Ножка А0 используется как вход АЦП.

Ночник на макетной плате

Ниже показан скетч Arduino. В данном уроке мы просто включаем и выключаем LED, который встроен в плату Arduino. Более яркий LED-светодиод, вы можете подключить к ноге 13 (через резистор ~220 Ом). Если будете подключать более мощную нагрузку, такую как лампу накаливания, то ее следует подключать через реле или тиристор.

В коде программы есть закомментированные участки, они служат для отладки. Можно будет контролировать значение АЦП (от 0 до 1024). Также, необходимо в коде изменить значение 500 (порог включения и выключения) на то, которое вы подберете опытным путем, изменяя освещенность.

/*
** Ночник
**
** www.hobbytronics.co.uk
*/

int sensorPin = A0;            // устанавливаем входную ногу для АЦП
unsigned int sensorValue = 0;  // цифровое значение фоторезистора

void setup()
{
  pinMode(13, OUTPUT);
  Serial.begin(9600);        // старт последовательного вывода данных (для тестирования)
}

void loop()
{
  sensorValue = analogRead(sensorPin);  // считываем значение с фоторезистора
  if(sensorValue<500) digitalWrite(13, HIGH);   // включаем
  else digitalWrite(13, LOW);   // выключаем
  
  // Для отладки раскомментируйте нижеследующие строки
  //Serial.print(sensorValue, DEC);     // вывод данных с фоторезистора (0-1024)
  //Serial.println("");                 // возврат каретки  
  //delay(500);  
}

Оригинал статьи на английском языке (перевод Колтыков А.В.)


Добавил:  Павел (Admin)  
Автор:  Неизвестно 

Вас может заинтересовать:

  1. Инфракрасный датчик движения
  2. Командная оболочка Bitlash на Arduino
  3. Arduino UNO урок 6 - Энкодер
  4. Цифровой барометр (датчик атмосферного давления)
  5. Запись/чтение на SD-карту


    © PavKo, 2007-2018   Обратная связь   Ссылки   Яндекс.Метрика