La fonction getMean() permet de renvoyer la valeur moyenne actuelle du signal PWM. Elle prend en entrée la tension PWM actuelle, le tableau des anciennes valeurs moyennes, puis elle revoie la valeur moyenne récente. Elle contient l’indice d’incrémentation des éléments du tableau au format static : Pour chaque appel, l’indice s’incrémente d’un pas égal à 1. Ci-dessous la définition de la fonction.
float getMean(float *tabMoy, int Nm, float vin0) { // Variables locales static int J=0; float somme_1=0.0; float VMFiltre=0.0;
// Filtrage: Calcul de la Moyenne Glissante for (int i=0; i<Nm; i++) somme_1+=tabMoy[i]; VMFiltre=(somme_1/(float)Nm);
// Mise à jour du tableau des VM valMoy[J]=(vin0+VMFiltre)/2.0; J++; J%=Nm;
// Retour de la VM return VMFiltre; }
La fonction Satur()
La fonction Satur() permet de garantir le non-débordement de la commande. Elle assure que la valeur de la commande soit comprise entre [-Vmax, Vmax]. Elle est basée sur la fonction mathématique tangente hyperbolique modifiée tanh() (voir le tutoriel pour plus de détails). La fonction sert à générer une commande « soft » et convergente grâce aux propriétés limites de la tanh() . Elle joue également le rôle de stabilisation de la commande en cas d’une mauvaise manœuvre des paramètres du correcteur ou du système. La fonction Satur() prend en entrée la commande, la valeur maximale Vmax, puis elle retourne la commande écrêtée. Ci-dessous la définition de la fonction.
2 réponses sur « Projet Arduino: Asservissement PWM – Correcteur Proportionnel (P) »
Cours très intéressant mais manque la partie schématique (câblage d’une carte Arduino) pour reproduire l’exercice.
Un exemple pratique comme la décharge d’une pile à courant constant serait plus explicite pour un non électronicien.
Cordialement
2 réponses sur « Projet Arduino: Asservissement PWM – Correcteur Proportionnel (P) »
Cours très intéressant mais manque la partie schématique (câblage d’une carte Arduino) pour reproduire l’exercice.
Un exemple pratique comme la décharge d’une pile à courant constant serait plus explicite pour un non électronicien.
Cordialement
Merci, c’est une idée intéressante!