Përmbajtje:

Regjistroni EKG me shpejtësi të lartë ose të dhëna të tjera, vazhdimisht për më shumë se një muaj: 6 hapa
Regjistroni EKG me shpejtësi të lartë ose të dhëna të tjera, vazhdimisht për më shumë se një muaj: 6 hapa

Video: Regjistroni EKG me shpejtësi të lartë ose të dhëna të tjera, vazhdimisht për më shumë se një muaj: 6 hapa

Video: Regjistroni EKG me shpejtësi të lartë ose të dhëna të tjera, vazhdimisht për më shumë se një muaj: 6 hapa
Video: Alltag und Beruf - B2 - Deutsch lernen mit Dialogen 2024, Dhjetor
Anonim
Regjistroni EKG me shpejtësi të lartë ose të dhëna të tjera, vazhdimisht për më shumë se një muaj
Regjistroni EKG me shpejtësi të lartë ose të dhëna të tjera, vazhdimisht për më shumë se një muaj

Ky projekt u zhvillua për të mbështetur një ekip kërkimor mjekësor universitar, i cili kishte nevojë për një pajisje të veshshme që mund të regjistronte 2 x sinjale EKG në 1000 mostra/sek secila (2K mostra/sec gjithsej) vazhdimisht për 30 ditë, në mënyrë që të zbulonte aritmitë. Projekti i paraqitur këtu përfshin telekomandën dhe monitorimin e prerjeve. Telekomanda bëhet përmes menutë të paraqitura në një terminal serial, qoftë në kompjuter ose celular. Ky projekt nuk mbulon matjen e EKG -së ose paketimin ose baterinë e nevojshme për veshjen përfundimtare.

Ky version me shpejtësi të lartë/kohëzgjatje të gjatë përdor modulin e ndërprerjes Teensy 3.2, Adafruit Micro-SD, një kartë SD me cilësi 16G SDHC të klasës 10 për të regjistruar të dhënat dhe një modul komunikimi Bluetooth për kontroll dhe monitorim. Ekziston gjithashtu një version më pak i zhvilluar dhe i ngadalshëm i UNO/Mega2560 i këtij projekti. Ndërsa ky projekt përdor një modul komunikimi Bluetooth për kontrollin dhe monitorimin e regjistrimit, ju gjithashtu mund të përdorni module WiFi ose BLE.

Ky version, i bazuar në Teensy 3.2, është i aftë për norma shumë më të larta të kampionimit sesa versioni UNO/Mega2560. Duke përdorur këtë kod Teensy 3.2 mund të mostrojë dhe regjistrojë dy mostra ADC në> 30Khz me harduer mesatarisht mbi 4 mostra dhe kështu i plotëson me lehtësi kërkesat 1000 mostra/sek më sipër. Kodi mbështet ruajtjen e 100 skedarëve.bin prej 128K secila. Në 30Khz që mbulon 29 orë 30 minuta. Me 1000 mostra/sek mbulon 37 ditë. Kodi mund të zgjerohet lehtësisht për të trajtuar më shumë se 100 skedarë, duke zgjatur kështu kohëzgjatjen e ekzekutimit. Në fund të vrapimit do të keni> 10Gig të dhëna,.bin, skedarë dhe një skedar.met meta të dhënave që përshkruajnë ecurinë dhe rezultatet. SDtoCSV.jar i furnizuar (kodi burimor SDtoCSV_src.zip) mund të përdoret për të kthyer skedarët.bin në skedarë.csv në kompjuterin tuaj për përpunim të mëtejshëm. Të dhënat që rezultojnë janë> 60Gig. Versioni UNO/Mega2560 ka.bin në.csv konvertim të përfshirë në skicën Arduino, por duke pasur parasysh vëllimin e të dhënave të regjistruara nga versioni Teensy, kjo nuk është një mënyrë efikase për të bërë konvertimin.

Furnizimet

Adoleshencë 3.2 nga PJRC

Bordi i shpërthimit të kartës Adafruit MicroSD+ ose të ngjashme.

16G SDHC klasë 10 Kartë MicroSD me cilësi të mirë p.sh. SanDisk.

Furnizimi me USB 5V

Një led me një rezistencë 470R në seri.

2 rezistente 100 x (siguron mbrojtje nga dëmtimet për shkak të gabimeve të instalimeve elektrike Tx/Rx)

Bluetooth Mate Silver OR një nga modulet e përshkruar në Arduino UNO/Mega Starter, i kontrolluar nga Android/pfodApp

Hapi 1: Ndërtimi

Ndërtim
Ndërtim

Shkarkoni dhe instaloni Arduino IDE V1.8.9+ nga https://arduino.cc/en/Main/Software. Ajo faqe interneti ka lidhje për sisteme të ndryshme operative dhe një lidhje me GettingStarted (https://arduino.cc/en/Guide/HomePage).

Shkarkoni dhe instaloni Teensyduino (Mbështetje Teensy për Arduino IDE). SH NOTNIM me kujdes udhëzimet e përdorimit të parë.

Zgjidhni Teensy 3.2 si tabelë dhe kontrolloni që programi shembull BLINK të ngarkohet dhe të funksionojë.

Shkarkoni dhe instaloni bibliotekat e mëposhtme:- millisDelay dhe SdFat (Një fotografi lokale e bibliotekës SdFat e përdorur për këto teste është këtu.) Dhe pfodParser.zip (për klasën pfodBufferedStream dhe pfodNonBlockingInput)

Shkarkoni skedarët zip të bibliotekës dhe më pas përdorni Arduino IDE ket Sketch → Include Library → Shtoni menunë bibliotekës. ZIP për të instaluar bibliotekat nga skedarët zip.

Zbërtheni skedarin Teensy32AnalogLogger.zip në drejtorinë tuaj të skicave Arduino dhe programoni tabelën Teensy 3.2 me Teensy32AnalogLogger.ino (Versioni 0.01)

Lidhni modulin Teensy 3.2, Bluetooth dhe modulin e kartës SD siç tregohet më sipër (versioni pdf)

Hapi 2: Drejtimi i Programit - Testimi

Fillimisht formatoni kartën tuaj SD duke përdorur

Karta SD duhet të jetë bosh për të filluar regjistrimin.

Për testimin fillestar nuk keni nevojë të lidhni modulin e Komunikimeve, thjesht lidhni modulin Teensy 3.2 + SD (me një kartë të zbrazët të instaluar) me Arduino IDE përmes kabllit serial USB. Siç është dhënë, skica Teensy32AnalogLogger.ino përdor lidhjen USB për kontroll dhe monitorim. Shikoni hapin Regjistrimi i të dhënave reale më poshtë për përdorimin e një pajisje komunikimi për kontroll dhe monitorim.

Ndryshoni pjesën e sipërme të skicës Teensy32AnalogLogger.ino për të vendosur COM_SERIAL në Serial, për të dalë në lidhjen Teensy USB.

#përcakto serialin COM_SERIAL

Pastaj ngarkoni skicën në Teensy 3.2

Hapni Arduino IDE Serial Monitor në 115200 baud (me të dyja grupet NL & CR). Pas disa sekondash Teensy 3.2 do të shfaqë një menu me komanda

Ver: 0.01 futni një nga komandat e mëposhtme:? - statusi aktual dhe meta të dhëna - fillimi i skedarëvel - lista e skedarëve>

E? cmd shfaq detajet e cilësimeve aktuale. (Shihni pjesën e sipërme të Teensy32AnalogLogger.ino për të ndryshuar këto cilësime) Cmds duhet të përfundojnë me një NL ose CR ose të dyja.

0: 00: 00.000 nga 720: 00: 00.000

