RSS блога
Подписка
Бесконтактный включатель
- Цена: $1.05
- Перейти в магазин
Всем привет! Сегодня хочу рассказать о одной интересной микросхемке, а именно LM567 — тональный декодер.
Давным-давно появилось желание сделать бесконтактный включатель для света в следствии чего были приобретены такие оптопары.
При первых тестированиях все, вроде, работало нормально. Оптопары реагировали нормально. Сигнал с них снимался достаточно быстро. Но при дальнейшей работе с ними, стало понятно, что они очень чувствительны к освещению, и при включённом освещении в комнате они время от времени срабатывали от инфракрасных лучей осветительных приборов.
Но один хороший человек (мой отец), подсказал интересный вариант который был опубликован в журнале «радио» (наверное)
Это схема включателя на основе lm567 и триггера. Было решено избавится от триггера, и «мозгом» устройства сделать atmega328p (избыточно, но.....). Первые пробы схемы собирал на отладочной доске (к сожалению фоток не сохранилось). К моему удивлению все завелось с первого раза.
Делать плату ЛУТом, почему то желания не было, к тому же как раз пришли макетные платы, качество к стати не очень, потому в sprint layout 6 накидал примерное расположение деталей и принялся за пайку.
Включатели делались для подсветки рабочих поверхностей на кухне, коих в наличии было две штуки, поэтому сделал сразу две схемы рядом.
Для подсветки так же с али была заказана лед лента, самая дешевая и не самая хорошая. Света от нее не очень много, но для подсветки сойдет.
Следующим этапом был выбор блока питания для устройства. Так как покупать блок питания желания не было, а в наличии был компьютерный блок питания, было решено использовать его (избыточно, но....).
Держать постоянно включённым БП, пускай и на холостом ходу, не очень хорошая идея, поэтому с помощью простого транзисторного ключа можно сделать включатель БП. Теперь им можно управлять с МК.
Следующим вопросом было питание МК. Но у нас же есть компьютерный БП! А он же состоит из двух БП! МК и схемы тональных декодеров много не потребляют, поэтому дежурного БП вполне хватает.
Так же на али были заказаны транзисторы для управления нагрузкой.
Общая схема устройства выглядит примерно так:
Программу писал в Atmel Studio 6.0. Шил с помощью SinaProg.
«Готовое» устройство выглядит так:
Видео работы.
Давным-давно появилось желание сделать бесконтактный включатель для света в следствии чего были приобретены такие оптопары.
При первых тестированиях все, вроде, работало нормально. Оптопары реагировали нормально. Сигнал с них снимался достаточно быстро. Но при дальнейшей работе с ними, стало понятно, что они очень чувствительны к освещению, и при включённом освещении в комнате они время от времени срабатывали от инфракрасных лучей осветительных приборов.
Но один хороший человек (мой отец), подсказал интересный вариант который был опубликован в журнале «радио» (наверное)
Схема из журнала
.
Это схема включателя на основе lm567 и триггера. Было решено избавится от триггера, и «мозгом» устройства сделать atmega328p (избыточно, но.....). Первые пробы схемы собирал на отладочной доске (к сожалению фоток не сохранилось). К моему удивлению все завелось с первого раза.
Делать плату ЛУТом, почему то желания не было, к тому же как раз пришли макетные платы, качество к стати не очень, потому в sprint layout 6 накидал примерное расположение деталей и принялся за пайку.
Разводка платы
Сначала делал одну
Потом для понимания сколько у меня места осталось сделал «макет» макетной платы
Потом для понимания сколько у меня места осталось сделал «макет» макетной платы
Включатели делались для подсветки рабочих поверхностей на кухне, коих в наличии было две штуки, поэтому сделал сразу две схемы рядом.
Для подсветки так же с али была заказана лед лента, самая дешевая и не самая хорошая. Света от нее не очень много, но для подсветки сойдет.
Следующим этапом был выбор блока питания для устройства. Так как покупать блок питания желания не было, а в наличии был компьютерный блок питания, было решено использовать его (избыточно, но....).
Держать постоянно включённым БП, пускай и на холостом ходу, не очень хорошая идея, поэтому с помощью простого транзисторного ключа можно сделать включатель БП. Теперь им можно управлять с МК.
Следующим вопросом было питание МК. Но у нас же есть компьютерный БП! А он же состоит из двух БП! МК и схемы тональных декодеров много не потребляют, поэтому дежурного БП вполне хватает.
Дополнительная информация о БП
Так же на али были заказаны транзисторы для управления нагрузкой.
Общая схема устройства выглядит примерно так:
Программу писал в Atmel Studio 6.0. Шил с помощью SinaProg.
Код программы.
/*
* tcrt5000.c
*
* Created: 09.04.2016 22:33:31
* Author: lBeJIuk
*/
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
#define F_CPU 1000000UL
// Инициализация света
#define PORT_led1 PORTD
#define DDR_led1 DDRD
#define PIN_led1 5
#define PORT_led2 PORTD
#define DDR_led2 DDRD
#define PIN_led2 6
#define PORT_suply PORTB
#define DDR_suply DDRB
#define PIN_suply 2
//инициализация датчика TCRT5000 #1
#define PORT_tc1 PORTB
#define DDR_tc1 DDRB
#define PINN_tc1 PINB
#define PIN_tc1 0
//инициализация датчика TCRT5000 #2
#define PORT_tc2 PORTB
#define DDR_tc2 DDRB
#define PINN_tc2 PINB
#define PIN_tc2 1
#define tcrt_1 ((PINN_tc1>>PIN_tc1) & 1)//TCRT5000 #1 // 0 - сработка
#define tcrt_2 ((PINN_tc2>>PIN_tc2) & 1)//TCRT5000 #2 // 1 - нету сработки
/*
#define on_led_1 ( PORT_led1 = PORT_led1 & (!(1<<PIN_led1)) )
#define off_led_1 ( PORT_led1 = PORT_led1 | (1<<PIN_led1) )
#define led_1 ( PORT_led1 = PORT_led1 ^ (1<<PIN_led1) )
#define led_2 ( PORT_led2 = PORT_led2 ^ (1<<PIN_led2) )
#define on_led_2 ( PORT_led2 = PORT_led2 & (!(1<<PIN_led2)) )
#define off_led_2 ( PORT_led2 = PORT_led2 | (1<<PIN_led2) )
#define on_suply ( PORT_suply = PORT_suply | (1<<PIN_suply) )
#define off_suply ( PORT_suply = PORT_suply & (!(1<<PIN_suply)) )
*/
/*
void led_1 (void)
{ PORT_led1 = PORT_led1 ^ (1<<PIN_led1); }
void led_2 (void)
{PORT_led2 = PORT_led2 ^ (1<<PIN_led2);}
void on_suply (void)
{ PORT_suply = PORT_suply | (1<<PIN_suply) ;}
void off_suply (void)
{ PORT_suply = PORT_suply & (!(1<<PIN_suply));}
*/
int suply_state =0;
char tcrt1_state =0; //0 - сработка
char tcrt2_state =0; //0 - сработка
char led1_state =1; // 0 - включить свет лед1 // 1 - выключить свет лед1
char led2_state =1; // 0 - включить свет лед2 // 1 - выключить свет лед2
void init_port(void){
DDR_led1|=(1<<PIN_led1); // output
DDR_led2|=(1<<PIN_led2); // output
DDR_suply|=(1<<PIN_suply); // output
DDR_tc1= DDR_tc1 & (!(1<<PIN_tc1)); //pull-up
DDR_tc2= DDR_tc2 & (!(1<<PIN_tc2)); //pull-up
PORT_led1|=(1<<PIN_led1); // 0 - светит
PORT_led2|=(1<<PIN_led2); // 1 - не светит
PORT_suply&=(!(1<<PIN_suply)); // 0 - нету напряжения/// 1 - есть напряжение
PORT_tc1|=(1<<PIN_tc1);//pull-up
PORT_tc2|=(1<<PIN_tc2);//pull-up
}
void main (void){
init_port();
_delay_ms(2000);
while(1) {
if ((tcrt_1 == 1) && (tcrt1_state==1) ){tcrt1_state=0;_delay_ms(100);}
if ((tcrt_2 == 1) && (tcrt2_state==1) ){tcrt2_state=0;_delay_ms(100);}
_delay_ms(50);
if ((tcrt_1 == 0) && (tcrt1_state == 0)){
tcrt1_state=1;
_delay_ms(25);
if (tcrt_1 == 0 ){
switch (led1_state){
case 0:
PORTD=PORTD & 0b10111111;//PORT_led1 = PORT_led1 & (! (1<<PIN_led1)) ;//on_led_1
led1_state=1;
break;
case 1:
PORTD=PORTD | 0b01000000;//PORT_led1 = PORT_led1 | (1<<PIN_led1); //off_led_1;
led1_state=0;
break;}
}}
if ((tcrt_2 == 0) && (tcrt2_state == 0) ){
tcrt2_state=1;
_delay_ms(25);
if (tcrt_2 == 0 ){
switch (led2_state){
case 0:
PORTD=PORTD & 0b11011111;//PORT_led2 = PORT_led2 & (!(1<<PIN_led2)); //on_led_2;
led2_state=1;
break;
case 1:
PORTD=PORTD | 0b00100000;//PORT_led2 = PORT_led2 | (1<<PIN_led2); //off_led_2;
led2_state=0;
break;}
}}
if ( ( (PIND>>PIN_led1) &3) != 3 ) {PORT_suply = PORT_suply | (1<<PIN_suply);/*on_suply;*/}
else if ( ( (PIND>>PIN_led1) &3) == 3 ) {PORT_suply = PORT_suply & (!(1<<PIN_suply));/*off_suply;*/}
/*switch((PIND>>PIN_led1)&3){
case 0:
on_suply();
break;
case 1:
on_suply();
break;
case 2:
on_suply();
break;
case 3:
off_suply();
break;
}
*/
}
}
«Готовое» устройство выглядит так:
Потребление прибора.
Режим ожидания
Включена одна сторона
Включены две стороны
Включена одна сторона
Включены две стороны
Видео работы.
Дополнительные живые фото
Клеил ленты банально, обычным скотчем =\
+231 |
50470
71
|
Самые обсуждаемые обзоры
+67 |
3125
131
|
+49 |
3404
64
|
+28 |
2308
42
|
+32 |
2533
30
|
+52 |
1970
37
|
Меряет расстояиние до закрытой двери. Если расстояние меньше или больше уставки -включает через твердотельное реле свет в санузле… Вот вам и бесконтактный датчик :)
По потреблению хватает (контроллер кушает мало и твердотельное реле тоже), то что нет гальванической развязки не критично — нет выступающих токопроводящих частей :)
Всё ж дешевле чем в оффлайне.
А смысла в другом БП не вижу, этот работает надёжно уже около года.
gearbest.com/-/pp_58067.html
кто не умеет — тому схемы попроще, на элементной базе ;)
Космическое излучение, знаете ли бывает.Статика, броски по питанию в сети 220в и наводки.А схема целая.Надёжность никто не отменял.
Микропроцессоры не надёжны по определению.
А угол " обстрела " какой?
Схема, печатка и прошивка отсюда?
www.joyta.ru/3263-prostoj-avtomaticheskij-vklyuchatel-sveta-na-osnove-ultrazvukovom-datchike/
А тригер плох тем что у меня его небыло, а атмега была.
2. Реализовать в программе алгоритм работы простого триггера значительно проще (уровень программы для мигания светодиодом), чем цифрового фильтра, фазового детектора, работающего в реальном времени на частотах в несколько килогерц.
Делается совершенно несложно, займет от силы 1/10 ресурсов меги 328 — но зато, с минимумом лишнего. Вдобавок, можно реализовать не только частотную, но и кодовую идентификацию сигнала. Чтобы устройство гарантированно не спотыкалось об сигналы аналогичных ему устройств, пультов ДУ и тому подобного.
Если так не делать, то солнечный свет в окно слепит все это на ура.
Как вариант: ГПСЧ на основе регистра сдвига с линейной обратной связью.
А аналоговое измерение — как раз, чтобы схема одинаково устойчиво работала и в темноте, и при ярком свете.
Вверху видны два отверстия датчика.
А вот профиль и место под датчик
плата контроллера, сорри за качество фото, фотоаппарата нормального не было.
Делал несколько лет назад.
Даже наоборот хорошо, что такое расстояние.
2. Не слепит в глаза.
Если Вы заметили, подсветка немного отнесена от стены.
Может проще обзор запилить :)
это вид полки внутри шкафа? Канал под провод шпаклевкой + пленка? А профиль просто так для примера положили?
ПС. Откуда фото если работа была пару лет назад? Все работы фотографируете?
На первом фото его видно. потому никаких проводов не видно, только внутри шкафчика вертикально поднимается.
Делал три или четыре года назад, фото платы и врезки делал тогда, первое фото делал недавно.
Так это выглядит полностью.
Справа тоже планировался рейлинг, даже лежит, из нержавейки, но жена сказала что ей так нравится.
Профиль, рассеиватель, заглушки
Мое творение с функцией «снять и забрать на новое место за 60мин»
Вы не показали как разместили светодиод и фотодатчик. От этого (кроме программной и аппаратной настройки чувствительности) зависит и чувствительность срабатывания по расстоянию и угол чувствительности. Покажите, плс.
Светодиод и фотодатчик в одном корпусе, так что разместить по другому не сняв корпус — невозможно.
Схемкой и прошивкой не поделитесь?
bezkz.su/publ/shemy/vyklyuchateli-pereklyuchateliik-f/700211-prostoy-avtomaticheskiy-vyklyuchatel-sveta-na-ultrazvukovom-datchike.html
Код под свои нужды подправил, и плату свою нарисовал, yadi.sk/d/gsuDYyaktmYRf, yadi.sk/i/gd8IbMnJtmYRm
PS — я делал для дома touch выключатели, от батарейки & RF433.
А для комнатного выключателя такая приблуда будет крайне неудобной
шутка :)
catcatcat.d-lan.dp.ua/datchik-priblizheniya-ot-rumena-zheleva/