Датчик пульса, подключение

Тема в разделе "Arduino & Shields", создана пользователем DrProg, 14 ноя 2015.

  1. DrProg

    DrProg Вечный нерд

    Имеется вот такой датчик. В принципе с подключением все понятно, один аналоговый вход, показание которого плавает в ритм с сердечным пульсом. Показания разнятся в зависимости от пальца и силе его прижатия, то есть, например может быть от 10 до 20 или от 15 до 40. Задача вычислить частоту пульса в минуту.

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

    Код (C++):
      raw = analogRead (sensorPin); // показание датчика
      change = (raw > rawOld);      // растущий фронт?
      rawOld = raw;
      if (change != changeOld) {    // дожидаемся СМЕНЫ фрона на растущий
        timer2 = millis() - timer1; // вычисляем время между этой сменой и прошлой
        timer1 = millis();          // запоминаем время текущей смены
      }
      changeOld = change;
    Уже глаз замылился, чувствую, что решение где то рядом. Что я делаю не так?
     
    ИгорьК нравится это.
  2. Alex19

    Alex19 Гуру

    Если не ошибаюсь у Вас KY-039.

    У меня ни когда не было такого датчика, вот код из примеров.
    Код (C++):
    / Pulse Monitor Test Script
    int sensorPin = 0;
    double alpha = 0.75;
    int period = 100;
    double change = 0.0;
    double minval = 0.0;
    void setup ()
    {
      Serial.begin (9600);
    }
    void loop ()
    {
        static double oldValue = 0;
        static double oldChange = 0;
        int rawValue = analogRead (sensorPin);
        double value = alpha * oldValue + (1 - alpha) * rawValue;
        Serial.print (rawValue);
        Serial.print (",");
        Serial.println (value);
        oldValue = value;
        delay (period);
    }
    Взято от отсюда - https://tkkrlab.nl/wiki/Arduino_KY-039_Detect_the_heartbeat_module.

    Вот видео работы -


    Там тоже виден код, он минимальный, можно и переписать.
     
  3. DrProg

    DrProg Вечный нерд

    Этот код я видел. Мало того, что он странный (есть лишние строки), так еще и не могу заметить вообще какую либо разумную зависимость показаний от пульса, просто хаос прет. Как вообще проверить ИК светодиод, работает ли он? Через камеру телефона смотрю, не видно (пульты видно). Что то я растерян. (
     
    ИгорьК нравится это.
  4. Alex19

    Alex19 Гуру

    Увы моих знаний не достаточно, не работал с ИК светодиодами.

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

    UPD. И попробуйте, в получить данные в темноте, нашел данную рекомендацию на одном из форумов. И экранировать как-то датчик от засветок.

    Источник тут, там обсуждается аналогичная проблема - https://forum.arduino.cc/index.php?topic=209140.0.

    UPD 2. На видео показано, что можно увидеть на камере телефона работу ИК светодиода, на 39 секунде.
     
    Последнее редактирование: 14 ноя 2015
  5. DrProg

    DrProg Вечный нерд

    В общем разобрался. Датчик этот никому не рекомендую, гадость редкая, даже в качестве игрушки и тренажера для схемотехника не пойдет. На форумах многие посты о том как хоть что то из него выжать на правду похожее, но ощутимого успеха никто пока не добился. Что стабильного можно извлечь из аналогового датчика, у которого разброс показаний меньше помех, порядка 1-2 единицы на 1024. Пропускает три стука сердца из четырех, но за то видит их там, где их нет.

    В ведро.
     
    ИгорьК нравится это.
  6. DrProg

    DrProg Вечный нерд

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