Курсовая работа: Разработка цифрового измерителя кровяного давления на микроконтроллере MC68HC908JL3
В начале процедуры, в
блоке 30 происходит сравнение напряжения снимаемого с активного фильтра (вход
РТВ1) с заданным порогом напряжения (1,75V). Если пороговое напряжение больше напряжения снимаемого с
АФ, то программа зациклевается и ожидает когда напряжение с АФ будет больше
порогового. Причём, если в течении 5 секунд программа находится в цикле, то
измерение прекращается и выводится сообщение об ошибки. Если Upress1>Пор, то происходит сброс ячейки
памяти OVSEC, и далее происходит определение
значения амплитуды (бл. 33 – 37).
Как только, амплитуда
будет определенна, происходит сброс и перезапуск таймера, а также обнуление SEC10 и SEC (бл. 38). После чего значение амплитуды заносится в
ячейку памяти АМР2 (бл. 39). Далее АЦП переключается на вход РТВ0 (бл. 40), и
результат второго преобразования заносится в UDAV (этот результат показывает давление в манжете), после
чего АЦП обратно переключается на вход РТВ1. Как только АЦП переключится на
вход РТВ1, ячейка памяти PULSE,
в которой находится кол-во пульсаций, инкрементируется. А далее идет процедура
вычисления производной амплитуды.
Производная вычисляется
по формуле:
,
где, AMP1 и AMP2 – амплитуды;
time – время между амплитудами.
При первом входе в
процедуру SB=0 (бл.50), вычисляется время
импульса и заносится в ячейку памяти time1 (бл.52 – 55). После чего проверяется (бл.56), если первая амплитуда
находится в АМР2, а вторая в АМР1, то они меняются местами (бл.57 – 59) и
программа переходит на выполнение бл.29, т.е. определение амплитуды начинается
сначала. Если первая амплитуда находится в АМР1, а вторая в АМР2, то ничего не
происходит, и определение амплитуды начинается заново.
При последующем входе SB=1, в начале также определяется время
импульса, но далее смотрится:
1. Если РВ=0, то значение времени
заносится в time2, после чего из time2 вычитается time1, и РВ устанавливается в “1” (бл.64 – 66).
2. Если РВ=1, то значение времени
заносится в time1, после чего из time1 вычитается time2, и РВ устанавливается в “0” (бл.61 – 63).
И в первом, и во втором
случае, результат преобразования заносится в time3 (бл.67).
В блоке 68 происходит
определение разности между АМР2 и АМР1. Далее в блоках 69 – 73 вычисляется
производная. После чего программа переходит к процедуре определения давления.
Из графика показанного на
рис.4.2.1.1. видно, что первая производная, которая больше порога ПОРОГ1
является определяющей для систолического давления, т.е. по ней определяют
систолическое давление. Последующее производные, которые больше порога ПОРОГ1,
но меньше порога ПОРОГ2 не являются определяющими и игнорируются. Когда
производная будет больше порога ПОРОГ2, то она станет определяющей для
диастолического давления. Поэтому в процедуре определения давления, сначала
определяется систолическое давление (бл.75). Если давление определилось, то
значение давления заносится в SIS,
после чего бит QB устанавливается
в “1” (бл.77,78), и идёт определение диастолического давления. Если давление не
определилось, то бит QB не
устанавливается, и далее происходит определение диастолического давления.
Как только диастолическое
давление будет определенно (бл.76), его значение переносится в DIA (бл.79). После чего осуществляется
проверка (бл.80), если SIS=0,
то выводится сообщение об ошибки, после чего устройство ожидает спуска манжеты
(бл.81), перед повторным измерением. Если SIS 0, то идёт вычисление частоты пульса (бл.82 – 84) и
далее происходит индикация давления и пульса (бл.85), после чего устройство
опять ожидает спуск манжеты перед повторной накачкой.
Бит QB позволяет сначала определять
систолическое давление, и только потом определять диастолическое давление,
причём если систолическое давление определенно, то в последующем определяется
только диастолическое давление.
 
Рис.4.2.1.2.
Рис.4.2.1.2.(продолжение)
 
26.A cmp1
|
|
24.Upress A
|
|

 
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 |