Photoplethysmography - (IR polsmeting) (4 / 5 stap)

Stap 4: Arduino Software


Aan de slag te gaan moet u de GFX en ST7735 Arduino bibliotheken van Adafruit. U vindt ze hier (Bedankt Nils).

GFX bibliotheek

https://github.com/adafruit/Adafruit-GFX-Library

ST7735 bibliotheek

https://github.com/adafruit/Adafruit-ST7735-Library

Niet zeker hoe installeer ik een Arduino-bibliotheek? Ga hier voor volledige instructies;

https://www.Arduino.CC/en/Guide/libraries

Hoe het werkt

Op opstarten, de software draait op de IR Led en geeft aan dat de gebruiker variërend van het apparaat nodig is en zal beginnen in 10 seconden. Dit geeft de gebruikerstijd te plaatsen hun vinger in de sensor.

Tijdens het variërend van de software leest de output van de ADC voor 10000 keer, onderbreken kort voor 1mS per lezen. Dit wordt gebruikt voor het opnemen van de maximale en minimale grenzen van het ruwe bemonsterde signaal.

Deze maximale en minimale waarden worden gebruikt voor het bepalen van de dynamische triggerpoints te detecteren een sterk stijgende rand in de hartslag inschakelen timing van de periode tussen peulvruchten en vandaar de BPM berekenen.

De lage trigger introduceert hysteresis en is noodzakelijk om te voorkomen dat opnieuw triggering vanwege hoge samplefrequentie als Ga naar boven.

Het hoge niveau trigger punt iPulseTriggerLevelHigh is 90% van de piek (groene sterren in diagrammen hierboven) en het lage niveau trekkerpunt is iPulseTiggerLevelLow is 70% van de piek (blauwe sterren in diagrammen hierboven).

De software invoert dan een oneindige lus signaal monsterneming na een verstreken tijd ingegeven door ulElapsedTime, ongeveer 1mS of 1000Hz. Dit kan worden aangepast door het variëren van de #define SAMPLE_PERIOD_uS.

De verstreken tijdvertraging is niet een blokkerende oproep, zodat andere achtergrondtaken kunnen worden uitgevoerd indien nodig.

Zodra een monster van het hart slaan wordt afgelezen uit de ADC de waarde wordt aangepast aan de golfvorm venster. Deze schalen is gewoon een directe 0-5v = > 0-1023 = > 0-100.

Ik opzettelijk weggelaten automatisch schalen voor de golfvorm venster zoals ik vond toen ik, de golfvorm vrij opgenomen dat veel voorzien het venster elke keer, zoals je zou verwachten. Daarbij dus je een heleboel belangrijke informatie verloren, zoals wanneer mijn vingers werden koud of slecht gepositioneerd in de sensor en dientengevolge de pols uitgangsniveau was laag. Ik voelde het meer nuttig om te houden van deze informatie aanwezig. Wel ik een variabele fAmplificationFactor (lijn 171, ingesteld op 2.1) die kan worden gebruikt voor het schalen van uw signaal indien uw elektronica en bouw vaardigheden opleveren die een minder gevoelige signaal dan ik was in staat om te bereiken bieden.

De code bepaalt vervolgens of dit een stijgende rand (zie diagrammen boven voor logica). Als het is en geen dalende rand is geconstateerd, dat wordt de tijd opgeslagen in ulPulseCurrentTime. Maar als het is en een dalende rand is geconstateerd dat betekent de verstreken tijd is de periode tussen pulsen.

De software berekent de BPM (zoals in de bovenstaande diagrammen) en past zich aan een omslag in de millis() functie-aanroep, indien nodig.

Deze nieuwe polsslag is opeenvolgend opgeslagen in de [rollende venster buffer array lBPMArray] en het gemiddelde berekend over alle monsters. De nieuwe berekende BPM wordt vergeleken met de oude BPM. Als er een verschil wordt de weergave bijgewerkt met de nieuwe waarde. Waardoor TFT update overhead.

Tijdens de ontwikkeling van de code die ik heb gemerkt dat het niet mogelijk om een enkele scanfrequentie van de TFT optimaliseren voor BPMs variërend van 50... 200. ISampleCountMax is zo dynamisch als de hartslag hoger is dan 100BPM zodat het scherm niet te druk geworden en de vorm van de pols nog steeds duidelijk is veranderd.

De software dan clips de golfvorm als om wat voor reden het nam Groot voor het display en het scherm bijwerkt met de nieuwste ADC monster en plots het in de golfvorm venster.

Eerder uitgezette waarden zijn eerst verwijderd door het schrijven van een verticale zwarte lijn vóór de plot positie 'on the fly'.

Lus herhaalt.

Voortschrijdend gemiddelde