Këmbët e mostrës: 16 17 Rendi i bajtit: Bite ADC të Little-Endian: 10 mesataret e mostrës ADC mbi: 4 Vlerësimi i mostrës: 1000.00 Intervali i mostrës: 1000uS Mostrat për bllok: 127 Koha për të mbushur bllokun: 127000uS Koha për të mbushur një skedar: 9:01: 52.000 Koha për të mbushur të GJITHA skedarët: 894: 04: 48.000 Vonesa maksimale SD (përfshin mbylljen/hapjen e skedarit): 0uS Skedari maksimal i mbylljes/hapjes së vonesës: 0uS Numri i blloqeve tampon: 28 Koha për të mbushur të gjitha bllokuesit e bllokut: 3556000uS Numri maksimal i tamponëve ruajtur në thirrjen në storeSampleBuffers (): 0 Kohëmatësit e humbur gjithsej: 0 Gjithsej Mostrat e Humbura deri më tani: 0 Blloqet totale të shkruara: 0 Mostrat e shkruara gjithsej: 0 që mbulojnë: 0: 00: 00.000 Skedari aktual:

Në këtë rast, koha aktuale e regjistrimit është 0 e 720 orëve të kërkuara (30 ditë), marrja e mostrave D16/A2 dhe D17/A3 (shih më poshtë për Kufizimet mbi Zgjedhjen e Inputeve ADC më poshtë) 1000 herë në sekondë. Koha maksimale e ekzekutimit mund të jetë deri në 894 orë (37.25 ditë). Laku kryesor () mund të zë deri në 3.5 sekonda (Koha për të mbushur të gjitha bllokuesit e bllokut) para se të mbushen të gjithë tamponët në dispozicion dhe mostrat të fillojnë të humbin. Tamponët e ruajtur etj azhurnohen ndërsa ecuria përparon.

Vendosni një kartë SD bosh, përdorni 'i' cmd për të inicializuar 99 skedarët e përdorur për të ruajtur të dhënat. Para-inicializimi i tyre këtu zvogëlon vonesën kohore kur kaloni nga një skedar në tjetrin dhe lejon marrjen e mostrave më të shpejtë.

Fillimi i 99 skedarëve

Krijimi i skedarit të ri: log00.bin Koha e kaluar: 368mS Krijimi i skedarit të ri: log01.bin Koha e kaluar: 520mS. Me Me Krijimi i skedarit të ri: log98.bin Koha e kaluar: 15660mS Krijimi i skedarit të ri: log99.bin Koha e kaluar: 15812mS

Ju pastaj mund të përdorni r cmd për të filluar një regjistrim të regjistrimit. Drejtimi do të bëhet për kohën e kërkuar ose derisa s cmd të përdoret për ta ndaluar atë. Ju gjithashtu mund të përdorni? cmd gjatë regjistrimit për të marrë oraret dhe numërimet e përditësuara. Këtu është një vrapim i shkurtër i ndaluar herët duke përdorur s cmd.

TO DHATNA TO LOGJIKUAR …..

Ver: 0.01 futni një nga komandat e mëposhtme:? - statusi aktual dhe meta të dhënat - ndaloni regjistrimin e të dhënave

TO DHATNA TO LOGING … Kontrolloni me? komandë

Koha e Kalimit të Kaluar: 0: 00: 10.000 nga 720: 00: 00.000 Koha e Kalimit: 0: 00: 20.000 nga 720: 00: 00.000. Me Me

Ndalimi i regjistrimit dhe heqja e skedarëve të papërdorur.

Me Me Me Heqja e skedarit të papërdorur: log98.bin Heqja e skedarit të papërdorur: log99.bin

0: 01: 04.976 nga 720: 00: 00.000

Këmbët e mostrës: 16 17 Rendi i bajtit: Bite ADC të Little-Endian: 10 mesataret e mostrës ADC mbi: 4 Vlerësimi i mostrës: 1000.00 Intervali i mostrës: 1000uS Mostrat për bllok: 127 Koha për të mbushur bllokun: 127000uS Koha për të mbushur një skedar: 9:01: 52.000 Koha për të mbushur të GJITHA skedarët: 894: 04: 48.000 Vonesa maksimale SD (përfshin mbylljen/hapjen e skedarit): 204uS Skedari maksimal i mbylljes/hapjes së vonesës: 0uS Numri i blloqeve tampon: 28 Koha për të mbushur të gjitha bllokuesit e bllokut: 3556000uS Numri maksimal i tamponëve ruajtur në thirrjen në storeSampleBuffers (): 1 Kohëmatësit e humbur gjithsej: 0 Gjithsej Mostrat e Humbura deri më tani: 0 Blloqet totale të shkruara: 511 Gjithsej Mostrat e shkruara: 64832 që mbulojnë: 0: 01: 04.832 Skedari aktual: log00.bin

