ARDUINO34.RU Форум ARDUINO34.RU Форум
 Поиск    Участники
Сегодня: 26.04.2018 - 03:00:36
   ARDUINO34.RU Форум -> bujanoff -> присутствия датчик
Страницы:  1  
АвторСообщение

bujanoff

участник форума




Статистика:
Тем создано: 129
Сообщений: 522
Репутация: 2066 ±
Датчики, включающие свет по наличию движения — вовсе не являются какой-то новинкой. Однако, несмотря на их явное преимущество, все-таки они имеют один существенный недостаток. Они не очень чувствительны, их срабатывание зависит от ряда факторов, они срабатывают случайно, их очень неудобно использовать в качестве датчиков присутствия, так как сложно настроить чувствительность, при которой мало подвижный человек будет создавать достаточный отраженный сигнал.


Однако, есть целый ряд ситуаций, когда необходимо просто отследить перемещение или наличие объекта в зоне действия датчика и выполнить какое-то действие. Причем крайне нежелательно, чтобы при наличие неподвижного объекта датчик выключался. Пусть, даже этот объект будет неподвижен длительное время.

Чтобы найти решение такой задачи я был вынужден переискать целую кучу предложения на разнообразных сайтах. К сожалению, никаких дешевых решений найти просто не удалось.

В итоге пришлось применить для решения этой задачи Arduino Uno с ультразвуковым датчиком. Благо дело, сейчас в продаже появились крайне дешевые решения, для ультразвукового обнаружения, всего по несколько уе за один датчик (Тип HS-SR 04). Кроме того, на ряде сайтов можно купить универсальные исполнительные блоки с «развязанными» реле, управляемыми с помощью фотодиодов. Я использовал приобретенный на BIC блок.

Маленькая проблема возникает при написании «скетча» для ардуино, ведь особенность датчиков присутствия в том, что нет необходимости выключать источник, пока объект присутствует. Благо дело, ардуино позволяет работать с глобальными переменными.

Ниже приводиться пример кода в виде ардуино-«скетча», который выполняет все необходимые действия (скачать код):

// pin's config
const int Trig = 2;
const int Echo = 3;

// current led state
int led_state=0;

long led_period_on = 10; //periods = 300*10=3s - how long wait after object disappear?
long led_left_on; //if this is 0 - turn off

void setup()
{
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
//default turn on
turn_led(1);
led_left_on = led_period_on;
}

void loop()
{
if ( led_left_on-- > 0 )
{
if (led_state == 0)
turn_led(1);
}
else
{
if (led_state == 1)
turn_led(0);
}
digitalWrite(Trig, LOW); // clear
delayMicroseconds(2); // wait 2 mks
digitalWrite(Trig, HIGH); // run
delayMicroseconds(10); // wait 10 mks
digitalWrite(Trig, LOW); // clear
long time_us=pulseIn(Echo, HIGH); // How long was signal?

if ( time_us != 0 && time_us/58 ) // to santimeters
{
led_left_on = led_period_on;
if (led_state == 0)
turn_led(1);
}

delay(300); // run again
}

// turn led on/off
void turn_led( int led_state_)
{
led_state = led_state_;
digitalWrite(11, led_state == 0?LOW:HIGH);
digitalWrite(10, led_state == 0?HIGH:LOW);


Для проверки работоспособности вся схема расположена на макетной плате-бутерброде, использована также одна из самых дешевых моделей. В дальнейшем планируется монтаж всего этого в подходящем по размеру корпусе. Скорее всего данная схема будет выполнять функции по управлению освещением в шкафу-подсобке. Схему я не привожу, так как она совершенно простая. Ультразвуковой датчик подключен в 2/3 портам, светодиоды к 10/11 портам ардуино. Использовано USB-питание, +5В подключено к светодиодам через резисторы в 220Ом. Блок реле переключается по низкому уровню.

Среди недостатков такого решения можно называть едва заметное щелканье ультразвукового датчика, впрочем как и реле. Наверное в спальне такое решение использовать все же не стоит. Хоть звук тихий, но может раздражать в полной тишине. Положительный момент — возможность управления этим делом по USB, возможность расширения, возможность подсоединения фотодиода для управления освещением.
--------------------------------------------------
3D-печать 79610782657
Сообщение # 1 07.02.2014 в 22:40:53
Страницы:  1  
Администратор запретил отвечать гостям на сообщения! Для регистрации пройдите по ссылке: зарегистрироваться


Powered by WR-Forum Professional © 1.9.9