Пульсометр на ардуино своими руками
Привет! Сегодня сделаем обзор на датчик сердцебиения или пульсометр KY-039. Соберем простую схему для отображения пульса на графике плоттера.
Содержание
- 1 Для выполнения этого урока нам понадобятся
- 2 Пульсометр KY-039
- 3 Принципиальная схема
- 4 Полный текст программы
- 5 Заключение
- 6 Где купить
В прошлый раз мы рассматривали еще один интересный датчик, датчик наклона KY-027. И собрали с ним интересную схему. Посмотрите тот пост, если пропустили или уже забыли.
А сегодня попробуем собрать простую схему для отображения пульса и немного поэкспериментируем с датчиком сердцебиения или пульсометром.
Для выполнения этого урока нам понадобятся
- Ардуино UNO
- Макетная плата
- Перемычки
- Пульсометр KY-039
- Кабель USB
Пульсометр KY-039
Датчик KY-039 состоит из инфракрасного светодиода и фототранзистора. Инфракрасный свет светодиода поступает на фототранзистор сквозь палец. При изменении кровяного давления в капиллярах пальца, меняется сопротивление фототранзистора. И эти данные отображаются на выходе с датчика.
Для более точных показаний датчика, следует закрыть фототранзистор от солнечного или искусственного света.
Принципиальная схема
Датчик KY-039 работает от 5 вольт. которые подаются на центральный контакт. Данные с выхода S нужно считать на аналоговом пине Ардуино. А оставшийся контакт соединим с землей.
Простейший скетч позволит нам снять показания с аналогового пина Ардуино. И проверить работоспособность датчика.
Просто выведем на плоттер показания пина A0.
int sensorPin = 0;
void setup() Serial.begin(9600);
>
void loop () Serial.println(analogRead(sensorPin));
delay(100);
>
Открыв окно плоттера, мы увидим примерно такую картину.
Измерения происходят слишком быстро. И обработать их пока что трудно. Но мы можем изменить программу для более точной обработки данных.
Попробуем сделать более плавное отображение данных. Возьмем среднее значение от нескольких измерений и выведем уже его.
Заполним этими данными массив.
Удаляем старые данные из массива и заменяем их новыми.
reader = analogRead (sensorPin);
sum -= reads[ptr];
sum += reader;
reads[ptr] = reader;
last = float(sum) / samp_siz; // вычисляем среднее
ptr++;
ptr %= samp_siz;
С усредняющей программой мы можем увидеть настоящий сердечный ритм.
Полный текст программы
int sensorPin = 0;
void setup() Serial.begin(9600);
>
void loop () float reads[samp_siz], sum;
long int now, ptr;
float last, reader, start;
float first, second, third, before, print_value;
bool rising;
int rise_count;
int n;
long int last_beat;
for (int i = 0; i before) rise_count++;
if (!rising && rise_count > rise_threshold) rising = true;
first = millis() - last_beat;
last_beat = millis();
print_value = 60000. / (0.4 * first + 0.3 * second + 0.3 * third);
Serial.print(print_value);
Serial.print('\n');
third = second;
second = first;
>
> else rising = false;
rise_count = 0;
>
before = last;
ptr++;
ptr %= samp_siz;
>
>
Заключение
Мы рассмотрели пульсометр KY-039 и его подключение к Ардуино. Использовали простую программу для просмотра данных с датчика. Написали скетч для более удобного считывания данных с датчика. И посмотрели на плоттере Ардуино сердечный ритм.
Сегодня мы собираемся подключить датчик пульса к Arduino и измерять сердечный ритм человека через последовательный монитор.
Шаг 1: Элементы:
Датчик пульса
Arduino
Зуммер
Светодиод
Макетная плата
Перемычки
Шаг 2: Подключение датчика к Arduino
Монитор сердечного ритма - это устройство, которое позволяет измерять частоту сердечных сокращений в реальном времени. Вы можете легко использовать данные сердечных ритмов в своих проектах.
Импульсный датчик состоит из трех контактов:
Контакт VCC
GND-контакт
Вывод OUT или Сигнальный вывод
Подключение датчика выглядит следующим образом:
Контакт VCC подключается к "+" макетной платы.
Контакт GND подключается к "-" макетной платы.
Контакт OUT подключается к аналоговому выводу A0 Arduino.
Давайте теперь подключим зуммер и светодиод.
Шаг 3: Подключение зуммера
Зуммер имеет два провода, выходящих из корпуса, который называется анодом и катодом.
Подключение зуммера выглядит следующим образом:
Красный провод или анод зуммера подключается к цифровыму выводому 13 Arduino.
Черный провод или катод зуммера подключается к "-" макетной платы.
Последним интерфейсом является светодиод.
Шаг 4: Подключение светодиода
Более длинная ножка является анодом, а более короткая - катодом.
Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.
Последние посетители 0 пользователей онлайн
Объявления
Для той схемы, что вы представили 2-мя постами выше, для 6п14п, они по 100р как раз стоят на барахолках. А городить конструкцию из ТАНов, человеку который только вчера узнал за какой конец паяльник держать то еще занятие. Это получится скорее с вложениями растянутыми по времени. У меня валяется 1 ТВЗ, который Василичь рекламирует, брал в свое время за 1000р, могу за эту же сумму отдать, почти по цене меди, вдруг понравится, купите второй.
Да по простой причине - нет денег на покупку трансформаторов. Где это Вы видели их за от 100 руб? Ростов за трансформатор для моего БП попросил 2600 руб. + доставка. А ТАН я купил за 1 тыс. И так же с выходными. Это первый, в моей жизни, опыт в пайке чего то, у меня даже паяльника не было, и покупать сразу одних трансов на 5-6 тыс. я пока не готов. Вот получится из того что есть в серии (бюджетный вариант) ну тогда буду выкраивать из семейного бюджета по чуть чуть на трансы, по этой же причине я и схему выбрал такую, что бы одна и на долго. Для меня это не коммерческий проект, и я не планирую сделать и продать, я сделать УНЧ и потом его доводить до "ума" уже с минимальными вложениями. Вот как то так.
Ниже дроссель был, я так понял.Сейчас работает,но на всю,не регулируется Замкнул кулер,я сам. А какие ещё данные надо?
Надо было добавить, что просто подстроечник внизу, а не в середине. От перемены мест слагаемых. Надо, чтобы человек понял.
Похожий контент
Помогите пожалуйста разобраться с питанием
1) надо ли тут понижайка/ повышайка DC-DC?
2) как предохранить плату от помех при нагрузке.
Скетч прошивки тоже могу выложит, он максимально простой.
Также печатную плату тоже выложу как доделаю схему.
Доброго времени суток, господа. Никик я не могу прошить атмегу. Всегда выводится такая ошибка:
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
Раньше у меня получалось прошивать ее, но на 16 МГц. Решил, что способен прошить и на 8 МГц. Скачал пару библиотек и. ничего, выдало ошибку. Первым делом я подумал, что все плохо с проводкой. У меня, кстати, TQFP32 адаптер, но я подумал, что контакт через макетную плату и UNO слишком слаб, поэтому припаял к выводам адаптера провода и вставил их в UNO. Как итог - ничего не поменялось. Менял я и UNO на NANO, переделывал схему (вставлял резистор от RES до VCC и наоборот, вставлял конденсатор между RES и GND у UNO), подключал резонатор на 16 МГц. А ошибка вся таже. Чё делать?
Идея отобразить свое сердцебиение за время сна возникла ранее чем замерять температуру.
Это очень интересно, с первоначальной точки зрения. Просто интересно посмотреть на ритм сердца в период сна за 4 часа, 8 часов, 12 часов, в различных состояниях (к примеру, не трезвым), после различной информации на ночь. Новостей, фильмов, музыки. Согласитесь? Не исследование, а интересная забава.
На рисунке выше изображен датчик сердцебиения для Ардуино стоимостью $4.3 доллара, при условии что оригинал стоит ровно $24. Но перед тем как его купить прошло несколько этапов.
Фотографировать не на что, так что будет много текста для чтения.
Если Вы начали читать статью и Вы не кардиолог, возможно понадобится следующая информация про QRS комплекс и расшифровку сигналов сердцебиения (Взято из Гугл).
Р – этот зубец должен быть положительным. Рассматриваются данные первого, второго отведений. Если говорить про VR, здесь зубец будет отрицательным;
Q – он регистрирует активизацию левой половины перегородки. Нормальным показателем его считается 1/4 R при 0,3 с. Повышение нормального показателя свидетельствует про патологию миокарда;
R – по нему определяется активность стенок желудочков. Должен определяться на каждом отведении. В противном случае предполагается гипертрофия желудочков;
S – его высота должна составлять 20 мм. Также стоит уделить внимание сегменту ST. Его отклонения говорят об ишемии миокарда;
Т – обычно в первом-втором отведении направлен вверх, на VR имеет отрицательное значение. Изменение показателя свидетельствует про наличие гипер- или гипокалемии.
Начну, все же, по сути. Прежде чем купить датчик сердцебиения (Pulse Sensor Arduino) который изображен на рисунке выше был приобретен самый дешевый стетоскоп. Идея №1 заключалась в подключении 2х микрофонов (капсюлей) к ушным Оливам (Те что в уши вставляются) и запись звука сердца соответственно на компьютер с помощью Adobe Audition. Звук сердца для прослушивания записать получилось с первого раза не используя фантомное питание микрофона или усилитель звука. Но по итогу в сигнале было очень много шума из за самых минимальных движений акустической головки стетоскопа. Форму сигнала в Adobe Audition просмотреть не удалось бы даже при глубокой очистке сигнала различными методами Audition. На сколько я понимал необходимо на входе отбрасывать все нежелательные частоты сторонним фильтром для микрофона или все же использовать "какие то" программные фильтры. Глубоко с этим разбираться не стал.
Идея 2 заключалась в вставке микрофона непосредственно в акустическую головку стетоскопа, нелепо и просто. Эта идея провалилась, так как эхо в самой головке заводило микрофон и создавало очень много помех.
После множества ссылок в гугле был найден вариант c пьезодатчиком. Один иностранный парень с ровными руками за $4 доллара на основе пьезодатчика собрал систему которая визуализирует сердцебиение человека. По сути определяет наличие сердцебиения и соответственно изъять можно количество и периодичность ударов сердца и делать какие либо выводы
Проверив его код и собрав подобную систему я сделал вывод что это реально, но стоит только пошевелить пальцем, начинается каша. Так как его метод основывается на считывании аналогового сигнала сердца с пьезоэлемента и его последующем трешолдинге и визуализации.
Этот метод так же хорош и его исследование можно вынести в отдельную статью, но продолжим все же по теме.
Наигравшись разными методами получения сердцебиения и откинув различные оптические пары без обвеса - крайними мерами была покупка нормального датчика сердцебиения Pulse Sensor Arduino. Рассчитывая на свои средства соответственно датчик был китайским аналогом оригинального за $24 доллара. В упаковке был только датчик, без клипсы, липучки и защитной пленки. Защитная пленка нужна затем что датчик устроен на принципе открытого кремниевого элемента который очень не устойчив к статике. Поэтому приходится использовать либо антистатический браслет, или прикреплять пленочку (как на телефоне).
Друг, Ближе к делу.
После приезда датчика, в интернете на официальном сайте, официальных сенсоров сердцебиения, нашелся код для получения данных.
Код проверен и приведен ниже с небольшими пояснениями, которые особо и не нужны так как все описано на не родном языке.
Pulse Sensor sample aquisition and processing happens in the background via Timer 2 interrupt. 2mS sample rate.
BPM : int that holds the heart rate value, derived every beat, from averaging previous 10 IBI values.
It will also fade an LED on pin fadePin with every beat. Put an LED and series resistor from fadePin to GND.
fadeRate = constrain ( fadeRate , 0 , 255 ) ; // keep LED fade value from going into negative numbers!
Так как много текста, добро пожаловать на следующую страницу за результатами. Визуализация и графики.
Читайте также: