Дипломная работа: Портативная система сбора данных о здоровье человека

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Выполнив преобразование Фурье, можно утверждать, что необходимость в фильтрации сигнала отсутствует, так как спектре ярко выражены основные составляющие (рис. 26).

Рисунки 23 и 26 показывают, что сигналы ЭКГ и ФПГ имеют типовую форму, в которых видны основные составляющие: «P-волна», комплекс «QRS», «T-волна» для ЭКГ, систолический и диастолический пики на ФПГ.

Для расчета ЧССвоспользуемся формулами (2.1 и 2.2). Вычислим значения ЧСС для каждого отдельного сегмента графиков ЭКГ и ФПГ.

Результаты представлены на рис. 27. Данный график представляет из себя динамику изменения времени между сердечными сокращениями - ВСР.На практике используется среднее значение ЧСС, которое составило на основании ЭКГ - 82уд./мин., вычисление ЧССпри помощи сигнала ФПГ показало схожий результат.

Рисунок 26 - Спектр сигналов ФПГ

a б

Рисунок 27 - Значение ЧСС в разные промежутки времени:

а - вычисленные из ФПГ, б - вычисленные из ЭКГ

Для расчета значения сатурации кислорода согласно формулам 5-7 необходимо знать значение амплитуды переменной и постоянной составляющих ФПГ. Учитывая форму и повторяемость сигнала имеется возможность осуществлять поиск этих параметров на определенном участке ФПГ. В результате получается массив значений минимумов и максимумов функции ФПГ (рис.28).

Рисунок 28 - Расчет значений минимумов и максимумов функции ФПГ

Алгоритм учитывает форму сигнала и игнорирует искаженные периоды осцилляций. Вычислим значение SpO2 для каждого распознанного участка. Результаты вычисления представлены на рис. 29. Среднее значение SpO2 составило 96,881% насыщенностью крови кислородом, что является нормальным значением.Скрипт программы представлен в приложении.

Рисунок 29 -Расчет SpO2

3.3Выводы к главе

В данной главе былопроведено исследование ЭКГ и ФПГсигналов, полученных с датчика MAX86150 в математической среде. На основании измеренных данныхбыли рассчитаны значения ЧСС, ВСР исатурации кислорода в крови. Для улучшения характеристик сигналов применялись методы цифровая фильтрации. Основные выводы представлены в таблице 3.

Таблица 3

Режим измерения

Потенциальные возможности

Запись ЭКГ

Фильтрация оптимальным фильтром позволяет наблюдать «QRS» комплекс, подходит для мониторинга ЧСС и ВСР. Может быть осуществлено в самом устройстве.

Применение дополнительныхФНЧ и ФВЧ фильтров позволяет наблюдать входящие составляющие в сигнал ЭКГ.

Запись ФПГ

Высокая точность результатов измерений, возможность наблюдения всех составляющих сигнала ФПГ, без применения фильтров.

Расчет ЧСС и ВСР

Высокая точность измерений на основе ФПГ, использование данных ЭКГ позволяет достичь схожие результаты.

Расчет SpO2

Высокая точность измерений, возможно осуществлять круглосуточный мониторинг сатурации кислорода.

Заключение

В ходе выполнения выпускной квалификационной работы были выполнены следующие задачи:

1. Проведен анализ литературы касательно вопросов, связанных с методами исследования состояния сердечно-сосудистой системыИсследованы методы диагностики ССС и разработаны алгоритмы их реализации.

2. В качестве методов диагностики были выбраны: анализ ЭКГи ФПГ, а также расчет ЧСС, ВСР, SpO2, а также был предложен метод расчета артериального давления неинвазивным методом.

3. Разработана структурная схема, алгоритм работы портативного устройства для мониторинга здоровья, а также выполнен выбор электронно-компонентной базы.

4. На основании рассмотренного теоретического материала проведено математическое моделирование вычисления параметров здоровья в пакете MATLAB.В качестве анализа были приведены: графики ЭКГ и ФПГ, их частотный анализ и расчет ЧСС, ВСР и SpO2. Результаты моделирования вычисления параметров ЧСС и SpO2 показывают высокую точность и качество измерений.

Список литературы

1. ВОЗ о сердечно-сосудистых заболеваниях [Электронный ресурс]. - Режим доступа: https://www.who.int/cardiovascular_diseases/about_cvd/ru/ (дата обращения 26.02.20).

2. Методы диагностики сердечно-сосудистой системы [Электронный ресурс]. - Режим доступа: https://dr-paramonov.ru/news/blog/metody-diagnostiki-serdechno-sosudistoy/(дата обращения 26.02.20).

3. Telemedicine: opportunities and developments in Member States: report on the second global survey on eHealth 2009. [Электронныйресурс]. /WHO Library Cataloguing-in-Publication Data. - Режимдоступа: https://www.who.int/goe/publications/goe_telemedicine_2010.pdf (датаобращения 05.03.20).

4. A. Aboalseoud, A. Youssry, M. El-Nozahi, A. El-Rafei, A. ElBialy, H. Ragaai and A. Wahba. Wireless ECG Monitoring System for Telemedicine Application. 2019 Ninth International Conference on Intelligent Computing and Information Systems (ICICIS). - 2019. pp. 300-305.

5. ECG interpretation: Charectiristic of normal ECG (P-wave, QRS-complex, ST-segment, T-wave). [Электронный ресурс]. - Режим доступа: https://ecgwaves.com/topic/ecg-normal-p-wave-qrs-complex-st-segment-t-wave-j-point/(дата обращения 06.03.20).

6. L. Peter, A. Proto,M. Cerny. Investigation of a Possibility of ECG and PPG Common Measurement. World Congress on Medical Physics and Biomedical Engineering. - 2018. pp. 851-855.

7. S. Bagha, L. Show. A Real Time Analysis of PPG Signal for Measurement of SpO2 and Pulse Rate. International Journal of Computer Applications (0975 - 8887). - 2011. pp. 45-50.

8. Л. Уилсон. Пульсоксиметрия (часть 1). / Уилсон Л. -№123. - 2015. - c. 1-6.

9. W. Lin, H. Wang, O. W. Samuel, G. Li. Using a New PPG Indicator to increase the Accuracy of PTT-based Continuous Cuffless Blood Pressure Estimation. - 2017 IEEE. pp. 738-741.

10. J. L. Moraes, M. X. Rocha ,G. G. Vasconcelos,J. E. Vasconcelos Filho,Victor Hugo C. De Albuquerque,A. R. Alexandria.Advances in Photoplethysmography Signal Analysisfor Biomedical Applications. ¬-2018. pp. 1-26.

11. Кишов Р. М. Неинвазивное непрерывное измерение артериального давления // Проблемы Науки. 2015. №7 (37). [Электронный ресурс].- Режим доступа: https://cyberleninka.ru/article/n/neinvazivnoe-nepreryvnoe-izmerenie-arterialnogo-davleniya.

12. H. Shin, S. D. Min. Feasibility study for the noninvasive blood pressure estimation based on ppg morphology: normotensive subject study. - 2017 IEEE.

13. X. Ding, Y. Zhang, Fellow, J. Liu, W. Dai, H. K. Tsang. Continuous Cuffless Blood Pressure Estimation Using Pulse Transit Time and Photoplethysmogram Intensity Ratio. - 2016 IEEE.

14. L. Bastos, D. Rosario, E. Cerqueira, A. Santos, M. Nogueira. Filtering Parameters Selection Method and Peaks Extraction for ECG and PPG Signals. 2019 IEEE Latin-American Conference on Communications (LATINCOM). - 2020.

15. Recommended Configurations and Operating Profiles for MAX30101/MAX30102 EV Kits. ApplicationnoteAN6409 [Электронный ресурс] / MaximIntegrated. - 2016. - Режим доступа: https://pdfserv.maximintegrated.com/en/an/AN6409.pdf (дата обращения 20.03.20).

16. Oreggia D., Guarino S., Parisi A., Pernice R., Adamo G., Mistretta L., di Buono P., Fallica G., Cino C.A., Busacca A.C. Physiological parameters measurements in a cardiac cycle via a combo PPG-ECG system; Proceedings of the AEIT International Annual Conference; Naples, Italy. 14-16 October 2015; pp. 1 6.

17. Ferdinando H., Seppдnen T., Alasaarela E. Comparing features from ECG pattern and HRV analysis for emotion recognition system; Proceedings of the IEEE Conference on Computational Intelligence in Bioinformatics and Computational Biology; Chiang Mai, Thailand. 5-7 October 2016; pp. 1-6.

18. D. Lucani, G. Cataldo, J. Cruz, G. Villegas, S. Wong. A portable ECG monitoring device with Bluetooth and Holter capabilities for telemedicine applications. Proceedings of the 28th IEEEEMBS Annual International Conference. - 2006. pp. 5244-5246.

19. B. Ramachandran,S. Bashyam. Development of real-time ECG signal monitoring system for telemedicine application. 2017 Third International Conference on Biosignals, Images and Instrumentation (ICBSII). - 2017. pp. 4.

20. Integrated Photoplethysmogram and Electrocardiogram Bio-Sensor Module For Mobile Health MAX86150.Datasheet [Электронный ресурс] / / Maximintegrated. - Режим доступа: https://datasheets.maximintegrated.com/en/ds/MAX86150.pdf(дата обращения 20.02.20).

21. 2.4-GHz Bluetooth™ low energy and Proprietary System-on-Chip. Datasheet [Электронный ресурс] / /Texasinstruments. - 2013. - Режим доступа: https://www.ti.com/lit/ds/symlink/cc2541.pdf?&ts=1589273969936 (дата обращения 17.03.2020).

22. Antenna quick quide. Datasheet DN 035 [Электронныйресурс] / /Texas instruments. - 2013. - Режим доступа: https://www.ti.com/lit/an/swra351a/swra351a.pdf?&ts=1589274009000 (дата обращения 17.03.2020).

23. Antenna selection quide. Application note AN058 [Электронныйресурс] //Texas instruments. - 2013. - Режим доступа: https://www.ti.com/lit/an/swra351a/swra351a.pdf?&ts=1589274009000 (дата обращения 17.03.2020).

24. PMIC with Ultra-Low IQ Voltage Regulators and Battery Charger for Small Lithium Ion Systems. Datasheet [Электронныйресурс] / / Maximintegrated. - 2020. - Режимдоступа: https://datasheets.maximintegrated.com/en/ds/MAX14690.pdf (датаобращения 17.03.2020).

25. Увеличение времени работы портативной электроники с помощью преобразователя на основе SIMO [Электронный ресурс]. - Режим доступа: https://www.compel.ru/lib/135395 (дата обращения 26.03.20).

26. RechargeableLI-IONBatteries. Datasheet [Электронный ресурс] / / IllinoisCapacitor. - 2019. - Режим доступа: http://products.illinoiscapacitor.com/seriesDocuments/RJD_series.pdf (дата обращения 17.03.2020).

27. Integrated Photoplethysmogram and Electrocardiogram Bio-Sensor Module For Mobile Health MAX86150. Datasheet [Электронный ресурс] / / Maximintegrated. - Режим доступа: https://datasheets.maximintegrated.com/en/ds/MAX86150.pdf (дата обращения 20.02.20).28. D.Jingwei, J.Wenwen. Design of Digital Filter on ECG Signal Processing. 2015 Fifth International Conference on Instrumentation and Measurement, Computer, Communication and Control (IMCCC). -2015.- pp. 1272-1275.

29. N. Das, M. Chakraborty, // «Performance Analysis of FIR and IIR Filters for ECG Signal Denoising based on SNR», 2017 Third International Conference on Research in Computational Intelligence and Communication Networks (ICRCICN). -2017.pp. 90-97,

Приложение

Скрипт программы для работы с ЭКГ сигналом

clc

clear all

close all

pkg load signal

maxSignals=csvread('7.csv');

%3,4 ppg

%5 not filtering ecg

ecgFullNF=real(maxSignals(2:end,5));

n1=8000;n2=15104;

Fs=200;%200 Гц

ecgFullNF_cutted=ecgFullNF(n1:n2)';

figure;

plot(ecgFullNF)

figure;

plot(ecgFullNF_cutted)

[b1,a1]=butter(5,1/100,'high');

[H,w]=freqz(b1,a1,1000);

figure;

plot(w/2/pi*1000,10*log10(abs(H)))

[ecgFullMalabFiltered20,d2]=filter(b1,a1,ecgFullNF_cutted(1:end));

figure;

plot((0:length(ecgFullNF)-1)*1/Fs,ecgFullNF*(12.247e-6)/8/9.5*1000)

xlabel('f,Гц'),ylabel('Амлитудагармоник,мB'),grid

title('ЭКГсигнал')

if 1

p=[1 0 0 0 -1];%Знаменатель

z=zeros(1,201);

z(1)=-1;z(201)=1;

z(101)=50;z(105)=-50;

k=1/50;

[ecgFullMalabFiltered]=filter(z*k,p,ecgFullNF_cutted);

ecgFullMalabFiltered=ecgFullMalabFiltered(101:end);

if 1

nOrder=4;

[b1,a1]=butter(nOrder,1/100,'high');

[b2,a2]=butter(nOrder,40/100,'low');

[b3,a3]=butter(nOrder,[49 51]/100,'stop');

[ecgFullMalabFiltered1,d1]=filter(b2,a2,ecgFullMalabFiltered);

figure

plot(ecgFullMalabFiltered1)

[ecgFullMalabFiltered,d2]=filter(b1,a1,ecgFullMalabFiltered1(3:end));

figure

plot(ecgFullMalabFiltered)

%[ecgFullMalabFiltered3]=filter(z*k,p,ecgFullMalabFiltered1);

%[ecgFullMalabFiltered2,d2]=filter(b2,a2,ecgFullMalabFiltered1(1:end));

%[ecgFullMalabFiltered3,d3]=filter(b3,a3,ecgFullMalabFiltered2(1:end));

%ecgFullMalabFiltered=ecgFullMalabFiltered3(3:end);

%ecgFullMalabFilteredFetched=ecgFullMalabFiltered(nStart:end);

end

if 1

figure;

hold on

plot((0:length(ecgFullNF_cutted)-1)*1/Fs,ecgFullNF_cutted*(12.247e-6)/8/5*1000,'-r')

plot((0:length(ecgFullMalabFiltered)-1)*1/Fs,ecgFullMalabFiltered*(12.247e-6)/8/5*1000,'-b')

xlabel('t,c'),ylabel('АмлитудаЭКГ,мB'),grid,legend('Безфильтра','Сфильтром')

title('Нефильтрованный и фильтрованный ЭКГ сигналы')

hold off

ecgFullMalabFilteredFetched=ecgFullMalabFiltered;

end

nStart=1;%

ecgV1=ecgFullNF_cutted(nStart:end)*(12.247e-6)/8/9.5*1000;

ecgV2=ecgFullMalabFilteredFetched*(12.247e-6)/8/9.5*1000;

fetchSig=ecgFullMalabFilteredFetched(1:Fs);%Находимпервыйпик

HRM_time=find(max(fetchSig)==ecgFullMalabFilteredFetched);%Находимеговремя

startInd=HRM_time+11;

while (length(ecgFullMalabFilteredFetched)-startInd>Fs)

fetchSig=ecgFullMalabFilteredFetched((startInd):(startInd+Fs));

tekMax=find(max(fetchSig)==ecgFullMalabFilteredFetched);

if ((tekMax-HRM_time(end))>Fs/2)

HRM_time=[HRM_timetekMax];

startInd=tekMax+10;

else startInd=tekMax+10;end

endwhile

%HRM_time=[2:length(HRM_time)];

HRM=[];

for m=1:length(HRM_time)-1

HRM=[HRM 60/(HRM_time(m+1)-HRM_time(m))*Fs];

endfor

HRM_mean=mean(HRM);

figure;

plot(0:length(HRM)-1,[HRM],'-ob'),grid,title('HRM')

xlabel('interval,n'),ylabel('HR, beats/min')

legend(['HRM mean=' num2str(HRM_mean)])

figure;

hold on

%tEcg=(0:length(ecgV1)-1)*1/Fs;

plot((0:length(ecgV1)-1)*1/Fs,ecgV1)%not filtered

plot((0:length(ecgV2)-1)*1/Fs,ecgV2)%filtered

legend('recorded ECG','filtered ECG')

grid,xlabel('t,c'),ylabel('ЭКГсигнал,мB')

hold off

%FFT

fftEcg1=abs(fft(ecgV1));fftEcg0=fftEcg1(1);fftEcg1(1)=0;

fftEcg2=abs(fft(ecgV2));

L=length(fftEcg1)/2;

figure;

subplot(2,1,1)

plot((0:L)/(2*L)*Fs,fftEcg1(1:L+1)/(2*L))%not filtered

xlabel('f,Гц'),ylabel('Амлитудагармоник,мB'),grid

title(['Нефильтрованный ЭКГ сигнал без постоянной составляющей(' num2str(fftEcg0/(2*L)) ' B)'])

subplot(2,1,2)

plot((0:L)/(2*L)*Fs,fftEcg2(1:L+1)/(2*L))%filtered

xlabel('f,Гц'),ylabel('Амлитудагармоник,мB'),grid

title('Фильтрованный ЭКГ сигнал')

%Записываем в файл данные

save -mat7-binary 'ecg_data.mat' 'ecgV2';

end

Скрипт программы для работы с ФПГ сигналом

clc

clear all

close all

pkg load signal

ppgAll=csvread('7.csv');

%3,4 ppg

%5 not filtering ecg

Fs=200;%Частота дискретизации

ppgRed=ppgAll(2:end,4);%4 столбец красный

ppgIRed=ppgAll(2:end,3);%3 инфракрасный

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

if 1 % комментарий fft

%Plot 2000 samples

figure;

hold on

plot(ppgRed,'-b')

ppgRed1000=ppgRed(8000:10000)';

ppgIRed1000=ppgIRed(8000:10000)';

fftRed=abs(fft(ppgRed1000))/length(ppgRed1000);fftRed0=fftRed(1);fftRed(1)=0;

fftIRed=abs(fft(ppgIRed1000))/length(ppgIRed1000);fftIRed0=fftIRed(1);fftIRed(1)=0;

L=length(fftRed)/2;

figure;

subplot(2,1,1)

plot((0:L/5)/2/L*Fs,fftRed(1:(L/5+1))),legend(['Ampl(0)=' num2str(fftRed0)]),grid

title('Red light AC')

xlabel('t'),ylabel('Amplitude')

subplot(2,1,2)

plot((0:L/5)/2/L*Fs,fftIRed(1:(L/5+1))),legend(['Ampl(0)=' num2str(fftIRed0)]),grid

title('IRed light AC')

xlabel('t'),ylabel('Amplitude')

%

order=6;

wCutoff=10;

Wn=wCutoff/(Fs/2);

[b a] = butter(order,Wn,'low');

%f_filt=0:(Fs/2)/1000:Fs/2;

%[H w]=freqz(b,a,1000);

%figure;

%plot(w,10*log10(abs(H)),'-b')

[ppgRed1000Filt,delay]=filter(b,a,ppgRed1000);

figure;

hold on

plot(ppgRed1000,'-b')

plot(ppgRed1000Filt(14:end),'-r')

grid

hold off

endif

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

if 1

%Фильтр

order=6;%порядок

wCutoff=10;%Частота среза

Wn=wCutoff/(Fs/2);

[b a] = butter(order,Wn,'low');

%Algorithm

nStart=8000;

nEnd=15000;

ppgRedFiltered=filter(b,a,ppgRed(nStart:nEnd+order*2));

ppgIRedFiltered=filter(b,a,ppgIRed(nStart:nEnd+order*2));

%не сдвинутые во времени, фильтрованные отсчеты с 8000 до 15000

ppgRed30s=ppgRedFiltered(2*order:end)';

ppgIRed30s=ppgIRedFiltered(2*order:end)';

%Compute SpO2

%Firstly: search for minimum value - dc value, start algorithm

%v1Red - minimum 1

%v2Red - maximum 1

%v3Red - minimum 2

%v4Red - maximum 2

v1Red=0;v2Red=0;v3Red=0;v4Red=0;

v1IRed=0;v2IRed=0;v3IRed=0;v4IRed=0;

vRed=0;errorVRed=0;

vIRed=0;errorVIRed=0;

flag=0;

RedAc=[];RedDc=[];IRedAc=[];IRedDc=[];

nakR=[];nakIR=[];

tK=[];tK1=0;tK2=0;tK3=0;tK4=0;

counter=0;

stepCheck=10;

for k=1:length(ppgIRed30s)

%Red

vNewRed=(ppgRed30s(k));

vNewIRed=(ppgIRed30s(k));

switch (flag)

case 0

if (vNewIRed>vIRed)

if(counter<stepCheck)

if (vIRed<errorVIRed)

counter=0;

errorVRed=vRed;

errorVIRed=vIRed;

tK1=k-1;

endif

else

v1IRed=errorVIRed;

v1Red=errorVRed;

flag=1;

counter=0;

endif

counter=counter+1;

endif%search minimum

%

case 1

if (vNewIRed<vIRed)

if(counter<stepCheck)

if (vIRed>errorVIRed)

counter=0;

errorVRed=vRed;

errorVIRed=vIRed;

tK2=k-1;

endif

else

v2Red=errorVRed;

v2IRed=errorVIRed;

flag=2;

counter=0;

endif

counter=counter+1;

endif%search minimum

%

case 2

if (vNewIRed>vIRed)

if(counter<stepCheck)

if (vIRed<errorVIRed)

counter=0;

errorVRed=vRed;

errorVIRed=vIRed;

tK3=k-1;

endif

else

if (v1IRed>errorVIRed)

flag=1;

tK1=tK3;

v1Red=errorVRed;

v1IRed=errorVIRed;

else

v3Red=errorVRed;

v3IRed=errorVIRed;

flag=3;

endif