Sadržaj:

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

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

Video: Evidentirajte 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, Novembar
Anonim
Evidentirajte EKG velike brzine ili druge podatke neprekidno više od mjesec dana
Evidentirajte EKG velike brzine ili druge podatke neprekidno više od mjesec dana

Ovaj projekt razvijen je za podršku univerzitetskom medicinskom istraživačkom timu, kojem je bio potreban nosivi uređaj koji je mogao bilježiti 2 x EKG signala pri 1000 uzoraka/sek svaki (ukupno 2K uzoraka/sek) neprekidno 30 dana, kako bi se otkrile aritmije. Ovdje predstavljeni projekt uključuje daljinsko upravljanje i nadzor sječe. Daljinsko upravljanje se vrši putem menija na serijskom terminalu, bilo na računaru ili mobilnom telefonu. Ovaj projekt ne pokriva mjerenje EKG -a ili pakovanje ili bateriju potrebnu za konačnu nosivost.

Ova verzija velike brzine/dugog trajanja koristi Teensy 3.2, Adafruit Micro-SD prekidni modul, kvalitetnu 16G SDHC klasu 10 SD karticu za evidentiranje 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, zasnovana na Teensy 3.2, sposobna je za mnogo veće stope uzorkovanja od verzije UNO/Mega2560. Koristeći ovaj kod, Teensy 3.2 može uzorkovati i evidentirati dva ADC uzorka na> 30Khz sa hardverskim prosjekom preko 4 uzorka i tako lako zadovoljiti gore navedene zahtjeve za 1000 uzoraka/sek. Kôd podržava spremanje 100.bin datoteka po 128K svaka. Na 30Khz to pokriva 29hrs 30min. 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 produžava trajanje izvođenja. Na kraju izvođenja imat ćete> 10Gig podataka,.bin, datoteke i.met datoteku s meta podacima 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čunaru radi daljnje obrade. Dobiveni podatak je> 60Gig. UNO/Mega2560 verzija ima konverziju.bin u.csv uključenu u Arduino skicu, ali s obzirom na količinu podataka evidentiranu u Teensy verziji, to nije efikasan način za konverziju.

Supplies

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 sa 470R otpornikom 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

Građevinarstvo
Građevinarstvo

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

Preuzmite i instalirajte Teensyduino (Teensy podrška za Arduino IDE). Pažljivo obratite pažnju na upute za prvu upotrebu.

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

Preuzmite i instalirajte sljedeće biblioteke:- 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 biblioteke, a zatim upotrijebite Arduino IDE → Sketch → Include Library → Add. ZIP library menu za instaliranje biblioteka 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)

Ožičite 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 započeli bilježenje.

Za početno testiranje ne morate povezivati 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 kontrolu i nadzor. Pogledajte dolje navedeni korak Zapisivanje stvarnih podataka 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 otpremite skicu na Teensy 3.2

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

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

The? cmd prikazuje detalje trenutnih postavki. (Pogledajte vrh Teensy32AnalogLogger.ino za promjenu ovih postavki) 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 prosjeka 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 Maksimalno kašnjenje SD -a (uključuje zatvaranje/otvaranje datoteke): 0uS Maksimalno kašnjenje zatvaranja/otvaranja datoteke: 0uS Broj međuspremnika: 28 Vrijeme za popunjavanje SVIH međuspremnika blokova: 3556000uS Maksimalan broj međuspremnika spremljeno u poziv za 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 trenutno vrijeme bilježenja je 0 od traženih 720 sati (30 dana), uzorkovanje D16/A2 i D17/A3 (pogledajte dolje za ograničenja u izboru ADC ulaza) 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 blokova) prije nego što se ispune svi dostupni međuspremnici i počnu gubiti uzorci. Spremljeni međuspremnici itd. Ažuriraju se kako napreduje izvođenje.

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

Inicijalizacija 99 datoteka

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

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

PODACI O ZAPISU …..

Ver: 0.01 unesite jednu od sljedećih naredbi:? - trenutni status i metapodaci - zaustavi zapisivanje podataka

PRIJAVLJIVANJE PODATAKA … Provjeriti sa? komanda

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 nekoriš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 prosjeka 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): 204uS Maksimalna latencija zatvaranja/otvaranja datoteke: 0uS Broj blokova međuspremnika: 28 Vrijeme za popunjavanje SVIH međuspremnika blokova: 3556000uS Maksimalan broj međuspremnika spremljeno u poziv za trgovinuUzorci međuspremnika (): 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 PODATAKA JE ZAVRŠEN!

Ver: 0.01 unesite jednu od sljedećih naredbi:? - trenutni status i metapodaci ** r - snimanje ADC podataka ** nije dostupno. Podaci već postoje ** i - datoteke za inicijalizaciju ** nisu dostupne. Podaci već postoje. L - datoteke sa spiskom

PODACI SU VEĆ ZAPISANI, provjerite?

Led displej

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

Korak 3: Zapisivanje stvarnih podataka

Kada bilježite stvarne podatke tijekom dužeg trajanja, prikladnije je spojiti komunikacijski modul na pinove D0/D1 te daljinski kontrolirati 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: Kada se napajanje na modulu Mate Silver prebaci u mod za konfiguraciju, brzo crveno LED svjetlo treperi, u trajanju od 60 sekundi. Za to vrijeme možete poslati $$$ putem serijske veze modulu da ga konfigurirate, ali ne možete povezati modul. Kada crveno LED svjetlo sporo počne treptati, bluetooth modul će prihvatiti veze.

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

#define COM_SERIAL Serial1

Nakon uparivanja sa računarom, novi COM port je kreiran na računaru i CoolTerm se može koristiti za povezivanje i kontrolu i praćenje evidentiranja. 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 ADC hardverska modula, ADC_0 i ADC_1, u svom mikroprocesoru tako da može uzorkovati dva ulaza istovremeno. Takođe ima ugrađeno hardversko usrednjavanje koje uzima više ADC uzoraka i usrednjava 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đe sprema datoteku log.met sa 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čunara sa najmanje 70 gigabajta slobodnog prostora i kopirajte SDtoCSV.jar u isti direktorij. Otvorite naredbeni prozor u tom direktoriju i pokrenite

java -jar SDtoCSV.jar dnevnik

Ako na vašem računaru nije instalirana Java, instalirajte ga sa 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 iza kojeg 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 napredak i poruke o greškama. Dnevnik obrade00 Obrađeno 256000 blokova Obrada dnevnika01 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… Obrada dnevnika29 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 grešci. Ovdje broj: 254 je broj podataka pohranjenih u tom bloku, tj. 127 uzoraka x 2 očitanja adc -a po bloku. MissedSamples je broj parova čitanja propuštenih, tj. Redova u.csv izlazu.

=== Datoteka evidencije za SD_Logging u CSV konverziju Sub Jul 13 13:19:51 AEST 2019 Da vidite poruke o napretku na konzoli, koristite java -jar SDtoCSV.jar Osnovni naziv datoteke 'log' Verzija metapodataka: 0 (Little Endian) sampleInterval uS: 33 adcBita: 10 adcAvgs: 4 pinCount: 2 Igle: 16, 17 uzorakaPerBlock: 127 noBufferBlocks: 28 trajanje mS: 51649820 traženo vrijeme rada mS: 106216704 maxBuffersUsed: 32 Upozorenje: Premašuje broj dostupnih međuspremnika (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đena 256000 blokova Obrada log27.bin !!! Blokiraj: 57696 broj: 254 propuštenoUzorci: 2339 !!! Blok: 57697 broj: 254 propuštenihUzorci: 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 se povećava iz datoteke u datoteku pa se može koristiti kao vremenska oznaka. Ako nedostaju uzorci, brojač uzoraka se povećava za propušteni broj prije nego što se prikaže sljedeći redak, tako da brojač/vremenska oznaka ostaje točna za snimljene uzorke.

Korak 6: Komentari o kodu i proširenjima

Teensy32AnalogLogger je jako izmijenjena verzija primjera AnalogBinLoggera Billa Greimana u njegovoj biblioteci SdFat Arduino. Ovdje je biblioteka 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 se neprestano poziva sve dok oba ne budu završena, obično se 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 pufere 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 i zato storeSampleBuffer () ne treba često pozivati. Ovo ostavlja vrijeme da glavna petlja () obavi drugi posao, poput naredbi procesa i slanja izlaza.

Extensions

Iako je ovaj projekt funkcionalan kao zapisnik podataka velike brzine, za potpunu nošenje potrebno ga je još zapakirati i isporučiti baterijski sistem i EKG senzore. Kao i da postoje neka proširenja koja treba uzeti u obzir.

  1. Dodajte kontrolu i praćenje uzorkovanog oblika talasa u stvarnom vremenu putem pfodApp -a koristeći funkciju crtanja pfodApp -a za prikaz snimaka talasnog oblika
  2. Produžite brojeve datoteka nakon 99 za duže uzorkovanje
  3. Uzorkujte 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 oko 1100 mAhrs tokom 24 sata, uključujući bluetooth i SD modul, ali isključujući senzorski modul
  5. Dodajte dvostruki krug napajanja baterije kako biste omogućili zamjenu baterije bez prekida zapisivanja.

Preporučuje se: