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);
}