Подскажите пожалуйста, как настроить датчик движения

prosto_andriy
Offline
Зарегистрирован: 09.12.2012

Выглядит этот датчик примерно так

Нашел в инете даже схему (модель HC-SR501)

Подскажите пожалуйста, что регулируется подстроечными резисторами RT1 и RL2? И вкаком их положении (правом или левом) заначения будут максимальными?

Заранее спасибо всем ответившим!

maksim
Offline
Зарегистрирован: 12.02.2012

Один регулирует время удержания активного уровня (время работы) после срабатывания, второй чувствительность. И если посмотреть внимательно, то под потенциометрами на плате есть надписи. Под одним MIN  MAX - это чувствительность, а под вторым MIN time MAX - это время работы, в какую сторону увеличивать или уменьшать думаю и так ясно.

prosto_andriy
Offline
Зарегистрирован: 09.12.2012

Спасибо за подсказку! А скажите пожалуйста, зачем в этой схеме джампер JP1? Что им переключается?

maksim
Offline
Зарегистрирован: 12.02.2012

Сам не проверял, лень датчик подключать, но если не ошибаюсь, то судя по всему эта перемычка включает/выключает режим сброса отсчета времени, который делает следующее - если произошло срабатывание, то начинается отсчет времени работы и если за это время происходит еще срабатывание, то отсчет начинается заново. Тоесть если успевать двигаться в промежутках времени работы, то сигнал на выходе будет всегда активный. Если же этот режим выключен, то при срабатывании начинается отсчет времени и пока время не закончится все последующие срабатывания будут игнорироваться.
Когда этот режим включен выглядит это примерно так:

зелений - импульсы срабатывания
красный - выходной сигнал

 

 

prosto_andriy
Offline
Зарегистрирован: 09.12.2012

Только что нашел такое объяснение в картинках:

Подскажите  пожалуйста, как эти надписи переводятся на русский!

У меня такой датчик работает как-то странно! Если подстроечник RT1 установить на Min (минимум), датчик работает "на своей волне" - светодиод подключенный к выходу то включается, то выключается каждые 2-3 секунды, в общем схема работает как какой-то мультивибратор!

Если же подстроечник RT1 повернуть от минимума, то светодиод вообще просто горит! Я вообще сомневаюсь, что датчик на что-то реагирует!

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

Микросхема, установленная в ней - это какой-то операционный усилитель?  Или я ошибаюсь? 

maksim
Offline
Зарегистрирован: 12.02.2012

prosto_andriy пишет:

Подскажите  пожалуйста, как эти надписи переводятся на русский!

У вас гугл переводчик не работает?

prosto_andriy пишет:

Микросхема, установленная в ней - это какой-то операционный усилитель?  Или я ошибаюсь? 

И гугл тоже не работает?

Эта микруха - специализированный МК для датчика движения.

prosto_andriy
Offline
Зарегистрирован: 09.12.2012

maksim пишет:

Эта микруха - специализированный МК для датчика движения.

Через гугл я пробовал найти на неё даташит, но не получилось!

Благодарю за ссылку!

maksim
Offline
Зарегистрирован: 12.02.2012

Да ну ладно вам, как это у вас могло не получится? Наберите в гугле biss0001 .

dimka
dimka аватар
Offline
Зарегистрирован: 21.09.2012
датчик движения + GSM прослушка помещения
При обнаружение движения датчик отправляет положительные сигнал на вход Arduino
Ардуино посылает сигнал на Servo. вперед назад вперед назад, (нажимает на кнопку вызова на телефоне)
Servo прикреплена к телефону скотчем
/* урок от Дмитрия Осипова. http://www.youtube.com/user/d36073?feature=watch
датчик движения + GSM прослушка помещения
При обнаружение движения датчик отправляет положительные сигнал на вход Arduino
Ардуино посылает сигнал на Servo. вперед назад вперед назад, (нажимает на кнопку вызова на телефоне)
Servo прикреплена к телефону скотчем

Servo, и Мобильный телефон, вещи несовместимые, пришлось их с большим трудом подружить

Инфракрасный датчик движения Infrared PIR Motion Sensor Arduino
https://www.youtube.com/watch?v=y_QwZPsv-ec

*/


#include <Servo.h> 
Servo dimkaservo1;

