Სარჩევი:

პულსის ოქსიმეტრი ბევრად გაუმჯობესებული სიზუსტით: 6 ნაბიჯი (სურათებით)
პულსის ოქსიმეტრი ბევრად გაუმჯობესებული სიზუსტით: 6 ნაბიჯი (სურათებით)

ვიდეო: პულსის ოქსიმეტრი ბევრად გაუმჯობესებული სიზუსტით: 6 ნაბიჯი (სურათებით)

ვიდეო: პულსის ოქსიმეტრი ბევრად გაუმჯობესებული სიზუსტით: 6 ნაბიჯი (სურათებით)
ვიდეო: პულსოქსიმეტრის გამოყენება 2024, ივლისი
Anonim
პულსის ოქსიმეტრი ბევრად გაუმჯობესებული სიზუსტით
პულსის ოქსიმეტრი ბევრად გაუმჯობესებული სიზუსტით
პულსის ოქსიმეტრი ბევრად გაუმჯობესებული სიზუსტით
პულსის ოქსიმეტრი ბევრად გაუმჯობესებული სიზუსტით

თუ ახლახან ეწვიეთ ექიმს, დიდი ალბათობაა, რომ თქვენი ძირითადი სასიცოცხლო ნიშნები განიხილებოდეს ექთნის მიერ. წონა, სიმაღლე, არტერიული წნევა, ასევე გულისცემა (HR) და ჟანგბადით გაჯერება პერიფერიულ სისხლში (SpO2). ალბათ, ბოლო ორი მიღებულია წითელი ელვარების ელექტრონული თითის ზონდის საშუალებით, რომელიც აჩვენებს შესაბამის ციფრებს მცირე ეკრანზე წუთებში. ამ ზონდს ეწოდება პულსის ოქსიმეტრი და აქ შეგიძლიათ ნახოთ ყველა ძირითადი ინფორმაცია.

მარტივად შეგიძლიათ შეიძინოთ უბრალო პულსის ოქსიმეტრი, რა თქმა უნდა, მაგრამ სად არის მასში გართობა? მე გადავწყვიტე ავაშენო ჩემი თავი, პირველ რიგში, მაგრამ უფრო მნიშვნელოვანია კონკრეტული პროგრამის გათვალისწინებით: ღამის ოქსიმეტრია, სადაც HR და SpO2 მონაცემები მუდმივად შეგროვდება ღამით და ჩაიწერება მიკრო SD ბარათზე. Instructables უკვე შეიცავს რამდენიმე სახის პროექტს, მაგალითად, ორს Arduino– ს ჩართვით აქ და აქ, და ერთი Raspberry Pi– ს გამოყენებით. მაღარო იყენებს ოდნავ ახალ სენსორს MAX30102 MAXIM ინტეგრირებული და Adafruit's Feather M0 Adalogger კონტროლისა და მონაცემების ჩაწერისთვის.

ამრიგად, ჩვენი პროექტი არ არის განსაკუთრებით ინოვაციური ტექნიკის თვალსაზრისით და, როგორც ასეთი, არ ღირს ამ ინსტრუქციის დაწერა, მაგრამ მისი შექმნის პროცესში მე მივიღე მნიშვნელოვანი პროგრესი პროგრამულ უზრუნველყოფაში, რამაც საშუალება მომცა ამოვიღო მონაცემები MAX30102– დან ბევრად უფრო მაღალი თანმიმდევრულობით და ბევრად ნაკლები ხმაური ვიდრე MAXIM- ის მიერ დაწერილი პროგრამული უზრუნველყოფა ამ სენსორისთვის. სიგნალის დამუშავების ალგორითმის შესრულება ილუსტრირებულია ზემოთ მოცემულ დიაგრამაში, სადაც ორი ზედა დიაგრამა შეიცავს ღამით გულისცემას და ჟანგბადის გაჯერებას, რომელიც გამოითვლება ნედლი სიგნალებიდან ჩვენი მეთოდით (იდენტიფიცირებულია "RF"), ხოლო ქვედა ორი გრაფიკი გვიჩვენებს MAXIM- ის შედეგებს ზუსტად იგივე სიგნალები. HR– ის სტანდარტული გადახრებია 4.7 დარტყმა / წთ და 18.1 დარტყმა / წთ, ხოლო SpO– სთვის2 0.9% და 4.4%, შესაბამისად RF და MAXIM, შესაბამისად.

