En cour d' écriture
Intro : Nous voulons déterminer les coefficients PI discrétisé de la régulation de courant précédent avec des périodes d’échantillonnages différente. Sur Arduino, on peut échantillonner facilement avec un ATMEL 328 à 0.1s ou bien 10ms, voire à 1 ms.
On va donc effectuer des essais avec plusieurs valeurs de période d’échantillonnage et différentes valeurs correcteurs.
Nous allons d’abord simuler dans Matlab la régulation de courant, pour ne pas faire de bêtise et détruire les batteries. Notre simulation va être très proche du programme Arduino qui a été fait précédemment.
Essai chargeur avec correcteur PI sous Simulink

Avec un correcteur P.I en analogique, l’équation du courant IB en fonction de la consigne Iconsigne et des paramètres du système Rm, kp, kia, EB, Ualim, P correspond à un premier ordre dont l’équation est la suivante (1) :

Donc en régime final, le courant IB sera bien égale à la consigne sans erreur statique :

La constante de temps de l’asservissement

Evidemment, l’asservissement avec l’Arduino est numérique devrait avoir une fonction de transfert discrétisé en Z mais l’équation (10) est valable si la période d’échantillonnage est très faible par rapport à la constante de temps, mais il y a une différence entre le coefficient intégral analogique et numérique
Exemple si kp=6, kia= kin/Te=4/0.1s=40 alors la constante de temps théorique est de 0.36s alors qu’en simulation et en pratique est de 0.2s
Par contre, avec la période d’échantillonnage de 0.01s, la valeur de kin devra être divisée par 10.
Si kp=6 et kia=10.1 alors la constante de temps théorique devrait être de 1.4s mais en pratique est de 0.5s
Si kp=0 et kia=10.1 alors la constante de temps théorique devrait être de 1.4s mais en pratique est de 0.5s
La fonction de transfert discrétisée

En régime final comme en analogique, le courant IB sera bien égale à la consigne sans erreur statique :

Le pôle du dénominateur de la fonction de transfert IB (z) doit être inférieur à 1, pour que l’asservissement soit stable

Donc plus ki est important est plus le pôle sera inférieur à 1, donc meilleur sera la stabilité mais moins bonne sera la rapidité du système1.
La constante de temps de l’asservissement avec la transformation en Z correspond à l’équation suivante

Exemple si kp=6, ki=kin//Te=4/0.1s alors la constante de temps est de 0.27s comme on peut l’observer sur la figure 2, 3, 4
Par contre, avec la période d’échantillonnage de 0.01s, la valeur de ki devra être divisée par 10.
Si kp=6 et ki=4/0.01 alors la constante de temps est toujours de 0.27s.
Voici les dynamiques de cette régulation.
Sur la figure 2, on peut observer qu’il n’y a pas d’erreur statique mais quelques oscillations car la differnce de 1 de la PWM provoque un incrément de 0,11A. on peut observer la zone morte du courant correspondant à la tension du hacheur inferieur à la tensions électrochimique de la batterie. La constante de temps est de τ=0.27s.
Avec Te=0.1, si l’on augmente la valeur intégrale supérieure à 5, il y a une divergence du courant donc instabilité.
La figure 4, permet de vérifier la fonction de transfert analogique
La figure 2 permet de vérifier la fonction de transfert numérique. Il y a un décalage entre la fonction transfert numérique et la simulation réelle à cause du courant négatif qui n’est pas possible avec le hacheur.


Pour voir les autres simulations
Télécharger le dossier d’étude sur le lien suivant :
https://drive.google.com/open?id=1qdHM6_S213kYu8hoVnRF0Qwq8G-lVBET
Afin de changer les paramètre de la fonction analogique plus aisément, on utilise un script.
Pour voir le script
Télécharger le dossier d'étude sur le lien suivant :
https://drive.google.com/open?id=1qdHM6_S213kYu8hoVnRF0Qwq8G-lVBET
Conclusion
Avec ces essais on a pu observer que plus on augmente Ki et plus le système devient rapide mais ce rapproche de l’instabilité. De même, plus on diminue Te, plus on augmente la stabilité et la rapidité du système.
Maintenant que la régulation de courant a été effectué, il faut faire la limitation de la tension de la batterie et de connaitre les nouvelles valeurs du Proportionnel intégral.
Il faut enregistrer les données en réels en programmation.
PROGRAMMATION sous Arduino
Pour avoir le retour d’information du chargeur et pour choisir le courant de consigne, on utilise un afficheur LCD 20x4 avec 4 boutons poussoirs.
On affiche ainsi les valeurs qui nous intéresse pendant la charge soit la tension des deux batteries, la température, le courant de charge ainsi que la capacité.
Les boutons poussoirs servent à démarrer la charge pour BP1, incrémenter et décrémenter le courant de consigne avec BP2 et BP3 ainsi que l’arrêt de la charge avec BP4.

Pour la charge des batteries, on utilise deux résistances de 4.2ohms piloté par deux transistors pour dévier le courant lorsque l’une des deux batteries est chargée.
Avec les résistances de 4,2ohms, le courant dévié maximum est de 1A pour nos relais.
Lorsque l’une des deux batteries est chargée (fin régulation tension), on active le relais correspondant à la batterie afin de dévier le courant. On repart alors en régulation de courant avec une consigne max de 1A pour la charge de la deuxième batterie.
La charge d’une batterie est représentée par le modèle suivant :

le fichier des explications du programme
True_Key.lnk.ino (2.34 KB)