Sadržaj:

Zapisujte EKG velike brzine ili druge podatke, neprekidno više od mjesec dana: 6 koraka
Zapisujte EKG velike brzine ili druge podatke, neprekidno više od mjesec dana: 6 koraka

Video: Zapisujte EKG velike brzine ili druge podatke, neprekidno više od mjesec dana: 6 koraka

Video: Zapisujte EKG velike brzine ili druge podatke, neprekidno više od mjesec dana: 6 koraka
Video: Gadgets, Gizmos & The New World of Syncope - Dr. Blair Grubb 2024, Srpanj
Anonim
EKG velike brzine ili drugi podaci bilježite neprekidno više od mjesec dana
EKG velike brzine ili drugi podaci bilježite neprekidno više od mjesec dana

Ovaj je projekt razvijen kako bi podržao sveučilišni medicinski istraživački tim, koji je trebao nosivi uređaj koji je mogao bilježiti 2 x EKG signala pri 1000 uzoraka/sek svaki (ukupno 2K uzoraka/sek) neprekidno tijekom 30 dana, kako bi se otkrile aritmije. Ovdje predstavljeni projekt uključuje daljinsko upravljanje i nadzor sječe. Daljinsko upravljanje je putem izbornika koji se nalaze na serijskom terminalu, bilo na računalu ili mobilnom telefonu. Ovaj projekt ne pokriva mjerenje EKG -a ili pakiranje ili bateriju potrebnu za konačnu nosivost.

Ova verzija velike brzine/dugotrajnosti koristi Teensy 3.2, Adafruit Micro-SD prekidni modul, kvalitetnu 16G SDHC klasu 10 SD karticu za bilježenje podataka i Bluetooth komunikacijski modul za kontrolu i nadzor. Dostupna je i manje razvijena i sporija verzija ovog projekta UNO/Mega2560. Iako ovaj projekt koristi Bluetooth komunikacijski modul za kontrolu i praćenje zapisnika, možete koristiti i WiFi ili BLE module.

Ova verzija, temeljena na Teensy 3.2, sposobna je za mnogo veće stope uzorkovanja od verzije UNO/Mega2560. Pomoću ovog koda Teensy 3.2 može uzorkovati i evidentirati dva ADC uzorka na> 30Khz sa hardverskim prosjekom preko 4 uzorka i tako lako zadovoljiti gornje zahtjeve od 1000 uzoraka/sek. Kôd podržava spremanje 100.bin datoteka od po 128K. Na 30Khz to pokriva 29 sati 30 minuta. Pri 1000 uzoraka u sekundi pokriva 37 dana. Kôd se lako može proširiti za obradu više od 100 datoteka, pa se produljuje trajanje izvođenja. Na kraju izvođenja imat ćete> 10Gig podataka,.bin, datoteke i.met datoteku meta podataka koji opisuju pokretanje i rezultate. Isporučeni SDtoCSV.jar (izvorni kod SDtoCSV_src.zip) može se koristiti za pretvaranje.bin datoteka u.csv datoteke na vašem računalu radi daljnje obrade. Dobiveni podatak je> 60Gig. UNO/Mega2560 verzija ima pretvorbu.bin u.csv uključenu u Arduino skicu, ali s obzirom na količinu podataka zabilježenu u verziji Teensy, to nije učinkovit način za pretvorbu.

Pribor

Teensy 3.2 by PJRC

Adafruit MicroSD kartica za razbijanje kartica+ ili slično.

16G SDHC klasa 10 MicroSD kartica dobre kvalitete npr. SanDisk.

5V USB napajanje

LED s otpornikom 470R u seriji.

2 x 100R otpornika (pruža zaštitu od oštećenja zbog grešaka u ožičenju Tx/Rx)

Bluetooth Mate srebrni ILI jedan od modula opisanih na Arduino UNO/Mega Starteru, kojim upravlja Android/pfodApp

Korak 1: Izgradnja

Graditeljstvo
Graditeljstvo

Preuzmite i instalirajte Arduino IDE V1.8.9+ s https://arduino.cc/en/Main/Software. Ta web stranica ima veze za različite operativne sustave i vezu na GettingStarted (https://arduino.cc/en/Guide/HomePage).

Preuzmite i instalirajte Teensyduino (Teensy podrška za Arduino IDE). Pažljivo imajte na umu upute prve uporabe.

Odaberite Teensy 3.2 kao ploču i provjerite učitava li se i pokreće li se primjer programa BLINK.

Preuzmite i instalirajte sljedeće knjižnice:- millisDelay i SdFat (Ovdje se nalazi lokalni snimak biblioteke SdFat koja se koristi za ove testove.) I pfodParser.zip (za klasu pfodBufferedStream i pfodNonBlockingInput)

Preuzmite zip datoteke knjižnice, a zatim upotrijebite Arduino IDE → Skica → Uključi knjižnicu → Dodaj izbornik. ZIP knjižnice za instaliranje knjižnica iz zip datoteka.

Raspakirajte datoteku Teensy32AnalogLogger.zip u svoj Arduino direktorij skica i programirajte ploču Teensy 3.2 s Teensy32AnalogLogger.ino (verzija 0.01)

Spojite Teensy 3.2, Bluetooth modul i modul SD kartice kao što je prikazano gore (pdf verzija)

Korak 2: Pokretanje programa - Testiranje

Prvo formatirajte svoju SD karticu koristeći

SD kartica mora biti prazna da biste mogli započeti bilježenje.

Za početno testiranje ne morate spojiti komunikacijski modul, samo povežite Teensy 3.2 + SD modul (s instaliranom praznom karticom) na Arduino IDE putem USB serijskog kabela. Kao što je navedeno, skica Teensy32AnalogLogger.ino koristi USB vezu za upravljanje i nadzor. Pogledajte korak bilježenja stvarnih podataka u nastavku za korištenje komunikacijskog uređaja za kontrolu i nadzor.

Uredite vrh skice Teensy32AnalogLogger.ino da postavite COM_SERIAL na Serijski, za izlaz na Teensy USB vezu.

#define COM_SERIAL Serijski

Zatim učitajte skicu u Teensy 3.2

Otvorite Arduino IDE serijski monitor na 115200 bauda (s postavljenim NL i CR). Nakon nekoliko sekundi Teensy 3.2 prikazat će izbornik naredbi

Ver: 0.01 unesite jednu od sljedećih naredbi:? - trenutni status i metapodaci - inicijalizacija filesl - popis datoteka>

The? cmd prikazuje pojedinosti o trenutnim postavkama. (Za promjenu ovih postavki pogledajte vrh Teensy32AnalogLogger.ino) Cmdovi se moraju završiti s NL ili CR ili oboje.

0: 00: 00.000 od 720: 00: 00.000

Uzorci pinova: 16 17 Redoslijed bajtova: Little-Endian ADC bitovi: 10 ADC prosječnih uzoraka preko: 4 Brzina uzorkovanja: 1000.00 Interval uzorka: 1000uS Uzorci po bloku: 127 Vrijeme popunjavanja bloka: 127000uS Vrijeme popunjavanja datoteke: 9:01: 52.000 Vrijeme za popunjavanje SVIH datoteka: 894: 04: 48.000 Maksimalna latencija SD -a (uključuje zatvaranje/otvaranje datoteke): 0uS Maksimalna latencija zatvaranja/otvaranja datoteke: 0uS Broj blokova međuspremnika: 28 Vrijeme za popunjavanje SVIH međuspremnika: 3556000uS Maksimalan broj međuspremnika spremljeno u poziv u trgovinuSampleBuffers (): 0 Ukupno propuštenih tajmera: 0 Ukupno propuštenih uzoraka do sada: 0 Ukupno napisanih blokova: 0 Ukupno napisanih uzoraka: 0 pokrivajući: 0: 00: 00.000 Trenutna datoteka:

U ovom slučaju trenutačno vrijeme izvođenja zapisnika iznosi 0 od traženih 720 sati (30 dana), uzorkovanje D16/A2 i D17/A3 (pogledajte dolje za ograničenja izbora ADC ulaza u nastavku) 1000 puta u sekundi. Maksimalno vrijeme rada može biti do 894 sata (37,25 dana). Glavna petlja () može biti zauzeta do 3,5 sekunde (vrijeme za popunjavanje SVIH međuspremnika) prije nego što se ispune svi dostupni međuspremnici i počnu gubiti uzorci. Spremljeni međuspremnici itd. Ažuriraju se kako napreduje.

Umetnite praznu SD karticu, upotrijebite "i" cmd za inicijalizaciju 99 datoteka koje se koriste za pohranu podataka. Predinicijalizacija ovdje smanjuje vremensko kašnjenje pri prelasku s jedne datoteke na drugu i omogućuje brže uzorkovanje.

