Bueno. No tiene nada que ver con el presunto problema, pero en la interrupción veo que usas un temporizador (supongo que para evitar rebotes). Yo lo hubiera puesto así:
void interrupcion_sensor()
{
if ( (millis() - T0) > 250)
{
sensor++;
T0 = millis();
}
}
Por evitar un potencial problema de desbordamiento del millis.
Otra cosa que haría, aunque tampoco creo que tenga influencia en tu caso, es dejar la activación de la interrupción (attachInterrupt) como último paso del setup.
Y de paso, podrías probar el funcionamiento sin el detach/atach al escribir en SD, por si acaso justamente ese attach es el que provoca que se lance interrupción.