Подсветка лестницы
Вступление
По мотивам проекта автоматической подсветки лестницы с помощью Arduino, который, в свою очередь, создан по мотивам другого проекта, я дополнил и модернизировал схему и код и получил свой вариант. Это мой первый проект на Arduino, поэтому буду описывать всё "для чайников", т.е. что бы мне же было понятно, если позже захочу к этому вернуться.Цель проекта
Сделать красивую и функциональную подсветку под ступеньками лестницы на второй этаж в частном доме. В тёмное время суток должна загораться "дежурная" подсветка на первой и последней ступеньке, чтобы их было видно. Во время начала подъёма или спуска кого-либо по лестнице должна загораться подсветка всей лестницы. Также захотелось "весёлый" режим работы подсветки на случай праздника.Что требуется
Я использовал китайский аналог Arduino PRO Mini ATMEGA328P 5V 16MHZ в качестве центрального мозга.Датчики: фоторезистор для замера освещённости (у меня Photoresistor GL5516 LDR), два ультразвуковых дальномера для сигнализирования о том, что кто-то пошёл по лестнице (у меня Ultrasonic Module HC-SR04).
Питание всей системы будет осуществляться от источника 12 вольт. Так как половина всех элементов питаются от 5 вольт, в цепи будет осуществлён переход с 12 на 5 вольт с помощью линейного регулятора (у меня L7805CV TO-220 Voltage Regulator 5V) и трёх керамических конденсаторов (у меня два с маркирокой 334 - это 0,33 микрофарада; и один с маркировкой 104 - это 0,1 микрофарад).
В подсветке у меня нуждались 19 ступенек. Так выбранный контроллер не может дать столько цифровых выходов (для управления каждой светодиодной лентой), то система дополнена драйвером светодиодных лент (у меня это ST M5451B7 DIP-40 LED DISPLAY DRIVERS), к которому можно подключить до 34 лент, а управляется всё это двумя цифровыми выходами контроллера.
Все элементы собирались на макете постепенно по очереди. Весь этот процесс по частям я опишу ниже.
Подключение фоторезистрора
Фоторезистор имеет одинаковые ножки - полярность не важна. Одну ножку сразу подключаем к +5 вольт. Вторую ножку через резистор на 10 кОм подключаем к "земле" и эту же ножку подключаем к аналоговому входу контроллера (у меня это A0).Скетч в Arduino:
int led = 13; // Переменная с номером пина светодиода
int ldr = 0; // и фоторезистора
void setup()
{
pinMode(led, OUTPUT); //указываем, что светодиод - выход
Serial.begin(9600);
}
void loop()
{
// read the input on analog pin 0:
int sensorValue = analogRead(A0);
// print out the value you read:
Serial.println(sensorValue);
delay(100); // delay in between reads for stability
if (analogRead(ldr) < 500) digitalWrite(led, HIGH);
// если показатель освещенности меньше 500, включаем светодиод
else digitalWrite(led, LOW); // иначе выключаем
}
Эта программка позволяет зажигать зелёный светодиод, который уже есть на контроллере, когда уровень освещённости падает меньше некого значения 500. Значения освещённости также посылаются на компьютер (просмотр в среде программирования Arduino: Сервис/Монитор порта).Схема подключения. На схеме не обозначен программатор (у меня это PL2303HX USB To RS232 TTL Auto Converter Adapter), к которому выведены проводки с контроллера на схеме.
Подключение ультразвукового дальномера
На дальномере HC-SR04 четыре контакта. Grd и Vcc подключаем к 5 вольтам с контроллера (к минусу и плюсу соответственно). Оставшиеся два контакта (Trig и Echo) к цифровым входам контроллера (у меня это Echo - 13, Trig - 12). Есть небольшая библиотека для работы с этим сенсором. Но она уже немного устарела. Копируем содержимое архива в директорию со скетчами и библиотекми (у меня получилось директория Ultrasonic в /home/oleg/sketchbook/libraries). В этой директории в файлах Ultrasonic.cpp и Ultrasonic.h заменяем
#include "WProgram.h"
на
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
Это позволит загружать разные версии библиотек в разных версиях среды разработки Arduino.Скетч для проверки работы ультразвукового сенсора (выводит на компьютер показания дальномера в сантиметрах):
#include <Ultrasonic.h>
Ultrasonic ultrasonic(12,13); // 12 Trig; 13 Echo
void setup(){
Serial.begin(9600);
}
void loop(){
// print out the value you read:
Serial.println(ultrasonic.Ranging(CM));
delay(100); // delay in between reads for stability
}
Подключение линейного регулятора
Линейный регулятор L7805CV имеет три ножки. Первая - в ход (у нас +12 вольт), вторая - "земля" (подключаем на шину, где будет питание 5 вольт), третья ножка - выход +5 вольт. До подключения +12 вольт соединим керамическим конденсатором (у меня с маркировкой 334 - 0,33 микрофарада) вход и землю. На "землю" и выход поставим два керамических конденсатора (тот же на 0,33 микрофарада и с маркировкой 104 - на 0,1 микрофарад).Продолжение следует...
С нетерпением жду подробного продолжения
ОтветитьУдалитьНа этой неделе выложу подробное пошаговое описание сборки первой версии на макетной плате
ОтветитьУдалитьДобрый день, Олег.
ОтветитьУдалитьЕсли имеете возможность можете ответить на пару вопросов, так как я только учусь и не все понятно.
1) Вы используете драйвер M54541 B7. В datasheet я увидел что его Output Sink Current 40 mA. А ведь для метра светодиодной ленты(примерная длина ступеньки) нужно примерно 400mA (4,8ВТ/12В=0,4А).Может я что-то не учел?
2) Как на 19 ступенек подключить RGB ленту с возможность ШИМ?нужен какой-то pwm multiplexer? И как на него подключить необходимую нагрузку?
Заранее спасибо.
1) Вы абсолютно верно рассчитали. На прямую к этому драйверу светодиодные ленты подключить не получится. Поэтом у меня будет третья часть. Я так же, как и вы осваиваю эту тему. Для повышения мощности в таких случаях применяют транзисторные сборки Дарлингтона ULN2803. Эта штука имеет несколько ножек, каждая из которых управляется низким током (как раз от нашего драйвера светодиодных лент) и выдаёт управление более мощной нагрузкой (до 500 мА - как раз укладывается в ваш рассчёт).
ОтветитьУдалить2) Я тоже задумывался о RGB лентах, но для себя решил, что не надо. А вообще, с RGB на сколько я понял, то же самое, что и с обычными лентами. Только драйвер M5451 будет одной ногой рулить одним цветом одной ленты, т.е. на 19 ступенек надо 19 * 3 / 35 = 2 таких драйвера и 19 * 3 / 8 = 8 штук ULN2803. Но можно пойти и другими путями - в интернете всякое встречается.