Мазмұны:

Жоғары жылдамдықты ЭКГ немесе басқа деректерді бір ай бойы үздіксіз тіркеңіз: 6 қадам
Жоғары жылдамдықты ЭКГ немесе басқа деректерді бір ай бойы үздіксіз тіркеңіз: 6 қадам

Бейне: Жоғары жылдамдықты ЭКГ немесе басқа деректерді бір ай бойы үздіксіз тіркеңіз: 6 қадам

Бейне: Жоғары жылдамдықты ЭКГ немесе басқа деректерді бір ай бойы үздіксіз тіркеңіз: 6 қадам
Бейне: ПӘТЕРГЕ ПОЛТЕРГЕЙСТМЕН БІРГЕ түні бойы мен қорқынышты әрекетті түсірдім. 2024, Шілде
Anonim
Жоғары жылдамдықты ЭКГ немесе басқа деректерді бір ай бойы үздіксіз тіркеңіз
Жоғары жылдамдықты ЭКГ немесе басқа деректерді бір ай бойы үздіксіз тіркеңіз

Бұл жоба аритмияны анықтау үшін әрқайсысы 1000 сынақ/секундта (барлығы 2K сынама/сек) 2 рет ЭКГ сигналын тіркеуге болатын киінетін қондырғы қажет университеттің медициналық зерттеу тобын қолдау үшін әзірленген. Мұнда ұсынылған жоба қашықтан басқару мен каротажды бақылауды қамтиды. Қашықтан басқару пульті компьютерде немесе ұялы телефонда тізбектелген терминалда ұсынылған мәзірлер арқылы жүзеге асады. Бұл жоба ЭКГ өлшеуді немесе соңғы киюге қажет қаптаманы немесе батареяны қамтымайды.

Бұл жоғары жылдамдықтағы/ұзақ мерзімді нұсқада Teensy 3.2, Adafruit Micro-SD ажырату модулі, деректерді тіркеу үшін сапалы 16G SDHC 10 сыныпты SD картасы және бақылау мен бақылауға арналған Bluetooth байланыс модулі қолданылады. Бұл жобаның UNO/Mega2560 аз дамыған және баяу нұсқасы да бар. Бұл жобада тіркеуді бақылау және бақылау үшін Bluetooth байланыс модулі қолданылса, сіз WiFi немесе BLE модульдерін де пайдалана аласыз.

Teensy 3.2 -ге негізделген бұл нұсқа UNO/Mega2560 нұсқасынан әлдеқайда жоғары іріктеу жылдамдығына қабілетті. Бұл кодты пайдалана отырып, Teensy 3.2 4 ADS -тен жоғары аппараттық құралмен> 30 Гц жиіліктегі екі ADC үлгісін таңдай алады және тіркей алады және жоғарыдағы 1000 үлгі/сек талапты оңай қанағаттандырады. Код әрқайсысы 128K болатын 100.bin файлдарын сақтауды қолдайды. 30 кГц жиілігінде 29 сағат 30 мин. 1000 сынама/секундта ол 37 күнді қамтиды. Кодты 100 -ден астам файлды өңдеу үшін оңай кеңейтуге болады, осылайша жұмыс уақытын ұзартады. Жүгірудің соңында сізде> 10Gig деректер,.bin, файлдар және.met файлының орындалуы мен нәтижелерін сипаттайтын файл болады. Берілген SDtoCSV.jar (бастапқы коды SDtoCSV_src.zip) ары қарай өңдеу үшін.bin файлдарын компьютердегі.csv файлдарына түрлендіру үшін пайдаланылуы мүмкін. Алынған деректер> 60Gig. UNO/Mega2560 нұсқасында Arduino эскизінде.bin -.csv түрлендіруі бар, бірақ Teensy нұсқасында тіркелген мәліметтер көлемі ескерілсе, бұл түрлендірудің тиімді әдісі емес.

Жабдықтар

Teensy 3.2 PJRC бойынша

Adafruit MicroSD картасының үзіліс тақтасы+ немесе ұқсас.

16G SDHC класы 10 MicroSD картасы жақсы сапалы. SanDisk.

5В USB қосылымы

470R сериялы қарсыласы бар светодиод.

2 x 100R резисторы (Tx/Rx сымдарының қателіктеріне байланысты зақымданудан қорғайды)

Bluetooth Mate Silver НЕМЕСЕ Android/pfodApp басқаратын Arduino UNO/Mega Starter -де сипатталған модульдердің бірі

1 -қадам: құрылыс

Құрылыс
Құрылыс

Arduino IDE V1.8.9+ нұсқасын https://arduino.cc/kz/Main/Software сайтынан жүктеп, орнатыңыз. Бұл веб -бетте әр түрлі операциялық жүйелердің сілтемелері мен GettingStarted сілтемесі бар (https://arduino.cc/kz/Guide/HomePage).

Teensyduino (Arduino IDE үшін Teensy Support) жүктеп алыңыз және орнатыңыз. Алғашқы қолдану жөніндегі нұсқаулықты мұқият ескеріңіз.

Тақта ретінде Teensy 3.2 таңдаңыз және BLINK үлгі бағдарламасының жүктелетінін және жұмыс істейтінін тексеріңіз.

Келесі кітапханаларды жүктеңіз және орнатыңыз:- millisDelay және SdFat (осы сынақтар үшін пайдаланылатын SdFat кітапханасының жергілікті суреті осында.) Және pfodParser.zip (pfodBufferedStream және pfodNonBlockingInput класы үшін)

Zip файлдарынан кітапханаларды орнату үшін Arduino IDE → Sketch → Include Library →. ZIP library мәзірін қолданып, кітапхана zip файлдарын жүктеңіз.

Teensy32AnalogLogger.zip файлын Arduino эскиздер каталогына шығарыңыз және Teensy32AnalogLogger.ino көмегімен Teensy 3.2 тақтасын бағдарламалаңыз (0.01 нұсқасы)

Teensy 3.2, Bluetooth модулі мен SD картасының модулін жоғарыда көрсетілгендей қосыңыз (pdf нұсқасы)

2 -қадам: Бағдарламаны іске қосу - тестілеу

Алдымен SD картасын https://www.sdcard.org/downloads/formatter/ көмегімен форматтаңыз.

Тіркеуді бастау үшін SD картасы бос болуы керек.

Бастапқы тестілеу үшін коммуникация модулін қосудың қажеті жоқ, Teensy 3.2 + SD модулін (бос карта орнатылған) USB сериялық кабелі арқылы Arduino IDE -ге қосыңыз. Берілгендей, Teensy32AnalogLogger.ino эскизі бақылау мен бақылау үшін USB байланысын қолданады. Бақылау мен бақылау үшін байланыс құрылғысын пайдалану үшін төмендегі Нақты деректерді тіркеу қадамын қараңыз.

COM_SERIAL сериялық күйіне, Teensy USB қосылымына шығару үшін Teensy32AnalogLogger.ino эскизінің жоғарғы жағын өңдеңіз.

#COM_SERIAL сериясын анықтаңыз

Содан кейін эскизді Teensy 3.2 -ге жүктеңіз

Arduino IDE сериялық мониторын 115200 baud ашыңыз (NL және CR жиынтығымен). Бірнеше секундтан кейін Teensy 3.2 командалар мәзірін көрсетеді

Ver: 0.01 келесі командалардың бірін енгізеді:? - ағымдағы күй мен метадатай - файлдарды баптау - файлдарды тізімдеу>

? cmd ағымдағы параметрлер туралы мәліметтерді көрсетеді. (Бұл параметрлерді өзгерту үшін Teensy32AnalogLogger.ino жоғарғы жағын қараңыз) Cmds NL немесе CR немесе екеуімен де тоқтатылуы керек.

720: 00: 00.000 ішінде 0: 00: 00.000

