Arduino датчик артериального давления
Измерение давления при помощи 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) я прогнал тонометр по всем основным режимам симулятора. При гипертонии алгоритм делает донакачку, всё как положено! ?
Автор статьи: Иван Анатольевич Кузнецов. Любое копирование и распространение материала только с разрешения автора.
Источники: https://www.radio-magic.ru/arduino-projects/282-arduino-i-datchik-davleniya, https://robotclass.ru/tutorials/arduino-pressure-sensor-bmp180-bmp085/, https://we.easyelectronics.ru/yakuzaa/stm32-medicinskoe-primenenie-tonometr.html
Источник
Данная штука измеряет давление и отдает его в виде напряжения. Мы уже смотрели стрелочный прибор, сейчас будет более продвинутая версия. Кому интересны электронные штуки прошу под кат. Будет немного математики, анализ прибора, ардуинство и прототип готового устройства.
Совсем недавно я делал обзор стрелочного прибора для измерения давления (манометра — как многие заметили в комментариях). Как ни странно, наибольший интерес там вызвал гель для придания герметичности резьбовым соединениям, кого это интересует можете почитать там ). Стрелочный прибор конечно хорошо, он показывает броски давления, легко глазом воспринимаются значения, к тому же, у прибора из прошлого обзора имеется крупный циферблат, но… лет 20 назад мы бы наверно на этом и остановились… а сейчас многие стараются автоматизировать рутинные процессы и доступность электроники всячески этому способствует. Поэтому предметом обзора стало устройство преобразующее давление в напряжение, которое легко подается оцифровке и последующему анализу, многие процессы нуждаются в таких действиях, поэтому, думаю тема интересная.
Я заказал два прибора (курс был не такой конечно), на 5 атмосфер (как и стрелочный прибор из прошлого обзора) пришли в конверте с пупыркой, фото
Размеры:
Как видно на фото, прибор имеет гнездо куда подключен разъем с проводком, разъем герметичен благодаря прокладке. Продавец клянется что прибор подходит как для воды так и для газа.
Первым делом обжимаем кончики проводков, обжимкой из этого моего обзора. Так будет проще с ним работать на этапе тестов.
Особых примечательностей снаружи нет, соответственно переходим к электрическим измерениям. Кабель от прибора содержит 3 проводка: красный (питание +5 В), черный (земля) и желтый — собственно сигнал в виде напряжения.
Подав питание, измерим ток потребления:
Для дальнейших измерений потребукется источник давления, с возможностью регулировки. На эту роль любезно согласилась компрессорная станция:
Я уже писал, что один выход станции имеет редуктор с манометром, позволяющий менять выходное давление от 0 до 8 атмосфер — вот он нам и нужен. Собираем нехитрый стенд из предмета обзора, макетной платы с источником питания, вольтметром и проводками.
Без давления на выходе прибора 0.5 В.
Попробовал дунуть в него 🙂 вольтметр показал слабые возможности моего дыхательного аппарата — 0,67 В, но главное прибор реагирует.
Включаем компрессор и пару минут наслаждаемся неслабым звуком его двигателя.
Далее собственно измерения, тут лучше показать чем говорить:
При чуть больше чем 5 атмосфер, показывает 5,05 В и выше показания не меняются, 8 атмосфер выдержал спокойно. Видим что продавец слегка слукавил — у него на странице немного другие значения, в частности верхнее он обещает 4.5 а по факту 5.05. Но ничего, мы выведем это дело на чистую воду. В целом ясно что прибор работает…
На этом можно заканчивать обзор, но… так ведь скучно, правда? Не всем понятно, как это использовать, к тому же, многие муськовчане ждут своих халявных ардуин по распродаже… В общем, соберем макет реального прибора.
Исходные данные: 0 атмосфер — 0.5 В, 5 атмосфер — 5 вольт. А теперь нужно получить функцию зависимости атмосфер от вольт. Все помнят школьный курс геометрии? Как построить прямую по двум точкам? Оставлю этот вопрос для проработки читателям, в комментах проставим оценки :). Итоговое уравнение:
-4.5x + 5y — 2.5 = 0
x = 1.111 y — 0.555
где — x — давление, у — напряжение на выходе прибора
Возьмем Arduino Nano, покомпактней (чтоб таскать в сарай на свидание к компрессору 🙂 ). Еще нам нужен показометр, чтоб все визуально оценить! (конечно, на самом деле, мне не хотелось тащить ноутбук в сарай), показометр нам вполне подойдет из обзора про температуру в бане (естественно, я не вынимал тот из стены, я заказал их 4 или 5 уже не помню… штука нужная). Подключаем индикатор на 3,4,5 пины Nano, а наш заветный прибор на аналоговый вход a1. Кстати, китаец там что-то писал про цифровое измерение, меня это немного напрягло до получения прибора, так как боялся получить кирпич с непонятным протоколом, но оказалось все проще. Эх… у Nano только один выход 5В придется прибегнуть к помощи макетной платы, ну и ладно. Результат в виде макета:
Вроде все хорошо, но наше решение программное, соответственно нужен скетч, конечно я долго и тщательно его писал и отлаживал, аж целых 10 минут. Поэтому давление на космических объектах данным программным обеспечением измеряйте с осторожностью.
Вот код (кота в этот раз не будет 🙂 ). Там есть еще один нюанс — аналоговый вход дает значение от 0 до 1024, соответственно нам нужно помножить результат на 5 и поделить на 1024, что и проделано в скетче.
Прибор работает в режиме покоя показывая то 0.00, то 0.0.1, то -0.00 — нас все эти результаты устраивают… Дунем в него — 0.21 атмосферы… ну и ладно главное, что реагирует. Топаем со всем этим хозяйством в сарай.
Вот тут картинки интереснее чем при прошлых измерениях (местами почему-то шкала манометра засветилась, но фоток с ним достаточно и, думаю, всем все будет понятно):
В целом прибор годный, измерения проводит, результаты очень близки к показаниям манометра. Конечно, имея значения в ардуино — легко их передать по сети или обработать, даже в моих обзорах такое не раз проделывалось. Я планирую интегрировать его в водопроводную систему для мониторинга, настройки реле и давлений гидроаккумуляторов (ну может еще чего 🙂 ).
Всем спасибо, надеюсь кому-то поможет сделать свою жизнь более комфортной, ну или хотя бы немного повеселило в процессе чтения.
Все покупалось на свои деньги, для конкретных целей.
Пес мой обиделся за картинку в прошлом обзоре, поэтому теперь так 🙂
Источник