Реклама ⓘ
Главная » Arduino
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Автоматическое освещение AtMega328 (PIR)

Была просьба сделать автоматическое включение и выключение двух светильников и вот после выполнения работы решил залить тему, вдруг пригодится кому. Суть в чем: Есть небольшая комната формой "Г", проходят через нее часто, но не задерживаясь. Освещается она 2 настольными светильниками включенными в розетки. Необходимо сделать что бы при входе свет включался и горел пока человек находится внутри, после того как он вышел свет выключается, За углом находится второй светильник и не всегда нужно включать его. Думать будет AtMega328, статья для тех кто уже работал с ней и рассматриваться ее подключение (необходимая обвязка) и сам процесс прошивки не будет. Код написан на языке processing с прошивкой через Arduino IDE.

Было решено не делать разрыв в проводах ламп, а сделать отдельную розетку. Реле устраняют разрыв в проводе питания и лампы включаются. Пины arduino боятся достаточно большой взаимоиндукции реле и для того что бы сберечь им жизнь, ставим обратные диоды. Реле подключаются не напрямую, а через маленького посредника, транзистор (NPN), который подключается через резистор. 

Собираем на макетке используя Arduino Uno. PIR датчики движения имеют 3 ноги, питание (+5, GND) и цифровой. При движении на цифровую ногу подается HIGH (длину сигнала можно регулировать подстроечным резистором). 2 ноги подключаем к Arduino от датчиков. 

Переходим к схеме. Вся схема разделена на 2 узла: узел ключей и узел релюшек. 

Сам узел ключей выглядит так.

С AtMeg'и берем питание и 2 цифровой выхода. При подачи на 2 цифровых выхода HIGH транзисторы проводят GND на узел реле..

Узел реле.

При срабатывании реле, разрыв в сетевом проводе нейтрализуется и светильник включается.

ПП и её чучело. 

Ну и результат.

Узел Реле был спрятан в розетку для большей компактности. 

/*Black, Alehin, 2016.*/

const uint64_t time1_1;
const uint64_t time2_1;
const uint64_t time3_1;
const uint64_t time1_2;
const uint64_t time2_2;
const uint64_t time3_2;

void setup() {
  Serial.begin(9600);
  pinMode(4, INPUT);   //PIR 1
  pinMode(5, INPUT);   //PIR 2
  pinMode(2, OUTPUT);  //relay 1
  pinMode(3, OUTPUT);  //relay 2
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);

}
void loop()
{
  if (digitalRead(4) == HIGH) //засекаем время с начала срабатывания PIR 1
    {digitalWrite(2, HIGH);
  time1_1 = millis();}  
  if (digitalRead(5) == HIGH) //засекаем время с начала срабатывания PIR 2
    {digitalWrite(3, HIGH);
  time1_2 = millis();}  
  

  if (digitalRead(4) == LOW) //включаем relay 1 на 30 секунд
  { time2_1 = millis();
    time3_1 = time2_1 - time1_1;
    if (time3_1 >= 30000)
    { digitalWrite(2, LOW);}
  }
  if (digitalRead(5) == LOW) //включаем relay 2 на 30 секунд
  { time2_2 = millis();
    time3_2 = time2_2 - time1_2;
    if (time3_2 >= 30000)
    { digitalWrite(3, LOW);}
  } 
}

 

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
МК AVR 8-бит
ATmega328
1 Поиск в магазине ОтронВ блокнот
Q Биполярный транзистор
2N2222
2 Поиск в магазине ОтронВ блокнот
D Выпрямительный диод
1N4004
2 Поиск в магазине ОтронВ блокнот
R Резистор
10 кОм
2 Поиск в магазине ОтронВ блокнот
K Реле5 вольтовое2 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Теги:

Опубликована: Изменена: 04.06.2016 0 1
Я собрал 0 2
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 3 Проголосовало: 2 чел.

Комментарии (17) | Я собрал (0) | Подписаться

0
Роман #
А только PIR-датчиками обойтись нельзя было? Или критические те несколько сеунд паузы между соседними срабатываниями.
Ответить
0