Үлгі түйреуіштері: 16 17 Байт тәртібі: Little-Endian ADC биттері: 10 ADC үлгісінің орташа мәні: 4 Үлгілеу жылдамдығы: 1000.00 Үлгі аралығы: 1000uS Бір блоктағы үлгілер: 127 Блокты толтыру уақыты: 127000uS Файлды толтыру уақыты: 9:01: 52.000 БАРЛЫҚ файлдарды толтыру уақыты: 894: 04: 48.000 SD кешігуінің максималды ұзақтығы (файлды жабу/ашу кіреді): 0uS Максималды файлды жабу/ашу кідірісі: 0uS Буферлік блоктар саны: 28 БАРЛЫҚ блок аралықтарын толтыру уақыты: 3556000uS Максималды буферлік саны storeSampleBuffers () қоңырауында сақталған

Бұл жағдайда тіркеудің ағымдағы уақыты сұралатын 720 сағатты құрайды (30 күн), D16/A2 және D17/A3 үлгісі (төменде ADC кірістерін таңдау бойынша шектеулерді қараңыз) секундына 1000 рет. Ең жоғары жұмыс уақыты 894 сағ (37.25 күн) дейін болуы мүмкін. Негізгі циклды () барлық қол жетімді буферлер толтырылмай тұрып және үлгілер жоғалмай тұрып, 3,5 секундқа дейін (БАРЛЫҚ блок аралықтарын толтыру уақыты) басып алуға болады. Сақталған буферлер және т.

Бос SD картасын салыңыз, деректерді сақтау үшін пайдаланылатын 99 файлды инициализациялау үшін 'i' cmd пайдаланыңыз. Оларды осында алдын ала инициализациялау бір файлдан екіншісіне ауысу уақытын кешіктіреді және жылдам іріктеуге мүмкіндік береді.

99 файлды инициализациялау

Жаңа файл жасау: log00.bin Өткен уақыт: 368mS Жаңа файл жасау: log01.bin Өткен уақыт: 520mS… Жаңа файл жасау: log98.bin Өткен уақыт: 15660mS Жаңа файл жасау: log99.bin Өткен уақыт: 15812mS

Содан кейін тіркеу жұмысын бастау үшін r cmd қолдануға болады. Жүгіру сұралған уақытқа немесе оны тоқтату үшін s cmd қолданылғанша орындалады. Сіз сондай -ақ пайдалана аласыз ба? cmd тіркеу кезінде жаңартылған уақыт пен есептеулерді алу үшін. Міне s cmd көмегімен ерте тоқтатылған қысқа жүгіру.

ДЕРЕКТІ ТІРКЕУ ….

Ver: 0.01 келесі командалардың бірін енгізеді:? - ағымдағы күй мен метадеректер s - деректерді тіркеуді тоқтату

ДЕРЕКТЕР ЖҮРДІ… Тексеру керек пе? бұйрық

Өткен жұмыс уақыты: 0: 00: 10.000 720: 00: 00.000 Өткен жұмыс уақыты: 0: 00: 20.000 720: 00: 00.000…

Тіркеуді тоқтату және пайдаланылмаған файлдарды жою.

… Пайдаланылмаған файлды жою: log98.bin Пайдаланылмаған файлды жою: log99.bin

0: 01: 04.976 / 720: 00: 00.000

Үлгі түйреуіштері: 16 17 Байт тәртібі: Little-Endian ADC биттері: 10 ADC үлгісінің орташа мәні: 4 Үлгілеу жылдамдығы: 1000.00 Үлгі аралығы: 1000uS Бір блоктағы үлгілер: 127 Блокты толтыру уақыты: 127000uS Файлды толтыру уақыты: 9:01: 52.000 БАРЛЫҚ файлдарды толтыру уақыты: 894: 04: 48.000 SD кешігуінің максималды ұзақтығы (файлды жабу/ашу кіреді): 204uS Максималды файлды жабу/ашу кідірісі: 0uS Буферлік блоктар саны: 28 БАРЛЫҚ блок аралықтарын толтыру уақыты: 3556000uS Максималды буферлік саны storeSampleBuffers () қоңырауында сақталды: 1 Өткізілген таймерлер барлығы: 0 Әзірге жіберілмеген үлгілердің барлығы: 0 Жазылған жалпы блоктар: 511 Жазылған жалпы үлгілер: 64832 жабу: 0: 01: 04.832 Ағымдағы файл: log00.bin

ls:

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

ДЕРЕКТЕР ЖҮРГІЗУ АЯҚТАЛДЫ!

Ver: 0.01 келесі командалардың бірін енгізеді:? - ағымдағы күй мен метадеректер ** r - ADC деректерін жазу ** қол жетімді емес. Деректер бұрыннан бар ** i - файлдарды инициализациялау ** қол жетімді емес. Деректер бұрыннан бар l - тізім файлдары

ДЕРЕКТЕР ЖҮРГІЗІЛДІ, тексеріңіз?

Жарықдиодты дисплей

D3 -ке жалғанған жарық диоды (G2 байланысын қамтамасыз ететін D2) кез келген үлгі жіберілмесе қатты қосылады және қате болса жыпылықтайды. Эскиз қателіктерден кейін жалғастыруға тырысады, бірақ сәтті болмауы мүмкін.

3 -қадам: нақты деректерді тіркеу

Ұзақ уақыт бойы нақты деректерді тіркеу кезінде байланыс модулін D0/D1 түйреуіштеріне қосу және тіркеуді қашықтан басқару және бақылау ыңғайлы. Бұл жерде Bluetooth Mate Silver модулі әдепкі параметрлермен пайдаланылды, 115200 bod, аппараттық қол алысу жоқ (RTC, CTS), пин коды 1234.

Ескертпе: Mate Silver модуліне қуат берілетін болса, ол 60 секунд ішінде қызыл қызыл жылдам жыпылықтайтын конфигурация режиміне өтеді. Осы уақыт ішінде сіз модульге $$$ жібере аласыз, бірақ оны модульге қосуға болмайды. Қызыл светодиод баяу жыпылықтаған кезде, Bluetooth модулі қосылымдарды қабылдайды.

Teensy32AnalogLogger.ino ішіндегі COM_SERIAL анықтамасын аппараттық сериялық (D0/D1) қосылымға, Serial1 өзгерту

#COM_SERIAL сериясын анықтаңыз1

Компьютермен жұптасқаннан кейін компьютерде жаңа COM порты жасалды және CoolTerm тіркеуді қосуға, басқаруға және бақылауға болады. Басқа сериялық байланыс модульдерін де қолдануға болады, мысалы, WiFi немесе BLE, толығырақ Android/pfodApp басқаратын Arduino UNO/Mega Starter қараңыз.

Сондай -ақ, Bluetooth мобильді қосымшасы сияқты bluetooth терминалы қосымшасы арқылы немесе TCP Telnet Terminal Pro немесе Uart to BLE mdoule және BLE терминалы қосымшасы сияқты bluetooth терминалы қосымшасы арқылы Android ұялы телефонынан журналды басқаруға және бақылауға болады. nRF UART V2

4 -қадам: ADC кірістерін таңдаудағы шектеулер

ADC кірістерін таңдаудағы шектеулер
ADC кірістерін таңдаудағы шектеулер

Teensy 3.2-де шағын процессорда ADC_0 және ADC_1 екі бөлек ADC аппараттық модульдері бар, сондықтан олар бір уақытта екі кірісті таңдай алады. Ол сонымен қатар ADC -тің бірнеше үлгілерін алатын және нәтижені бұрар алдында оларды орташа алатын аппараттық орташаландырылған.

Кірістерді ADC_0, ADC_1 қосуға болатын шектеулер бар. Teensy3_1_AnalogCard-p.webp

Қысқаша мазмұны:-GND ADC_0 сілтемесі бойынша +Вольт A0-дан A9-ға дейін оқи алады, A10, A11, A12, A14 ADC_1 A2, A3, A10, A13, A15-тен A20-ға дейін оқи алады, егер сіз ADC үшін түйреуішті таңдасаңыз. оқи алмайды, ол 0 қайтарады (әрқашан)

Бұл жобада A2, A3 қолданылады, олардың әрқайсысына ADC_0 немесе ADC_1 қол жеткізе алады.

5 -қадам:.bin файлдарын.csv файлдарына түрлендіру

Teensy32AnalogLogger.ino үлгілерді logxx.bin файлдарында екілік ретінде сақтайды, яғни log00.bin log99.bin. Teensy32AnalogLogger.ino сонымен қатар жүгіру туралы мета -деректердің log.met файлын сақтайды.

Сіз одан әрі өңдеу үшін.bin файлдарын.csv түрлендіру үшін SDtoCSV.jar (SDtoCSV_src.zip бастапқы коды) пайдалана аласыз. Файлдарды SD картасынан кемінде 70Gig бос орны бар компьютердің қатты дискісіне көшіріп, SDtoCSV.jar файлын сол каталогқа көшіріңіз. Сол каталогта пәрмен терезесін ашып, іске қосыңыз

java -jar SDtoCSV.jar журналы

Егер сіздің компьютерде Java орнатылмаса, оны www.java.com сайтынан орнатыңыз

SDtoCSV log.met файлын өңдейді, содан кейін каталогтағы logxx.bin файлдарының әрқайсысын өңдейді және әрбір.bin үшін.csv файлын шығарады.. Csv файлында екі реттік үлгі нөмірі бар.

Мұнда 30303 рет/сек үлгісінде алынған 2 қосымша оқуға арналған консоль шығысының үлгісі көрсетіледі, output.txt. Бұл жіберілген үлгілердің қалай есепке алынатынын көрсетеді. (Соңғы эскиздегі буферлер санын екі есе көбейту осы жіберіп алынған үлгілерді анықтады)

CSV конверсиясына SD_Logging. SDtoCSV.log журналында прогресс пен қате туралы хабарларды тексеріңіз. Log00 өңделеді 256000 блок өңделеді, журнал01 өңделеді 256000 блок өңделеді… Өңдеу журналы 25 Өңделген 256000 блок Журнал өңдеу 26 өңдеу 256000 блок Өңдеу журналы27 Өңделген 256000 блок Өткізілген үлгілер: 2715 Өңдеу журналы 28 256000 блок өңделді… Өңдеу журналы29 256000 блок өңделді… Өңдеу журналы 47 476 өңделді 256000 блок өңдеу журналы 48 Өңделген 35935 блок --- Өңдеу аяқталды

Толық журнал файлы, SDtoCSV.log, әр SDtoCSV іске қосылады. Ол мета деректер шығысын және кез келген қате туралы хабарды қамтиды. Мұнда санау: 254 - бұл блокта сақталған деректердің саны, яғни бір блок үшін 127 үлгі х 2 жарнамалық оқылым. MissSamples - жіберілген оқу жұптарының саны, яғни.csv шығысындағы жолдар.

=== CSV конверсиясына SD_Logging журналының журналы Шілде 13 13:19:51 AEST 2019 Консольдегі прогресс туралы хабарларды көру үшін java -jar SDtoCSV.jar негізгі файл атауының журналын метадеректер нұсқасы пайдаланыңыз: 0 (Little Endian) sampleInterval uS: 33 adcBits: 10 adcАвг: 4 түйін Есеп: 2 түйреуіш: 16, 17 үлгі PerBlock: 127 noBufferBlocks: 28 ұзақтығы mS: 51649820 жүгіру уақыты mS: 106216704 maxBuffers Пайдаланылған: 32 Ескерту: Қол жетімді буферлер санынан асады (28). Кейбір үлгілер жоқ болуы мүмкін. maxLatency uS: 221476 Ескерту: буферлік блоктармен қамтамасыз етілген уақыттан асады (117348uS). Кейбір үлгілер жоғалады. maxFileOpenTime uS: 20998 жіберілген Таймерлер: 0 өткізілмеген Үлгілер Барлығы: 2715 барлығыБлоктарЖазылған: 12323935 барлығыМәндерЖазылған: 1565139665 өңдеу log00.bin өңделді 256000 блок өңдеу log01.bin 256000 блок өңделді… Log26.bin өңделеді 256000 блок өңделеді log27.bin өңделеді !!! Блок: 57696 саны: 254 жіберілмеген Үлгілер: 2339 !!! Блок: 57697 саны: 254 жіберілмеген Үлгілер: 376 Өңделген 256000 блок --- Барлығы өткізіп алынған үлгілер: 2715

Өңдеу журналы 28.bin 256000 блок өңделді

… Өңдеу log47.bin өңделген 256000 блок өңдеу log48.bin өңделген 35935 блок --- өңдеу аяқталды

Log00.csv шығыс файлының үлгісі

SampleCounter (33uS үшін), 16 түйреуіш, 170, 248, 205 1, 273, 195 2, 228, 337 3, 360, 302 4, 355, 369 5, 220, 281…

Үлгі есептегіш файлдан файлға артады, сондықтан оны уақыт белгісі ретінде пайдалануға болады. Егер үлгілер жетіспесе, онда есептегіш/уақыт белгісі жазылған үлгілер үшін дәл болып қалуы үшін келесі жолды шығарар алдында жіберілген санау көбейтіледі.

6 -қадам: Код пен кеңейтімдер туралы түсініктемелер

Teensy32AnalogLogger - бұл SdFat Arduino кітапханасындағы Билл Грейманның AnalogBinLogger мысалының қатты өзгертілген нұсқасы. Мұнда кітапхана Teensy 3.2 нұсқасында жұмыс істеу үшін қайта жазылды.

Teensy32AnalogLogger үлгі интервалын орнату үшін timer0 пайдаланады. Таймер0 үшін үзіліс өңдегіші ADC екі түрлендіруді бастайды. Екінші ADC модулінің үзіліс өңдеушісі екеуі де аяқталғанша үнемі шақырылады, әдетте ADC_0 басталған бірінші ADC модулі екіншісіне дейін аяқталады, сондықтан үзу өңдегіші бір рет шақырылады. ADC_1 үзу өңдегіші үлгілерді деректер буферіне сақтайды.

Негізгі циклде () storeSampleBuffer () кез келген толық буферді SD картасына сақтайды және буферлерді бос буферлік кезекке қайта өңдейді. Teensy 3.2 -де қол жетімді жедел жадтың көп мөлшері буферлердің үлкен санын бөлуге болатынын білдіреді, сондықтан storeSampleBuffer () -ге жиі қоңырау шалудың қажеті жоқ. Бұл негізгі циклге () процестің командалары мен шығуды жіберу сияқты басқа жұмыстарды орындауға уақыт береді.

Кеңейтімдер

Бұл жоба жоғары жылдамдықты деректерді тіркеуші ретінде жұмыс істесе де, оны толықтай кию үшін әлі де орау керек, батарея жүйесі мен ЭКГ датчиктерін беру керек. Сонымен қатар, кейбір кеңейтімдерді ескеру қажет.

  1. PfodApp арқылы толқын формасының суретін көрсету үшін pfodApp -тың графикалық функциясын қолдана отырып, іріктелген толқын формасын нақты уақытта бақылау мен бақылауды қосыңыз.
  2. Үлгілеуді ұзақ орындау үшін файл нөмірлерін 99 -дан асырыңыз
  3. 2 -ден астам кірістің үлгісі. Teensy 3.2 -де қосарланған ADC модульдері болғандықтан, үлгі жиілігін жоғарылату үшін кодты жұппен қосымша енгізу үшін өзгертуге болады.
  4. Батареяның зарядталуын бақылау үшін батареяның мониторингісін қосыңыз. Teensy 3.2 24 сағат ішінде шамамен 1100 мАч қолдайды, оның ішінде Bluetooth мен SD модулі, бірақ сенсорлық модульді қоспағанда.
  5. Батареяны тіркеуді үзбестен өзгертуге мүмкіндік беретін қосарланған батарея беру схемасын қосыңыз.

Ұсынылған: