Создание простого ЭКГ-монитора с AD8232 и Arduino
Самодельная медицинская наука может быть на удивление увлекательной. Имея всего несколько легкодоступных компонентов, вы можете начать исследовать крошечные электрические сигналы, которые поддерживают работу вашего организма. В то время как врачи и больницы используют эти данные для мониторинга здоровья, любители и энтузиасты свободны экспериментировать, исследовать и учиться творческими способами.
Одно из лучших мест для начала — это сердце. Модуль монитора сердечного ритма AD8232 позволяет легко обнаруживать и визуализировать электрические сигналы, которые ваше сердце производит при каждом ударе.
В этом руководстве вы узнаете, как подключить модуль AD8232 к Arduino, построить базовый ЭКГ-монитор (электрокардиограф) и наблюдать за работой собственного сердца.
Давайте начнём и докажем, что вы не бессердечный!
Понимание сигнала ЭКГ
Прежде чем начать, важно понять, что именно мы пытаемся измерить. Электрические сигналы, производимые вашим сердцем, имеют очень специфический паттерн, и знание его основ поможет вам разобраться в том, что регистрирует AD8232.
Давайте кратко рассмотрим, как работает ваше сердце.
У вашего сердца четыре основные камеры: правое предсердие и левое предсердие вверху, и правый желудочек и левый желудочек внизу.
Правая сторона сердца (правое предсердие и правый желудочек) собирает кровь, которая уже доставила кислород к телу и теперь обеднена кислородом. Эта обеднённая кислородом кровь направляется в лёгкие для получения нового кислорода. Левая сторона сердца (левое предсердие и левый желудочек) получает свежую насыщенную кислородом кровь из лёгких и перекачивает её к остальным частям тела. После того как кислород израсходован клетками, кровь возвращается к правой стороне сердца, и цикл начинается снова.
Сердцебиение начинается с особой группы клеток в правом предсердии, называемой синоатриальным (СА) узлом. Это естественный кардиостимулятор сердца. Он посылает электрический сигнал, который запускает сокращение сердца и задаёт частоту сердечных сокращений.
Вот как каждая часть электрического сигнала соответствует волне или сегменту на ЭКГ:
Зубец P
Когда предсердия наполнены кровью, СА-узел срабатывает. Этот электрический сигнал распространяется по предсердиям, вызывая их сокращение и проталкивание крови вниз в желудочки. На ЭКГ это электрическое событие отображается как зубец P.
Сегмент PR
Сразу после зубца P следует сегмент PR. Эта короткая задержка даёт желудочкам достаточно времени для наполнения кровью перед сокращением. Во время этой паузы электрический сигнал проходит от предсердий по специальному пути, называемому атриовентрикулярным (АВ) узлом.
Комплекс QRS
Когда сигнал достигает АВ-узла, он продолжает движение через пучок волокон, называемый пучком Гиса, который разделяется на правую и левую ножки пучка. Эти ножки проводят сигнал к нижней части (верхушке) сердца. Это вызывает сокращение желудочков, выталкивая кровь из сердца — в лёгкие (из правого желудочка) и к остальному телу (из левого желудочка). Это мощное электрическое событие создаёт резкий пик на ЭКГ, называемый комплексом QRS.
Сегмент ST
Во время сегмента ST кровь активно выталкивается из сердца.
Зубец T
После того как желудочки выкачали кровь, они начинают расслабляться. Эта часть электрического сигнала представлена зубцом T на ЭКГ. В конце зубца T желудочки полностью расслаблены, и сердце готово начать весь цикл заново.
Обзор оборудования
Теперь, когда у вас есть базовое понимание сигнала ЭКГ и того, что он представляет, давайте подробнее рассмотрим оборудование, которое делает этот проект возможным.
Модуль AD8232 специально разработан для обнаружения и обработки электрической активности вашего сердца.
Модуль AD8232 обнаруживает эти сигналы, удаляет окружающий электрический «шум» и усиливает их для более лёгкого анализа. Затем он выводит очищенный и усиленный сигнал в виде аналогового напряжения, которое АЦП микроконтроллера может считать. После преобразования в цифровую форму эти данные могут использоваться для создания ЭКГ, или электрокардиограммы.
Микросхема AD8232
В центре модуля находится микросхема AD8232 — маломощный однокалнальный ЭКГ фронтенд от Analog Devices.
Она обладает множеством функций, необходимых для обеспечения точных ЭКГ-измерений:
Инструментальное усиление: Усиливает крошечные биопотенциальные сигналы. Эти сигналы, измеряемые в микровольтах или милливольтах, должны быть значительно усилены для считывания АЦП микроконтроллера. AD8232 обеспечивает высокий коэффициент усиления для этой цели.
Фильтрация: ЭКГ-сигналы подвержены различным формам шума, включая артефакты движения и помехи сетевой частоты (например, шум 50/60 Гц от линий электропередач). AD8232 включает регулируемый фильтр верхних частот второго порядка для устранения артефактов движения и полуэлементного потенциала электродов, а также регулируемый фильтр нижних частот третьего порядка для удаления дополнительного шума.
Правая нога (RLD): Для улучшения подавления синфазных помех микросхема включает усилитель правой ноги. Эта схема активно управляет синфазным напряжением тела, приводя его к опорному потенциалу, который обычно является виртуальной землёй, генерируемой самой микросхемой, тем самым уменьшая помехи.
Быстрое восстановление: AD8232 имеет функцию «быстрого восстановления», которая позволяет быстро восстановиться после резкого изменения сигнала, которое может «перегрузить» усилитель, например, при отсоединении электрода.
Все эти функции позволяют использовать модуль AD8232 в ряде медицинских ЭКГ и HR-приложений, включая фитнес-мониторы и мониторы активности, портативные ЭКГ, носимые и удалённые мониторы здоровья и подобные устройства.
Обнаружение отсоединения электродов
Одна особенно важная функция — способность обнаруживать, когда один из электродных пластырей, называемых отведениями, не прикреплён должным образом. Микросхема имеет два специальных вывода, LO+ и LO−, которые сообщают, когда одно или оба отведения не подключены. Это важно, потому что отсутствующее или ослабленное отведение может привести к неправильным или отсутствующим данным.
Режим пониженного энергопотребления
Микросхема AD8232 имеет режим пониженного энергопотребления, который можно активировать, подтянув вывод SDN (Shutdown) к низкому логическому уровню, значительно снижая потребление энергии. Это идеально для устройств с батарейным питанием, таких как портативные мониторы или фитнес-браслеты.
При использовании функции обнаружения отсоединения электродов вы можете даже запрограммировать микроконтроллер на переход в режим ожидания одновременно, экономя ещё больше энергии.
Для получения более подробной технической информации обратитесь к официальному техническому описанию AD8232.
Кабель датчика и электроды ЭКГ
Модуль поставляется с кабелем, который имеет стандартный аудиоразъём 3,5 мм на одном конце и три маленьких защёлкивающихся коннектора на другом. Эти коннекторы используются для крепления ЭКГ-электродов — маленьких клейких пластырей. Вы отклеиваете защитную плёнку, прикрепляете пластыри к телу и затем защёлкиваете коннекторы на них.
Имейте в виду, что электроды обычно пригодны только для одного-двух использований, потому что они теряют клейкость и способность хорошо проводить электричество после отклеивания.
Электрические сигналы вашего сердца чрезвычайно слабы, поэтому правильное размещение электродов критически важно для получения хорошего сигнала. Подробнее о правильном размещении электродов будет рассказано далее.
Разъём 3,5 мм
Модуль имеет разъём 3,5 мм, к которому подключается кабель датчика.
Светодиодный индикатор и перемычка
Модуль также имеет маленький светодиод, который мигает в такт с вашим сердцебиением. Это простой, но очень полезный способ быстро увидеть, работает ли устройство и принимает ли сигнал.
На модуле есть паяльная перемычка, которая позволяет включать или выключать этот светодиод. Это полезно для проектов, работающих от батарей, где каждый бит энергии на счету, и вы можете не хотеть, чтобы светодиод мигал и расходовал энергию.
Распиновка модуля AD8232
Модуль AD8232 выводит девять подключений от микросхемы.
GND — это вывод заземления.
3.3V — это вывод питания; подключите его к источнику питания 3,3 В.
OUTPUT — аналоговый выходной вывод, на который поступает усиленный и отфильтрованный сигнал сердца. Подключите его к аналоговому входному выводу микроконтроллера, например Arduino (например, вывод A0).
LO- и LO+ — это выводы обнаружения отсоединения электродов. Они подают сигнал HIGH, если электрод отсоединился, помогая вам узнать, хорошее ли у вас подключение.
SDN (Shutdown) — специальный вывод, который переводит микросхему в режим пониженного энергопотребления. Для этого подтяните вывод к LOW.
RA, LA и RL — альтернативные выводы для подключения пользовательских датчиков или электродов. Они означают Right Arm (правая рука), Left Arm (левая рука) и Right Leg (правая нога) соответственно и обычно используются в более продвинутых конфигурациях.
Схема подключения модуля AD8232 к Arduino
Давайте подключим модуль AD8232 к Arduino.
Начните с подключения вывода 3.3V модуля к выводу 3.3V на Arduino и вывода GND к одному из выводов заземления Arduino. Затем подключите вывод OUTPUT модуля к аналоговому входному выводу A0 на Arduino.
Также полезно подключить выводы LO+ и LO− модуля к выводам Arduino 10 и 11. Таким образом, когда электроды не прикреплены, Arduino сможет обнаружить отсутствующие отведения и избежать отправки бессмысленных данных в монитор последовательного порта.
Вот краткая справочная таблица подключений:
| AD8232 Module | Arduino | |
| 3.3V | 3.3V | |
| GND | GND | |
| OUTPUT | A0 | |
| LO+ | 10 | |
| LO- | 11 |
Следуйте схеме ниже для выполнения необходимых подключений.
Размещение электродов
Теперь, когда подключение завершено, следующий шаг — разместить электродные пластыри на теле.
Электроды имеют простую систему обозначений: RA, LA и RL, что означает Right Arm (правая рука), Left Arm (левая рука) и Right Leg (правая нога). RA и LA помогают модулю измерить разность электрических потенциалов между правой и левой рукой. RL обеспечивает опорную точку для подавления шумов.
Кабели обычно имеют цветовую кодировку в соответствии со стандартной конфигурацией, основанной на так называемом треугольнике Эйнтховена.
Один распространённый метод — размещение электродов на предплечьях и правой ноге, как показано на первой схеме. Другой вариант — размещение их на груди, с электродами RA и LA около плеч или верхней части груди, а электрод RL — чуть выше правого бедра, как показано на второй схеме.
Мы обнаружили, что второй вариант даёт наиболее сильные и надёжные показания, поскольку сигналы регистрируются ближе к самому сердцу.
Пример кода Arduino
Ниже приведён простой скетч, который считывает данные сигнала сердца с модуля AD8232 и выводит их в монитор последовательного порта для наблюдения в реальном времени.
Предупреждение:
Этот модуль предназначен исключительно для образовательного и экспериментального использования с ЭКГ-технологией. Он не сертифицирован для клинического или медицинского использования и не должен использоваться для диагностики или лечения каких-либо заболеваний.
const int SENSOR_PIN = A0;
const int LO_POS_PIN = 8;
const int LO_NEG_PIN = 9;
void setup() {
// initialize the serial communication:
Serial.begin(9600);
// Setup for leads off detection
pinMode(LO_POS_PIN, INPUT);
pinMode(LO_NEG_PIN, INPUT);
}
void loop() {
if ((digitalRead(LO_POS_PIN) == 1) || (digitalRead(LO_NEG_PIN) == 1)) {
Serial.println('!');
} else {
Serial.println(analogRead(SENSOR_PIN));
}
//Wait for a bit to keep serial data from saturating
delay(1);
}
После загрузки этого скетча на Arduino откройте монитор последовательного порта и убедитесь, что скорость передачи данных установлена на 9600. Вы должны увидеть числа, выводимые на экран. Ниже приведён пример вывода с электродами, подключёнными около плеч и правого бедра.
Хотя вы можете наблюдать за изменением этих чисел в мониторе последовательного порта, гораздо легче понять происходящее, если смотреть на сигнал в виде графика. Для этого откройте Serial Plotter в Arduino IDE, перейдя в Tools > Serial Plotter. После открытия вы должны увидеть волну, которая движется в такт с вашим сердцебиением. Если ваши электроды хорошо расположены и вы сидите неподвижно, сигнал будет выглядеть как плавный повторяющийся паттерн — это ваша ЭКГ, или электрокардиограмма.
Объяснение кода
Мы начинаем с объявления используемых выводов. Аналоговый сигнал от AD8232 подключён к выводу A0, а два вывода обнаружения отсоединения (LO+ и LO−) подключены к выводам 10 и 11.
const int SENSOR_PIN = A0;
const int LO_POS_PIN = 10;
const int LO_NEG_PIN = 11;
В функции setup() мы сначала инициализируем монитор последовательного порта. Затем настраиваем два вывода обнаружения отсоединения LO+ и LO- как цифровые входы, чтобы Arduino мог их считывать.
void setup() {
// initialize the serial communication:
Serial.begin(9600);
// Setup for leads off detection
pinMode(LO_POS_PIN, INPUT);
pinMode(LO_NEG_PIN, INPUT);
}
В разделе loop() мы сначала считываем выводы LO+ и LO−. Если любой из них находится в состоянии HIGH, это означает, что электрод отсоединился или неправильно прикреплён к телу. В этом случае мы выводим простой ! в монитор последовательного порта для предупреждения о плохом контакте. Если всё подключено правильно и оба вывода LO+ и LO− находятся в LOW, мы считываем аналоговый сигнал с выходного вывода датчика и выводим значение в монитор последовательного порта. Это фактические показания сигнала сердца.
В конце цикла мы добавляем очень короткую задержку в 1 миллисекунду для предотвращения переполнения последовательного вывода слишком большим количеством данных.
void loop() {
if ((digitalRead(LO_POS_PIN) == 1) || (digitalRead(LO_NEG_PIN) == 1)) {
Serial.println('!');
} else {
Serial.println(analogRead(SENSOR_PIN));
}
//Wait for a bit to keep serial data from saturating
delay(1);
}
Получение хорошего сигнала ЭКГ
Если ваш график ЭКГ не выглядит чётким или резким, не беспокойтесь — это очень распространено. ЭКГ известны своей шумностью, особенно потому, что вы измеряете очень слабый электрический импульс от большой и сложной мышцы. Эти сигналы очень слабы, и немногое может им помешать. Но есть несколько простых способов улучшить качество сигнала.
Размещайте пластыри ближе к сердцу. Чем ближе пластыри к сердцу, тем сильнее сигнал, который они уловят.
Проверьте расположение пластырей. Убедитесь, что пластыри RA (правая рука) и LA (левая рука) размещены на правильных сторонах тела. Неправильное размещение может привести к слабому или инвертированному сигналу.
Сидите неподвижно. Старайтесь не двигаться слишком много во время измерения. Движения скелетных мышц могут создавать электрический шум, который мешает сигналу сердца.
Используйте свежие пластыри. Электроды теряют способность хорошо проводить сигналы после нескольких использований. Использование нового набора пластырей для каждого измерения может существенно помочь.
Очистите область. Перед наклеиванием пластырей убедитесь, что кожа чистая и сухая. Чистая поверхность помогает создать хороший контакт. Помните, что волосы плохо проводят электричество, поэтому старайтесь размещать пластыри на гладкой коже.
Подстраивайтесь под каждого человека. Тело каждого человека немного отличается, поэтому вам может потребоваться скорректировать расположение пластырей для получения наилучшего сигнала.