En attendant la méthode de 59Jag, vous pouvez donc tester la méthode Polynôme qui fonctionne parfaitement chez moi sans engendrer aucun reset ESP depuis 1 semaine
Pour cela il suffit d'inserer les quelques lignes de code ci-dessous dans le fichier Solar_routeur_v17_06 , entre la ligne 1746 et 1748 (RetardF[i] = constrain(RetardF[i], 0.0, 100.0)
Code :
//LBE Linearisation mode decoupe sinus uniquement faire un if mode decoupe sinus plus tard
// LBE Linearisation polynôme 7ème degré
if (Actif[i]==MODE_DECOUPE_ONOFF) {//Linearisation uniquement pour le mode découpe de sinus
float puissance_pid = 100.0f - RetardF[i]; // Sortie PID en puissance (0-100%)
//Polynome degré 7
// Merci Mike pour l'Optimisation methode Horner pour réduire les multiplications Estimations 90ns
// Merci Laurent53 pour le forcage en float poue eviter les calculs inutiles et gourmand en double
float puissance_corrigee =
(((((((
1.77247643e-10f * puissance_pid
- 6.20366752e-08f) * puissance_pid
+ 8.72516510e-06f) * puissance_pid
- 6.30374389e-04f) * puissance_pid
+ 2.48566569e-02f) * puissance_pid
- 5.26588432e-01f) * puissance_pid
+ 6.06926288e+00f) * puissance_pid
);
RetardF[i] = 100.0f - puissance_corrigee;
}
//fin linearisation
Pour expliquer un peu mieux comment cela fonctionne , avec l'image ci dessous prenons un exemple avec
Sortie PID = 20%
à 20 % de sortie si on ne linearise pas on va donc aller sur la courbe bleue, donc 5 % de puissance. , c est à dire un ratio de 20/5 =
4 à ce point de fonctionnenement
le probleme est que passe à 40% sur la courbe bleue on a 30% c est à dire un ratio de 40/30=
1.33 ce qui est très différent du point de fonctionnement précédent, donc le PID ne sait pas comment agir, et le reglage PID bon a un point sera mauvais à l'autre , entrainant une mauvaise performance
Avec la linearisation , on va aller sur la courbe violette ( Polynome simplfié ou la courbe Verte calcul par regression de Newton)
à 20% de sortie PID la courbe violette donne 5
à 5 la courbe violette donne 20
Donc 20 donne 20 Yessss c est lineaire ( ratio 20/20 =1)
Si vous faites l exercice à PID=40 % vous arriverez aussi 40% donne 40 Yessssss c est lineaire ( ratio 40/40 =1) et ca c est très bon pour regler le PID de façon très réactive sans partir en osclliation ( je vous laisse voir les messages au début de cette discussion pour voir les résultats)
Pour aller plus loin, l'interet du polynome par rapport à une table de correspondance c 'est que c est un calcul continu, sans arrondi
Exemple si PID OUT=10.5 % le polynome va piloter le triac à 28 % ( la valeur idéale) la où une table oscillerait en permanence entre 27 et 29 generant du flickering