Error en la lectura de tarjetas RFID

Buenos días chicos, estoy desarrollando un proyecto con el RFID-RC522 el cual guarda en una base de datos la id de una tarjeta. El sistema funciona, pero en ocasiones la misma tarjeta RFID, me reporta dos ids parecidas pero diferentes al fin y al cabo. Me sucede en 2 de cada 10 lecturas y necesitaría que fuese muchísimo mas fiable.

¿Alguna idea de porque me sucede esto?¿Puede ser causa del código?

Adjunto parte del código.

void InsertSQL(String uid){
  
  uid.toCharArray(SQLuid,9);
  MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
  sprintf(query, INSERT_DATA, SQLuid);
  cur_mem->execute(query);
  delete cur_mem;
  
  }

void loop() { 
Serial.println("1. Esperamos leer tarjeta");
delay(1000);
  if ( mfrc522.PICC_IsNewCardPresent()) 
        {  
      //Seleccionamos una tarjeta
            if ( mfrc522.PICC_ReadCardSerial()) 
            {
                  // Enviamos serialemente su UID
                  Serial.println("3.Obtenemos el uid");
                  for (byte i = 0; i < mfrc522.uid.size; i++) {
                      uid.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : ""));
                      uid.concat(String(mfrc522.uid.uidByte[i], HEX));
                  }
                  Serial.println("4.Guardamos en la BBDD");
                  InsertSQL(uid);
                  
                  // Terminamos la lectura de la tarjeta  actual
                  mfrc522.PICC_HaltA();
                  uid="";   
            }

En código esta incompleto pero ya vi un delay(1000); para que lo pones ?