ls:

2000-01-01 01:00:00 261632 log00.bin 2000-01-01 01:00:00 240 log.met

LOGOGIMI I TAT DHNAVE PMPRFUNDUAR!

Ver: 0.01 futni një nga komandat e mëposhtme:? - statusi aktual dhe meta të dhënat ** r - regjistroni të dhënat ADC ** nuk janë të disponueshme. Të dhënat tashmë ekzistojnë ** i - fillimi i skedarëve ** nuk është i disponueshëm. Të dhënat tashmë ekzistojnë në listën e skedarëve

T D DHNAT JAN TASH SHT LOGUAR, kontrolloni me?

Ekran LED

LED i lidhur me D3 (me D2 që siguron lidhjen GND) do të ndizet i ngurtë nëse humbet ndonjë mostër dhe do të ndizet nëse ka një gabim. Skica përpiqet të vazhdojë pas gabimeve, por nuk mund ta bëjë këtë me sukses.

Hapi 3: Regjistrimi i të dhënave reale

Kur regjistroni të dhëna reale për kohëzgjatje të gjata, është më i përshtatshëm të lidhni një modul komunikimi me kunjat D0/D1 dhe të kontrolloni dhe monitoroni regjistrimin në distancë. Këtu u përdor një modul Bluetooth Mate Silver me cilësimet e tij të paracaktuara, 115200 baud, pa shtrëngim duarsh hardware (RTC, CTS), kodin pin 1234.

Shënim: Kur fuqia aplikohet në modulin Mate Silver kalon në një modalitet konfigurimi, drita e kuqe e shpejtë e ndezur, për 60 sekonda. Gjatë kësaj kohe ju mund të dërgoni $ $ $ nëpërmjet lidhjes serike në modul për ta konfiguruar atë, por nuk mund ta lidhni modulin. Sapo drita e kuqe të ndizet ngadalë, moduli bluetooth do të pranojë lidhjet.

Ndryshoni përcaktimin COM_SERIAL në Teensy32AnalogLogger.ino në lidhjen seriale të harduerit (D0/D1), Serial1

#përcakto serialin COM_SERIAL1

Pas çiftimit me kompjuterin, u krijua një port i ri COM në kompjuter dhe CoolTerm mund të përdoret për të lidhur dhe kontrolluar dhe monitoruar regjistrimin. Mund të përdoren gjithashtu module të tjera të lidhura në mënyrë serike, të tilla si WiFi ose BLE, shih Arduino UNO/Mega Starter, i kontrolluar nga Android/pfodApp për detaje.

Ju gjithashtu mund të kontrolloni dhe monitoroni regjistrimet nga celulari juaj Android duke përdorur një aplikacion terminal bluetooth si aplikacioni Bluetooth Terminal, ose duke përdorur aplikacionin e terminalit WiFi dhe TCP siç është TCP Telnet Terminal Pro, ose një mdoule Uart to BLE dhe një aplikacion terminal BLE siç është nRF UART V2

Hapi 4: Kufizimet në Zgjedhjen e Inputeve ADC

Kufizimet në Zgjedhjen e Inputeve ADC
Kufizimet në Zgjedhjen e Inputeve ADC

Teensy 3.2 ka dy module të veçanta harduerike ADC, ADC_0 dhe ADC_1, në mikro-procesorin e tij, kështu që mund të provojë dy hyrje në të njëjtën kohë. Ai gjithashtu ka një mesatare të integruar të harduerit e cila merr mostra të shumta ADC dhe i mesatarizon ato para se të kthehet rezultati.

Ka kufizime në të cilat hyrjet mund të lidhen me ADC_0, ADC_1. Imazhi Teensy3_1_AnalogCard-p.webp

Si përmbledhje: -Për lexime të vetme të përfunduara dmth +Volt të referuara në GND ADC_0 mund të lexojnë A0 në A9, A10, A11, A12, A14 ADC_1 mund të lexojë A2, A3, A10, A13, A15 në A20 Nëse zgjidhni një kunj që ADC nuk mund ta lexoj do të kthejë 0 (gjithmonë)

