Главная » Микроконтроллеры
Призовой фонд
на март 2017 г.
1. UNI-T UT-39C
Паяльник
2. Тестер компонентов LCR-T4
Паяльник
3. 100 руб.
От пользователей

Похожие статьи:


Датчик движения на МК PIC и PIR-сенсоре

В этой статье описано создание датчика движения на основе модулей с пассивным ИК датчиком. Есть много моделей модулей с PIR датчиком от разных производителей, но в основе у них лежит один принцип. Они имеют один выход, который дает сигнал низкого или высокого уровня (в зависимости от модели) при обнаружении движения. В моем проекте микроконтроллер PIC12F635 постоянно следит за логическим уровнем на выходе модуля с датчиком и включает зуммер, когда он высокий.

Теория

Некоторые кристаллические материалы обладают свойством генерировать поверхностный электрический заряд при контакте с тепловым ИК излучением. Это явление известно как пироэлектричество. Пассивные модули с ИК датчиком работают на основе этого принципа.  Тело человека излучает тепло в виде ИК излучения с максимальной длиной волны около 9,4 мкм. Появление человека создает внезапные изменения в ИК диапазоне окружающей среды, что воспринимается пироэлектрическим датчиком. Модуль с PIR датчиком имеет элементы которые усиливают сигнал для его соответствия логическим уровням. Перед началом работы датчику необходимо от 10 до 60 секунд для ознакомления с окружающей средой для дальнейшего нормального функционирования. В это время следует избегать движений в поле зрения датчика. Датчик действует на расстояние до 20 футов и не реагирует на естественные изменения окружающей среды, связанные с течение времени. При этом, датчик реагирует на любое резкое изменение окружающей среды(например появление человека). Модель с датчиком не следует размещать рядом с батареями, розетками и любыми другими предметами быстро меняющими свою температуру, т.к. это приведёт к ложному срабатыванию. Модули с PIR датчиком обычно имеют 3 контакта : Vcc, Выход и GND. Цоколевка у разных производителей может отличаться, поэтому я рекомендую проверить документацию. Также значение вывода может быть обозначено прямо на плате. На моём датчике таких обозначений нет. Он может работать при напряжении питания от 5 до 12V и имеет свой собственный встроенный стабилизатор напряжения. При наличии движения на выходе датчика появляется высокий логический уровень. Также он имеет 3х контактный джампер для установки режима работы. Боковые контакты имеют метки H и L. Когда перемычка находится в положении H, при срабатывании датчика несколько раз подряд на его выходе остается высокий логический уровень. В положении L, на выходе при каждом срабатывании датчика появляется отдельный импульс. Передняя часть модуля имеет линзу Френеля для фокусировки ИК излучения на чувствительный элемент.

PIR-датчик. Линза

PIR-датчик. Плата компонентов

Схема и конструкция

Схема датчика движения довольно проста. Устройство работает от 4 AA батарей, которые дают 6V. На диоде, который используется как защита от неправильного подключения питания, напряжение падает до 5,4V. Я проверял схему с NI-MH аккумулятором 4,8 V и она работала, но я рекомендую использовать щелочные батарейки по 1,5V каждая для лучшей производительности. Вы можете также использовать батареи 9V , но тогда вам необходим стабилизатор LM7805. Выход с модуля контролируется микроконтроллером PIC12F635 через порт GP5 (вывод 2). При движении на выходе датчика появляется напряжение около 3,3 V. Это напряжение распознаётся микроконтроллером ка высокий логический уровень, но я предпочел использовать это напряжение для управления NPN транзистором BC547, коллектор которого подключил к микроконтроллеру.  Когда транзистор закрыт, на его коллекторе высокий логический уровень (+5V). При движении на выходе модуля появляется высокий логический уровень который насыщает транзистор и напряжение на его коллекторе падает до низкого логического уровня. Перемычки на датчике находится в позиции H, так что выходной сигнал датчика будет оставаться высоким до тех пор, пока движение не прекратится. Микроконтроллер PIC12F635 использует внутренний тактовый генератор, работающий на частоте 4,0 МГц.

Схема датчика движения

