Аналоговий датчик фіксації пульсу

Версія від 00:21, 10 червня 2017, створена Sobe (обговореннявнесок) (Створена сторінка: '''Аналоговий датчик фіксації пульсу''' '''Pulse Sensor''' - це аналоговий датчик дозволяє фіксув...)
(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)

Аналоговий датчик фіксації пульсу Pulse Sensor - це аналоговий датчик дозволяє фіксувати пульс.

На датчику встановлені світлодіод і фотоприймач, розташовані так, що промінь світла випромінюється світлодіодом, потрапляє на фотоприймач тільки відбившись від перешкоди, яким повинна виступати подушечка пальця або мочку вуха.

Загальні відомості

На датчику встановлені світлодіод і фотоприймач, розташовані так, що промінь світла випромінюється світлодіодом, потрапляє на фотоприймач тільки відбившись від перешкоди, яким повинна виступати подушечка пальця або мочку вуха.

Судини, наповнюючись кров'ю, змінюють свою оптичну щільність, що впливає на зміну кількості відбитого світла. Отже, при постійному рівні світлового потоку, випромінюваного світлодіодом, інтенсивність світла реєструється фотоприймачем, буде залежати від наповнюваності судин кров'ю.

Електрична схема датчика влаштована так, щоб реєструвати тільки динамічна зміна інтенсивності світлового потоку. При незмінному світловому потоці (незалежно від його інтенсивності), напруга на виході датчика знаходиться в районі половини напруги живлення. При зміні інтенсивності світлового потоку, напруга на виході датчика відхиляється від середнього значення, в сторону зменшення або збільшення, пропорційно зміні світлового потоку. Таким чином датчик не потребує підстроювання під кожну людину.

Характеристики датчика

  • Входное напряжение: 3 ... 5 В.
  • Потребляемый ток: 5 мА, при Vcc = 5 В.
  • Габариты: Ø15 мм x 3 мм.
  • Вес: 1 г.

Принцип дії датчика фіксації пульсу

Судини, наповнюючись кров'ю, змінюють свою оптичну щільність, що впливає на зміну кількості відбитого світла. Отже, при постійному рівні світлового потоку, випромінюваного світлодіодом, інтенсивність світла реєструється фотоприймачем, буде залежати від наповнюваності судин кров'ю.

Електрична схема датчика влаштована так, щоб реєструвати тільки динамічна зміна інтенсивності світлового потоку. При незмінному світловому потоці (незалежно від його інтенсивності), напруга на виході датчика знаходиться в районі половини напруги живлення. При зміні інтенсивності світлового потоку, напруга на виході датчика відхиляється від середнього значення, в сторону зменшення або збільшення, пропорційно зміні світлового потоку. Таким чином датчик не потребує підстроювання під кожну людину.

Схема підключення

TFT дисплей реалізований у вигляді shield і використовує наступні висновки arduino Uno: A0-A4 (управління), 2-9 (дані), 10-13 (SD-карта), харчування. Датчик пульсу підключається до аналогового входу A5. Trema зумер підключається до цифрового висновку 1. чином датчик не потребує підстроювання під кожну людину.

Так як цифровий висновок 1 є лінією TX шини UART, то при завантаженні скетчу буде чути звук.

Приклад програми

// Підключаємо бібліотеки:

  1. include <iarduino_SensorPulse.h> // підключаємо бібліотеку для роботи з датчиком пульсу
  2. include <UTFT.h> // підключаємо бібліотеку для роботи з TFT дисплеями

// Оголошуємо змінні і константи: extern uint8_t SmallFont []; extern uint8_t BigFont []; const uint16_t colorBG = VGA_BLACK; // колір фону const uint16_t colorGR = VGA_GREEN; // колір графіка const uint16_t colorCD = VGA_WHITE; // колір тексту і символу пульсу const uint16_t colorER = VGA_RED; // колір тексту про помилку

      uint16_t graphY0; // положення попередньої точки графіка по осі Y
      uint16_t graphY; // положення поточної точки графіка по осі Y
      uint16_t graphX; // положення поточної точки графіка по осі X
      uint16_t screenW; // ширина дисплея
      uint16_t screenH; // висота дисплея

UTFT myGLCD (TFT28UNO, A2, A1, A3, A4, A0); // підключаємо дисплей TFT28UNO iarduino_SensorPulse Pulse (A5,1); // підключаємо сенсор до 5 аналоговому входу, а зумер до 1 цифровому висновку void setup () {

  Pulse.begin (); // ініціюємо сенсор
  myGLCD.InitLCD (); // ініціюємо дисплей
  myGLCD.clrScr (); // стираємо всю інформацію з дисплея
  screenW = myGLCD.getDisplayXSize () - 1; // отримуємо ширину дисплея
  screenH = myGLCD.getDisplayYSize () - 1; // отримуємо висоту дисплея

} void loop () { // визначаємо координати поточної точки графіка

  graphX ​​++; if (graphX> = screenW) {graphX ​​= 0;} // зрушуємо точку графіка по осі X
  graphY = map (Pulse.check (ISP_ANALOG), 1024,0,0, screenH); // визначаємо точку графіка по осі Y

// якщо стан сенсора змінилося, то ...

  if (Pulse.check (ISP_VALID) == ISP_CHANGED) {
    myGLCD.clrScr (); // стираємо всю інформацію з дисплея
    graphX ​​= 0; // скидаємо координату поточної точки по осі X
  }

// якщо сенсор підключений, то ...

  if (Pulse.check (ISP_VALID) == ISP_CONNECTED) {

// виводимо графік

                                 myGLCD.setColor (colorBG); myGLCD.drawLine (graphX, 30, graphX, screenH);
      if (graphX> 0) {myGLCD.setColor (colorGR); myGLCD.drawLine (graphX, graphY0, graphX, graphY);
                                 myGLCD.setColor (colorGR); myGLCD.drawLine (graphX-1, graphY0-1, graphX-1, graphY-1); // товщають лінію
      }

// виводимо пульс і серце

    if (Pulse.check (ISP_BEEP) == 0) {myGLCD.setColor (colorCD); myGLCD.fillCircle (20, 20, 4);}
    if (Pulse.check (ISP_BEEP) == 1) {myGLCD.setColor (colorBG); myGLCD.fillCircle (20, 20, 4);}
    if (Pulse.check (ISP_BEEP) == 2) {myGLCD.setColor (colorCD); myGLCD.setFont (SmallFont); myGLCD.printNumI (Pulse.check (ISP_PULSE), 24,16,3);}

// інакше, якщо сенсор відключений, то виводимо повідомлення про помилку

  } Else {myGLCD.setColor (colorER); myGLCD.setFont (BigFont); myGLCD.print ( "DISCONNECTED", CENTER, 100);}

// присвоюємо координату поточної точки графіка, координаті попередньої точки

  graphY0 = graphY;
  delay (5);

} / * опис функції check () бібліотеки iarduino_SensorPulse

* Pulse.check (ISP_ANALOG); - повертає число від 0 до 1024 - дані з аналогового входу, до якого підключений датчик
* Pulse.check (ISP_PULSE); - повертає число від 0 до 999 - пульс (кількість пульсацій за хвилину)
* Pulse.check (ISP_BEEP); - повертає число від 0 до 2621 - кількість десятих часток секунди, що минув після останнього піку пульсу
* Pulse.check (ISP_VALID); - повертає стан датчика - ISP_DISCONNECTED - відключений (дані не відповідають пульсу)
* ISP_CONNECTED - підключений (дані схожі на пульс)
* ISP_CHANGED - стан сенсора змінилося (з підключений на відключений або навпаки)
* / </ Span>