Hartslag wordt berekend door het nemen van een voortdurend bijgewerkte voortschrijdend gemiddelde van de periodes tussen pulsen. De lengte van het voortschrijdend gemiddelde kan worden aangepast door het wijzigen van de waarde van #define MAX_BPM_ARRAY_SIZE. Hoe langer er je hoe langzamer de updates, maar hoe beter de onderlinge aanpassing (ervan uitgaande dat de vinger blijft stabiel in de sensor).

Om het zaad van het gemiddelde met een aanvankelijke waarde is de matrix lBPMArray [] vooraf geladen met een hartslag van 60BPM tijdens het opstarten.

.

Een kopie van de code is hieronder opgenomen.

Gerelateerde Artikelen

Photoplethysmography

Photoplethysmography

Bouwen van een beat hartmonitor met behulp van Arduino en Processing.Onderdelen:1 x IR LED1 x fotodiode/fototransistor1 x Trimpot1 x 22uF cap1 x 10uF GLB1 x 4.7uF cap1 x 220nF cap1 x LM3242 x 100 k weerstand2 x 2,2 k ohm weerstand1 x 1.8 k weerstand1
Heart rate monitor with PC connectivity

Heart rate monitor with PC connectivity

Een monitor(HRM) van de hartslag is een persoonlijke controle apparaat waarmee men iemands hartslag in realtime te meten of registreren van de hartslag voor later onderzoek. Het wordt grotendeels gebruikt door artiesten van verschillende soorten lich
Microcontroller meet hartslag via vingertop

Microcontroller meet hartslag via vingertop

Hartslag is een zeer essentieel gezondheid-parameter die rechtstreeks betrekking heeft op de soliditeit van het menselijke cardiovasculair systeem. Dit project beschrijft een techniek voor het meten van de hartslag via een vingertop met behulp van ee
Arduino aangedreven digitale pulse meter

Arduino aangedreven digitale pulse meter

In dit instructable, ga ik te laten zien hoe mijn PIC16F628A gebaseerd pols meter project met behulp van de Arduino te repliceren. Dit project maakt gebruik van een Arduino Uno bestuur, een Easy Pulse Plugin sensoren een 4-cijferige SPI zeven segment
DIY Arduino Pulse Sensor

DIY Arduino Pulse Sensor

Dus vermeld ik in een eerdere Instructable dat ik een onderwijs-assistent (TA) voor een engineering introductiecursus voor biomedische ingenieurstechnieken majors aan de Vanderbilt University. Mijn belangrijkste taak als een TA is opnieuw schrijven e
Arduino Stress Detector

Arduino Stress Detector

Van EE122B, inleiding tot Biomedische Elektronika, Universiteit van StanfordOnderwezen door Professor Greg Kovacs, voorjaar 2014Het probleem:Stress is een alomtegenwoordige deel van de moderne snelle leven. Daarnaast is er een groeiende hoeveelheid w
Verhoog uw hernieuwbare enrgie Output

Verhoog uw hernieuwbare enrgie Output

dit is een beetje uitvinding van mijn eigen die ik gebruikt om het resulterende uitvoerbereik van windturbines die ik gebruik voor het aandrijven van mijn atelier, maar heel goed zou kunnen worden gebruikt op andere voedingen zoals zonne- of hydro-el
Pulse sensing faceted hart lamp

Pulse sensing faceted hart lamp

Eerste gedachten om iets dergelijks te maken kwam meer dan een jaar geleden, toen ik niet kon wat voor soort gift van de verjaardag beslissen te maken voor mijn vrienden van de twin studie medicijnen. Ik hoop dat ze niet dit tevoren echter zien zal a
Hartslag meten apparaat met behulp van arduino

Hartslag meten apparaat met behulp van arduino

Dit project toont u hoe te ontwerpen en bouwen van een apparaat voor het meten van uw hartslag met behulp van onze mooie Arduino!Stap 1: Algemene informatie over dit project Een hartslagmeter is een persoonlijke controle apparaat dat maakt het mogeli
Hartslag controletoepassing via e-mail

Hartslag controletoepassing via e-mail

Een puls-sensor kunt u bijhouden van uw hartslag wanneer je maar wilt. Veronderstel kunnend bijhouden van je hartslag tijdens het lopen of slapen zonder de behoefte aan speciale apparatuur. Dit kan u helpen om te weten hoe gezond uw hart is en te det
Zonne-energie aangedreven hartslagmeter

Zonne-energie aangedreven hartslagmeter

Hey iedereen! In dit Instructable, ik zal u laten zien hoe maak je je eigen Arduino gebaseerde hartslagmeter! Maar dit is niet zomaar een andere DIY hitte tarief Monitor; Dit is een Zonne-aangedreven hartslagmeter!Deze hartslagmeter is bedoeld voor l