Рефераты. Разработка цифрового измерителя кровяного давления на микроконтроллере MC68HC908JL3

На принципиальной схеме изображённой на рис.5.1. можно подсчитать, что у микроконтроллера должно быть не менее 13 линий ввода-вывода(11 линий для работы с ЖКИ-модулем и две линии для работы с датчиком давления).

В данном случае был выбран микроконтроллер MC68HC908JL3, который имеет 22 линии ввода-вывода. То есть, по сути дела у нас остаётся свободными, 9-ть линий ввода-вывода, которые можно использовать для различных усовершенствований прибора. Например, можно дополнительно в приборе сделать часы, также можно сделать, чтобы прибор измерял давление в автоматическом режиме, для этого необходим компрессор, который будет нагнетать давление в манжету. Все эти доработки непосредственно повлекут за собой, задействование дополнительных линий ввода-вывода.

4. Структура алгоритма программы


4.1 Обобщённая БСА


Обобщённая БСА программы, управляющей системой, приведена на рис.4.1.2. После включения питания происходит инициализация всей системы. После этого микроконтроллер ждёт накачки манжеты, осуществляя циклическую проверку окончания накачки. Когда сигнал датчика уменьшается в течении более чем 0,75 секунд, это свидетельствует, что пользователь больше не накачивает манжету, и микроконтроллер начинает анализировать сигнал колебания. Анализ сигнала колебания сводится к идентификации амплитуды пульса и осуществляется в блоках 3 и 4.

Пороговый уровень для измерения частоты импульсов установлен равным 1,75V, чтобы устранить шумы или всплески. Как только амплитуда пульса идентифицирована, микроконтроллер игнорирует сигнал в течении 450 мS, чтобы предотвратить ложную идентификацию из-за наличия промежуточного максимума колебания. После чего в блоке 5 происходит вычисление производной амплитуды пульса. Именно по производной амплитуды пульса определяется давление крови, блок 6.

Из графика показанного на рис.4.1.1., можно увидеть, что основной принцип измерения основан на сравнении производной с 2-мя порогами, Порог1 и Порог2. Более подробно, это будет рассмотрено в пункте 4.2.


График производной амплитуды пульса.


 



   Порог2

 



   Порог1

 




Рис.4.1.1.


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

 




2. Процедура ожидания окончания накачки манжеты

 
          


 



                                                    Y                            N


 






                                                            Y                                              N                                                                    

                                                       

 








                                     Y                                     N            

                                 


 



                          N                                                           Y

                  


 








                              Y                                                 



Рис.4.1.2. Обобщённая БСА.


4.2 Рабочая БСА


4.2.1 БСА основной программы

Рабочая БСА придставленна на рис.4.2.1.2..В начале программы происходит инициализация, блок 1, в котором происходит инициализация портов ввода-вывода, АЦП и таймера. После чего в блоке 2 обнуляются все переменные, задействованные в данной программе. Как только, это всё выполнится, происходит запуск АЦП(блок 4), у которого аналоговым входом является линия РТВ0.

Первый результат преобразования аналогового сигнала, заносится в ячейку памяти CONST, и означает значение кода при нулевом давлении. После этого на индикатор выводятся символы как показано на рис.4.2.1.1., и в младшем разряде “сис:” зажигается 0. После чего, идёт процедура ожидания окончания накачки манжеты.


 


                                       сис х х 0

                          диа х х х            пул х х х

рис.4.2.1.1. Расположение символов на индикаторе.


Она заключается в следующем. В ячейку памяти del заносится число соответствующее задержке 0,75 секунды( бл.12). В блоках 16 и 15 организован цикл, после выполнения которого, происходит индикация текущего давления (бл. 17 – 21). После чего делается декремент ячейки памяти del. Если del0 то, программа переходит к выполнению бл.13. и все происходит заново. Если del=0, то в бл.25. происходит сравнение давления до задержки и после задержки. Если давление после задержки больше давления до задержки, то программа переходит к выполнению бл.12. и данная процедура повторяется. Если же давление после задержки меньше давления до задержки, то это означает, что пользователь прекратил накачку манжеты, и программа переходит на процедуру определения амплитуды.

В начале процедуры, в блоке 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), перед повторным измерением. Если SIS0, то идёт вычисление частоты пульса (бл.82 – 84) и далее происходит индикация давления и пульса (бл.85), после чего устройство опять ожидает спуск манжеты перед повторной накачкой.

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



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.