Автоматическое включение света ИК датчиком приближения

Автоматическое включение света ИК датчиком приближения

Загорелся идеей создать устройство, которое бы управляло LED лентами при открытии дверцы шкафа. Причём нужно их в офис около 10 штук. Слышу, как кто-то уже советует не заниматься ерундой и поставить стандартный модуль ПИР датчика. Но проблема в том, что в комнате он работает отлично. А когда попробовал такой ПИР установить в шкафу работа стала нестабильная.

Схема ИК датчика включения света на ATTINY

Автоматическое включение света ИК датчиком приближенияСхема принципиальная ИК датчика на ATTINY

После недолгих размышлений над схемой и экспериментов сделал работающее устройство, основанное на готовом приемнике инфракрасного сигнала TSOP4836. Но можно и фототранзистор LTR4206E поставить.

Автоматическое включение света ИК датчиком приближенияВид печатной платы

Аппаратная часть стабилизатор LM78L05 с диодом 1N4148 (защита от неправильной полярности подключения), исполнительный элемент МОП-транзистор с N-каналом, управляемый уровнями TTL. ИК светодиод передатчика подключенный непосредственно к микроконтроллеру, резистор ограничивает ток до 20 мА. Микроконтроллер ATTINY13A (выбор диктуется ценой и доступностью).

Принцип действия устройства

МК сначала измеряет напряжение на фототранзисторе при выключенном ИК диоде, затем с включенным. Первое измерение является проверкой влияния фона, пока свет от ИК светодиодов не отразится от предмета, оба измерения буду идентичны, в противном случае второй замер будет меньше. Ещё применил что-то вроде гистерезиса, после включения выхода чувствительность измерения увеличивается (переменная „his”).

Прошивка микроконтроллера

#include &lt,avr\io.h&gt,

#include &lt,inttypes.h&gt,

#include &lt,avr/sleep.h&gt,

#include &lt,avr/interrupt.h&gt,

#include &lt,avr/power.h&gt,

//Definicje numerow portow

#define LED 1

#define MOSFET 4

//ADC PB2 ADC1

//Deklaracja stalych

#define HIS_ON 3,

#define HIS_OFF 2,

int main(void)

{

uint8_t odczyt1, //Odczyt ADC bez wlaczonej LED_IR

uint8_t odczyt2, //Odczyt ADC przy wlaczonej LED_IR

uint8_t licz = 0,

uint8_t his = HIS_OFF, //Zmienna histerezy

//Konfiguracja portow

DDRB = 1&lt,&lt,LED | 1&lt,&lt,MOSFET | 1&lt,&lt,LED, //wyjscie LED IR, wyjscie MOSFET

PORTB = 1&lt,&lt,3 | 1&lt,&lt,0 | 1&lt,&lt,LED, //PULL_UP PB3 i PB0 dla oczednosci energi

//Inicjacja ADC

ADMUX = 1&lt,&lt,ADLAR | 1&lt,&lt,MUX0, //Napiecie referencyjne Vcc, PB2(ADC1)

DIDR0 = ADC1D, //Wylaczenie bufora cyfrowego PB2(ADC1)

power_timer0_disable(), //Calkowite wylaczenie TIMER0

sei(), //Globalne zalaczenie przerwan

for(,,)

{

ADCSRA = 1&lt,&lt,ADEN | 1&lt,&lt,ADSC, //Wlaczamy ADC i zaczynamy pomiar

while(ADCSRA & (1&lt,&lt,ADSC)), //Czekamy na pomiar

odczyt1 = ADCH, //Odczyt ppomiaru bez wlaczonej LED IR

odczyt1 = odczyt1 his,

PORTB &= ~(1&lt,&lt,LED), //LED IR on

ADCSRA |= 1&lt,&lt,ADSC, //ADC on

while(ADCSRA & (1&lt,&lt,ADSC)), //Czekamy na pomiar

odczyt2 = ADCH, //Odczyt pomiaru z wlaczon

PORTB |= 1&lt,&lt,LED, //LED IR off

ADCSRA &= ~((1&lt,&lt,ADEN) | (1&lt,&lt,ADSC)), //ADC off

if(odczyt2 &lt, odczyt1)

{

if(licz &lt, 10)

{

licz++,

} else {

PORTB &= ~(1&lt,&lt,MOSFET), //MOSFET off

his = HIS_OFF,

}

} else {

if(licz&gt,0)

{

licz,

} else {

PORTB |= 1&lt,&lt,MOSFET, //MOSFET on

his = HIS_ON,

}

}

WDTCR = 1&lt,&lt,WDTIE, //Wlaczenie przerwania od WDT, czas 16ms

sleep_enable(), //Przestawienie bitu SE

sleep_cpu(), //Wprowadznie w stan snu

}

return 0,

}

ISR(WDT_vect) //Przerwanie od WDT

{

sleep_disable(), //Przestawienie bitu SE

WDTCR = 0, //Wylaczenie przerwania od WDT

}

Печатная плата спроектирована и изготовлена под монтаж SMD. Контакты для программирования вывел на штырьки. Корпус маленький из пластика.

Автоматическое включение света ИК датчиком приближенияПлата и детали ИК датчика включения света на МК

Есть возможность увеличения дальности за счет уменьшения сопротивления резистора R2. Таймер T0 выключен и не используется, его можно использовать для генерации ШИМ и постепенного повышения и уменьшения яркости освещения. Можно было бы применить МК ATTINY10 (6 ног), резисторы и конденсаторы тоже в небольших корпусах, что позволило бы снизить размер до совсем миниатюрного.


1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Понравилась статья? Поделиться с друзьями:
Настройка смартфонов и гаджетов, оборудования и подключение Смарт ТВ, мобильные операторы