Датчики артериальное давление ардуино
Измерение давления при помощи Arduino и датчика SPD005G
В данной статье будем измерять давление при помощи Arduino и датчика давления SPD005G.
Для измерения атмосферного давления используются датчики давления. В данной статье описан датчик давления SPD005G от Smartec. SPD означает Smart Pressure Device . Эти датчики собраны на основе кремния и пригодны как использования как в промышленности так и для использования в быту. Датчик представляет собой пластиковый корпус с специальным отверстием для измерения атмосферного давления.
Датчик может работать в двух режимах:в режиме абсолютного измерения когда давление измеряется относительно ваккума, и в режиме относительного измерения — когда измерение осуществляется относительно атмосферного давления. Когда датчик работает в режиме абсолютного измерения, то измеряет ся перепад давления между измеряемым давлением и давлением ваккумной камеры, которая находится в самом датчике.
Датчик SPD005G используется в различных медицинских аппаратах, системах кондиционирования воздуха, и многих других устройствах требующих достаточного уровня точности.
В проекте используется символьный LCD дисплей. Про подключение дисплея к Arduino было сказано ранее.
Принципиальная схема датчика давления
Документация датчика spd005g и его технические характеристики.
Схема подключения датчика давления к Arduino
Датчик подключается к Arduino через специальный каскад собранным на операционном усилителе LM324. Выходной вывод каскада 12 подключается к выводу A0 arduino. Вывод измеренного значения с датчика давления выводится на символьный LCD дисплей 16×2. Светодиод L2 можно исключить из схемы, он необхоим только лишь для сигнализации наличия напряжения. Переменое сопротивление R4 предназначено для регилировки контрасности дисплея. Передачи данных осуществляется по 4-м проводам подключенным к выводам DB4-DB7.
Питание LCD дисплея 16×2 осуществляется от источника в 5 Вольт.
Ардуино: датчик давления BMP180 (BMP085)
Барометр — это устройство, которое измеряет атмосферное давление. То есть давление воздуха, который давит на нас со всех сторон. Еще со школы мы знаем, что первый барометр представлял собой тарелку с ртутью, и перевернутой пробиркой в ней. Автором этого устройства был Эванджели́ста Торриче́лли — итальянский физик и математик. Снять показания ртутного барометра можно так же просто, как и показания спиртового термометра: чем давление снаружи колбы больше, тем выше столбик ртути внутри неё. Пары ртути, как известно, весьма ядовиты.
Позже, появился более безопасный прибор — барометр-анероид. В этом барометре ртуть была заменена на гофрированную коробку из тонкой жести, в которой создано разрежение. Под воздействием атмосферы, коробочка сжимается и через систему рычагов поворачивает стрелку на циферблате. Вот так выглядят эти два барометра. Слева — анероид, справа — барометр Торричелли.
Зачем нам может понадобиться барометр? Чаще всего, этот прибор используют на летательных аппаратах для определения высоты полета. Чем выше аппарат поднимается над уровнем моря, тем меньшее давление испытывает бортовой барометр. Зная эту зависимость, легко определить высоту.
Другой распространенный вариант использования — самодельная погодная станция. В этом случае мы можем использовать известные зависимости грядущей погоды от атмосферного давления. Помимо барометра, на такие станции ставят датчики влажности и температуры.
1. Электронный барометр
Такие громоздкие барометры мы не сможем использовать в робототехнике. Нам нужен миниатюрный и энергоэффективный прибор, который легко подключается к той же Ардуино Уно. Большинство современных барометров делают по технологии МЭМС, так же как и гиротахометры с акселерометрами. МЭМС барометры основаны на пьезорезистивном, либо на тензометрическом методе, в которых используется эффект изменения сопротивления материала под действием деформирующих сил.
Если открыть корпус МЭМС барометра, можно увидеть чувствительный элемент (справа), который находится прямо под отверстием в защитном корпусе прибора, и плату управления (слева), которая осуществляет первичную фильтрацию и преобразование измерений.
2. Датчики BMP085 и BMP180
К самым доступным датчикам давления, которые часто используются полетных контроллерах и в разного рода самодельных электронных устройствах, можно отнести датчики компании BOSH: BMP085 и BMP180. Второй барометр более новый, но полностью совместимый со старой версией.
Немного важны характеристик BMP180:
- диапазон измеряемых значений: от 300 гПа до 1100 гПа (от -500м от +9000м над уровнем моря);
- напряжение питания: от 3.3 до 5 Вольт;
сила тока: 5 мкА при скорости опроса — 1 Герц; - уровень шума: 0.06 гПа (0.5м) в грубом режиме (ultra low power mode) и 0.02 гПа (0.17м) а режиме максимального разрешения (advanced resolution mode).
Теперь подключим этот датчик к контроллеру, и попробуем оценить атмосферное давление.
3. Подключение BMP180
Оба датчика имеют I2C интерфейс, так что их без проблем можно подключить к любой платформе из семейства Ардуино. Вот как выглядит таблица подключения к Ардуино Уно.
Принципиальная схема
Внешний вид макета
4. Программа
Для работы с датчиком нам понадобится библиотека: BMP180_Breakout_Arduino_Library
Скачиваем её из репозитория, и устанавливаем в Arduino IDE. Теперь все готово для написания первой программы. Попробуем получить сырые данные из датчика, и вывести их в монитор COM порта.
Процедура получения заветного давления из датчика не такая тривиальная, и состоит из нескольких этапов. В упрощенном виде алгоритм выглядит так:
- запрашиваем у барометра показания встроенного датчика температуры;
- ждем время A, пока датчик оценивает температуру;
- получаем температуру;
- запрашиваем у барометра давление;
- ждем время B, пока датчик оценивает давление;
- получаем значение давления;
- возвращаем значение давления из функции.
Время B зависит от точности измерений, которая задается в функции startPressure. Единственный аргумент этой функции может принимать значения от 0 до 3, где 0 — самая грубая и самая быстрая оценка, 3 — самая точная оценка давления.
Загружаем программу на Ардуино Уно, и наблюдаем поток измерений атмосферного давления. Попробуем поднять датчик над головой, и опустить до уровня пола. Показания будут немного меняться. Осталось только разобраться, как нам преобразовать эти непонятные числа в высоту над уровнем моря.
5. Преобразование давления в высоту над уровнем моря
Датчик BMP180 возвращает величину давления в гектопаскалях (гПа). Именно в этих единицах принято измерять атмосферное давление. 1 гПа = 100 Паскалей. Известно, что на уровне моря давление в среднем составляет 1013 гПа, и каждый дополнительный метр над уровнем моря будет уменьшать это давление всего на 0.11 гПа (примерно).
Таким образом, если мы вычтем из результата функции getPressure число 1013, и разделим оставшуюся разность на 0.11, то мы получим значение высоты над уровнем моря в метрах. Вот так изменится наша программа:
В действительности, давление зависит от высоты над уровнем моря нелинейно, и наша формула годится лишь для высот на которых мы с вами обычно живем. Благо, человечеству известная более точная зависимость давления от высоты, которую мы можем применить для получения более точных результатов.
Здесь p — измеренное в данной точке давление, p0 — давление относительно которого идет отсчет высоты.
В библиотеке SFE_BMP180 уже есть функция, которая использует указанную. формулу для получения точной высоты. Используем её в нашей программе.
Я не стал полностью копировать функцию getPressure, чтобы сохранить читабельность текста.
В программе появилась еще одна переменная P0 — это давление, которое мы измерим на старте программы. В случае летательного аппарата, P0 будет давлением на взлетной площадке, относительно которой мы начнем набор высоты.
6. Визуализация
Теперь попробуем отобразить показания давления в программе SFMonitor, и посмотрим как меняется давление при движении датчика на высоту 2 метра.
В результате работы программы получим график давления в Паскалях:
7. Заключение
Как мы уяснили из урока, определение высоты над уровнем моря не такая тривиальная задача. Мало того, что давление зависит от высоты нелинейно, так еще картину портят различные внешние факторы. Например, давление у нас дома постоянно меняется с течением времени. Даже за несколько минут, высота измеренная нашим прибором может варьироваться в диапазоне 0.5 — 1 метра. Температура так же сильно влияет на качество измерений, поэтому нам приходится учитывать её при расчете давления.
Для летательных аппаратов рекомендуется использовать датчики повышенной точности, такие как MS5611. У этого барометра точность измерений может достигать 0,012 гПа, что в 5 раз лучше, чем у BMP180. Также, для уточнения барометрической высоты полета применяют координаты GPS.
STM32. Медицинское применение. Тонометр.
Одним из интересных профилей применения современного МК, безусловно, является медицина. И спектр приборов здезь достаточно широк — начиная от простых градусников, где можно применить простой STM8L с ЖК экраном, заканчивая навороченными кардио-мониторами, измерителями ЭКГ, холтерами с возможностями дистанционного сбора и отправки информации по эйзернет или беспроводно с коек пациентов прямо в кабинет глав-врачу. С такими задачами вполне может справиться МК STM32. Тем более, эта серия сейчас пополнилась еще и новым F4 :).
Сегодня «золотым стандартом» измерения артериального давления принято считать метод «тонов Н. С. Короткова», признанный Всемирной Организацией Здравоохранения. Однако не следует забывать, что это косвенный метод измерения кровяного давления. Безусловно, измерение АД происходит с некоторой погрешностью, определяемой упругостью стенок артерии и мягких тканей, амплитудой и формой пульсовой волны и другими факторами, индивидуальными для каждого человека. Если отказаться от округлений и точно использовать цену деления манометра, то мы увидим разницу между соседними измерениями и при пользовании механическим прибором. Считывание показаний манометра на слух также выполняется с некоторой ошибкой, зависящей от индивидуальных особенностей человека — быстроты реакции, наличия навыков и т. д. В итоге погрешность ручных тонометров складывается из трёх составляющих: самого метода, точности манометра и ошибки определения момента считывания показаний. Реально её величина может составлять до 15 мм рт. ст.! На результаты измерений влияет также скорость нагнетания воздуха в манжету, скорость стравливания и величина давления, создаваемого в манжете. Если прибавить ещё и естественные колебания артериального давления, то разница между двумя соседними измерениями может быть ещё большей.
Электронный тонометр, в принципе, должен был быть лишен всех этих недостатков, т.к. измерение тонов происходит с помощью самой-же манжеты, а обработка осуществляется с помощью ряда запатентованных алгоритмов и методик. Однако, практика показывает, что в ряде случаев электронный тонометр дает устойчивое расхождение с показаниями ручного тонометра. Как следствие — на сегодняшний день у людей сложилось стойкое мнение — «электронные тонометры врут — лучше врача со ртутным измерителем давления никто не измерит!» Опыты показали, что большая погрешность измерения вызвана исключительно неумением рядового обывателя пользоваться данным прибором, а именно, правильно одевать манжету. Правильно одетая манжета — залог получения хорошей огибающей тонов Короткова и успешного нахождения характерных точек на огибающей.
Литературы по методике нахождения АД по огибающей тонов в интернете достаточно много. У Freescale есть даже хороший аппноут, где популярно разжовано, как измерять тоны Короткова в манжете. Но! Как именно анализировать полученную огибающую — информации нету. Каждый производитель тонометров лепит по-своему, хотя общая методика просматривается четко. Достаточно зайти на freepatentsonline.com и набрать в поиске non invasive blood pressure, и Вы получите достаточно информации чтобы написать заготовку тонометра. Но! Дальше-хуже. Экстрасистолы, артефакты, и другие страшные слова…
TODO
Если желание написать свой тонометр всё-же не отпало, то приступим.
Что потребуется для измерителя АД:
1) STM32 VL Discovery;
2) Датчик давления MPXV5050GP (модель взята из Freescale BPM Application Note, в Вашем случае м.б. другая модель);
3) Усилок LM358 (лучше, конечно, взять рейл-ту-рейловый);
4) Какой-нибудь индикатор — на чем показывать давление;
5) Помпа с моторчиком от китайского тонометра или груша от бабушкиного тонометра;
6) Если все-таки Вы взяли помпу с моторчиком из тонометра, Вам понадобится клапан медленного стравливания из того же тонометра;
7) Аварийный клапан (по вкусу);
8) Манжета;
9) SD карточка с картоприемником (или microSD с адаптером, к которому не жалко подпаяться).
Рис.1 — Схема подключения кишков «классическая»
Пневмо-схема очень простая. Помпа служит для накачки манжеты, после чего воздух начинает медленно стравливаться нерегулируемым клапаном с очень маленьким отверстием. При этом следует учесть, что аварийный клапан должен быть закрыт — иначе Вы ничего не накачаете! По завершению измерения давления, можно открыть аварийный клапан и стравить остаточное давление в манжете.
Рис.2 — Схема измерительного каскада
Сигнал с датчика давления состоит из «биений» и постоянной составляющей давления в манжете. Т.о. на канал ADC1 мы подаем медленно стравливаемое давление в манжете, операционным усилителем вылавливаем переменную составляющую тонов Короткова и подаем их на канал ADC2.
Рис.3 — Постоянная составляющая
Рис.4 — тоны Короткова (SBP — систолическое давление, DBP — диастолическое давление, MBP — среднее артериальное давление)
Рис.5 — Информация, записанная на SD карту в ходе измерения.
На Рис.5 видно:
— стравливание у меня ступенчатое;
— Тоны Короткова (пулсации давления в манжете) записываюся полностью
— на лету вычисляется огибающая тонов.
Почему именно ступеньки? Дело в том, что при ступенчатом стравливании мы получаем кучу бонусов по измерению. Например, мы можем измерять два тона за одну ступень значения давления в манжете, т.о. фильтруя экстра систолы. Либо, при проблемности полученной огибающей, докачать до интересующего нас участка и померить тоны на нем повторно. Можно вообще реализовать измерение на восходящем участке давления в манжете:
1) Закрыть клапан;
2) Сделать донакачку на 50 единиц;
3) Померить тоны Короткова;
4) На пункт 2, пока не промеряем всю огибающую, иначе на пункт 5;
5) Произвести вычисления SBP, DBP, исходя из параметров огибающей
6) Вывести результат.
Рис.6 — Обработанная огибающая, постоянная составляющая и результаты измерения (Ряд 2 — верхнее давление, Ряд 3 — нижнее)
Немного видяшек. Прибор, к которому подключен разрабатываемый тонометр — «симулятор человека с заданным артериальным давлением». Давление можно выбирать из пресетов. Затем прибор имитирует сердцебиения, а тонометр измеряет огибающую. На втором видео (Part 2) я прогнал тонометр по всем основным режимам симулятора. При гипертонии алгоритм делает донакачку, всё как положено! 🙂
Автор статьи: Иван Анатольевич Кузнецов. Любое копирование и распространение материала только с разрешения автора.
Источники: http://www.radio-magic.ru/arduino-projects/282-arduino-i-datchik-davleniya, http://robotclass.ru/tutorials/arduino-pressure-sensor-bmp180-bmp085/, http://we.easyelectronics.ru/yakuzaa/stm32-medicinskoe-primenenie-tonometr.html