Для регистрации электрической активности сердца потребуется плата с аналоговыми входами, например, ATmega328P. Подключите электроды через усилитель с коэффициентом не менее 1000, чтобы сигнал был различим на фоне шумов. Используйте операционный усилитель AD8232 – он фильтрует помехи и стабилизирует показания.
Создание кардиографа на базе микроконтроллера
Необходимые компоненты
Для сборки потребуется плата с процессором ATmega328P, 3 электрода, операционный усилитель AD8232, резисторы 10 кОм и 1 МОм, конденсаторы 0.1 мкФ. Электроды подключаются к усилителю через экранированные провода длиной не более 50 см.
Схема подключения
Правый электрод соедините с входом AD8232 (pin 2), левый — с pin 3. Выход усилителя (pin 9) подключите к аналоговому входу A0 микроконтроллера. Нагрузочные резисторы 1 МОм установите между каждым электродом и землей. Конденсатор 0.1 мкФ добавьте параллельно выходу усилителя для фильтрации высокочастотных помех.
Код для обработки сигнала:
void setup() {
Serial.begin(9600);
pinMode(A0, INPUT);
}
void loop() {
int value = analogRead(A0);
Serial.println(value);
delay(10);
}
Для визуализации данных используйте Processing или Serial Plotter в среде разработки. Частота дискретизации составит 100 Гц при задержке 10 мс. Погрешность измерений не превысит ±5% при правильной калибровке.
Сборка схемы для регистрации сердечного ритма на микроконтроллере
Для работы потребуется плата с АЦП, например, Uno или Nano, а также операционный усилитель с высоким входным сопротивлением, например, AD8232. Подключите электроды к усилителю:
- Правый электрод (RA) – к положительному входу (IN+).
- Левый электрод (LA) – к отрицательному входу (IN-).
Соедините выход усилителя (OUT) с аналоговым входом A0 контроллера. Добавьте фильтр нижних частот (RC-цепь с резистором 10 кОм и конденсатором 0.1 мкФ) между выходом AD8232 и A0, чтобы снизить высокочастотные помехи.
- Подайте питание 3.3 В на усилитель от платы.
- Используйте экранированные провода для соединений с датчиками.
Пример кода для считывания сигнала:
void setup() {
Serial.begin(9600);
}
void loop() {
int value = analogRead(A0);
Serial.println(value);
delay(10);
}
Для визуализации данных используйте монитор порта или Processing. Если сигнал зашумлен, проверьте качество контакта электродов с кожей и целостность экранировки.
Обработка и отображение сигналов кардиографа
Подключите датчик AD8232 к аналоговому входу A0 платы. Для фильтрации шумов используйте скользящее среднее в коде:
#define SAMPLE_SIZE 10
int ecgValues[SAMPLE_SIZE];
int index = 0;
void setup() {
Serial.begin(115200);
}
void loop() {
ecgValues[index] = analogRead(A0);
index = (index + 1) % SAMPLE_SIZE;
int filteredValue = 0;
for(int i=0; i
Для визуализации в реальном времени установите Processing. Этот код отрисует график:
import processing.serial.*;
Serial port;
float[] values = new float[500];
int currentIndex = 0;
void setup() {
size(800, 400);
port = new Serial(this, "COM3", 115200);
}
void draw() {
background(0);
stroke(0, 255, 0);
noFill();
beginShape();
for(int i=0; i 0) {
String data = port.readStringUntil('
');
if(data != null) {
values[currentIndex] = float(data.trim());
currentIndex = (currentIndex + 1) % values.length;
}
}
}
Для точного определения R-зубцов добавьте пороговый детектор. Пик считается при превышении значения 600 единиц:
if(filteredValue > 600 && previousValue <= 600) {
Serial.print("R-peak detected: ");
Serial.println(millis());
}
previousValue = filteredValue;