Inicijalizacija 99 datoteka

Izrada nove datoteke: log00.bin Proteklo vrijeme: 368mS Izrada nove datoteke: log01.bin Proteklo vrijeme: 520mS… Izrada nove datoteke: log98.bin Proteklo vrijeme: 15660mS Izrada nove datoteke: log99.bin Proteklo vrijeme: 15812mS

Zatim možete koristiti r cmd za početak izvođenja zapisnika. Pokretanje će tražiti traženo vrijeme ili dok se s cmd ne iskoristi za njegovo zaustavljanje. Također možete koristiti? cmd tijekom prijavljivanja za ažuriranje vremena i broja. Evo kratke vožnje koja je prekinuta rano pomoću s cmd.

PRIJAVA PODATAKA ……

Ver: 0.01 unesite jednu od sljedećih naredbi:? - trenutni status i metapodaci - zaustavlja bilježenje podataka

PRIJAVLJIVANJE PODATAKA … Provjeriti? naredba

Proteklo vrijeme izvođenja: 0: 00: 10.000 od 720: 00: 00.000 Proteklo vrijeme izvođenja: 0: 00: 20.000 od 720: 00: 00.000…

Zaustavljanje evidentiranja i uklanjanje neiskorištenih datoteka.

… Uklanjanje nekorištene datoteke: log98.bin Uklanjanje nekorištene datoteke: log99.bin

0: 01: 04.976 od 720: 00: 00.000

Uzorci pinova: 16 17 Redoslijed bajtova: Little-Endian ADC bitovi: 10 ADC prosječnih uzoraka preko: 4 Brzina uzorkovanja: 1000.00 Interval uzorka: 1000uS Uzorci po bloku: 127 Vrijeme popunjavanja bloka: 127000uS Vrijeme popunjavanja datoteke: 9:01: 52.000 Vrijeme za popunjavanje SVIH datoteka: 894: 04: 48.000 Maksimalna latencija SD -a (uključujući zatvaranje/otvaranje datoteke): 204uS Maksimalna latencija zatvaranja/otvaranja datoteke: 0uS Broj blokova međuspremnika: 28 Vrijeme za popunjavanje SVIH međuspremnika: 3556000uS Maksimalan broj međuspremnika spremljeno u poziv u trgovinuSampleBuffers (): 1 Ukupno propuštenih tajmera: 0 Ukupno propuštenih uzoraka do sada: 0 Ukupno napisanih blokova: 511 Ukupno napisanih uzoraka: 64832 pokrivajući: 0: 01: 04.832 Trenutna datoteka: log00.bin

ls:

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

ZAPIS ZAPISA PODATAKA!

Ver: 0.01 unesite jednu od sljedećih naredbi:? - trenutni status i metapodaci ** r - zapis ADC podataka ** nije dostupan. Podaci već postoje ** i - datoteke za inicijalizaciju ** nisu dostupne. Podaci već postoje datoteke l -popisa

PODACI SU VEĆ ZAPISANI, provjerite?

LED zaslon

LED spojen na D3 (s D2 koji osigurava GND vezu) svijetlit će neprestano ako se propusti bilo koji uzorak i treptat će ako dođe do pogreške. Skica se pokušava nastaviti nakon pogrešaka, ali to ne može učiniti uspješno.

Korak 3: Zapisivanje stvarnih podataka

Prilikom dugotrajnog bilježenja stvarnih podataka, prikladnije je spojiti komunikacijski modul na pinove D0/D1 te daljinski upravljati i nadzirati bilježenje. Ovdje je korišten Bluetooth Mate Silver modul sa zadanim postavkama, 115200 baud, bez hardverskog rukovanja (RTC, CTS), pin code 1234.

Napomena: Kad se na modul Mate Silver uključi napajanje, on prelazi u konfiguracijski način rada, brzo crveno LED svjetlo treperi, na 60 sekundi. Za to vrijeme možete poslati $$$ putem serijske veze modulu da ga konfigurirate, ali ne možete spojiti modul. Nakon što crveno LED svjetlo polako treperi, bluetooth modul prihvaća veze.

Promijenite COM_SERIAL definiciju u Teensy32AnalogLogger.ino na hardversku serijsku (D0/D1) vezu, Serial1

#define COM_SERIAL Serijski1

Nakon uparivanja s računalom, na računalu je stvoren novi COM priključak, a CoolTerm se može koristiti za povezivanje i kontrolu i nadzor bilježenja. Mogu se koristiti i drugi serijski povezani komunikacijski moduli, poput WiFi -a ili BLE -a, za detalje pogledajte Arduino UNO/Mega Starter, kojim upravlja Android/pfodApp.

Također možete kontrolirati i nadzirati zapisivanje sa svog Android mobitela pomoću aplikacije za bluetooth terminal, poput aplikacije Bluetooth Terminal, ili pomoću aplikacije WiFi i TCP terminala, poput TCP Telnet Terminal Pro, ili Uart to BLE mdoule i aplikacije BLE terminala, kao što je nRF UART V2

Korak 4: Ograničenja u izboru ADC ulaza

Ograničenja u izboru ADC ulaza
Ograničenja u izboru ADC ulaza

Teensy 3.2 ima dva odvojena hardverska modula ADC-a, ADC_0 i ADC_1, u svom mikroprocesoru tako da može uzorkovati dva ulaza u isto vrijeme. Također ima ugrađeno hardversko prosjek koji uzima više ADC uzoraka i prosjekuje ih prije nego što okrene rezultat.

Postoje ograničenja na koja se ulazi mogu spojiti na ADC_0, ADC_1. Slika Teensy3_1_AnalogCard-p.webp

Ukratko: -Za jednokratno očitavanje, tj. +Volti koji se odnose na GND ADC_0 može čitati A0 do A9, A10, A11, A12, A14 ADC_1 može čitati A2, A3, A10, A13, A15 do A20 Ako odaberete pin koji ADC ne može pročitati vratit će 0 (uvijek)

Ovaj projekt koristi A2, A3 kojima svakom može pristupiti ADC_0 ili ADC_1.

Korak 5: Pretvorite.bin datoteke u.csv datoteke

Teensy32AnalogLogger.ino sprema uzorke kao binarne datoteke u datoteke logxx.bin, tj. Log00.bin u log99.bin. Teensy32AnalogLogger.ino također sprema datoteku log.met s meta podacima o izvođenju.

Možete koristiti SDtoCSV.jar (izvorni kod SDtoCSV_src.zip) za pretvaranje.bin datoteka u.csv za daljnju obradu. Kopirajte datoteke sa SD kartice na tvrdi disk računala s najmanje 70 Gig slobodnog prostora i kopirajte SDtoCSV.jar u isti direktorij. Otvorite naredbeni prozor u tom direktoriju i pokrenite

java -jar SDtoCSV.jar zapisnik

Ako vaše računalo nema instaliranu Javu, instalirajte ga s www.java.com

SDtoCSV će obraditi datoteku log.met, a zatim svaku od dostupnih datoteka logxx.bin u direktoriju i ispisati.csv datoteku za svaki.bin.. Csv datoteka ima redni broj uzorka nakon kojega slijede dva očitanja.

Ovdje je prikazan primjer konzole za očitavanje od 2 ADC uzorkovano 30303 puta/s, output.txt. Ona ilustrira kako se prijavljuju propušteni uzorci. (Udvostručenje broja međuspremnika u konačnoj skici popravilo je ove propuštene uzorke)

SD_Logging u CSV konverziju. Provjerite SDtoCSV.log za poruke o napretku i pogreškama. Dnevnik obrade00 Obrađeno 256000 blokova Obrada zapisnika01 Obrađeno 256000 blokova… Dnevnik obrade25 Obrađeno 256000 blokova Dnevnik obrade26 Obrađeno 256000 blokova Dnevnik obrade27 Obrađeno 256000 blokova Propušteni uzorci: 2715 Dnevnik obrade28 Obrađeno 256000 blokova… Dnevnik obrade29 Obrađeno 256000 blokova… Dnevnik obrade47 Obrađeno 256000 blokova Dnevnik obrade48 Obrađeno 35935 blokova --- Obrada gotova

Svakim pokretanjem SDtoCSV -a dodaje se potpunija datoteka dnevnika, SDtoCSV.log. Uključuje izlaz meta podataka i sve poruke o pogreškama. Ovdje broj: 254 je broj podataka pohranjenih u tom bloku, tj. 127 uzoraka x 2 očitanja adc -a po bloku. Propušteni uzorci su broj parova čitanja propuštenih, tj. Redaka u.csv izlazu.

=== Datoteka dnevnika za SD_Logging u CSV konverziju sub 13. srpnja 13:19:51 AEST 2019 Za prikaz poruka o napretku na konzoli koristite java -jar SDtoCSV.jar Osnovna datoteka Ime 'dnevnik' Verzija metapodataka: 0 (mali endijanski) sampleInterval uS: 33 adcBita: 10 adcAvgs: 4 pinCount: 2 Igle: 16, 17 uzorakaPerBlock: 127 noBufferBlocks: 28 trajanje mS: 51649820 zatraženo vrijeme rada mS: 106216704 maxBuffersUsed: 32 Upozorenje: Prekoračuje raspoloživi međuspremnik (28). Neki uzorci mogu nedostajati. maxLatency uS: 221476 Upozorenje: Prekoračuje vrijeme koje osiguravaju međuspremnici (117348uS). Neki uzorci će nedostajati. maxFileOpenTime uS: 20998 missedTimers: 0 missedSamplesUkupno: 2715 totalBlocksWritten: 12323935 totalSamplesUnstenten: 1565139665 Obrada log00.bin Obrađeno 256000 blokova Obrada log01.bin Obrađeno 256000 blokova… Obrada log26.bin Obrađeno 256000 blokova Obrada log27.bin !!! Blok: 57696 broj: 254 propuštenoUzorci: 2339 !!! Blok: 57697 broj: 254 propuštenaUzorci: 376 Obrađeno 256000 blokova --- Ukupno propuštenih uzoraka: 2715

Obrada log28.bin Obrađeno 256000 blokova

… Obrada log47.bin Obrađeno 256000 blokova Obrada log48.bin Obrađeno 35935 blokova --- Završena obrada

Uzorak izlazne datoteke log00.csv je

SampleCounter (po 33uS), Pin 16, Pin 170, 248, 205 1, 273, 195 2, 228, 337 3, 360, 302 4, 355, 369 5, 220, 281…

Brojač uzoraka povećava se iz datoteke u datoteku pa se može koristiti kao vremenska oznaka. Ako ima uzoraka koji nedostaju, brojač uzoraka se povećava za propušteni broj prije ispisa sljedećeg retka, tako da brojač/vremenska oznaka ostaje točna za snimljene uzorke.

Korak 6: Komentari na kôd i proširenja

Teensy32AnalogLogger je jako izmijenjena verzija primjera AnalogBinLoggera Billa Greimana u njegovoj biblioteci SdFat Arduino. Ovdje je knjižnica prepisana da radi na Teensy 3.2.

Teensy32AnalogLogger koristi timer0 za postavljanje intervala uzorkovanja. Rukovalac prekida za timer0 pokreće dvije ADC konverzije. Rukovalac prekida za drugi ADC modul neprestano se poziva sve dok oba ne završe. Obično prvi pokrenuti ADC modul ADC_0 završava prije drugog uključenog, pa se rukovatelj prekida naziva samo jednom. Rukovalac prekida ADC_1 sprema uzorke u međuspremnik podataka.

U glavnoj petlji () storeSampleBuffer () sprema sve pune međuspremnike na SD karticu i reciklira međuspremnike u prazni red me uspremnika. Velika količina RAM -a dostupna na Teensy 3.2 znači da se može dodijeliti veliki broj međuspremnika pa se storeSampleBuffer () ne mora često pozivati. To ostavlja vrijeme glavnoj petlji () za obavljanje drugih poslova, poput naredbi procesa i slanja izlaza.

Proširenja

Iako je ovaj projekt funkcionalan kao zapisnik podataka velike brzine, za potpunu nosivost još ga je potrebno pakirati i isporučiti baterijski sustav i EKG senzore. Kao i da postoje neka proširenja koja treba razmotriti.

  1. Dodajte kontrolu i praćenje uzorkovanog valnog oblika u stvarnom vremenu putem pfodApp -a pomoću funkcije crtanja pfodApp -a za prikaz snimki valnog oblika
  2. Produžite brojeve datoteka nakon 99 za duže uzorkovanje
  3. Uzorak više od 2 ulaza. Budući da Teensy 3.2 ima dva ADC modula, možete promijeniti kôd tako da dodate dodatne ulaze u parovima kako biste povećali brzinu uzorkovanja.
  4. Dodajte nadzor baterije za praćenje napunjenosti baterije. Teensy 3.2 koristi približno 1100 mAhrs tijekom 24 sata, uključujući bluetooth i SD modul, ali isključujući modul senzora
  5. Dodajte dvostruki krug napajanja baterije kako biste omogućili zamjenu baterije bez prekida zapisivanja.

Preporučeni: