Calcular BPM con Pulse Sensor

Hola, tengo planeado realizar un programa para medir las pulsaciones cardíacas por minuto haciendo uso de Arduino y un Pulse Sensor pero apenas estoy iniciando y no tengo idea de como calcular la duración del periodo de la señal. Para comenzar realice el siguiente código:

int pulso = 0;
unsigned long tiempo1=0; tiempo2 = 0;

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

void loop(){
  pulso = analogRead(A0);
  if (pulso >= 523){
    tiempo2 = millis()-tiempo1;
    tiempo1 = tiempo2;
    delay (100);
  }
  Serial.println(tiempo2);
  delay(50);
}

El problema es que en el Serial Plotter la duración del periodo no se mantiene constante y sigue creciendo, no se a que se deba, les agradecería cualquier ayuda o asesoría.

Creo que tiempo2 no contiene lo que crees que debería contener en según qué parte del código por, tal vez, ser un poco "tacaño" con el uso de variables. Añade otro unsigned long tiempotranscurrido, que será el que envíes por serial, y cambia en tu loop:

void loop(){
  pulso = analogRead(A0);
  if (pulso >= 523){
    tiempo2 = millis();
    tiempotranscurrido= tiempo2-tiempo1;
    tiempo1 = tiempo2;
    delay (100);
  }
  Serial.println(tiempotranscurrido);
  delay(50);
}

No puedes medir al f cardíaca midiendo el tiempo entre dos pulsos. La f cardíaca varia constantemente, una pequeña emoción, relajación, incluso varia en la inspiración y expiración respiratoria.
Por eso se da una media de un minuto BPM.
Por rapidez puedes hacer una primera estimación a los 15'' y luego ir integrando periodos mas largos con los nuevos datos.

hola

estoy interesado en tu respuesta
como podria modificar el codigo para medirlo como tu dices

saludos desde vigo.españa