Датчик сердцебиения KY-039 Ардуино

СОДЕРЖАНИЕ ►
Датчик Arduino KY-039 служит для измерения пульса (сердцебиения) на пальце. Данный сенсор реагирует на изменение прозрачности пальца для инфракрасного излучения от светодиода при колебаниях кровяного давления. Рассмотрим, как правильно подключить KY-039 к Arduino Uno и вывести показания на монитор порта. Но сразу предупредим, что не стоит ожидать от сенсора большого качества показаний.
Характеристики датчика сердцебиения KY-039
KY-039 состоит из фототранзистора и инфракрасного светодиода. Инфракрасное излучение светодиода поступает на фототранзистор сквозь палец. При изменении кровяного давления в капиллярах пальца — меняется сопротивление фототранзистора. К сожалению, на сайтах посвященных программированию микроконтроллеров и на форумах пока никто еще не добился более-менее надежных показателей.
Для стабильности показаний датчика, фототранзистор следует закрывать от попадания солнечного или искусственного света, чтобы исключить дополнительные помехи. На среднюю ножку модуля KY-039 подается питание +5V, на «–» подключается земля (GND). S – это аналоговый выход, который подключается к пину A1. Данные с модуля передаются на компьютер через аппаратный монитор порта Arduino IDE.
Как подключить датчик KY-039 к Ардуино
Для этого занятия нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- KY-039 датчик для измерения пульса в пальце;
- макетная плата;
- светодиод и резистор 220 Ом;
- провода «папа-папа», «папа-мама».
Следующий скетч для KY-039 приводится на всех форумах и сайтах в качестве общепринятого примера. Данные работы программы оставляют желать лучшего, датчик просто отправляет, рандомные значения немного похожие на правду. Код можно использовать лишь в качестве тестирования правильности подключения сенсора к микроконтроллеру, поэтому комментировать код смысла не имеет.
Счетч для датчика сердцебиения KY-039

double alpha = 0.75; int period = 100; double change = 0.0; double minval = 0.0; void setup() { Serial.begin(9600); pinMode(A1, INPUT); } void loop() { static double oldValue = 0; static double oldChange = 0; int rawValue = analogRead(A1); double value = alpha * oldValue + (1 - alpha) * rawValue; Serial.print (rawValue); Serial.print (","); Serial.println (value); oldValue = value; delay(period); }
Пояснения к коду:
- код имеет много лишних строчек и глобальных переменных Ардуино.
Счетч измерения пульса датчиком KY-039
Следующий код выводит на монитор порта пульс (количество ударов сердца в минуту). Данные намного достовернее, чем в предыдущем примере, кроме того мы добавили светодиод в схему. Напоминаем, что на датчик влияет внешнее излучение (солнечный свет, лампа и т.д.), а данные выводятся на монитор порта Arduino IDE с небольшой задержкой. Подключите датчик и загрузите следующий скетч в Ардуино.

#define samp_siz 4 // количество расчетов - можно увеличить до 20 #define rise_threshold 5 void setup() { Serial.begin(9600); pinMode(A1, INPUT); pinMode(A1, OUTPUT); } 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<samp_siz; i++) reads[i] = 0; sum = 0; ptr = 0; // в течение 20 мс вычисляем среднее значение датчика while (1) { n = 0; start = millis(); reader = 0.; do { reader += analogRead(A1); n++; now = millis(); } // записываем полученное среднее значение в массив while (now < start + 20); reader /= n; // we got an average sum -= reads[ptr]; sum += reader; reads[ptr] = reader; last = sum / samp_siz; // проверяем, появляется ли увеличение среднего значения if (last > before) { rise_count++; // если значение увеличивается, что подразумевает сердцебиение // включаем светодиод и записываем время с последнего удара // отслеживаем два предыдущих удара, чтобы получить взвешенное среднее if (!rising && rise_count > rise_threshold) { digitalWrite(10, HIGH); rising = true; first = millis() - last_beat; last_beat = millis(); // рассчитываем средневзвешенную частоту сердечных сокращений print_value = 60000. / (0.4 * first + 0.3 * second + 0.3 * third); Serial.println(print_value); third = second; second = first; } } else { rising = false; rise_count = 0; digitalWrite(10, LOW); } before = last; ptr++; ptr %= samp_siz; } }
Заключение. Датчик для измерения пульса в пальце ky-039 Arduino можно использовать в проектах. Мы рассмотрели, как подключить к микроконтроллеру Ардуино модуль и получить вполне достоверные данные о пульсе человека. Если у вас остались вопросы по рассматриваемой теме или есть предложения по улучшению программы для Arduino и KY039 — оставляйте их в комментариях к этой записи.
Подборка на тему: Датчик сердцебиения KY-039 Ардуино
2 комментариев для “Датчик сердцебиения KY-039 Ардуино”
Добавить комментарий
Записи похожие на: KY-039 Arduino. Подключение датчика
- Балтийский научно-инженерный конкурс
- Светофор на Ардуино для начинающих
- Циклы в Ардуино for и while
- Скачать книги по Ардуино на русском
Проекты похожие на: KY-039 Arduino. Подключение датчика
А как подключить датчик не вставляя его в макетную плату? то есть напрямую
Для датчика ky-039 макетная плата не нужна, так как это готовый модуль. Нужны провода «папа-мама»