- Потребне компоненте
- Пулсни сензор СЕН-11574
- Кружна шема за повезивање импулсних сензора са ПИЦ микроконтролером
- Објашњење ПИЦ16Ф877А кода за монитор откуцаја срца
Откуцаји срца су најважнији параметар у праћењу здравља било које особе. У модерној ери носивих уређаја постоји пуно уређаја који могу да мере откуцаје срца, крвни притисак, кораке, сагореле калорије и пуно других ствари. Ови уређаји имају сензор пулса у себи да би осетио брзину пулса. Данас ћемо такође користити импулсни сензор са ПИЦ микроконтролером за бројање откуцаја срца у минути и Интер-Беат Интервал (Интер-Беат Интервал), те вредности ће се даље приказивати на ЛЦД екрану од 16к2 карактера. У овом пројекту ћемо користити ПИЦ16Ф877А ПИЦ микроконтролер. Пулсни сензор смо већ повезали са Ардуином за систем за надзор пацијента.
Потребне компоненте
- ПИЦ16Ф877А микроконтролер
- Кристал од 20 МХз
- 33пФ кондензатор 2 ком
- Отпорник 4.7к 1 ком
- ЛЦД са 16к2 карактера
- Пот од 10.000 за контролу контраста ЛЦД-а
- СЕН-11574 Пулсни сензор
- Ремен на чичак
- 5В адаптер за напајање
- Бреадбоард и прикључне жице
Пулсни сензор СЕН-11574
За мерење откуцаја срца потребан нам је пулсни сензор. Овде смо одабрали СЕН-11574 пулсни сензор који је лако доступан у мрежним или офлајн продавницама. Користили смо овај сензор пошто произвођач нуди примере кодова, али то је Ардуино код. Претворили смо тај код за наш ПИЦ микроконтролер.
Сензор је заиста мали и савршен за читање откуцаја срца преко ушне шкољке или на вршку прста. Пречника је 0,625 ”и дебљине 0,125” са округле ПЦБ стране.
Овај сензор пружа аналогни сигнал и сензор се може покретати са 3В или 5В, тренутна потрошња сензора је 4 мА, што је одлично за мобилне апликације. Сензор се испоручује са три жице са 24-инчним каблом за повезивање и мушким заглављем берг на крају. Такође, сензор се испоручује са чичак траком за ношење преко врха прста.
Шему пулсног сензора такође обезбеђује произвођач, а такође је доступна и на спаркфун.цом.
Шема сензора састоји се од оптичког сензора откуцаја срца, РЦ кола или филтера за поништавање шума, што се може видети на шематском дијаграму. Р2, Ц2, Ц1, Ц3 и оперативно појачало МЦП6001 се користе за поуздан појачани аналогни излаз.
Постоји неколико других сензора за надгледање рада срца, али импулсни сензор СЕН-11574 се широко користи у пројектима Електронике.
Кружна шема за повезивање импулсних сензора са ПИЦ микроконтролером
Овде смо спојили сензор пулса преко једног 2 Другом пин микроконтролера јединице. Како сензор пружа аналогне податке, морамо претворити аналогне податке у дигитални сигнал радећи неопходне прорачуне.
Цристал осцилатор на 20Мхз је повезан преко два осц клинова јединице микроконтролера са два керамичким 33ПФ кондензатора. ЖК је повезан преко РБ порта микроконтролера.
Објашњење ПИЦ16Ф877А кода за монитор откуцаја срца
Код је мало сложен за почетнике. Произвођач је пружио узорке кодова за сензор СЕН-11574, али је написан за платформу Ардуино. Морамо да конвертујемо израчун за наш микрочип, ПИЦ16Ф877А. Комплетни код је дат на крају овог пројекта са демонстрацијским видео записом. А пратеће Ц датотеке можете преузети овде.
Наш ток кода је релативно једноставан и кораке смо направили помоћу кућишта прекидача . Према произвођачу, податке са сензора морамо добити за сваке 2 милисекунде. Дакле, користили смо рутину услуге прекида тајмера која ће активирати функцију на сваке 2 милисекунде.
Наш ток кода у наредби прекидача ићи ће овако:
Случај 1: Прочитајте АДЦ
Случај 2: Израчунајте откуцаје срца и ИБИ
Случај 3: Прикажите откуцаје срца и ИБИ на ЛЦД-у
Случај 4: ПРАЗНИ (не радити ништа)
Унутар функције прекида тајмера, мењамо стање програма у Случај 1: Прочитајте АДЦ сваке 2 милисекунде.
Дакле, у главној функцији дефинисали смо стање програма и све случајеве прекидача .
воид маин () { систем_инит (); маин_стате = РЕАД_АДЦ; вхиле (1) { свитцх (маин_стате) { цасе РЕАД_АДЦ: { адц_валуе = АДЦ_Реад (0); // 0 је број канала маин_стате = ЦАЛЦУЛАТЕ_ХЕАРТ_БЕАТ; пауза; } случај ЦАЛЦУЛАТЕ_ХЕАРТ_БЕАТ: { израчунај_срце_беат (адц_валуе); маин_стате = СХОВ_ХЕАРТ_БЕАТ; пауза; } цасе СХОВ_ХЕАРТ_БЕАТ: { иф (КС == труе) {// Откуцаји срца су пронађени // Утврђени су БПМ и ИБИ // Квантификовани Селф "КС" труе када Ардуино открије откуцај срца КС = фалсе; // ресетовање заставице Квантификованог сопства за следећи пут // 0.9 користи се за добијање бољих података. заправо не би требало да се користи БПМ = БПМ * 0,9; ИБИ = ИБИ / 0,9; лцд_цом (0к80); лцд_путс ("БПМ: -"); лцд_принт_нумбер (БПМ); лцд_цом (0кЦ0); лцд_путс ("ИБИ: -"); лцд_принт_нумбер (ИБИ); } } маин_стате = ИДЛЕ; пауза; ИДЛЕ цасе: { бреак; } подразумевано: { } } } }
Користимо две хардверске периферне јединице ПИЦ16Ф877А: Тимер0 и АДЦ.
Унутар датотеке тимер0.ц, ТМР0 = (уинт8_т) (тмр0_маск & (256 - (((2 * _КСТАЛ_ФРЕК) / (256 * 4)) / 1000)));
Овај прорачун пружа прекид тајмера од 2 милисекунде. Формула за израчунавање је
// ТимерЦоунтМак - (((кашњење (мс) * Фоцс (хз)) / (ПреСцале_Вал * 4)) / 1000)
Ако видимо функцију тимер_иср , то је-
воид тимер_иср () { маин_стате = РЕАД_АДЦ; }
У овој функцији стање програма се мења у РЕАД_АДЦ на сваких 2 мс.
Тада је функција ЦАЛЦУЛАТЕ_ХЕАРТ_БЕАТ преузета из примера кода Ардуино.
воид израчунати_срце_беат (инт адц_валуе) { Сигнал = адц_валуе; самплеЦоунтер + = 2; // водимо евиденцију о времену у мС са овом променљивом инт Н = самплеЦоунтер - ластБеатТиме; // надзиремо време од последњег откуцаја како бисмо избегли буку // пронашли врхунац и најнижи ниво пулсног таласа ако (Сигнал <тхресх && Н> (ИБИ / 5) * 3) {// избегли дихротски шум чекањем 3/5 последњег ИБИ иф (Сигнал <Т) {// Т је корито Т = Сигнал; // евидентирање најниже тачке у импулсном таласу } } …………. ………………………..
Даље, комплетан код је дат у наставку и добро објашњен коментарима. Ови подаци сензора откуцаја срца могу се даље преносити у облак и надгледати преко Интернета са било ког места, што га чини ИоТ системом за надгледање откуцаја срца, пратите везу да бисте сазнали више.
Преузмите датотеке подршке Ц за овај пројекат ПИЦ импулсног сензора од овде.