[RESOLU] Anticiper un addition overflow dans un asservissement PID

Bonjour,

Je cherche à réaliser un asservissement de type PID avec mon Arduino Uno.

Pas de soucis particulier pour ce qui est du P et du D mais c'est le I sur lequel je m'interroge.

Concrètement le I est égal à la somme des erreurs.
Qui dit somme dit risque d'overflow si le temps d'utilisation temps vers l'infini (même si en réalité on sera plus proche de 20-30minutes).

Si je type ma variable somme_erreur en float (3.4028235E+38 jusqu'à -3.4028235E+38), ça laisse quand même de la marge, mais je voulais m'assurer que je ne me retrouverai pas face à un phénomène d'overflow.

Sans faire de mystère, c'est un quadricoptère que je cherche à asservir.

Mes questions sont donc les suivantes :
Avec un type float, est-ce que je risque de me trouver face à un phénomène d'overflow ?
Si oui, comment l'anticiper ?

Merci de m'avoir lu.

Bonne journée.

up

Si l'accumulation de l'erreur atteint les 1038 c'est que tu as quand même un gros problème.
Normalement l'erreur se répartie de part et d'autre de la position attendue donc sa somme ne devrait pas diverger ou alors l'asservissement est défaillant.

+1

Surtout que la solution est simple : contraindre la composante intégrale dans un domaine de valeur ...

fdufnews:
Si l'accumulation de l'erreur atteint les 1038 c'est que tu as quand même un gros problème.
Normalement l'erreur se répartie de part et d'autre de la position attendue donc sa somme ne devrait pas diverger ou alors l'asservissement est défaillant.

Ta réponse confirme ce que je pensais. Merci pour vos réponses !