Автоматический свет на лестнице с помощью микроконтроллера AVR ATmega32

Общеизвестно, что достаточно большие потери электроэнергии в домах и офисных зданиях часто происходят на лестницах (лестничных пролетах). Утром, когда мы спешим на работу, мы включаем свет на лестнице и забываем его выключить – в результате он бесполезно горит продолжительное время. В этой статье мы рассмотрим схему на микроконтроллере ATmega32, работающую от батарейки, которая будет включать свет на лестнице только когда на ней кто-нибудь находится, что позволит существенно экономить электроэнергию.

Автоматический свет на лестнице с помощью микроконтроллера AVR ATmega32: внешний вид устройства

Общие принципы работы устройства

Схема работает при двух условиях – когда нет света (темно) в месте нахождения устройства и когда на лестнице присутствует человек. При выполнении этих двух условий микроконтроллер включает свет на лестнице. Эти два условия проверяются с помощью двух сенсоров – в качестве одного из них выступает фоторезистор, а в качестве второго – пассивный инфракрасный детектор движения. Фоторезистор определяет наличие света, а детектор движения – присутствие человека в радиусе его действия.

На представленном ниже рисунке слева представлен пример фоторезисторов, а справа – пример инфракрасного детектора движения. Детектор движения состоит из чувствительного инфракрасного приемника, который обнаруживает инфракрасные лучи в области его действия. И, поскольку любой живой организм (в том числе и человек) испускает инфракрасные лучи (поскольку выделяет тепло), то подобный детектор сможет определять присутствие человека по испускаемым им инфракрасным лучам.

Фоторезисторы и детектор движения

Как только в области действия детектора движения появляется человек, его сенсор улавливает изменение в инфракрасных лучах, вызванное появлением человека. Это изменение фильтруется электроникой детектора движения и в результате этого на его выходе формируется импульс продолжительностью 5 секунд (по умолчанию). Таким образом, как только в области действия детектора движения появляется человек, мы имеем импульс на его выходе продолжительностью 5 секунд, который можно обработать на микроконтроллере.

Детектор движения имеет две предустановки: первая – регулировка области действия сенсора и вторая – длительность выходного импульса (при появлении человека). Длительность этого импульса можно настроить в диапазоне от нескольких секунд до нескольких минут.

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

Необходимые компоненты

Аппаратное обеспечение

Микроконтроллер ATmega32
Источник питания с напряжением 5 Вольт
Программатор AVR-ISP, USBASP или другой подобный
Конденсатор 100 мкФ
Светодиод
Резисторы 220 Ом, 1 кОм
Фоторезистор
Переменный резистор 100 кОм
Любой детектор движения (например, HC-SR501)
Светодиод на 2 Ватта
Транзистор TIP122.

Программное обеспечение

Atmel Studio версии 6.1 (или выше)
Progisp или flash magic (необязательно)

Принцип работы схемы

Схема устройства приведена на следующем рисунке.

Автоматический свет на лестнице на микроконтроллере AVR ATmega32: схема устройства

На данной схеме микроконтроллер ATmega32 работает от внутреннего RC-генератора (на частоте 1 МГц), поэтому нет необходимости в использовании внешнего кварцевого резонатора. Только если потребуется более точное измерение интервалов частоты может возникнуть необходимость в использовании внешнего кварца. При покупке микроконтроллера его фьюзы (fuse bits) сконфигурированы так, чтобы микроконтроллер работал от внутреннего RC-генератора.

Микроконтроллер в этой схеме должен обрабатывать 2 события:

  1. Наличие темноты.
  2. Наличие движения.

Как уже отмечалось ранее, когда поток света, падающий на фоторезистор, мал, его сопротивление велико. В этой схеме мы фоторезистор включаем последовательно с переменным резистором на 100 кОм и среднюю точку переменного резистора подключаем к контакту PB1 микроконтроллера. И теперь в нашей схеме если сопротивление фоторезистора велико (поток света мал), то напряжение на нем будет больше чем на переменном резисторе 100 кОм, следовательно, в средней точке переменного резистора будет маленькое напряжение. Таким образом, при наступлении темноты напряжение в средней точке переменного резистора сильно изменяется – и это изменение может быть обнаружено микроконтроллером (контакт PB1), что соответствует первому условию работы схемы.

Если же детектор движения обнаруживает изменение инфракрасных лучей в области своего действия (появился человек), то он подает уже рассмотренный нами ранее импульс на контакт PB0 микроконтроллера.

То есть как только выполнятся два рассмотренных условия (темнота и присутствие человека) микроконтроллер выдает управляющий сигнал на NPN транзистор чтобы он включил мощный светодиод.

Исходный код программы на языке C (Си) с пояснениями

Программа для рассматриваемой схемы представлена следующим фрагментом кода. Комментарии к коду программу поясняют принцип работы отдельных команд.

#include <avr/io.h> // заголовок чтобы задействовать контроль потока данных на контактах микроконтроллера
#define F_CPU 1000000 // задание частоты внутреннему RC-генератору
#include <util/delay.h> //заголовок чтобы задействовать функции задержки в программе
int main(void)
{
DDRB = 0b11111100; //подаем логический "0" на контакты PB0,PB1
int x=0; // число целого типа
while(1)
{
if (bit_is_clear(PINB,1)) // если темнота
{
if (bit_is_set(PINB,0)) //если есть движение (датчик движения формирует высокое напряжение в присутствии напряжения)
{
x=1; //если оба условия выполнены (темнота + движение), то присваиваем х=1
}
}

if (x==1) //когда оба условия выполнены
{
PORTB |=(1<<PINB2); //выдаем управляющую команду на транзистор чтобы он включил мощный светодиод
_delay_ms(220); // ждем 220ms (можно поставить другую задержку)
PORTB &=~(1<<PINB2); //непосредственно управляющая команда на транзистор
x=0; // сбрасываем (обнуляем) x
}
}
}

Видео, демонстрирующее работу схемы


(5 голосов, оценка: 4,20 из 5)
Загрузка...


Комментарии

Автоматический свет на лестнице с помощью микроконтроллера AVR ATmega32 — 2 комментария

  1. Что то я не понял совсем… А микроконтроллер тут зачем??? Датчик освещения + датчик движения. Ну еще пара транзисторов для ключей и усиления…Все и так есть! Тем более есть копеечные готовые китайские девайсы с такими же возможностями, к тому же позволяющие регулировку чувствительности и задержку выключения…Да уж…

    • Да, для решения этой задачи можно легко обойтись и без микроконтроллера, но статья кроме решения практической задачи имеет и обучающую функцию — научить начинающего микроконтроллерщика подключать к микроконтроллеру датчик освещения и датчик движения. Да и стоимость создания этой схемы (если кто реально будет использовать ее для создания готового устройства) тоже ведь невелика — микроконтроллер стоит ведь менее 100 рублей.
      Также на основе представленной конструкции легко можно реализовать и более сложные алгоритмы управления светом на лестнице, которые без микроконтроллера уже будет сложновато реализовать

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *