Думаю, есть люди которым несколько неудобно постоянно подходить к лампе и включать свет, отчего есть охота заставить всё лампу включаться самостоятельно. Да, есть «умные» розетки, которые управляются по Wi-Fi, есть более простые, на которых можно настроить время срабатывания, но, конечно же, можно всегда купить диммер и не особо не мучаться. Но это всё можно сделать своими руками (кроме Wi-Fi-розетки), хоть этот вариант для, например, светодиодных лент, так как при управлении переменкой будут некоторые ньюансы, в лице вышеупомянутого диммера. В нашем же случае яркость в зависимости от окружающего освещения будет плавно меняться.
Необходимые детали
1. Arduino, в данном случае – Nano, можно что-нибудь мельче, например Micro
2. Светочувствительный элемент, здесь — резистор (18 КОм) и фоторезистор (у меня стоит СФ-2 6А), соединённый последовательно. Всё это будет работать практически как подстроечный резистор.
3. MOSFET-транзистор IRF3205, лучше слабее, 55 ампер – это чересчур много (если потребляемый ток небольшой, то и особо мощный транзистор не требуется)
4. Само собой, провода. Тонкий провод нужен для отведения «датчика» ближе к окну, тот, что толще подключим к блоку питания лампы и к Ардуинке (да и сам модуль необязательно на толстый провод вешать, всё равно мало потребляет)
Сборка. Шаг 1
Работу этого своеобразного датчика освещённости надо по-хорошему проверить, ибо я пытался сделать всё максимально дешевле и проще, как у меня выходило.
Чтобы его сделать, нужен резистор и фоторезистор. Соединяем их последовательно, к началу и концу будут подсоединены выводы 5V и GND, центральный — к заданному аналоговому контакту в прошивке, его номер меняется.
Если есть сомнения, что такой датчик не очень-то и работает, можно его проверить, используя код ниже и монитор порта.
Код для проверки, если возникли сомнения:
#define potent_pin 0 // Контакт средней ноги, 0 меняется на любой другой аналоговый
int val;
void setup() {
Serial.begin(9600); //Включаем вывод в порт на 9600 бод
}
void loop() {
val = analogRead(potent_pin);
val = map(val, 0, 1023, 0, 100); //100 можно заменить на любое значение до 1023 включительно
val = constrain (val, 0, 100); //100 меняем на значение, заданное выше, если было изменено
Serial.println (val); //вывод в монитор порта
delay (30); //задержка
}
Если значения на выходе меняются, в зависимости от освещённости, значит всё нормально
Сборка. Шаг 2
Отлично, датчик работает. Теперь время создать код для генерации ШИМ-сигнала для управления полевиком.
ВНИМАНИЕ. ШИМ на контроллёрах ATmega168/ATmega328 генерируется только на 3, 5, 6, 9, 10 и 11 цифровых выводах.
Код 2:
int pwm;
void setup() {
}
void loop() {
pwm = analogRead(0);
pwm = map(pwm, 1023, 0, 0, 255);
pwm = constrain(pwm, 0, 255);
analogWrite (3, pwm-255); // ШИМ на третий цифровой
}
Число 255 можно менять в диапазоне от 0 до 1023 включительно, причём менять это значение можно прямо «на ходу». Как мне показала практика, максимальное 255 — оптимальный вариант, если меньше — днём горит слишком ярко, если больше — слабее горит тогда, когда надо.
Сборка. Финал
На вывод 5V и GND паяем крайние контакты нашего резистора, на А0 ставим средний. Затвор полевого транзистора припаиваем к D3, исток к минусу питания от Ардуино и блока питания, светодиоды — минусом к стоку и плюсом питания к плюсу источника. Схематически это выглядит примерно так:
Полевой транзистор на радиатор ставить не обязательно, если, конечно, используется мощный, но в особо мощном смысла нет. Длинный же провод нужен был для отведения датчика в то место, куда не попадает сторонний свет, например за цветок или на улицу через окно и т. п. На плюс питания и сток полевого транзистора желательно поставить конденсатор, ибо, например, моя лента стала работать не очень-то и правильно. Ардуино можно питать не от USB или блока питания от телефона, а от блока питания ленты, подав напряжение 7-15 вольт на GND и VIN.
Корпус сделан из корпуса убитого блока питания, куда я и поместил блок питания ленты и Ардуино, с выпаянным разъёмом. Чуть-чуть не подошёл по размеру, но он и так постоянно был на изоленте.
Вот я закрыл датчик рукой:
А вот не держу руку над ним:
Где же это может пригодиться?
Эта конструкция может помочь при какой-либо тонкой работе, где нужна стабильная подсветка, например, если вы забыли включить свет, но лента включена. Так же это удобно использовать, если у вас где-либо есть рассада для дальнейшей посадки на грядку. Где же такое использовать, судить, конечно же, Вам.
P.S. Верно, мои руки кривые и я на схеме неправильно воткнул светодиод.
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
Источник: