Pir датчик

leks
Offline
Зарегистрирован: 22.10.2017

Мучаю датчик...

Нашёл на одном из сайтов подсказку такую. Скетч написал простой. При всех комбинациях перемычки, даже и без неё сюжет такой: нет движения-пишет "покой", есть краткое шевеление - выскакивает две серии по 4-5 надписи "движение", между "покой" раз 8-15. При непрерывном перемещении эти серии повторяются ("словесная синусоида"). Вопрос- добиваться адекватной реакции от датчика бесполезно? (машем рукой - "движение", сидим тихо - "покой").

const int Pir = 4;
void setup()
{
  pinMode(Pir, INPUT);
  Serial.begin(9600);
}

void loop()
{
  if (digitalRead(Pir) == true)
  {
    Serial.println("ДВИЖЕНИЕ");
  }
  else {Serial.println("ПОКОЙ");}
  delay(300);
}

bwn
Offline
Зарегистрирован: 25.08.2014

Так там-же линза Френеля и хитрый ИК датчик. На каждый перелом импульс выдает, нет переломов, нет импульсов.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
/**/
const int Pir = 4;
//
typedef void (*pDo)();
pDo run = {};
enum state_t {sQuiet, sMotion} state;
unsigned long past;
void stand(state_t s) {
  past = millis();
  switch (state = s) {
    case sQuiet:
      Serial.println("ПОКОЙ");
      run = [] { if (digitalRead(Pir) && millis() - past >= 300) stand(sMotion);};
    break;
  case sMotion:
    Serial.println("ДВИЖЕНИЕ");
      run = [] { if (!digitalRead(Pir) && millis() - past >= 300) stand(sQuiet);};
    break;
}//switch
}
void setup() {
  Serial.begin(9600);
  pinMode(Pir, INPUT);
  stand(sQuiet);
}

void loop() {
  run();
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

H/L режим работы задает, по-моему - импульс на каждое движение или продолжать импульс при детектировании.

leks
Offline
Зарегистрирован: 22.10.2017

Спасибо за код :)

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

 

leks
Offline
Зарегистрирован: 22.10.2017

sadman41 пишет:

H/L режим работы задает, по-моему - импульс на каждое движение или продолжать импульс при детектировании.

Да, видимо я не въезжаю в смысл работы до конца. 

sadman41
Offline
Зарегистрирован: 19.10.2016

И, да - посмотрите осциллографом на пациента - это наглядней, чем через delay(). Mне кажется, что Вы хотите от него не то, для чего он создан.

KindMan
Offline
Зарегистрирован: 19.12.2018

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

SLKH
Offline
Зарегистрирован: 17.08.2015

sadman41 пишет:

И, да - посмотрите осциллограффом на пациента - это наглядней, чем через delay(). Mне кажется, что Вы хотите от него не то, для чего он создан.

я бы без ардуин с осциллографами светодиод (с резистором) на OUT повесил - или напрямую, или через транзистор.

leks
Offline
Зарегистрирован: 22.10.2017

KindMan пишет:
Когда датчик засекает движение, выдает сигнал на выход, на время, которое вы можете установить подстроечным резистором, потом в любом случае выключится на секунду-две, даже если вы перед ним прыгаете. И так по кругу. Это его нормальный режим работы.

Вот!, видимо это я и недопонял, а режимы H/L наверно разделяют варианты: дёрнулся-пошёл отсчёт до выключения независимо от дальнейших движений или недвижений или выключится спустя время отсчёта от последнего движения.

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Именно поэтому в охранных ИК датчиках стоит микроконтроллер с анализирующей программой. Хотя соглашусь с предыдущими ораторами и спрошу - а что Вы от него хотите получить?

leks
Offline
Зарегистрирован: 22.10.2017

sadman41 пишет:

И, да - посмотрите осциллографом на пациента - это наглядней, чем через delay(). Mне кажется, что Вы хотите от него не то, для чего он создан.

Да в принципе вроде хочу ожидаемого. Есть замысел сделать игрушку-тренера. Смартфон-рожица командует: руку вверх-вниз-в сторону и т.д. Правильность отслеживает УЗ датчик. А вот что игрок уже убёг и некому командовать хотел ПИР датчиком фиксировать (ну чтоб сразу :)

Вот тут я и погорячился. 

ВН
Offline
Зарегистрирован: 25.02.2016

не знаю как тут. а в обчных охранных датчиках H - высокая чувствительность, когда сработка выдается по пересечению одного луча,

L - низкая, нужно пересечь несколько лучей, чтобы произошла сработка. 

leks
Offline
Зарегистрирован: 22.10.2017

Пока наэкспериментировал следующие: внятно переменником можно выставить 12-13 секунд, меньше не получается. В режиме L - дёрнулся раз, пошёл отсчёт "движение" на 12-13 секунд, после обязательно выключится на несколько секунд . В режиме H- выключится через 12-13 секунд после последнего движения.

Вообщем смартфон будет ещё командовать после побега 12-13 секунд минимум.

sadman41
Offline
Зарегистрирован: 19.10.2016

А скоко надо ?

leks
Offline
Зарегистрирован: 22.10.2017

sadman41 пишет:

А скоко надо ?

Да в принципе терпимо (6-8 секунд в самый раз), просто потенциометр позволяет накрутить меньше, но что-то "меньше" срывается.

 

strarbit
Offline
Зарегистрирован: 12.06.2016