Arduino - No puedo obtener lecturas de ECG de corazón, pero sí cuando ataco los cables.

2

Tengo un problema menor con mi ECG. Cuando toco en los cables, me dan una lectura. Pero cuando sostengo los cables o los coloco cerca de mi corazón, no obtengo nada. Estoy bastante seguro de que esto está relacionado con el hardware, pero no quiero descartar por completo un posible problema de software. Utilicé este video de YouTube como guía: enlace , con el circuito que se muestra a continuación.

Mitablerocasiseveexactamenteigualqueeso,peroconunpardecambios.EnlugardeconectarelECGalacomputadoraatravésdeuncabledeaudio,uséBluetoothparatransferirloamiteléfono.Aquíestámidiagramaesquemático.

1 http://i60.tinypic.com/29leq9k.jpg

Aquí está mi diagrama de tablero.

2 http://i62.tinypic.com/5lcpzc.jpg

En mi tablero, usé tres amplificadores operacionales LM358. Aquí está mi código de Arduino (si lo necesitas):

const int  signal = 7;    // Pin connected to the filtered signal from the circuit
unsigned long currentBeatTime;   
unsigned long previousBeatTime;

unsigned long frequency;

// Internal variables
unsigned long period = 0;
int input = 0;
int lastinput = 0;


void setup() {
pinMode(signal, INPUT);
Serial.begin(9600);

previousBeatTime = millis();
}

void loop() {
delay(100);
input = digitalRead(signal);

if ((input != lastinput) && (input == HIGH)) {
    // If the pin state has just changed from low to high (edge detector)
    currentBeatTime = millis();

    period = currentBeatTime - previousBeatTime; // Compute the time between the previous beat and the one that has just been detected
    previousBeatTime = currentBeatTime; // Define the new time reference for the next period computing
}

lastinput = input; // Save the current pin state for comparison at the next loop iteration

// Detect if there is no beat after more than 2 seconds
if ( (millis() - previousBeatTime) > 2000 ) 
{ 
    //Serial.println("dead");
}
else 
{
    if (period <= 0) 
    {
        frequency = 0;
    }
    else 
    {
        frequency = 60000/period; // Compute the heart rate in beats per minute (bpm) with the period in milliseconds
    }

    Serial.println(frequency);
}
}

Cualquier ayuda con respecto a este problema es muy apreciada. ¡Gracias!

    
pregunta user3744439

1 respuesta

1

En realidad tienes un problema importante. Usted está activando el ruido creado al trabajar con sus clientes potenciales, y no con nada relacionado con el ecg. Esto va a ser muy difícil de depurar sin un osciloscopio. ¿Qué estás usando para los electrodos? Además, un diagrama de circuito real para la parte analógica sería de gran ayuda.

Sugiero que la etapa de entrada debe ser una ganancia modesta, quizás 10, con un amplificador de instrumentación, luego un filtro de paso alto, luego una gran ganancia con un amplificador operacional y un filtro de paso bajo.

Los cables no pertenecen cerca de tu corazón. Sostenga un cable en cada mano y conecte el tobillo a la misma base que usa para vref en el amplificador de instrumentación.

ACTUALIZACIÓN:

1) El circuito en el video no es perfectamente adecuado para amplificar biopotenciales. Quiere un AMPLIFICADOR DIFERENCIAL, y este amplificador es de una sola terminación . Curiosamente, incluso si esto nunca fue pensado para ser usado para biopotenciales (no hay ninguna sugerencia en el video), todavía es una especie de ejemplo de libro de texto de estudiantes que usan ejemplos de libros de texto y esperan que funcionen. Están en la dirección correcta, pero hay aspectos prácticos del circuito que tendrán muchos problemas. Las 7 resistencias MegaOhm probarán grandes fuentes de ruido si intentas aumentar la ganancia, y también esas grandes resistencias causarán grandes voltajes de desviación para ingresar corrientes de polarización que saturarán las etapas de ganancia lo suficientemente robustas para medir señales de ecg, que son aproximadamente. 1-5mV en amplitud (por lo que le gustaría una ganancia de aproximadamente 500).

2) Incluso si el circuito estuviera bien para medir los biopotenciales, en este caso no se implementó correctamente.
a) Aunque los amplificadores operacionales que usaste están bien para la alimentación con una sola fuente de alimentación, debes tener una fuente de alimentación positiva y negativa para los fines para los que los estás utilizando aquí. Puede alterar el circuito para utilizar una sola fuente, pero eso es más trabajo del que quiere asumir. b) No se pueden intercambiar valores de resistencias y capacitores y esperar que funcionen. Por suerte, el combo que usas en la etapa de filtro de paso alto parece estar bien, pero no me has proporcionado suficiente información para que yo sepa sobre la etapa de paso bajo.

Para hacer esto correctamente, debe tener una etapa de diferencial de ganancia modesta que no se sature para un desplazamiento de entrada de aproximadamente 200 mV. Un amplificador de instrumentación (como su INA128) con una ganancia de 10 funcionaría si puede suministrar +/- potencia. Si necesita trabajar con una fuente de alimentación, necesita un amplificador de instrumentación como el AD623, cuyas entradas pueden ir por debajo del riel negativo, con Vref configurado a aproximadamente 2.5V. Entonces necesitas un filtro de paso alto para deshacerte del desplazamiento amplificado. Después de eso, una etapa con una ganancia de aproximadamente 50-100 y un corte de paso bajo de aproximadamente 50Hz. Después de eso, necesitas algún tipo de etapa de comparación para usar como un detector de latidos, pero quizás eso se esté adelantando un poco.

(Dejando de lado, el enfoque más moderno es probablemente tener solo la modesta primera etapa de ganancia y un filtro de paso bajo, luego muestrearlo a una resolución de 24 bits y hacer todo después digitalmente).

Por lo tanto, la conclusión es que el circuito que estás usando no funcionará, y no hay una gran manera de solucionarlo. Si vas a intentar esto sin un osciloscopio para depurar, necesitarás comenzar con un diseño absolutamente a prueba de balas e implementarlo correctamente.

Sugiero mirar enlace (con el esquema en enlace ) para un amplificador diferencial que funciona para este propósito.

    
respondido por el Scott Seidman

Lea otras preguntas en las etiquetas