const int buttonPin = 11;     // датчик движения подключён к 11 пину
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  pinMode(buttonPin, INPUT);
  dimkaservo1.attach(7); //подключаем  Servo (при подключении питания)Servo подключён к 7 пину
  dimkaservo1.write(30); //устанавливаем положение 30 градусов (при подключении питания)
  //при подключении питания,датчик движения выдаёт ложные сигналы. даем ему 5 секунд чтобы он пришел в норму
  digitalWrite(buttonPin,LOW),   delay(5000); 

}

void loop(){ 
  // detach отключаем Servo чтоб не дребезжала 
  dimkaservo1.detach();
  buttonState = digitalRead(buttonPin);
  //если сработал датчик движения,заново подключаем  Servo
  if (buttonState == HIGH) dimkaservo1.attach(7),     
  //поворачиваем   Servo туда сюда обратно......  
  dimkaservo1.write(80), delay(1000), dimkaservo1.write(30), delay(1000),dimkaservo1.write(80), delay(1000), dimkaservo1.write(30),
  delay(1000),
  // detach отключаем Servo чтоб не дребезжала.+ (Во время звонка!) Servo ведет себя неадекватно поэтому выключаем её
  dimkaservo1.detach(),
  // датчик движения Тоже начинает болезненно реагировать (Во время звонка!) на телефонный сигнал, поэтому выключаем его на 60 секунд
  //рекомендую время увеличить, хотя для теста можно и сократить
  digitalWrite(buttonPin,LOW),   delay(60000);


} 



/* урок от Дмитрия Осипова. http://www.youtube.com/user/d36073?feature=watch
 датчик движения + GSM прослушка помещения v.02
 Version 0.2 - 2013/06/22
 При обнаружение движения датчик отправляет положительные сигнал на вход Arduino
 Ардуино посылает сигнал на Servo. вперед назад вперед назад, (нажимает на кнопку вызова на телефоне)
 Servo прикреплена к телефону скотчем
 
 Servo, и Мобильный телефон, вещи несовместимые, пришлось их с большим трудом подружить
 
 Инфракрасный датчик движения Infrared PIR Motion Sensor Arduino
 https://www.youtube.com/watch?v=y_QwZPsv-ec
 
 датчик движения + GSM прослушка помещения.Arduino Servo Infrared PIR Motion Sensor. Version 0.1 
 http://www.youtube.com/watch?v=nh3xH3LTmyw
  
 */

#include <Servo.h> 
Servo dimkaservo1;

//Чтобы не использовать провода для питания, и датчик движения подключить напрямую к Arduino Nano
//Сделан из ПИНА (16) плюс 5 вольт
//а из ПИНА (14) минус (GND)

//Превращаем аналоговый ПИН (A2), в цифровой ПИН (16). 
#define high1 16
//Превращаем аналоговый ПИН (A0), в цифровой ПИН (14). 
#define GND1 14

//Превращаем аналоговый ПИН (A1), в цифровой ПИН (15).
const int buttonPin = 15;     // датчик движения подключён к 15 пину-(A1)
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {

  dimkaservo1.attach(7); //подключаем  Servo (при подключении питания)Servo подключён к 7 пину
  dimkaservo1.write(30); //устанавливаем положение 30 градусов (при подключении питания)
  

  pinMode(high1,OUTPUT);
 // Делаем его плюсом 5 вольт
  digitalWrite(high1,HIGH);
  
  pinMode(GND1,OUTPUT);
 // Делаем его минусом (GND)
  digitalWrite(GND1,LOW);

  pinMode(buttonPin, INPUT);
  //при подключении питания,датчик движения выдаёт ложные сигналы. даем ему 5 секунд чтобы он пришел в норму
  digitalWrite(buttonPin,LOW); delay(5000);  
   
}

void loop(){ 
  // detach отключаем Servo чтоб не дребезжала 
  dimkaservo1.detach();
  buttonState = digitalRead(buttonPin);
  //если сработал датчик движения,заново подключаем  Servo
  if (buttonState == HIGH) dimkaservo1.attach(7),     
  //поворачиваем   Servo туда сюда обратно......  
  dimkaservo1.write(85), delay(1000), dimkaservo1.write(30), delay(1000),dimkaservo1.write(85), delay(1000), dimkaservo1.write(30),
  delay(1000),
  // detach отключаем Servo чтоб не дребезжала.+ (Во время звонка!) Servo ведет себя неадекватно поэтому выключаем её
  dimkaservo1.detach(),
  // датчик движения Тоже начинает болезненно реагировать (Во время звонка!) на телефонный сигнал, поэтому выключаем его на 60 секунд
  //рекомендую время увеличить, хотя для теста можно и сократить
  digitalWrite(buttonPin,LOW),   delay(60000);
} 




 

 

Vell
Offline
Зарегистрирован: 02.02.2013

prosto_andriy пишет:

 

Если же подстроечник RT1 повернуть от минимума, то светодиод вообще просто горит! 

возможно он просто очень часто моргает... если промежуток времени поставлен на минимум. Как то так:)

Danila
Offline
Зарегистрирован: 16.05.2013

Уважаемый prosto_andriy, вы не подскажете почему у меня этот сенсор постоянно включается и выключается.

Куда бы я ни ставил джампер и в каком бы положении не стояли регуляторы, всевремя срабатывыает вновь и вновь при отсутствии движений.

Спасибо ! 

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

помехи по питанию?

Danila
Offline
Зарегистрирован: 16.05.2013

Что вы имеете ввиду ? Питание напрямую от ардуины - я пробовал и 3.3 в и 5 вольт. один короткий провод. Сейчас фото выложу.

 

Вот, вроде все цивильно-культурно :) 

 

http://vk.com/doc433721_220119225?hash=04e24b6e27cbe1b878&dl=daf7c756edafe59f10   ссылка работает ?

prosto_andriy
Offline
Зарегистрирован: 09.12.2012

Danila пишет:

...почему у меня этот сенсор постоянно включается и выключается.

Куда бы я ни ставил джампер и в каком бы положении не стояли регуляторы, всевремя срабатывыает вновь и вновь при отсутствии движений.

У меня с аналогичным датчиком была почти такая же ситуация! Тоже думал, что я его неправильно подключил - оказалось, что датчик был бракованным. Подключил другой датчик и он сразу же заработал нормально.

Так что, скорее всего, Вам нужно найти неисправность в самом датчике, а не в его подключении. Возмите увеличительное стекло и посмотрите, нету ли "соплей" припоя между дорожками, и хорошо ли припаяны детали, в том числе микросхема! Возможно где-то есть "холодная" пайка! Если путем визуального осмотра неисправность не найдете, попробуйте "прозвонить" соединения мультиметром.

Хотя, чтобы быстро найти неисправность в этом устройстве нужен хотя бы простейший осциллограф. Иначе о том, что происходит внутри него, и правильно ли работает микросхема датчика, можно только гадать.

Danila
Offline
Зарегистрирован: 16.05.2013

три бракованных датчика, вот китайцы удружили !

Спасибо вам большое !

prosto_andriy
Offline
Зарегистрирован: 09.12.2012

 Если такая ситуация с тремя датчиками, а не с одним, тогда возможно причина действительно в неправильном подключении!

На плате датчика стоит стабилизатор на 3,3V, померяйте тестером, стабильное ли напряжение на его выходе? Попробуйте до максимума упростить схему подключения!

Возьмите 9V батарейку (крону) подкл. к ней датчик, а выход датчика через светодиод и резистор на 220 Ом к минусу батареи! Попробуйте будет ли датчик работать нормально!

Danila
Offline
Зарегистрирован: 16.05.2013

Апдейт. 

Я все понял.

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

Sergey_Ch
Offline
Зарегистрирован: 15.01.2015

Еще одна особенность есть у этих датчиков движения. Собрал на Ардуине и GPRS модуле сигнализацию и подключил к ней этот датчик. При отправке СМС и включении GPRS в  режим передачи, срабатывал датчик движения. Оказалось, что провода PIR-датчика  находятся рядом с антенной GPRS модуля. Наводка давала сигнал HIHG на пин Ардуины. Растащил их подальше друг от друга - проблема исчезла.  

maksim
Offline
Зарегистрирован: 12.02.2012

Это не особенность датчика, вы можете убрать датчик вообще, а помехи все равно будут, если провода поднести к антенне.

metalika
Offline
Зарегистрирован: 16.02.2015

Здраствуйте приобрел такой датчик, подскажите пож, 

подключил его к кроне и незнаю как на выходе получить теже 9 вольт! светодиод работает, но датчик понижает вольтаж до 3 вольт с любого подключенного к нему устройисва!  как сделать чтобы сколько подключаешь к нему(5в-20в) чтоб столько и было на выходе???

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