Ky projekt përdor A2, A3 të cilat secili mund të arrihet nga ADC_0 ose ADC_1.

Hapi 5: Konvertimi i skedarëve.bin në skedarë.csv

Teensy32AnalogLogger.ino ruan mostrat si binare në skedarët logxx.bin dmth log00.bin në log99.bin. Teensy32AnalogLogger.ino gjithashtu ruan një skedar log.met të meta të dhënave në lidhje me drejtimin.

Ju mund të përdorni SDtoCSV.jar (kodi burimor SDtoCSV_src.zip) për të kthyer skedarët.bin në.csv për përpunim të mëtejshëm. Kopjoni skedarët nga karta SD në hard diskun e kompjuterit tuaj me të paktën 70 Gig hapësirë të lirë dhe kopjoni SDtoCSV.jar në të njëjtën drejtori. Hapni një dritare komande në atë drejtori dhe ekzekutoni

java -jar SDtoCSV.jar log

Nëse kompjuteri juaj nuk ka Java të instaluar, atëherë instalojeni atë nga www.java.com

SDtoCSV do të përpunojë skedarin log.met dhe më pas secilin nga skedarët logxx.bin të disponueshëm në drejtori dhe do të nxjerrë një skedar.csv për secilën.bin. Skedari.csv ka numrin e sekuencës së mostrës e ndjekur nga dy leximet.

Një dalje mostre e tastierës për një lexim 2 adc të mostruar 30303 herë/sek është treguar këtu, output.txt. Ai ilustron sesi raportohen mostrat e humbura. (Dyfishimi i numrit të tamponëve në skicën përfundimtare i rregulloi këto mostra të humbura)

SD_Logging në konvertimin CSV. Kontrolloni SDtoCSV.log për progresin dhe mesazhet e gabimeve. Përpunimi i log00 Të përpunuara 256000 blloqe Përpunimi i log01 Të përpunuara 256000 blloqe. Me Me Përpunimi i log25 Përpunuar 256000 blloqe Përpunimi i log26 Përpunimi i log 25 Përpunimi i 256000 blloqeve Regjistrimi i procesit27 Përpunimi i 256000 blloqeve Mostrat e humbura: 2715 Përpunimi i logit28 Përpunimi i 256000 blloqeve. Me Me Regjistrimi i log29 Përpunuar 256000 blloqe. Me Me Përpunimi i log47 Përpunuar 256000 blloqe Përpunimi i log 48 Trajtimi i 35935 blloqeve --- Përpunimi i përfunduar

Një skedar log më i plotë, SDtoCSV.log, i bashkëngjitet secilit program të SDtoCSV. Ai përfshin daljen e të dhënave meta dhe çdo mesazh gabimi. Këtu numërimi: 254 është numërimi i të dhënave të ruajtura në atë bllok, pra 127 mostra x 2 lexime adc për bllok. Mostrat e humbura janë numri i çifteve të leximit të humbur, domethënë rreshtave në daljen.csv.

=== Regjistro skedarin për konvertimin në SD_Logging në CSV Sht 13 korrik 13:19:51 AEST 2019 Për të parë mesazhet e përparimit në Console përdorni java -jar SDtoCSV.jar Emri i skedarit bazë 'log' Versioni i meta të dhënave: 0 (Endiani i vogël) mostër Interval uS: 33 adcBits: 10 adcAvgs: 4 pinCount: 2 kunjat: 16, 17 mostraPerBlock: 127 noBufferBlocks: 28 kohëzgjatje mS: 51649820 kërkoi ekzekutimKoha mS: 106216704 maxBuffersPërdorur: 32 Paralajmërim: tejkalon numrin e tamponëve në dispozicion (28). Disa mostra mund të mungojnë. maxLatency uS: 221476 Paralajmërim: Tejkalon kohën e dhënë nga blloqet tampon (117348uS). Disa mostra do të mungojnë. maxFileOpenTime uS: 20998 missTimers: 0 missSamplesTotal: 2715 totalBlocksWritten: 12323935 totalSempjetShkruar: 1565139665 Përpunimi log00.bin Përpunuar 256000 blloqe Përpunimi log01.bin Përpunuar 256000 blloqe. Me Me Përpunimi i log26.bin 256000 blloqeve të përpunuara Përpunimi i log27.bin !!! Blloku: 57696 numër: 254 të humbura Shembuj: 2339 !!! Blloku: Numri 57697: 254 të humbura Shembuj: 376 Përpunuar 256000 blloqe --- Mostrat e Humbura Gjithsej: 2715

Log përpunimi28.bin 256000 blloqe të përpunuara

Me Me Me Përpunimi i log47.bin Përpunuar 256000 blloqe Përpunimi i log 48.bin Përpunimi i 35935 blloqeve --- Përpunimi i përfunduar

Një mostër e skedarit dalës log00.csv është

SampleCounter (për 33uS), Pin 16, Pin 170, 248, 205 1, 273, 195 2, 228, 337 3, 360, 302 4, 355, 369 5, 220, 281. Me Me

Numëruesi i mostrës rritet nga skedari në skedar kështu që mund të përdoret si vulë kohore. Nëse ka mostra që mungojnë, atëherë numëruesi i mostrës rritet me numrin e humbur para se të dalë rreshti tjetër, në mënyrë që numëruesi/vula e kohës të mbetet e saktë për mostrat e regjistruara.

Hapi 6: Komente mbi Kodin dhe Shtesat

Teensy32AnalogLogger është një version i modifikuar shumë i shembullit të Bill Greiman's AnalogBinLogger në bibliotekën e tij SdFat Arduino. Këtu biblioteka është rishkruar për të punuar në Teensy 3.2.

Teensy32AnalogLogger përdor timer0 për të vendosur intervalin e mostrës. Trajtuesi i ndërprerjeve për timer0 fillon dy konvertimet ADC. Një mbajtës i ndërprerjeve për modulin e dytë ADC thirret vazhdimisht derisa të dy të përfundojnë, zakonisht moduli i parë ADC i filluar ADC_0 përfundon para të dytit, kështu që mbajtësi i ndërprerjes thirret vetëm një herë. Trajtuesi i ndërprerjeve ADC_1 i ruan mostrat në një tampon të dhënash.

Në lakin kryesor (), storeSampleBuffer () ruan çdo tampon të plotë në kartën SD dhe riciklon tamponët në radhën e zbrazët të tamponit. Sasia e madhe e RAM -it në dispozicion në Teensy 3.2 do të thotë që një numër i madh i tamponëve mund të ndahen dhe kështu storeSampleBuffer () nuk ka nevojë të thirret shpesh. Kjo lë kohë që laku kryesor () të bëjë punë të tjera, si komandat e procesit dhe të dërgojë dalje.

Zgjerimet

Ndërsa ky projekt është funksional si një regjistrues i të dhënave me shpejtësi të lartë, për një veshje të plotë ende duhet të paketohet dhe të sigurohet një sistem baterie dhe sensorë EKG. Si dhe se ka disa shtesa që duhet të merren parasysh.

  1. Shtoni kontroll dhe monitorim në kohë reale të formës së valës së kampionuar përmes pfodApp duke përdorur funksionin e vizatimit të pfodApp për të treguar pamjet e formës së valës
  2. Zgjasni numrat e skedarëve pas 99 për ekzekutime më të gjata të marrjes së mostrave
  3. Mostra më shumë se 2 hyrje. Meqenëse Teensy 3.2 ka module të dyfishta ADC, ju mund të modifikoni kodin për të shtuar hyrje shtesë në çifte për të maksimizuar shkallën e mostrës.
  4. Shtoni monitorimin e baterisë për të ndjekur ngarkimin e baterisë. Teensy 3.2 përdor rreth 1100mAhrs gjatë 24 orëve, duke përfshirë modulin bluetooth dhe SD, por duke përjashtuar modulin e sensorit
  5. Shtoni një qark të furnizimit me bateri të dyfishtë për të lejuar ndryshimet e baterisë pa ndërprerë regjistrimin.

Recommended: