Как-то решил создать автоматическое освещение в туалете, надоело постоянно включать/выключать свет.
Что нам для этого понадобится?
Сразу хочу пояснить, датчик движения используется HC-SR501. Сам по себе он представляет законченное устройство, которое на выходе выдает логическую единицу если кто-то движется и ноль если движения нет. У себя на плате датчик имеет два переменных резистора: один регулирует частоту срабатывания а другой дальность срабатывания.На рисунке 1 показан сам датчик.
Рисунок 1 — Внешний вид датчика HC-SR50.
Режим работы
Режим работы модуля задается перемычкой.
Всего два режима — режим H и режим L. Выбирается перемычкой.
Режим H — в этом режиме при срабатывании датчика несколько раз подряд на его выходе (OUT) остается высокий логический уровень.
Режим L — в этом режиме на выходе при каждом срабатывании датчика появляется отдельный импульс.
Правда на моей версии датчика перемычка припаяна не была, а место под нее было рисунок 2.
Рисунок 2 — Вид сзади датчика движения, красным цветом показано где должна быть перемычка.
Технические характеристики
Напряжение питания: 4,5В — 20В
Ток потребления: <60uA
Напряжение на выходе Высокие и низкие уровни в 3.3V TTL логике
Дистанция обнаружения: 3 — 7м (регулируется)
Угол детектирования: 120°-140°
Длительность импульса при обнаружении: 5 — 200сек. (регулируется)
Время блокировки до следующего замера: 2,5сек.
Рабочая температура: -20 — +80°C
Режим работы: L — одиночный захват, H — повторяемые измерения.
Датчик можно было использовать сам по себе, но для последующего ему нужно около 3-4 секунд для «отдыха» т.е если я нахожусь в помещении то мне придется ждать пока он подумает и сработает. Для того что-бы убрать этот недостаток я решил использовать в связке с датчиком МК ATtina13a.
Как прошить микроконтроллер?
Так как у меня не было программатора, я программировал лишь ардуинку, возник вопрос как можно это сделать. Порывшись в интернете я нашел статью о том как залить ардуиновский скетч в Attiny13.
Прошиваем Attiny13 с помощью Ардуино.
Правда когда я заменил файлы в папке hardware, у меня в среде разработки ардуино в разделе Сервис -> Плата пропали все платы и появились микроконтроллеры. И когда я попытался запрограммировать у меня среда начала ругаться. Тогда я решил залить прошивку в МК при помощи программы AVR Burn-O-Mat т.к. у нее графический удобный интерфейс.
Как прошить мк при помощи AVR Burn-O-Mat читаем тут.
Как получить .hex файл из Ардуино читаем тут
При срабатывании датчика движения будет подаваться единица на релейный модуль который будет включать свет, на рисунке 3 сам модуль.
Рисунок 3 — Релейный модуль
После того как мы научились прошивать МК из среды Ардуино, перейдем к написанию прошивки к датчику движения.
Код программы:
int led = 3;
int sensor = 4;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
pinMode(sensor, INPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, LOW);
if (digitalRead(sensor)) {
digitalWrite(led, HIGH);
delay(30000);
if (digitalRead(sensor)) {
digitalWrite(led, HIGH);
delay(15000);
}
delay(10000);
}
else
digitalWrite(led, LOW);
}
Путем регулировки переменным резистором времени срабатывания можно добиться такого состояния когда время опроса датчика движения не будет совпадать с временем простоя датчика.
Ниже привожу фотки устройства.
Эксперименты со светодиодом:
Подключил релейный модуль:
Прикрепленные файлы:
- svet.ino (1 Кб)