Светодиод, подключенный к порту GP4 через токоограничивающий резистор мигает 3 раза при подключении питания. Пьезоэлектрический зуммер EFM-290ED подключенный к порту GP2 сообщает о наличии движения. Пьезоэлектрический зуммер дает максимально громкий звук на своей резонансной частоте. Зуммер который я использовал, имеет резонансную частоту 3,4 ± 0,5 кГц. После экспериментов с ним, я обнаружил, что максимальный звук он дает на частоте около 372 Гц. Хотя в документации сказано, что рабочее напряжение составляет от 7-12V, он работает и от напряжения 5V.

Устройство на макетной плате

Программа

Программа написана на С и скомпилирована в MikroC Pro для PIC. При подаче питания светодиод мигает три раза и это свидетельствует о успешном запуске. После этого микроконтроллер ждет 60 секунд до начала проверки значения на выходе с датчика. Это требуется для стабилизации датчика. Когда микроконтроллер определяет срабатывание датчика, он запускает пьезозуммер на частоте 3725Гц. MikroC имеет встроенную библиотеку для генерации звука (Sound_Play()). Зуммер издает звук до тех пор, пока датчик ощущает движение. Когда движение прекращается, логический уровень на выходе датчика изменяется, но зуммер не замолкает сразу, а еще в течение примерно 10 секунд  издает звук на частоте 3570Гц. Если он обнаруживает движение снова, он опять запустится на частоте 3725 Гц. Этот проект использует внутренний генератор запущенный  на частоте 4,0 МГц, MCLR и сторожевой таймер выключены.

/*
  Project: PIR Motion Sensor Alarm (PIC12F635)
  Piezo: EFM-290ED, 3.7 KHz connected at GP2
  PIR sensor module in retriggering mode
  Internal Clock @ 4.0 MHz, MCLR Disabled, WDT OFF
*/

sbit Sensor_IP at GP5_bit; // sensor I/P
sbit LED at GP4_bit;       // LED O/P
unsigned short trigger, counter;

void Get_Delay(){
 Delay_ms(300);
}

void main() {
 CMCON0 = 7;
 TRISIO = 0b00101000;  // GP5, 5 I/P's, Rest O/P's
 GPIO = 0;
 Sound_Init(&GPIO,2);

 // Blink LED at Startup
 LED = 1;
 Get_Delay();
 LED = 0;
 Get_Delay();
 LED = 1;
 Get_Delay();
 LED = 0;
 Get_Delay();
 LED = 1;
 Get_Delay();
 LED = 0;

 Delay_ms(60000); // 45 Sec delay for PIR module stabilization

 counter = 0;
 trigger = 0;
 do {
   while (!Sensor_IP) {  // Sensor I/P Low
    Sound_Play(3725, 600);
    Delay_ms(500);
    trigger = 1;
    counter = 0;
   }
   if (trigger) {
    Sound_Play(3570, 600);
    Delay_ms(500);
    counter = counter+1;
    if(counter == 10) trigger=0;
   }
 }while(1);
}  // End main()

Фото устройства:

Устройство на макетной плате

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
МК PIC 8-бит
PIC12F635
1 Поиск в FivelВ блокнот
Биполярный транзистор
BC547
1 Поиск в FivelВ блокнот
Резистор
1 кОм
1 Поиск в FivelВ блокнот
Резистор
10 кОм
1 Поиск в FivelВ блокнот
Резистор
470 Ом
1 Поиск в FivelВ блокнот
Светодиод1 Поиск в FivelВ блокнот
PIR-датчик1 Поиск в FivelВ блокнот
Пьезо-зуммерEFM-290ED1 Поиск в FivelВ блокнот
Добавить все

Скачать список элементов (PDF)

Оригинал статьи

Прикрепленные файлы:

Теги:

Касьянов А. Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (1) | Я собрал (0) | Подписаться

0
Manoj Soorya #
Any hex file for 12F675?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Pickit 2 - USB-программатор PIC-микроконтроллеров
Pickit 2 - USB-программатор PIC-микроконтроллеров
Мини гравер 125 Ватт Программатор Pickit3
вверх