Prendre conscience des problèmes qui sont liés à l’instabilité d’un système, saturation, divergence, etc.
Savoir les caractéristiques de la fonction de saturation, la tangente hyperbolique
Savoir adapter la fonction tangente hyperbolique aux valeurs crêtes de son correcteur
Etc.
Importance de la tangente hyperbolique
La tengente hyperbolique est une fonction de saturation par excellence. Elle est caractérisée par son allure linaire lorsque x tant vers 0 (petits signaux), et converge vers [-1, 1] lorsque l’amplitude du signal converge vers l’infini.
Comment adapter les valeurs crêtes de son correcteur ?
Le tuto aborde le problème lié à la divergence de la commande du correcteur d’une part, et la saturation d’une variable par la carte Arduino. Il est primordial de limiter la dynamique de sa commande durant l’implémentation d’un correcteur PID numérique. La tangente hyperbolique est une fonction rapide et efficace dédiée à cet effet contrairement à l’instruction IF (longue et non linaire). De plus la tangente hyperbolique dispose des caractéristiques linéaires et adoucit le signal durant les transitions (voir le tuto Matlab). Ci-dessous un extrait du code de l’adaptation des niveaux : [-1, 1] vers [-Vmax, Vmax].
double x_nn=0.0; // Consigne (entrée) double y_n[2]; // "0" Non corrigé, "1": Corrigé double eps_n[2]; // Erreur double y_capt[2]; // Sortie du capteur double y_corr[2]; // Sortie du correcteur
// Variables internes des systèmes double x1[2], y1[3]; // Système Non Corrigé double x2[2], y2[3]; // Système Corrigé
// Variables internes du correcteur double x_c[2], y_c[2];
// Paramètres de l'échelon unsigned long c=0; // Compteur (période) bool Step=false;
void setup() { // Port série de la réponse du système Serial.begin(19200); }
void loop() { // 1. La consigne (l'entrée) x(n) pour les deux systèmes c++; c=c%c_step; if(!c) { Step=!Step; c=0; } x_nn=A_step*(double)Step; // Réponse à un échelon x(n)=cte //x_nn=(double)c; // Réponse à une rampe x(n)=n
// 2. Sortie du capteur: Retour unitaire y_capt[0]=y_n[0]; y_capt[1]=y_n[1];
// 3. Soustracteur: Calcul de l'erreur eps(n) eps_n[0]=x_nn-y_capt[0]; eps_n[1]=x_nn-y_capt[1];
// 4.1 Correcteur y_corr[0]=eps_n[0]; // Système non Corrigé
Nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations relatives aux appareils. Nous le faisons pour améliorer l’expérience de navigation et pour afficher des publicités (non-)personnalisées. Consentir à ces technologies nous autorisera à traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines fonctonnalités et caractéristiques.
Fonctionnel
Toujours activé
Le stockage ou l’accès technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’utilisateur, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.
Préférences
L’accès ou le stockage technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou l’internaute.
Statistiques
Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques.Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
Marketing
Le stockage ou l’accès technique est nécessaire pour créer des profils d’utilisateurs afin d’envoyer des publicités, ou pour suivre l’utilisateur sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.