[Автор]
inhotep96 #
Вы имеете в виду без AtMega, используя только одни датчики? При обнаружении движения да, релюхи включались бы, но получилось бы так, что пропало движение, свет потух, приходится двинуться, что бы включить его. А если ты сидишь и паяешь, или стоишь боком и чай пьешь, частые мерцания включения/отключения. С логикой можно об этом не париться, если в течении 30 секунд движения не было, тогда точно в комнате пусто.
Ответить
0
Шамиль #
Так в ПИР датчике есть два подстроечных резистора и джампер. Один подстроечный отвечает за время удержания логической единицы на выходе после обнаружения движения, там чуть ли не до 10 минут можно выставить. А так же настроить джампером чтобы отсчет времени начинался после отсутствия движения. Можно обойтись и без МК.
Ответить
+3
si4karuk #
Два датчика, два транзистора, два реле и БП, Это понятно. А НАФИГ тут та самая ардуина?
Или вы псих или я... Что то тут явно не так.
Ответить
-2
ProSpekT #
А задержки в под минуты между срабатываетесь он как организовал бы? После последнего движения пол минуты до следующего, если его не было тогда выключается, а если ты сидишь за столом и тебе приходится руку вверх подымать что бы он не потух, а еще это частое включение и отключение (если без логики МК), давить на мозг будет.
Ответить
+1
Vitemk #
Я написал ниже как. А если так уж хочется контроллер, то хватило бы мелкого МК, какой-нибудь attiny. Ставить Atmega, да ещё в виде ардуины, слишком расточительно.
Ответить
0

[Автор]
inhotep96 #
При чем тут Arduino. Используется чистая AtMega. На макетке при сборе и отладке использовалась Arduino, но сам проект конечный на одной AtMega, и само собой что ее можно заменить аналогом поменьше. У меня этого аналога нет, зато есть пак AtMeg, их и использовал, или мне стоило не статью под проект делать а наоборот, какие претензии то)
Ответить
+2
Vitemk #
По вашей статье не понятно, что используется только Atmega. А вот статью с не рациональным использованием ресурсов, лучше вообще не стоило делать.
Ответить
0

[Автор]
inhotep96 #
В статье не раз упоминается про AtMeg'у, и описано что собираем для теста на Arduino, название статьи не с Arduino, в списке материалов не Arduino, в введении не Arduino, везде AtMega. Читать нужно не через строчку. На счет подстроечного резистора на датчике могли бы не упоминать, поскольку это тоже описано в статье, осталось лишь читать внимательнее. А о нерациональном использовании ресурсов не вы мне будете говорить) Устройство работает и выполняет свой функционал полностью, если вы бы сделали это на транзисторах, то делайте на здоровье, зачем статью своими комментариями засыпать. Я вижу вас так не устраивает это, что вы не упустите шанса выделить это.
Отредактирован 04.06.2016 14:42
Ответить
0
Vitemk #
Atmega входит в ардуину. И по статье сложно понять, что использовалась отдельная atmega.
Да про подстроечный резистор не заметил. Но тогда тем более, зачем нужен МК, раз вы о нем знали? Время устанавливается в интервале 5-200 сек. Явно больше чем вы установили в прошивке.
То что устройство работает, это хорошо.Но пускай оно работало бы и никто об этом не знал. Но вы написали статью, её будут читать и повторять новички. Хотя повторять её не следует,я уже писал почему.
Отредактирован 04.06.2016 14:45
Ответить
0

[Автор]
inhotep96 #
Благодарю за ваш отзыв, в следующий раз я обязательно учту конкретно ваши пожелания. Предлагаю на этом нашу дискуссию окончить) претензий нет, вопрос исчерпан
Ответить
0
Vitemk #
Да пора закончить. Но это не только мои пожелания, тут многие так считают.
Ответить
0

[Автор]
inhotep96 #
Как скажете.
Ответить
0

[Автор]
inhotep96 #
Использовалась AtMega328 для того, что бы следить за пройденным временем, между последним обнаруженным движением и последующим. Да и используя AtMeg'у можно легко программно менять интервал времени ожидания до последующего движения.
Ответить
0
BARS_ #
Да чего уж мелочиться, надо было уже одноплатный ПК ставить, а то один МК как-то несолидно для такого проекта. Я делал ровно тоже самое, НО у меня была плата PIR датчика, к ее выходу подключены пара транзисторов (биполяр + MOSFET) и кондер. Движение произошло, кондер зарядился и пока он заряжен свет горит. В итоге каждое движение его подзаряжало и время до выключения сбрасывалось. Сам датчик был настроен на минимальное время удержания импульса на выходе. Надо изменить время - меняй кондер. Куда быстрее и проще, чем лезть с программатором. Плюс там был фоторезистор и LM358 во включении компаратора. Когда было светло, с платы датчика снималось напряжение и он не работал. При этом настройка производилась прямо на месте установки обычными подстроечниками. Подключить в моем варианте второй датчик для гашения вообще не проблема. Если ходят только в одну сторону - это один транзистор, если в обе - одна микруха логики. А если уж так хотелось использовать МК, то для этого есть tiny на 8 ног, а не mega328, которая стоит дороже всей остальной комплектухи вместе взятой и используется на 0,0001% своих возможностей.
Ответить
0
1йНеизвестный #
Автору осталось прифигачить монитор
Ответить
0
Владимир #
Собрал без ардуино, все работает как надо.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Raspberry Pi 2
Raspberry Pi 2
UNI-T UT-61A Конструктор для сборки: предусилитель на лампе 6N3
вверх