Inconveniente con datalogger usando RTC DS1307, Memoria SD (Solucionado)

No aun no he hecho lo de quitar detach y attach del loop, hare una prueba con el protoboard y el codigo con tu modificacion para ver como se comporta, para descartar errores de todo tipo, si vuelve a generar falsas pulsaciones ya no tendre ninguna duda que es el codigo.

Aqui coloco el codigo original:

#include <SPI.h>
#include <Wire.h>
#include <SD.h>
#include "RTClib.h"
RTC_DS1307 rtc;
File myFile;

volatile unsigned int sensor;
unsigned long T0 = 0;
char filename[13];
char registro[30];
byte min_registro[12]={0,5,10,15,20,25,30,35,40,45,50,55};


void interrupcion_sensor()
{
  if (millis() > T0 + 250)
  { sensor++;
    T0 = millis();
  }
}


void setup()
{
  Serial.begin(9600);
  delay(3000);
  pinMode(10, OUTPUT);//MEMORIA SD
  pinMode(3,OUTPUT); //LED 
  attachInterrupt(0, interrupcion_sensor, FALLING);
  Wire.begin();
  rtc.begin();

  digitalWrite(3,HIGH); ///////////////////////////
  delay(500);           // DISPOSITIVO ENCENDIDO //
  digitalWrite(3,LOW);  //////////////////////////


  if (!SD.begin(10)) {
   Serial.println(F("Se ha producido un fallo al iniciar la comunicacion con la memoria SD"));
   digitalWrite(3,HIGH); //Led se mantiene encendido indicando un error
   while(1);
  }

  Serial.println(F("Se ha iniciado la comunicacion correctamente con la memoria SD"));
  
  
  if (!rtc.isrunning())
  {
      myFile = SD.open("cfg.txt");
      if (myFile) {
      Serial.println(F("Abriendo archivo cfg.txt"));
      if (myFile.available()) {
        byte day = myFile.parseInt();
        byte month = myFile.parseInt();
        int year = myFile.parseInt();
        byte hour = myFile.parseInt();
        byte minute = myFile.parseInt();
        byte second = myFile.parseInt();
        rtc.adjust(DateTime(year, month, day, hour, minute, second));
        }
        myFile.close();
        Serial.println(F("Datos cargados correctamente al reloj en tiempo real"));
        digitalWrite(3,HIGH); //Led titila indicando que ha sido exitoso el proceso.
        delay(500);
        digitalWrite(3,LOW);
        delay(500);
        digitalWrite(3,HIGH);
        delay(500);
        digitalWrite(3,LOW);
        delay(500);
        digitalWrite(3,HIGH);
        delay(500);
        digitalWrite(3,LOW);
      } 
      else 
      {
    Serial.println(F("Error abriendo archivo cfg.txt"));
    digitalWrite(3,HIGH); //Led se mantiene encendido indicando un error
    while(1);
    }
  }
}//FIN SETUP


void loop()
{

DateTime now = rtc.now(); // Obtiene la fecha y hora del RTC

snprintf(filename, sizeof(filename), "%02d%02d%04d.txt", now.day(), now.month(), now.year());    

  
  for (byte i = 0; i < 12; i++)
  {
    if ((now.minute() == min_registro[i]) && (now.second() == 0)) // Compara la hora del RTC con el ciclo de medicion
    {
      digitalWrite(3,HIGH); //inicia proceso de registro
      //Serial.println(F("Iniciando registro de datos en la memoria SD"));
      SD.begin(10); // se inicializa SD por si se retiro
      //Serial.println(F("Inicializar memoria SD"));
      delay(20);
      myFile = SD.open(filename, FILE_WRITE);
      if (myFile) 
      {
        detachInterrupt(0);
        snprintf(registro, sizeof(registro), "%02d/%02d/%04d  %02d:%02d:%02d   %d", now.day(), now.month(), now.year(), now.hour(), now.minute(), now.second(), sensor);
        myFile.println(registro);
        myFile.close(); // cerrar archivo .txt
        sensor = 0;
       }
     attachInterrupt(0, interrupcion_sensor, FALLING);  
    }
    }
    delay(1000);
    digitalWrite(3,LOW);//finaliza proceso de registro
} // fin de bucle

