dato che quì
if (i==5) { //se la collisione forte dura da 50 loop
digitalWrite(ledSms, HIGH);
Serial.println ("Impatto avvenuto,sto inviando SMS");
}
no stai azzerando i, e che NON invii controlli per i > 5, mandi l'SMS una sola volta..... o meglio, a meno che il loop non duri tanto che i supera il suo valore massimo e ricominci dall'arta prte fino a ritornare a 5... ovvero ogni 65536 loop