Puls Sensor Plumbob (4 / 5 steg)

Steg 4: Arduino kodning

AVBRYTA

flyktiga int takt [10]. används för att hålla senaste tio IBI värden
volatile osignerade långa sampleCounter = 0; används för att bestämma puls timing
volatile osignerade långa lastBeatTime = 0; används för att hitta inter slog intervallet
flyktiga int P = 512; används för att hitta topp i pulse wave
flyktiga int T = 512; används för att hitta tråg i pulse wave
flyktiga int tröska = 512; används för att hitta instant ögonblick av hjärtrytm
flyktiga int amp = 100; används för att hålla amplituden av puls vågform
flyktiga booleska firstBeat = sant; används till utsäde rate array så vi start med rimlig BPM
flyktiga boolean secondBeat = sant; används till utsäde rate array så vi start med rimlig BPM

void interruptSetup() {
Initierar Timer2 att kasta ett avbrott varje 2mS.
TCCR2A = 0X02; INAKTIVERA PWM PÅ DIGITAL STIFT 3 OCH 11, OCH GÅ IN I CTC LÄGE
TCCR2B = 0X06; TVINGA INTE JÄMFÖRA, 256 PRESCALER
OCR2A = 0X7C; SATTS upp på räkningen till 124 för 500Hz SAMPLINGSFREKVENS
TIMSK2 = 0X02; AKTIVERA AVBRYTA PÅ MATCHEN MELLAN TIMER2 OCH OCR2A
SEI(); SE TILL ATT GLOBALA AVBROTT ÄR AKTIVERADE
}

DETTA ÄR TIMER 2 AVBROTTSTJÄNSTENS RUTIN.
Timer 2 ser till att vi tar en behandling varje 2 millisekunder
ISR(TIMER2_COMPA_vect) {/ / utlösas när Timer2 räknar till 124
CLI(); Inaktivera avbrott medan vi gör detta
Signal = analogRead(pulsePin); Läs puls Sensor
sampleCounter += 2. hålla koll på tiden i mS med denna variabel
int N = sampleCounter - lastBeatTime; övervaka tiden efter senaste beat att undvika buller

hitta den topp- och botten av pulse wave
om (Signal < tröska & & N > (IBI/5) * 3) {/ / undvika dichrotic buller som väntar 3/5 i senaste IBI
om (Signal < T) {/ / T är tråg
T = Signal; hålla reda på lägsta punkten i pulse wave
}
}

om (Signal > tröska & & Signal > P) {/ / tröska tillstånd hjälper till att undvika buller
P = Signal; P är toppen
} / / hålla koll på högsta punkten i pulse wave

NU ÄR DET DAGS ATT LETA EFTER HJÄRTRYTM
signalera rusar upp i värde varje gång det kommer en puls
om (N > 250) {/ / undvika högfrekvent brus
om ((Signal > tröska) & & (puls == false) & & (N > (IBI/5) * 3)) {
Puls = sant; ange flaggan puls när vi tror att det är en puls
digitalWrite(blinkPin,HIGH); slå på stift 13 LED
IBI = sampleCounter - lastBeatTime; mäter tiden mellan slag i mS
lastBeatTime = sampleCounter; hålla koll på tiden för nästa puls

IF(firstBeat) {/ / om det är första gången vi hittade en beat, om firstBeat == TRUE
firstBeat = false; Rensa firstBeat flagga
hemkomst. IBI värdet är opålitlig så ignorera det
}
IF(secondBeat) {/ / om detta är det andra beat, if secondBeat == TRUE
secondBeat = false; Rensa secondBeat flagga
för (int jag = 0; jag < = 9; i ++) {/ / frö kör totalt att få en realisitic BPM vid start
Rate [i] = IBI;
}
}

hålla en löpande summa av senaste 10 IBI värden
ordet runningTotal = 0; Rensa runningTotal variabeln

för (int jag = 0; jag < = 8; i ++) {/ / flytta data i matrisen kurs
Rate [i] = Betygsätt [jag + 1]; och släpp äldsta IBI värdet
runningTotal += rate [i]; Lägg upp 9 äldsta IBI värdena
}

Betygsätt [9] = IBI; lägga till den senaste IBI i arrayen kurs
runningTotal += rate [9]. lägga till den senaste IBI runningTotal
runningTotal = 10; senaste 10 IBI medelvärden
BPM = 60000/runningTotal; Hur många slag kan passa in i en minut? Det är BPM!
QS = sant; Kvantifierade Self flaggan
QS FLAGGA RENSAS INTE INUTI DENNA ISR
}
}

om (Signal < tröska & & puls == true) {/ / när värdena går, beat är över
digitalWrite(blinkPin,LOW); stänga av stift 13 LED
Puls = false; återställa flaggan puls så att vi kan göra det igen
amp = P - T; få amplitud av pulse wave
tröska = amp/2 + T; uppsättning tröska på 50% av amplituden
P = tröska; återställa dessa för nästa gång
T = tröska;
}

om (N > 2500) {/ / om 2,5 sekunder gå utan ett beat
tröska = 512; uppsättning tröska standard
P = 512; ställa in P standard
T = 512; Ange T standard
lastBeatTime = sampleCounter; ta lastBeatTime uppdaterad
firstBeat = sant; Ange att dessa ska undvika buller
secondBeat = sant; När vi får hjärtslagen tillbaka
}

SEI(); Aktivera avbryter när du är klar!
} / / end isr

ARDUINOEN

/*
>> Puls Sensor Amped 1.1 <<
Denna kod är för puls Sensor Amped av Joel Murphy och Yury Gitman
www.pulsesensor.com
>>> Puls Sensor lila tråd går till analoga stift 0 <<<
Puls Sensor provtagning och behandling sker i bakgrunden via Timer 2 avbrott. 2mS samplingsfrekvens.
PWM på stift 3 och 11 fungerar inte när du använder denna kod, eftersom vi använder Timer 2!
Följande variabler uppdateras automatiskt:
Signal: int som håller den analoga signalen datan direkt från sensorn. uppdateras varje 2mS.
IBI: int som håller tidsintervallet mellan slår. 2mS resolution.
BPM: int som håller pulsen, kommer varje beat, från tidigare 10 IBI värden i genomsnitt.
QS: boolean som görs true puls är försumbart och BPM är uppdaterad. Användaren måste återställa.
Puls: booleskt värde som är sant när ett hjärtslag är kände sedan false i tid med pin13 LED går ut.

Denna kod är utformad med utgång data till bearbetning skiss "PulseSensorAmped_Processing-xx"
Bearbetning skissen är en enkel data visualizer.
Allt arbete för att hitta hjärtslagen och bestämma hjärtrytm händer i koden nedan.
Stift 13 LED blinkar med heartbeat.
Om du vill använda stift 13 för något annat, justera avbrottshanterare
Det kommer också att försvinna en LED på pin fadePin med varje taktslag. Sätta en LED och serien motstånd från fadePin till GND.
Kolla här för detaljerade kod genomgång:
http://pulsesensor.myshopify.com/pages/Pulse-sensor-Amped-Arduino-v1dot1

Versionen 02 av Joel Murphy & Jurij Gitman hösten 2012
Den här uppdateringen ändrar HRV variabelnamnet till IBI, som står för mellan Beat intervall, för klarhet.
Bytte avbrottet till Timer2. 500Hz samplingsfrekvens, 2mS resolution IBI värde.
Fade LED stift flyttade till stift 5 (användning av Timer2 inaktiverar PWM på stift 3 och 11).
Städade ineffektivitet sedan den förra versionen.
*/

VARIABLER
int pulsePin = 0; Puls Sensor lila tråd ansluten till analoga stift 0
int blinkPin = 7. PIN blinka ledde på varje taktslag

int fadePin = 5; stift till fancy classy blekning blink på varje taktslag
int fadeRate = 0; används för att blekna LED på med PWM på fadePin

dessa variabler är flyktiga eftersom de används under avbrottstjänstens rutin!
flyktiga int BPM; används för att hålla pulsen
flyktiga int Signal; innehar inkommande rådata
flyktiga int IBI = 600; håller tiden mellan beats, mellan Beat intervallet
flyktiga booleska puls = false; sant när pulse wave är hög, falskt när det är lågt
flyktiga booleska QS = false; blir sant när Arduoino finner ett beat.

void setup() {

pinMode(blinkPin,OUTPUT); PIN-kod som kommer att blinka till ditt hjärta!
pinMode(fadePin,OUTPUT); PIN-kod som kommer att blekna till ditt hjärta!
Serial.BEGIN(115200); Vi är överens om att prata snabbt!
interruptSetup(); ställer in för att läsa puls Sensor signal varje 2mS
O-kommentera nästa rad om du driver puls Sensor vid låg spänning,
OCH TILLÄMPA DEN SPÄNNINGEN TILL A-REF STIFT
analogReference(EXTERNAL);
}

void loop() {
sendDataToProcessing ('S ', Signal); Skicka bearbetning raw puls Sensor-data
om (QS == true) {/ / kvantifierade Self flagga är sant när arduino finner ett hjärtslag
fadeRate = 255; Ange "fadeRate" variabel till 255 blekna LED med puls
sendDataToProcessing('B',BPM); Skicka puls med prefixet "B"
sendDataToProcessing('Q',IBI); Skicka tid mellan beats med prefixet "Q"
QS = false; återställa flaggan kvantifierade Self till nästa gång
}

ledFadeToBeat();

Delay(20); ta en paus
}

void ledFadeToBeat() {
fadeRate-= 10. värdet för LED-fade
fadeRate = constrain(fadeRate,0,255); hålla LED fade värde från att gå in i negativa tal!
analogWrite(fadePin,fadeRate); Fade LED
}

void sendDataToProcessing (char symbol, int data) {
Serial.Print(symbol); valutasymbolen skrivs som prefix berättar behandling vilken typ av data kommer
Serial.println(data); data som ska skickas avslutas med en radmatning
}

Se Steg
Relaterade Ämnen

LED puls Sensor (PPG) för Arduino

Inom detta Instructable kommer jag visa dig, hur man genomför en enkel PPG (photoplethysmogram) sensor för arduino. Denna enhet använder infrarött ljus för att mäta du puls. Du kanske känner denna teknik från fingertoppen puls sensorer i sjukhus.Denn...

Puls Sensor med Bluetooth och Arduino

Detta projekt syftar till att använda puls sensor (som är lätt tillgänglig nu) med arduino uno och Bluetooth HC-05 modul, puls sensorn är placerad på fingret och den mäter pulsen och skickar sedan hjärtfrekvensen till android mobil via bluetooth-enhe...

Wearable hjärta slå sensor ESP8266 + puls sensor

Som en del av en önskan att lära sig om ESP8266 som friståendeJag tänkte på ett projekt för att ansluta puls sensor och överföra BPM till datorn av TCP-anslutning.Under byggandet kom jag över några problem.Problemen av min åsikt, kommer att hjälpa nå...

Orm spel med puls sensor

Detta är en orm spel som navigeras av en joystick. Vi har också använt en puls sensor för att justera spelet. Puls sensorn gör fönstret Ändra färg beroende på dina hjärtslag. Nu när ditt hjärta slår, är den tidpunkt då ormen är synliga. När ditt hjär...

Lilypad och puls sensorer: den andra kropp erfarenheten

Jag har skapat och interaktiv installation som syftar till att belysa en kropp shaming.Mitt mål var att göra deltagare upplevelsen att ha en annan kropp från deras en, alltså jag förändrat en flytväst och arkiverat det med sand, vilket gör det väger...

Hemgjord Arduino vänlig puls Sensor

Jag såg Öppen hårdvara puls Sensor på tänkte jag skulle försöka göra det hemma. Tog mig ett tag, men här är min klumpiga process.Steg 1: Puls Sensor - översiktJag har jobbat på att åter göra den Öppen hårdvara puls Sensor så det skulle vara "lätt&quo...

Alla hjärtans puls Sensor

bygger på andras arbete, jag kom upp med denna lilla enhet att gå och mäta min puls. Nu, jag visste att det var passande att gå och göra ett hjärta form från lysdioder och så, det gjorde jag. Inte ha någon mall, var jag helt borta. Lite experimentera...

Puls Sensor kontrollerade svans

Hej alla!Denna handledning kommer att gå igenom de steg av hur du skapar din egen animatronic svans! Jag har sett många aimatronic svansar antingen styrs av en fjärrkontroll eller inställd på en kontinuerlig sopa kod, beslöt jag att göra min svans va...

Arduino puls Sensor

Detta är min första projektet publiceras här, en arduino pro mini ombord med puls Sensor.Här kommer jag visa dig hur jag gjorde min arduino elkablar och kodning, inklusive källkod och scheman. Också kodat jag en windows-verktyget för att visa den våg...

Arduino puls Sensor Cardio diagram

Programmet Arduino puls Sensor Cardio graf illustrerar hjärtat slå information i grafisk form. Programmet visar olika puls variation grafer: Beats Per minut (BPM), Interbeat intervall (IBI), puls frekvens (Hz), Power Spectral Density (PSD), LF vs HF...

Hur du använder puls Sensor

Puls sensor är en öppen källkod pulssensor.Det använder olika ljusgenomsläpp för kroppens vävnader orsakar av vaskulära pulserande för att mäta pulsen.Steg 1:1. bygga Arduino miljö, Hämta Arduino IDE från www.arduino.cc2. bygga bearbetningsmiljön, la...

DIY Arduino puls Sensor

Så nämnde jag i ett tidigare Instructable att jag en assistent (TA) för en teknisk Introduktionskurs för medicinsk teknik majors vid Vanderbilt University. Min viktigaste uppgift som en TA är att skriva några laborationer som eleverna kommer att utfö...

DIY puls pulsmätare

Följande instructable representerar en puls pulsmätare med Linkit ONE. Det kan visa din puls på en seriell övervaka. Projektet är mycket lätt att göra och kräver mycket mindre delar och tid att montera.Detta är min första instructable. Behaga en posi...

Homebrew Arduino puls Monitor (visualisera dina hjärtslag)

filmer ser cool med dessa EKG (EKG), en som piper och upptäcker hjärtat verksamhet. För några månader sedan, vi var tvungna att skjuta en sjukhus scen för våra skolprojekt. Vi behövde ett EKG instrument. För att hålla filmen autentiska, ville vi inte...

Puls Party hänge

Mina vänner pratade över brunch en gång dag om hur cool (och hur skrämmande) det skulle vara om en person du chattar med (kanske på en fest eller en dag) kunde faktiskt se när din puls quickens, att ge ett fönster in i dina känslor av spänning eller...

Arduino powered digital puls mätare

I detta instructable, jag ska visa hur man replikera mitt PIC16F628A baserade puls mätare projekt genom att använda Arduino. Detta projekt använder en Arduino Uno styrelse, en lätt puls Plugin sensoroch en 4-siffrig SPI sju segment LED display modul....

Linkit en puls pulsmätare

Detta är en riktigt rolig och cool instructable, i detta instructable jag ska visa dig hur man bygger en puls pulsmätare. Denna enhet övervakar ditt hjärta BPM (slag per minut) och visar den på skärmen. Detta projekt har ett brett utbud av medicinska...

Puls övervakning ansökan via e-post

En puls sensor kan du spåra din puls när du vill. Tänk att kunna spåra din puls när du kör eller sova utan behov av specialutrustning. Detta kan hjälpa dig att veta hur hälsosam din hjärta är och att upptäcka avvikelser bygger på kontinuerliga mätnin...

NeoPixel LED hjärta Sensor jacka

Börja försöka se ut som Iron Man, sluta tänka lite på din mänskligheten, har mycket roligt i processen. Projektet är tänkt att producera och intressanta och oväntade effekten från en källa som vi tar för givet, vårt hjärta. På en nivå är detta en Ard...