Датчик движения на hc-sr505, увеличиваем дальность обнаружения движения

Wiring – Connecting HC-SR501 PIR motion sensor to Arduino UNO

By connecting the motion sensor to a microcontroller like the Arduino UNO, you can use it to control all kinds of things: LEDs, relays, motors, buzzers etc.

In the wiring diagram below, you can see how to hook it up to the Arduino. You can read the sensor with one of the general-purpose input/output (GPIO) pins of the Arduino. In this example, I connected it to digital pin 2. The VCC and GND pins are connected to 5 V and GND respectively.


HC-SR501 PIR motion sensor with Arduino wiring diagram

The connections are also given in the table below:

HC-SR501 PIR Motion Sensor Connections

HC-SR501 PIR Motion Sensor Arduino
VCC 5 V
OUT Pin 2
GND GND

Once you have wired up the sensor, the next step is to upload some example code.

Create an alarm system with PIR motion sensor and buzzer

With some simple changes, you can create an alarm system with the HC-SR501 and a piezoelectric buzzer. I connected the buzzer with a 100 Ω resistor between digital pin 5 and GND. You can probably use the buzzer without a resistor (this makes it louder), but it will not sound as nice.

HC-SR501 PIR motion sensor with Arduino UNO and buzzer wiring diagram.

The code below is mostly the same as the previous example. I only added a function to create the beeping alarm sound. You can change the pitch of the buzzer by changing the input parameter of the  function.

/* Example code to create an alarm system with HC-SR501 PIR motion sensor, buzzer and Arduino. More info: www.www.makerguides.com */

// Define connection pins:
#define buzzerPin 5
#define pirPin 2
#define ledPin 13

// Create variables:
int val = 0;
bool motionState = false; // We start with no motion detected.

void setup() {
  // Configure the pins as input or output:
  pinMode(buzzerPin, OUTPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(pirPin, INPUT);

  // Begin serial communication at a baud rate of 9600:
  Serial.begin(9600);
}

void loop() {
  // Read out the pirPin and store as val:
  val = digitalRead(pirPin);

  // If motion is detected (pirPin = HIGH), do the following:
  if (val == HIGH) {
    digitalWrite(ledPin, HIGH); // Turn on the on-board LED.
    alarm(500, 1000);  // Call the alarm(duration, frequency) function.
    delay(150);

    // Change the motion state to true (motion detected):
    if (motionState == false) {
      Serial.println("Motion detected!");
      motionState = true;
    }
  }

  // If no motion is detected (pirPin = LOW), do the following:
  else {
    digitalWrite(ledPin, LOW); // Turn off the on-board LED.
    noTone(buzzerPin); // Make sure no tone is played when no motion is detected.
    delay(150);

    // Change the motion state to false (no motion):
    if (motionState == true) {
      Serial.println("Motion ended!");
      motionState = false;
    }
  }
}

// Function to create a tone with parameters duration and frequency:
void alarm(long duration, int freq) {
  tone(buzzerPin, freq);
  delay(duration);
  noTone(buzzerPin);
}

Подключение инфракрасного датчика движения к Arduino

Рисунок 3. Назначение контактов и настройка HC-SR501

Подключим модуль HC-SR501 к плате Arduino (Схема соединений на рис. 4) и напишем простой скетч, сигнализирующий звуковым сигналом и сообщением в последовательный порт, при обнаружении движущегося объекта. Для фиксации срабатываний микроконтроллером будем использовать внешние прерывания на вход 2. Это прерывание int0.

Рисунок 4. Схема соединений подключения модуля HC-SR501 к плате Arduino

Загрузим скетч из листинга 1 на плату Arduino и посмотрим как датчик реагирует на препятствия (см. рис. 5). Модуль установим в режим работы L. Листинг 1

Рисунок 5. Вывод данных в монитор последовательного порта

С помощью потенциометров экспериментируем с длительностью сигнала на выходе OUT и чувствительностью датчика (расстоянием фиксации объекта).

Повышение универсальности PIR датчика HC-SR501

Печатная плата HC-SR501 имеет площадки для двух дополнительных компонентов. Они обычно обозначаются как «RT» и «RL»

Обратите внимание, что на некоторых платах обозначения могут быть закрыты «купольной» линзой на стороне, противоположной компонентам

Рисунок 7 – PIR датчик. Площадки для фоторезистора и термистора

  • RT – предназначен для термистора или термочувствительного резистора. Его добавление позволяет использовать HC-SR501 при экстремальных температурах, а также в некоторой степени повышает точность детектора.
  • RL – это место для подключения светочувствительного резистора (LDR) или фоторезистора. При добавлении этого компонента HC-SR501 будет работать только в темноте, это обычное применение для систем освещения, чувствительных к движению.

Дополнительные компоненты могут быть припаяны непосредственно к плате или выведены в удаленные места с помощью проводов и разъемов.

Пример использования

Рисунок 6. Схема соединений

При срабатывании датчика вызываем процедуру отправки sms с текстовым сообщением Attention. на номер PHONE. Содержимое скетча представлено в листинге 2. GSM/GPRS шилд в режиме отправки sms потребляет ток до 2 А, поэтому используем внешний источник питания 12В 2А. Листинг 2

В этой статье расскажу как работать с датчиком HC-SR501 (PIR сенсор). Датчик является недорогим и универсальным, его можно использовать как отдельно или со вместо с микрокомпьютером для создание различных проектах (системах охранной сигнализации или автоматизированных системах освещения)

Устройство датчика движения

Конструкция датчика содержит две части – неподвижную, которая крепится к поверхности, и подвижную. Подвижная часть имеет две степени свободы и может поворачиваться на 30-400 в горизонтальной и вертикальной плоскостях.

В разобранном виде датчик движения LX-02 выглядит вот так:

Вид плат со стороны деталей

Вид с обратной стороны (со стороны пайки деталей):

Вид плат датчика движения со стороны пайки

В устройстве применяются основные детали:

  • микросхема – LM324, это четыре операционных усилителя в одном корпусе. Даташит можно скачать здесь: • LM324,224,2902 Operational Amplifiers.pdf / , pdf, 134.11 kB, скачан: 3171 раз./
  • датчик движения – PIR D203S или 1VY7015
  • транзистор типа S9013 – биполярный средней мощности. Даташит можно скачать здесь: • S9013 / , pdf, 62.29 kB, скачан: 1595 раз./
  • реле SHD-24VDC-F-A.

Со стороны ключа микросхемы – регулировка освещенности, рядом – регулировка времени включения.

https://youtube.com/watch?v=sLaqztwsMEE

https://youtube.com/watch?v=R76YMdNY1qI

https://youtube.com/watch?v=jinziTW7jic

Как сделать дистанционный включатель освещения по движению на датчике движения HC-SR505, инструкция:

Датчик движения HC-SR505 оте полностью аналогичен работе PIR-датчика HC-SR501 но имеет более компактный размер и урезанными функциями, так как нет регулировок чувствительности и задержки отключения, она зафиксирована на 8 секундах. Напряжение питания у него от 4,5 до 20В. При обнаружении движущегося объекта на выходе OUT появляется высокий уровень 3,3В на 8 секунд.

На плате датчика имеется не распаянное посадочное место под SMD npn транзистор, чтобы можно было подключать более мощные нагрузки, например для управления освещением. При установке на плату транзистора резистор с нулевым сопротивлением который стоит в качестве перемычке нужно убрать.

Датчик движения на HC-SR505, увеличиваем дальность обнаружения движения

Датчик движения на HC-SR505, увеличиваем дальность обнаружения движения

Схема для переделки датчика:

Датчик движения на HC-SR505, увеличиваем дальность обнаружения движения

Нагрузку будет включать в моём случае твердотельное реле на 5В (внутри него содержится оптрон и симистор), нагрузка может быть подключена к нему на выход до 240В 2А.

Датчик движения на HC-SR505, увеличиваем дальность обнаружения движения

Питать устройство будем от миниатюрного импульсного БП, подойдёт любая зарядка от телефона, так как наша схема очень экономная, с малым током потребления – 10мА при 5В. При питании от БП с напряжением от 6 до 18 Вольт последовательно с выводом 2 датчика нужно установить резистор, рассчитанный по формуле R=(U-5)\0,008 где U в Вольтах а R в Омах.

Датчик движения на HC-SR505, увеличиваем дальность обнаружения движения

Для своего устройства я взял БП от зарядки, тут же подпаял и прикрепил на трансформатор твердотельное реле.

Датчик движения на HC-SR505, увеличиваем дальность обнаружения движения

Датчик движения на HC-SR505, увеличиваем дальность обнаружения движения

Дальше для увеличения дистанции обнаружения движения нам понадобится отражатель от фонарика, без него датчик обнаруживает движение до 4-х метров, а с ним я проверял достигает до 11 метров.

Датчик движения на HC-SR505, увеличиваем дальность обнаружения движения

Датчик движения на HC-SR505, увеличиваем дальность обнаружения движения

Датчик движения на HC-SR505, увеличиваем дальность обнаружения движения

Датчик вклеиваем в отражатель термоклеем, а дальше вставляем в ПВХ трубу, у меня отражатель как раз получается по размерам утолщения этой трубы и вставляем датчик в трубу пока отражатель упрётся в тонкую часть трубы и там его фиксируем термоклеем. Перед этим я обычно центрую отражатель куском такой же трубы, всунув её в переднюю часть и натянув за проводки сзади.

Датчик движения на HC-SR505, увеличиваем дальность обнаружения движения

Этот же отрезок трубы будет в дальнейшем служить для настройки фокуса, двигая её.

Датчик движения на HC-SR505, увеличиваем дальность обнаружения движения

В трубу вставляем с обратной стороны БП с подпаянными к нему проводами (питание 220В и выход с реле на лампочку), на провода я надел заглушку, у меня это силиконовое кольцо от сантехники, он плотно вставляется крепко удерживая БП внутри.

Датчик движения на HC-SR505, увеличиваем дальность обнаружения движения

Подключаем готовый самодельный датчик движения в сеть и испытываем.

Датчик движения на HC-SR505, увеличиваем дальность обнаружения движения

Датчик движения на HC-SR505, увеличиваем дальность обнаружения движения

Как видим датчик срабатывает хорошо, он стал узконаправленный но при этом дальность у него стала гораздо больше.

Забрать к себе:

Общие сведения

Любой человек или животное с температурой выше нуля испускает тепловую энергию в виде излучения. Это излучение не видно человеческому глазу, потому что оно излучается на инфракрасных волн, ниже спектра, который люди могут видеть. Измерение этой энергии, не то же самое, что измерять температуру. Так как температура зависит от теплопроводности, поэтому, когда человек входит в комнату, он не может мгновенно изменить температуру в помещении. Однако есть уникальная инфракрасное излучение из-за температуры тела и которую ищет PIR датчик.
Принцип работы инфракрасного датчика движения HC-SR501 прост, при включении, датчик настраивается на «Нормальную» инфракрасное излучение в пределах своей зоны обнаружения. Затем он ищет изменения, например человек прошел или переместился в пределах контролируемой зоны. Для определения инфракрасного излечение детектор использует пироэлектрический датчик. Это устройство, которое генерирует электрический ток в ответ на прием инфракрасного излучения. Поскольку датчик не излучает сигнал (например, ранее упомянутый ультразвуковой датчик) , его наказывают «пассивным». Когда обнаружено изменение, датчик HC-SR501 изменяет выходной сигнал.

Для повышения чувствительности и эффективности датчика HC-SR501 используется метод фокусировки инфракрасного излечения на устройство, достигается, это с помощью «Линзы Френеля». Линза выполнен из пластика и выполнена в виде купола и фактически состоит из нескольких небольших линз Френеля. Хоть пластик и полупрозрачен для человека, но на самом деле полностью прозрачен для инфракрасного света, поэтому он также служит в качестве фильтра.

HC-SR501 — недорогой датчик PIR, который полностью автономный, способный работать сам по себе или в сопряжении с микроконтроллером. Датчик имеет регулировку чувствительности, которая позволяет определять движение от 3 до 7 метров, а его выход можно настроить так, чтобы он оставался высоким в течение времени от 3 секунд до 5 минут. Так же, датчике имеет встроенный стабилизатор напряжения, поэтому он может питаться от постоянного напряжения от 4,5 до 20 вольт и потребляет небольшое количество тока. HC-SR501 имеет 3-контактный разъем, назначение следующие:

Назначение выводов VCC
— положительное напряжение постоянного тока от 4,5 до 20 В постоянного тока.OUTPUT
— логический выход на 3,3 вольта. LOW не указывает на обнаружение, HIGH означает, что кто-то был обнаружен.GND
— заземление.

На плате также установлены два потенциометра для настройки нескольких параметров:SENSITIVITY
— устанавливает максимальное и минимальное расстояние (от 3 метров до 7 метров). TIME (ВРЕМЯ)
— время, в течение которого выход будет оставаться HIGH после обнаружения. Как минимум, 3 секунды, максимум 300 секунд или 5 минут.

Назначение перемычек: H
— это настройка Hold или Repeat. В этом положении HC-SR501 будет продолжать выдавать сигнал HIGH, пока он продолжает обнаруживать движение.L
— Это параметр прерывания или без повтора. В этом положении выход будет оставаться HIGH в течение периода, установленного настройкой потенциометра TIME.

На плате HC-SR501 имеются дополнительные отверстия для двух компонентов, рядом расположена маркировка, посмотреть на нее можно сняв линзу Френеля.

Назначение дополнительных отверстий: RT
— это предназначено для термистора или чувствительного к температуре резистора. Добавление этого позволяет использовать HC-SR501 в экстремальных температурах, а также в некоторой степени повышает точность работы детектора.RL
— это соединение для светозависимого резистора или фоторезистора. Добавляя компонент, HC-SR501 будет работать только в темноте, что является общим приложением для чувствительных к движению систем освещения.

Принципиальная схема охранного устройства

Сигнализация работает на электронную сирену В1, в качестве которой используется стандартная сирена для автомобильной сигнализации. Этим обусловлено напряжение питания схемы. Основу схемы составляет логическая микросхема D1 типа К561ЛЕ10 (или зарубежный аналог 4025). Эта микросхема состоит из трех логических элементов «ЗИЛИ-НЕ» КМОП логики. При питании от источника 12V напряжение на выходе пиродатчика F1 (3,3V) будет недостаточно, поэтому после него включен каскад на транзисторе VТ1, он повышает уровень логической единицы но инвертирует напряжение. Чтобы исправить инверсию, внесенную транзистором VТ1 служит элемент D1.1, включенный инвертором.

Рис. 2. Принципиальная схема охранного устройства на основе пиродатчика HC-SR501.

Теперь, при срабатывании пиродатчика на выходе элемента D1.1 будет логическая единица. На двух других элементах микросхемы собран RS-триггер с цепью обратного сброса на С2 и R4.

Как только триггер устанавливается в состояние с логической единицей на выходе D1.3 конденсатор С2 начинает медленно заряжаться через R4, и примерно через 20 секунд напряжение на нем достигает порога срабатывания логической единицы. И триггер возвращается в исходное положение.

Блокировка триггера осуществляется цепью C1-R3. Пока С1 разряжен или замкнут блокирующий выключатель S10 напряжение на выводе 12 D1.3 — логическая единица. Пока есть такое состояние напряжение на выходе элемента D1.3 не зависит от напряжения на соединенных вместе выводах 1 и 2 элемента D1.2. Поэтому схема на состояние пиродатчика не реагирует.

После выключения S10 конденсатор С1 через резистор R3 начинает медленно заряжаться и примерно через 20 секунд напряжение на нем достигает порога срабатывания логического нуля. Теперь триггер будет реагировать на пиродатчик, и при его срабатывании на выходе D1.3 установится логическая единица. Ключ на VТ2 и VТЗ откроется и подастся питание на сирену.

Отключение сигнализации происходит в два этапа. Сначала нужно нажать кнопки кода на клавиатуре из кнопок S0-S1. Клавиатура сделана по схеме простого кодового замка. Все кнопки переключающие.

Все включены последовательно в цепь, но кнопки, образующие код включены нормально разомкнутыми контактами, а все остальные — нормально замкнутыми. В результате цепь замыкается если нажать одновременно только кнопки, образующие код. Во всех остальных случаях цепь не замыкается. Код задается монтажом кнопок.

На рисунке показан вариант для кода «045», — при одновременном нажатии кнопок SO, S4 и S5 цепь замыкается и разряжает конденсатор С1. Теперь около 20 секунд схема не будет реагировать на пиродатчик, можно войти в помещение и окончательно заблокировать сигнализацию выключателем S10 (включить его).

Время, в течение которого схема не чувствительна к пиродатчику (время на вход и блокировку или на разблокировку и выход)зависит от параметров цепи C1-R3. Минимальное время, в течение которого звучит сигнализация — цепью R4-C2.

PIR датчик движения Ардуино: характеристики

Сегодня уже никто не удивляется при автоматическом включении освещения в подъездах многоквартирных домов, которые срабатывают при прохождении человека. В большинстве приборов установлены пассивные датчики движения (PIR). Рассмотрим в этой статье устройство датчика движения, схему его подключения к Arduino UNO и соберем на его основе автоматический включатель освещения.

Линза Френеля концентрирует инфракрасное излучение

Модуль с ПИР датчиком состоит из пироэлектрического элемента под пластиковой линзой Френеля — цилиндрическая деталь с прямоугольным кристаллом в центре, который улавливает уровень инфракрасного излучения и пропускает его через себя. При подключении IR к Arduino мы уже выяснили, что все предметы имеют инфракрасное излучение и чем выше температура, тем интенсивнее излучение.

Устройство и распиновка пироэлектрического датчика движения

PIR датчики движения практически одинаковы по устройству. Диапазон чувствительности PIR сенсоров для Ардуино до 6 метров, угол обзора 110° x 70°. Питание — 5 Вольт, а выходной цифровой сигнал имеет значение 0, когда движения нет и значение 1 при наличии движения. Чувствительные элементы устанавливается в герметический корпус, который защищает от влажности и перепадов температур.

Как работает PIR датчик движения?

Если вы не знали, все объекты с температурой выше абсолютного нуля (0 Кельвинов / -273,15°C), включая человеческие тела, испускают тепловую энергию в виде инфракрасного излучения. Чем горячее объект, тем большее излучение он излучает.

PIR датчик разработан специально для обнаружения таких уровней инфракрасного излучения. В основном он состоит из двух основных составляющих: пироэлектрического датчика и специальной линзы, называемой линзой Френеля, которая фокусирует инфракрасные сигналы на пироэлектрический датчик.

Рисунок 2 – PIR датчик, пироэлектрический датчик, два слота обнаружения

Пироэлектрический датчик на самом деле имеет две прямоугольные прорези, выполненные из материала, который пропускает инфракрасное излучение. За ними находятся два отдельных инфракрасных сенсорных электрода: один из которых отвечает за создание положительного выходного сигнала, а другой – отрицательного. Причина такого решения заключается в том, что мы ищем изменение инфракрасных уровней, а не сами окружающие инфракрасные уровни. Два электрода подключены так, чтобы они подавляли друг друга. Если одна половина видит больше или меньше инфракрасного излучения, чем другая, выходной сигнал будет высоким или низким.

Когда датчик находится в режиме ожидания (то есть вокруг датчика нет движения), оба слота обнаруживают одинаковое количество инфракрасного излучения, что приводит к нулевому выходному сигналу.

Но когда мимо проходит теплый объект, подобный человеку или животному; сначала он перекрывает одну половину PIR датчика, что вызывает появление положительного дифференциального изменения между двумя половинами. Когда теплый объект покидает чувствительную область, происходит обратное, в результате чего датчик генерирует отрицательное дифференциальное изменение. Соответствующий импульс сигналов приводит к тому, что датчик устанавливает на выходном выводе высокий логический уровень.

Рисунок 3 – Принцип действия PIR датчика

Общие рекомендации

Инфракрасный выключатель после покупки нужно отрегулировать. Для этого требуется сделать следующее:

  • отрегулировать чувствительность сенсора;
  • установить время работы во включенном состоянии;
  • если прибор оснащен микрофоном, его также следует отрегулировать.

Многие выключатели оснащаются светодиодным индикатором, который меняет частоту мигания при срабатывании. Это свойство можно использовать при настройке датчика.

Инфракрасный выключатель – это устройство, призванное облегчить и сделать более комфортной жизнь пользователя. Прибор оснащен ИК датчиком, который реагирует на тепло человека. Когда в радиусе видимости сенсора начинается действие, включается светильник. Также выключатель может работать от пульта дистанционного управления.

https://youtube.com/watch?v=8L7_fF6tQbc

Общие сведения

Любой человек или животное с температурой выше нуля испускает тепловую энергию в виде излучения. Это излучение не видно человеческому глазу, потому что оно излучается на инфракрасных волн, ниже спектра, который люди могут видеть. Измерение этой энергии, не то же самое, что измерять температуру. Так как температура зависит от теплопроводности, поэтому, когда человек входит в комнату, он не может мгновенно изменить температуру в помещении. Однако есть уникальная инфракрасное излучение из-за температуры тела и которую ищет PIR датчик.
Принцип работы инфракрасного датчика движения HC-SR501 прост, при включении, датчик настраивается на «Нормальную» инфракрасное излучение в пределах своей зоны обнаружения. Затем он ищет изменения, например человек прошел или переместился в пределах контролируемой зоны. Для определения инфракрасного излечение детектор использует пироэлектрический датчик. Это устройство, которое генерирует электрический ток в ответ на прием инфракрасного излучения. Поскольку датчик не излучает сигнал (например, ранее упомянутый ультразвуковой датчик) , его наказывают «пассивным». Когда обнаружено изменение, датчик HC-SR501 изменяет выходной сигнал.

Для повышения чувствительности и эффективности датчика HC-SR501 используется метод фокусировки инфракрасного излечения на устройство, достигается, это с помощью «Линзы Френеля». Линза выполнен из пластика и выполнена в виде купола и фактически состоит из нескольких небольших линз Френеля. Хоть пластик и полупрозрачен для человека, но на самом деле полностью прозрачен для инфракрасного света, поэтому он также служит в качестве фильтра.

HC-SR501 — недорогой датчик PIR, который полностью автономный, способный работать сам по себе или в сопряжении с микроконтроллером. Датчик имеет регулировку чувствительности, которая позволяет определять движение от 3 до 7 метров, а его выход можно настроить так, чтобы он оставался высоким в течение времени от 3 секунд до 5 минут. Так же, датчике имеет встроенный стабилизатор напряжения, поэтому он может питаться от постоянного напряжения от 4,5 до 20 вольт и потребляет небольшое количество тока. HC-SR501 имеет 3-контактный разъем, назначение следующие:

Назначение выводов VCC
— положительное напряжение постоянного тока от 4,5 до 20 В постоянного тока.OUTPUT
— логический выход на 3,3 вольта. LOW не указывает на обнаружение, HIGH означает, что кто-то был обнаружен.GND
— заземление.

На плате также установлены два потенциометра для настройки нескольких параметров:SENSITIVITY
— устанавливает максимальное и минимальное расстояние (от 3 метров до 7 метров). TIME (ВРЕМЯ)
— время, в течение которого выход будет оставаться HIGH после обнаружения. Как минимум, 3 секунды, максимум 300 секунд или 5 минут.

Назначение перемычек: H
— это настройка Hold или Repeat. В этом положении HC-SR501 будет продолжать выдавать сигнал HIGH, пока он продолжает обнаруживать движение.L
— Это параметр прерывания или без повтора. В этом положении выход будет оставаться HIGH в течение периода, установленного настройкой потенциометра TIME.

На плате HC-SR501 имеются дополнительные отверстия для двух компонентов, рядом расположена маркировка, посмотреть на нее можно сняв линзу Френеля.

Назначение дополнительных отверстий: RT
— это предназначено для термистора или чувствительного к температуре резистора. Добавление этого позволяет использовать HC-SR501 в экстремальных температурах, а также в некоторой степени повышает точность работы детектора.RL
— это соединение для светозависимого резистора или фоторезистора. Добавляя компонент, HC-SR501 будет работать только в темноте, что является общим приложением для чувствительных к движению систем освещения.

Things to consider when designing a PIR sensor system

Just like other PIR sensors, the HC-SR501 needs some time to initialize and adjust to the infrared levels in the room. This takes approximately 1 minute when it is first powered up. Try to eliminate any motion in front of the sensor during this period.

Wind and a light source close to the sensor can cause interference, so try to adjust your setup to avoid this. Also, note that you must mount the sensor horizontally since most motion will happen in the horizontal plane (e.g. walking).

Besides the delay-time (Tx), the sensor also has a ‘blocking-time’ (Ti). By default, the blocking time is 2.5 seconds and it is not very easy to change (see BISS0001 datasheet). Each time the output goes from HIGH to LOW, the blocking period start. During this time period, the sensor will not detect any motion.

When designing a system based on the HC-SR501, you will need to take these delay periods into account.

Схема подключения датчика движения/присутствия HC-SR501 к ATmega16

Часто необходимо подключить данный датчик (HC-SR501) к какому-нибудь микроконтроллеру и сделать ту или иную операцию. К примеру, при срабатыванию датчика, микроконтроллер, в моём случае ATmega16, отправляет через USART/UART радио модули TB387 сообщение.
К сожалению, в библиотеке Протеуса нету ни HC-SR501, ни радио модули TB387, данные элементы просто нарисованы. Для эмуляции датчика движения взял кнопку, а для приёма данных — терминал. При нажатии кнопки контроллер перехватывает сигнал и, через Tx, отправляет текстовое сообщение.

Результат можно увидеть на картинке ниже.

Код программы: файл main.c

#define F_CPU 11059200UL // Clock Speed
#define BAUD 9600
#define MYUBRR F_CPU/16/BAUD-1

#include <avr/io.h>
#include <avr/interrupt.h>
#include «uart.h»

ISR(INT0_vect) {
// отправляем сообщение
USARTTransmitStringLn(«HC-SR501»);
}

void InitINT0() {
//настраиваем вывод на вход
DDRD &= ~(1<<PIND2);
//разрешаем внешнее прерывание на int0
GICR = 1<<INT0;
//настраиваем условие прерывания. По нарастающему фронту
MCUCR = 1<<ISC01 | 1<<ISC00;
}

int main(void) {
cli();
USARTInit(MYUBRR);
InitINT0();
sei();
while (1) {
asm(«nop»);
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

#define F_CPU 11059200UL    // Clock Speed
#define BAUD 9600
#define MYUBRR F_CPU/16/BAUD-1
 
#include <avr/io.h>
#include <avr/interrupt.h>
#include «uart.h»
 

ISR(INT0_vect){

// отправляем сообщение

USARTTransmitStringLn(«HC-SR501»);

}
 

voidInitINT0(){

//настраиваем вывод на вход

DDRD&=~(1<<PIND2);

//разрешаем внешнее прерывание на int0

GICR=1<<INT0;

//настраиваем условие прерывания. По нарастающему фронту

MCUCR=1<<ISC01|1<<ISC00;

}
 

intmain(void){

cli();

USARTInit(MYUBRR);

InitINT0();

sei();

while(1){

asm(«nop»);

}

}