Codigo falsas pulsaciones:

#include <SPI.h>
#include <Wire.h>
#include <SD.h>
#include "RTClib.h"
RTC_DS1307 rtc;
File myFile;

volatile unsigned int sensor;
unsigned long T0 = 0;
char filename[13];
char registro[30];
bool flag=false;

void interrupcion_sensor()
{
  if (millis() - T0 > 250)
  { sensor++;
    T0 = millis();
  }
}


void setup()
{
  
  pinMode(10, OUTPUT);//MEMORIA SD
  pinMode(3,OUTPUT); //LED 
  digitalWrite(3,HIGH); ///////////////////////////
  delay(500);           // DISPOSITIVO ENCENDIDO //
  digitalWrite(3,LOW);  //////////////////////////
  Serial.begin(9600);
  delay(3000);
  attachInterrupt(0, interrupcion_sensor, FALLING);
  Wire.begin();
  rtc.begin();

  
  if (!SD.begin(10)) {
   Serial.println(F("Se ha producido un fallo al iniciar la comunicacion con la memoria SD"));
   digitalWrite(3,HIGH); //Led se mantiene encendido indicando un error
   while(1);
  }

  Serial.println(F("Se ha iniciado la comunicacion correctamente con la memoria SD"));
  
  
  if (!rtc.isrunning())
  {
      myFile = SD.open("cfg.txt");
      if (myFile) {
      Serial.println(F("Abriendo archivo cfg.txt"));
      if (myFile.available()) {
        byte day = myFile.parseInt();
        byte month = myFile.parseInt();
        int year = myFile.parseInt();
        byte hour = myFile.parseInt();
        byte minute = myFile.parseInt();
        byte second = myFile.parseInt();
        rtc.adjust(DateTime(year, month, day, hour, minute, second));
        }
        myFile.close();
        Serial.println(F("Datos cargados correctamente al reloj en tiempo real"));
        digitalWrite(3,HIGH); //Led titila indicando que ha sido exitoso el proceso.
        delay(500);
        digitalWrite(3,LOW);
        delay(500);
        digitalWrite(3,HIGH);
        delay(500);
        digitalWrite(3,LOW);
        delay(500);
        digitalWrite(3,HIGH);
        delay(500);
        digitalWrite(3,LOW);
      } 
      else 
      {
    Serial.println(F("Error abriendo archivo cfg.txt"));
    digitalWrite(3,HIGH); //Led se mantiene encendido indicando un error
    while(1);
    }
  }
}//FIN SETUP


void loop()
{

DateTime now = rtc.now(); // Obtiene la fecha y hora del RTC

snprintf(filename, sizeof(filename), "%02d%02d%04d.txt", now.day(), now.month(), now.year());    

if (flag) {
    if( (now.minute()%5)>0 ) {
      flag=false; // Si el resto de minuto/5 no es cero, "armamos" siguente flag
    }
  }
  else {
    if ( ((now.minute()%5)==0) && (now.second()<3) ) { 
      digitalWrite(3,HIGH); //inicia proceso de registro
      //Serial.println(F("Iniciando registro de datos en la memoria SD"));
      SD.begin(10); // se inicializa SD por si se retiro
      //Serial.println(F("Inicializar memoria SD"));
      delay(20);
      myFile = SD.open(filename, FILE_WRITE);
      if (myFile) 
      {
        detachInterrupt(0);
        snprintf(registro, sizeof(registro), "%02d/%02d/%04d  %02d:%02d:%02d   %d", now.day(), now.month(), now.year(), now.hour(), now.minute(), now.second(), sensor);
        myFile.println(registro);
        myFile.close(); // cerrar archivo .txt
        sensor = 0;
       }
    flag=true; // y desarmamos flag para evitar guardar más veces
    attachInterrupt(0, interrupcion_sensor, FALLING);  
    }
  }
  delay(500);
  digitalWrite(3,LOW);//finaliza proceso de registro
} // fin de bucle