Вход

   Звукотехника

   Источники питания

   Измерительная техника

   Автолюбителям

   Радио-начинающим

   Электроника в быту

   Радио и связь

   Примочки для ПК

   Шпионские штучки

   Микроконтроллеры

   Об Arduino

   Проекты на Arduino

   Учебники и статьи

   Софт для Arduino

   ЛИТЕРАТУРА

     Справочники

     Начинающим

     Книги

   СОФТ

     Полезный софт

   ЖУРНАЛЫ

     Радио

     Радиоаматор

   ДОКУМЕНТАЦИЯ

     Справочный листок

Главная » Статьи » ARDUINO » Проекты на Arduino

Ультразвуковой датчик присутствия HS-SR 04 на Arduino

Для определения расстояния в простейшей системе на Ардуино можно воспользоваться ультразвуковым датчиком. В отличие от PIR-датчика, который определяет наличие движения, данный позволяет определить расстояние до объекта. То есть в стационарном варианте, когда расстояние меняется к датчику что-то приближается, или удаляется.

Схема включения крайне проста. Всего 4-ре вывода, питание, земля, вход и выход датчика. Для активации — используется кратковременный импульс, 10Мкс, для считывания расстояния надо определить длину возвращенного импульса, разделить ее на 58 — и это будет расстояние в сантиметрах до объекта. Датчик работает на расстоянии до 4-5 метров. Минимальное расстояние, также мало, и зависит от быстродействия Ардуино. Судя по демо роликам, это около сантиметра.

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


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

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

В итоге пришлось применить для решения этой задачи 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, возможность расширения, возможность подсоединения фотодиода для управления освещением.



| Категория: Проекты на Arduino | Добавлен: 25.10.2013 | Автор: publikz.cоm | Просмотров: 7864

Проверка тИЦ и PR
Яндекс.Метрика

РадиоГИД © 2010-2016 Обратная связь Сайты-партнеры
Бесплатный хостинг uCoz