(ორივე RF გრაფიკი შეესაბამება მინიმალურ ავტოკორელაციის ბარიერს 0.25 და შეზღუდული არ არის R / IR კორელაცია; იხილეთ ნაბიჯები 4 და 5 ამ პირობების ახსნისათვის.)

ნაბიჯი 1: აპარატურა

ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა
ტექნიკა
  1. პულსის ოქსიმეტრი და გულისცემის სენსორი MAX30102 სისტემური დაფა MAXIM Integrated, Inc.
  2. ბუმბული M0 Adalogger საწყისი Adafruit, Inc.
  3. ლითიუმის იონური ბატარეა Adafruit, Inc.

კავშირები:

  • Adalogger ქინძისთავები SCL და SDA შესაბამისი SCL და SDA ქინძისთავები MAX30102 დაფაზე
  • Adalogger pin 10 to pin INT MAX30102 დაფაზე
  • Adalogger GND to MAX30102 დაფა GND
  • Adalogger 3V to MAX30102 VIN

ნაბიჯი 2: ციფრული სიგნალები დაბრუნებულია MAX30102– ით

ციფრული სიგნალები დაბრუნდა MAX30102– ით
ციფრული სიგნალები დაბრუნდა MAX30102– ით
ციფრული სიგნალები დაბრუნდა MAX30102– ით
ციფრული სიგნალები დაბრუნდა MAX30102– ით

სენსორის მუშაობის პრინციპები ძალიან მარტივია: ორი LED, ერთი წითელი (660 ნმ) და ერთი ინფრაწითელი (880 ნმ, IR) ანათებს ადამიანის კანს. შუქი ნაწილობრივ შეიწოვება ქვედა ქსოვილებით, მათ შორის პერიფერიული სისხლით. სენსორის ფოტოდეტექტორი აგროვებს ასახულ შუქს ორივე ტალღის სიგრძეზე და აბრუნებს ორ შესაბამის ფარდობით ინტენსივობას I2C პროტოკოლის გამოყენებით. ვინაიდან ჟანგბადიანი და დეოქსიგენირებული ჰემოგლობინის შეწოვის სპექტრი განსხვავდება ორივე ტალღის სიგრძისთვის, ასახულ შუქს აქვს ცვლადი კომპონენტი, როგორც არტერიული სისხლის რაოდენობა, რომელიც კანის პულსის ქვეშ იმყოფება თითოეული გულისცემის დროს. გულისცემის და ჟანგბადის გაჯერების განსაზღვრა სიგნალის დამუშავების პროგრამულ უზრუნველყოფამდეა.

ნედლი სიგნალების მაგალითები (მხოლოდ IR არხი) ილუსტრირებულია ზემოთ მოცემულ სურათებში. შეიძლება შეამჩნიოთ პერიოდული კომპონენტი გადაფარებული ცვლადი საწყისზე, რომელიც იცვლება ვიკიპედიის გვერდზე ნახსენები მრავალი ფაქტორის გამო. მოძრაობით გამოწვეული არტეფაქტები განსაკუთრებით მაღიზიანებს, ვინაიდან მათ შეუძლიათ შენიღბონ სასარგებლო HR სიგნალი და გამოიწვიოს ყალბი შედეგები. ამრიგად, მოწინავე კომერციული ოქსიმეტრები აღჭურვილია ამაჩქარებლებით, რაც ხელს უწყობს ამ არტეფაქტების გაუქმებას.

მე შეიძლება დავამატო ამაჩქარებელი ჩემი ოქსიმეტრის მომდევნო ვერსიას, მაგრამ ღამის HR/SpO2 ჩაწერა, როდესაც სენსორი უმეტესად უმოძრაოდ რჩება, საკმარისია დამახინჯებული სიგნალების გამოვლენა და გამოტოვება.

MAX30102 სენსორი თავისთავად მოყვება ზედაპირზე დამონტაჟებულ პაკეტს, მაგრამ MAXIM გულმოდგინედ გთავაზობთ გარღვევის დაფას (სისტემის დაფა 6300) პლუს სიგნალის დამუშავების პროგრამული უზრუნველყოფა Arduino- სთვის და mbed - ყველაფერი მითითების დიზაინის პაკეტში MAXREFDES117#. მე სიხარულით შევიძინე იგი იმის მოლოდინში, რომ უბრალოდ შევაერთებ რამდენიმე მავთულს სენსორსა და Adalogger- ს შორის და ერთ დღეში მექნება სამუშაო, კარგი ოქსიმეტრი. მე ადაპტირებული მაქვს MAXIM– ის პროგრამული უზრუნველყოფის RD117_ARDUINO ვერსია Adalogger– ის ARM Cortex M0 პროცესორზე გასაშვებად. ძირითადად, ყველაფერი რაც მე უნდა გამეკეთებინა შეცვალა შეუთავსებელი SofI2C ფუნქციები max30102.cpp– ში შესაბამისი Wire ბიბლიოთეკის ზარებით. კოდი დაჯარიმდა Arduino IDE v1.8.5– ში და მუშაობდა M0– ზე შეცდომების გარეშე. თუმცა, წმინდა შედეგები იმედგაცრუებული იყო. შესავლის ეტაპზე მე უკვე ვაჩვენე როგორც HR, ასევე SpO– ს ძალიან მაღალი ცვალებადობა2რა ბუნებრივია, შეიძლება ვინმემ თქვას, რომ მე რაღაც არასწორად გავაკეთე და ეს იყო ჩემი თავდაპირველი აზრიც. თუმცა, MAXIM– ის სასწავლო ვიდეოში თქვენ ასევე შეგიძლიათ დააკვირდეთ ეკრანზე ნაჩვენებ HR მნიშვნელობებს. უფრო მეტიც, ვიდეოს ქვემოთ მოცემული კომენტარები ადასტურებს, რომ სხვებმაც შენიშნეს მსგავსი მოვლენა.

მოკლედ რომ ვთქვათ, გარკვეული ექსპერიმენტის შემდეგ დავადგინე, რომ სენსორი მუშაობს გამართულად და ციფრული სიგნალის დამუშავების ალტერნატიული მეთოდი ბევრად უკეთეს სტაბილურობას იძლევა. ეს ახალი მეთოდი, რომელიც მითითებულია "RF" - ით, აღწერილია მომდევნო ნაბიჯებში.

ნაბიჯი 3: სიგნალის წინასწარი დამუშავება

სიგნალის წინასწარი დამუშავება
სიგნალის წინასწარი დამუშავება
სიგნალის წინასწარი დამუშავება
სიგნალის წინასწარი დამუშავება
სიგნალის წინასწარი დამუშავება
სიგნალის წინასწარი დამუშავება
სიგნალის წინასწარი დამუშავება
სიგნალის წინასწარი დამუშავება

