[RESOLU] Problemes liés aux tempo

Ca ne peut pas être ça puisque le delay est précédé parce la condition de testouverture(). Donc les 5000 ms peuvent se passer relais ouvert ou relais fermé.

A mon avis c'est plus un problème de latence : un digitalWrite() prend quelques microseconds, puis tu tests un paramètre après le relais ce qui prend la aussi un temps de l'ordre de la µs. Probleme : même si ton relais commute en 10 ou 20µs (ce qui est très rapide pour un relais !) testouverture() sera passé depuis longtemps. De toute façon ton code n'est pas rigoureux il vaut mieux :

if (NIVAVAR_REF_0 <= NIVAVAR_AV_M && digitalRead (CVOAVG)== LOW) { // si la condition est OK
  digitalWrite(AVGRO, LOW); // j'alimente le relais
    delay (5000);
} else {
  digitalWrite(AVGRO, HIGH); // je coupe le relais
}   
}

Après tu veux peut-être que ton relais se coupe quand ton verrin arrive en butée :

long Depart;
...
if (NIVAVAR_REF_0 <= NIVAVAR_AV_M && digitalRead (CVOAVG)== LOW ) { // si la condition est OK
  digitalWrite(AVGRO, LOW); // j'alimente le relais
    Depart=millis();
} 
if(millis()-Depart>5000 || digitalRead (CVOAVG)== HIGH) {
  digitalWrite(AVGRO, HIGH); // je coupe le relais
}   
}