metalika пишет:

подключил его к кроне и незнаю как на выходе получить теже 9 вольт! светодиод работает, но датчик понижает вольтаж до 3 вольт с любого подключенного к нему устройисва!

 

Всё правильно, там стоит стабилизатор напряжения 3,3В. Т.к. микросхема датчика работает от напряжения 3-5 В, и в качетсве сигнала выдаёт логический уровень.

metalika пишет:

как сделать чтобы сколько подключаешь к нему(5в-20в) чтоб столько и было на выходе???

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

metalika
Offline
Зарегистрирован: 16.02.2015

Спасибо за ответ! Но честно говоря плохо разбираюсь в этом) но мне жутко интересно все это делать своими руками...

Т.Е я подключил вот по этой схеме  http://clip2net.com/s/3cyyktK

если я постававить где у меня выходит плюс и минус через транзистор то я получу более высокое наприжение??? от тогоже источника питания??

WariorSister
Offline
Зарегистрирован: 25.07.2016

https://crow.ua/news/programmirovanie-besprovodnyix-datchikov - точная инструкция по программированию датчиков

dark_angel411
Offline
Зарегистрирован: 13.08.2015

Подскажыте почему при отключеных датчиках ардуина реагирует как бутто они подключены. Или когда датчик подключён но на его выходе 0 Ардуина всёравно пишет 1. И как опрашывать несколько датчиков? Также при работе с ними ардуинка греится. питание датчиков от внешней батареи  

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Схему подключения и скетч в студию.

dark_angel411
Offline
Зарегистрирован: 13.08.2015
int pirPin1 = 5;
int pirPin2 = 6;
int pirPin3 = 8;
//----------------//
int Value1=0; 
int Value2=0;
int Value3=0;
//----------------//

int LedPin = 13;

//int Start_Arduino = 60; // 1 min

void setup()
{
pinMode(LedPin, OUTPUT);
//-----------------------//
pinMode(pirPin1, INPUT);
pinMode(pirPin2, INPUT);
pinMode(pirPin3, INPUT);
//------------------------//
digitalWrite(pirPin1, LOW);
digitalWrite(pirPin2, LOW);
digitalWrite(pirPin3, LOW);
//-----------------------//
delay(5000); 
Serial.begin(9600);
Serial.println("Signal On");
}
void MovsSens ()
{
Value1 = digitalRead(pirPin1);
Value2 = digitalRead(pirPin2);
Value3 = digitalRead(pirPin3);
if (Value1 == HIGH) 
{
  Serial.println(Value1);
 // ReleyOn();
}

if (Value2 == HIGH) 
{
  Serial.println(Value1);
 // ReleyOn();
}

if (Value3 == HIGH)
{
Serial.println( Value3);
 // ReleyOn();
}

delay(4000);
}

void ReleyOn()
{
digitalWrite(LedPin, HIGH);
delay(2000);
digitalWrite(LedPin, LOW);
}
void loop()
{
MovsSens ();
}


 

dark_angel411
Offline
Зарегистрирован: 13.08.2015

схему подключения немогу сбросить так как она на другом компе с ног д5 - 8  идут дорожки без ответлений а запитано всё от dc dc с наприжением 5,6в

dark_angel411
Offline
Зарегистрирован: 13.08.2015

причину я вроде как нашол ето Arduino глючило

dark_angel411
Offline
Зарегистрирован: 13.08.2015

неппомогло

 

dark_angel411
Offline
Зарегистрирован: 13.08.2015

Помогите найти ошыбку и закончить проект. Задача состоит в том что: есть помишение в нём нужно установить 4 датчика движения. Все они подключены к одной Arduino nano. Если один из датчиков срабатывает то твёрдотелое реле иметирует двойное нажатие на кнопку. Всё подключаю и полутается так сто ардуино сходит с ума на тех выходах что нет датчиков откутато берёт наприжение. или начинает срабатвыть хотя датчики молчат.   Схема и код программы. Помогите пожайлуста очень время поджемает. 

int pirPin1 = 3;
int pirPin2 = 4;
int pirPin3 = 5;
int pirPin4 = 6;

int Relay = 2;
//----------------//
int Value1=0; 
int Value2=0;
int Value3=0;
int Value4=0;
//----------------//

int LedPin = 13;

void setup()
{
pinMode(LedPin, OUTPUT);
//-----------------------//
pinMode(pirPin1, INPUT);
pinMode(pirPin2, INPUT);
pinMode(pirPin3, INPUT);
pinMode(pirPin4, INPUT);

pinMode(Relay, OUTPUT)
//------------------------//
digitalWrite(pirPin1, LOW);
digitalWrite(pirPin2, LOW);
digitalWrite(pirPin3, LOW);
digitalWrite(pirPin4, LOW);

digitalWrite(Relay, LOW);
//-----------------------//
delay(5000); 
Serial.begin(9600);
Serial.println("Signal On");
}


void MovsSens ()
{
Value1 = digitalRead(pirPin1);
Value2 = digitalRead(pirPin2);
Value3 = digitalRead(pirPin3);
Value3 = digitalRead(pirPin4);

if (Value1 == HIGH) 
{
  Serial.println( "mow alue1 ");
 ReleyOn();
}

if (Value2 == HIGH) 
{
  Serial.println("mow alue2 ");
  ReleyOn();
}

if (Value3 == HIGH)
{
Serial.println( "mow alue3 ");
  ReleyOn();
}
if (Value4 == HIGH)
{
Serial.println( "mow alue4 ");
  ReleyOn();
}
delay(2000);
}

void ReleyOn()
{
digitalWrite(Relay, HIGH);
delay(2000);
digitalWrite(Relay, LOW);
delay(2000);
digitalWrite(Relay, HIGH);
delay(2000);
digitalWrite(Relay, LOW);
}


void loop()
{
MovsSens ();
}


 

Araris
Offline
Зарегистрирован: 09.11.2012

Вместо

pinMode(pirPin1, INPUT);
pinMode(pirPin2, INPUT);
pinMode(pirPin3, INPUT);
pinMode(pirPin4, INPUT);

pinMode(Relay, OUTPUT)
//------------------------//
digitalWrite(pirPin1, LOW);
digitalWrite(pirPin2, LOW);
digitalWrite(pirPin3, LOW);
digitalWrite(pirPin4, LOW);

напишите

pinMode(pirPin1, INPUT);
pinMode(pirPin2, INPUT);
pinMode(pirPin3, INPUT);
pinMode(pirPin4, INPUT);

pinMode(Relay, OUTPUT)
//------------------------//
digitalWrite(pirPin1, HIGH); // set pullup on pin
digitalWrite(pirPin2, HIGH); // set pullup on pin
digitalWrite(pirPin3, HIGH); // set pullup on pin
digitalWrite(pirPin4, HIGH); // set pullup on pin

 

dark_angel411
Offline
Зарегистрирован: 13.08.2015

Нужны ли резисторы между ногами ардуино и сигнальными датчика

dark_angel411
Offline
Зарегистрирован: 13.08.2015

А можете обяснить почему так?  Чтобы знать в дальнейшем 

Araris
Offline
Зарегистрирован: 09.11.2012

dark_angel411 пишет:

А можете обяснить почему так?  Чтобы знать в дальнейшем 

Данный датчик движения с точки зрения Ардуино - та же кнопка. Кнопка нуждается в подтяжке. Что это такое и почему нуждается - почитайте эту тему http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-novichku , там есть про внешние и встроенные подтягивающие резисторы.

dark_angel411
Offline
Зарегистрирован: 13.08.2015

Тоесть если я правельно понял то мне нужно и изменить условия . Тоест когда движения нет будет HIGH а когда будет то LOW

Araris
Offline
Зарегистрирован: 09.11.2012

Это несложно проверить.

dark_angel411
Offline
Зарегистрирован: 13.08.2015

Да но лутше спросить, а то и так 4 дня себе мозг взрывал и  2 раза плату переделывал.

 

dark_angel411
Offline
Зарегистрирован: 13.08.2015

Внёс изменения по рекомендацыям поставил 10ком резисторы на землю. 7 дней проработало нормально потом начались ложные срабатывания. Не подскажете в чём проблема 

dark_angel411
Offline
Зарегистрирован: 13.08.2015

А если их  подключить по етой схеме 

pshevchuk
Offline
Зарегистрирован: 12.05.2018

Транзистор уменьшит ток с датчика, но радикально проблему не решит.
Скорее проблема в дребезге по питанию. Поставте развязку и з диода и емкости, чтобы его убрать.