ჩვენი განხორციელებისას, ნედლეული სიგნალი გროვდება 25 ჰც სიხშირით (იგივე MAXIM– ის) სრული 4 წამის განმავლობაში (MAXIM– ის პროგრამული უზრუნველყოფა აგროვებს მხოლოდ 1 წამის ღირებულებას), რის შედეგადაც 100 ციფრული დროის წერტილი საბოლოო მონაცემის წერტილში. თითოეული 100 ქულიანი თანმიმდევრობა წინასწარ უნდა იყოს დამუშავებული შემდეგი გზით:

  1. საშუალოზე ორიენტირება (a.k.a. "მოხსნა DC კომპონენტი" ელექტრო ინჟინრები). სენსორიდან მიღებული ნედლეული მონაცემები არის რიცხვების დროის სერია 10 -ში5 დიაპაზონი. სასარგებლო სიგნალი მხოლოდ არტერიული სისხლიდან ასახული სინათლის ნაწილია, რომელიც იცვლება მხოლოდ 10 -ის მიხედვით2 - პირველი ფიგურა. სიგნალის მნიშვნელოვანი დამუშავებისათვის, ამიტომ სასურველია გამოვიკლოთ საშუალო თითოეული სერიის წერტილიდან. ეს ნაწილი არ განსხვავდება იმისგან, რასაც MAXIM პროგრამა უკვე აკეთებს. თუმცა, ის, რაც განსხვავდება, არის დროის ინდიკატორების დამატებითი საშუალო ცენტრირება. სხვა სიტყვებით რომ ვთქვათ, სერიის წერტილების ინდექსირების ნაცვლად 0 -დან 99 -მდე, ახალი ინდექსები არის რიცხვები -49.5, -48.5,…, 49.5. შეიძლება თავიდან უცნაურად მოგეჩვენოთ, მაგრამ ამ პროცედურის წყალობით სიგნალის მრუდი "სიმძიმის ცენტრი" ემთხვევა კოორდინატთა სისტემის წარმოშობას (მეორე ფიგურა). ეს ფაქტი მომდევნო ეტაპზე საკმაოდ სასარგებლო ხდება.
  2. საბაზისო გასწორება. მეორე საფეხურზე ნაჩვენები ტალღების ფორმების კიდევ ერთი შეხედულება აჩვენებს, რომ რეალური ოქსიმეტრიული სიგნალების საწყისი შორს არის ჰორიზონტალურად ბრტყელიდან, მაგრამ განსხვავდება სხვადასხვა ფერდობებზე. მესამე ფიგურა გვიჩვენებს საშუალოზე ორიენტირებულ IR სიგნალს (ლურჯი მრუდი) და მის საწყისს (ლურჯი სწორი ხაზი). ამ შემთხვევაში, საწყისი დახრილობა უარყოფითია. სიგნალის დამუშავების მეთოდი, რომელიც აღწერილია წინ, მოითხოვს, რომ საწყისი იყოს ჰორიზონტალური. ამის მიღწევა შესაძლებელია საშუალოზე ორიენტირებული სიგნალის საწყისი მნიშვნელობის უბრალოდ გამოკლებით. ორივე Y და X კოორდინატების საშუალო ცენტრირების წყალობით, საბაზისო გადაკვეთა ნულის ტოლია და მისი ფერდობის განტოლება განსაკუთრებით მარტივია, როგორც ეს მეოთხე ფიგურაშია ნაჩვენები. საბაზისო დონის სიგნალი ნაჩვენებია ნარინჯისფერი მრუდით მესამე ფიგურაში.

ამრიგად, წინასწარ დამუშავებული სიგნალი მზად არის შემდეგი ნაბიჯისათვის.

ნაბიჯი 4: სამუშაო ცხენი: ავტოკორელაციის ფუნქცია

სამუშაო ცხენი: ავტოკორელაციის ფუნქცია
სამუშაო ცხენი: ავტოკორელაციის ფუნქცია
სამუშაო ცხენი: ავტოკორელაციის ფუნქცია
სამუშაო ცხენი: ავტოკორელაციის ფუნქცია
სამუშაო ცხენი: ავტოკორელაციის ფუნქცია
სამუშაო ცხენი: ავტოკორელაციის ფუნქცია

ჩვეულ 1,…, n ინდექსაციას დაუბრუნდებით, პირველი ფიგურა გვიჩვენებს ავტოკორელაციის ფუნქციის განმარტებას r - რაოდენობა, რომელიც აღმოჩნდა ძალიან სასარგებლო სიგნალის პერიოდულობის და ხარისხის გამოვლენისას. ეს უბრალოდ სიგნალის დროის სერიის ნორმალიზებული სკალარული პროდუქტია, რომელიც თავისთავად გადაადგილებულია lag m– ით. ჩვენს განაცხადში, მოსახერხებელია თითოეული ავტოკორელაციის მნიშვნელობის მასშტაბი მის მნიშვნელობასთან მიმართებით lag = 0, ანუ გამოვიყენოთ შედარებითი ავტოკორელაცია r / რ0.

ტიპიური კარგი ხარისხის IR სიგნალის ფარდობითი ავტოკორელაციის ნაკვეთი ნაჩვენებია მეორე ფიგურაში. როგორც მოსალოდნელი იყო, მისი მნიშვნელობა lag = 0 არის მისი გლობალური მაქსიმუმის ტოლი 1. შემდეგი (ადგილობრივი) მაქსიმუმი ხდება lag = 23 -ში და უდრის 0.79 -ს. ავტოკორელაციის ნაკვეთში ადგილობრივი მინიმუმისა და მაქსიმუმის არსებობა ადვილი გასაგებია: როდესაც სიგნალი მარჯვნივ გადადის, მისი მწვერვალები თავიდან დესტრუქციულად ერევა ერთმანეთში, მაგრამ გარკვეულ მომენტში ჩარევა ხდება კონსტრუქციული და აღწევს მაქსიმუმს შუალედის ტოლი შუალედში. სიგნალის პერიოდი.

ბოლო ფრაზა გადამწყვეტია: მწვერვალებს შორის საშუალო დროის განსაზღვრის მიზნით, საიდანაც შეიძლება გამოითვალოს სიგნალის სიხშირე (ანუ გულისცემა) საკმარისია ავტოკორელაციის ფუნქციის პირველი ადგილობრივი მაქსიმუმის პოვნა! სტანდარტულად, MAX30102 სინჯავს ანალოგურ შეყვანას სიჩქარით 25 ქულა წამში, შესაბამისად, მოცემულ m- ში წამებში პერიოდი უდრის m / 25. ეს იწვევს გულისცემის გამოხატვას წუთში (დარტყმა) წუთში:

HR = 60*25 / მ = 1500 / მ

რასაკვირველია, არ არის აუცილებელი r- ის ძვირადღირებული გამოთვლების გაკეთება ყველა ჩამორჩენის მნიშვნელობებში. ჩვენი ალგორითმი იძლევა გულისცემის = 60 დარტყმა / წუთს, რაც შეესაბამება m = 25. ავტოკორელაციის ფუნქცია ფასდება იმ მომენტში და მისი მარცხენა მეზობლის მნიშვნელობასთან შედარებით, m = 24. თუ მეზობლების მნიშვნელობა უფრო მაღალია, მაშინ მსვლელობა გრძელდება მარცხნივ რმ -1 <რ რა ამგვარად განსაზღვრული საბოლოო m შემდეგ ბრუნდება მაქსიმალურ შუალედში. შემდეგი გამეორება იწყება ამ მნიშვნელობიდან 25 -ის ნაცვლად და მთელი პროცესი მეორდება. თუ პირველი მარცხენა მეზობელი უფრო დაბალია, მაშინ ზემოაღნიშნული რუტინული მსვლელობები ანალოგიურად მიუთითებს მარჯვნივ. უმეტეს დროს, მაქსიმუმამდე ჩამორჩენა მოითხოვს ავტოკორელაციის ფუნქციის მხოლოდ რამდენიმე შეფასებას. გარდა ამისა, მაქსიმალური და მინიმალური მისაღები ჩამორჩენა (შესაბამისად მინიმალური და მაქსიმალური გულისცემის შესაბამისად) გამოიყენება როგორც შემზღუდველი მნიშვნელობები.

ზემოაღნიშნული ძალიან კარგად მუშაობს კარგი ხარისხის სიგნალებისთვის, მაგრამ რეალური სამყარო შორს არის იდეალურიდან. ზოგიერთი სიგნალი დამახინჯებულია, ძირითადად მოძრაობის არტეფაქტების გამო. ასეთი სიგნალი ნაჩვენებია მესამე ფიგურაში. ცუდი პერიოდულობა აისახება მისი ავტოკორელაციის ფუნქციის ფორმაში, ასევე დაბალი მნიშვნელობით, 0.28, პირველი ლოკალური მაქსიმუმი m = 11. შეადარეთ ის 0.79 მაქსიმალურ მნიშვნელობას, რომელიც განსაზღვრულია კარგი ხარისხის სიგნალისათვის. ჩამორჩენასთან ერთად შემზღუდველი მნიშვნელობები, შესაბამისად, მნიშვნელობა r / რ0 მაქსიმალურად არის სიგნალის ხარისხის კარგი მაჩვენებელი და მოთხოვნა, რომ იგი გადააჭარბოს გარკვეულ ზღვარს, შეიძლება გამოყენებულ იქნას მოძრავი არტეფაქტების გაფილტვრაზე. "RF" დიაგრამები, რომლებიც ნაჩვენებია შესავალში, წარმოიშვა ასეთი ბარიერის 0.25 -ის ტოლი.

ნაბიჯი 5: ჟანგბადის გაჯერების განსაზღვრა

ჟანგბადის გაჯერების განსაზღვრა
ჟანგბადის გაჯერების განსაზღვრა
ჟანგბადის გაჯერების განსაზღვრა
ჟანგბადის გაჯერების განსაზღვრა
ჟანგბადის გაჯერების განსაზღვრა
ჟანგბადის გაჯერების განსაზღვრა
ჟანგბადის გაჯერების განსაზღვრა
ჟანგბადის გაჯერების განსაზღვრა

წინა ნაბიჯი საკმარისი იყო გულისცემის დასადგენად. SpO2 მოითხოვს მეტ შრომას. პირველ რიგში, წითელი (R) არხის აქამდე უგულებელყოფილი სიგნალი უნდა იქნას გათვალისწინებული. შემდეგი, გამოითვლება წითელი და ინფრაწითელი სიგნალების თანაფარდობა, Z = R/IR, ორივე აისახება არტერიული სისხლიდან. "არტერიული სისხლის" ნაწილი გადამწყვეტია, რადგან სინათლის უმეტესობა რეალურად აისახება ქსოვილებსა და ვენურ სისხლში. როგორ ავირჩიოთ სიგნალის ნაწილი, რომელიც შეესაბამება არტერიულ სისხლს? ეს არის პულსირებადი კომპონენტი, რომელიც იცვლება თითოეული გულისცემის მიხედვით. ელექტრო ინჟინრების სიტყვებით, ეს არის "AC ნაწილი", ხოლო დარჩენილი ასახული შუქი არის "DC ნაწილი". ვინაიდან R და IR სინათლის აბსოლუტური ინტენსივობა არ არის პროპორციული, Z თანაფარდობა გამოითვლება ფარდობითი ინტენსივობიდან, როგორც ეს ნაჩვენებია პირველ ფიგურაში. რეალურად გამოთვლილი რაოდენობების თვალსაზრისით, მე ვიყენებ საშუალოზე ორიენტირებულ, საბაზისო დონეზე გაშლილი სიგნალის ძირითად კვადრატს (RMS), y, ნედლეულის სიგნალის უკვე ცნობილ საშუალოზე, <Y>; იხილეთ მეორე ფიგურა. Z თანაფარდობა მხოლოდ სამუშაოს ნახევარია. არაწრფივი სენსორის პასუხი მოითხოვს ემპირიულ დაკალიბრებას Z- სა და საბოლოო SpO- ს შორის2 ღირებულებები. მე ავიღე კალიბრაციის განტოლება MAXIM- ის კოდიდან:

SpO2 = (-45.06*Z + 30.354)*Z + 94.845

გაითვალისწინეთ, რომ ეს განტოლება მოქმედებს მხოლოდ 2017 წელს შეძენილი MAX30102 დიზაინის დაფაზე! სავარაუდოა, რომ MAXIM– მა შესაძლოა ხელახლა მოახდინოს თავისი სენსორების კალიბრაცია მოგვიანებით.

ზემოაღნიშნული პროცედურა კვლავ აწარმოებს უამრავ ცრუ SpO- ს2 საკითხავები. წითელი არხი იტანჯება მრავალი არტეფაქტით, ისევე როგორც IR ერთი. ლოგიკურია ვივარაუდოთ, რომ ორივე სიგნალი მკაცრად უნდა იყოს დაკავშირებული. სინამდვილეში, კარგი ხარისხის სიგნალები, მაგალითად მესამე ფიგურის მაგალითი, ძალიან კარგად არის დაკავშირებული. პირსონის კორელაციის კოეფიციენტი ამ შემთხვევაში 0.99 -მდეა. ეს ყოველთვის ასე არ არის, როგორც ეს მეოთხე ფიგურაშია ნაჩვენები. მიუხედავად იმისა, რომ IR სიგნალი გაივლის გულისცემის ხარისხის ფილტრს თავისი r- ით / რ0 = 0.76, დამახინჯებული R სიგნალი იწვევს ორს შორის ცუდი კორელაციის კოეფიციენტს, რომელიც უდრის მხოლოდ 0.42 -ს. ეს დაკვირვება გვთავაზობს მეორე ხარისხის ფილტრს: არხებს შორის კორელაციის კოეფიციენტი აღემატება გარკვეულ ზღვარს.

ბოლო ორი ფიგურა ასახავს ასეთი ხარისხის ფილტრაციის წმინდა ეფექტს. პირველ რიგში, გაზომილი ჟანგბადით გაჯერებული არის HR ხარისხის ბარიერი 0.25, მაგრამ SpO გარეშე2 ფილტრი შემდეგი ნაკვეთი არის ცუდი HR და SpO გაფილტვრის შედეგად2 შედეგები 0.5 r / რ0 და 0.8 კორელაციის კოეფიციენტის ზღურბლები. საერთო ჯამში, ცუდი მონაცემების რაოდენობა, რომელიც შეადგენს მთლიანი 12% -ს, გაფილტრული იქნა უფრო მკაცრი რეჟიმით.

ჩვენს კოდში კორელაციის კოეფიციენტი, cc, გამოითვლება მეხუთე ფიგურის ფორმულის მიხედვით, სადაც y წარმოადგენს საშუალოზე ორიენტირებულ, საწყის დონეზე გაშლილ სიგნალს, ხოლო r0 განისაზღვრა წინა ეტაპზე.

ნაბიჯი 6: საწყისი კოდი

ამ პროექტის C წყარო, ფორმატირებული Arduino IDE– სთვის, ხელმისაწვდომია ჩვენი Github ანგარიშიდან შემდეგ ბმულზე:

github.com/aromring/MAX30102_by_RF

მისი Readme გვერდი აღწერს ცალკეულ კომპონენტებს.

მინდა ერთი წუთით შევაფასო ადაფრუტი ისეთი შესანიშნავი პროდუქტის დამზადებისთვის, როგორიცაა M0 დაფუძნებული Adalogger. მისი სწრაფი 48 MHz ARM Cortex M0 პროცესორი, უამრავი ოპერატიული მეხსიერებით, რა თქმა უნდა, დაეხმარა ამ პროექტის განხორციელებას, ხოლო პირდაპირ მიმაგრებულ SD ბარათის მკითხველს (პლუს ადაფრუტის SD ბიბლიოთეკა) ამოიღო ყველა მოყვარულის ტკივილი, რომელიც დაკავშირებულია დიდი რაოდენობით მონაცემების რეალურ დროში შენახვასთან.

გირჩევთ: