Asservissement PID

Bonjour,

Je voudrais mettre en pratique des asservissements de position, par exemple permettre à un Drone de se stabiliser à une hauteur de 50cm. Pour le capteur, un capteur ultrason pourra à priori facilement répondre au besoin.
Mais comment dois-je aborder la partie asservissement PID? Je me rappelle avoir eu des cours la dessus il y a des années, mais tout ceci n'était pas concret et je voudrais justement rentrer dans le concret :slight_smile:
J'ai suivi dernièrement un tuto qui m'a rappelé qu'il fallait modéliser le comportement de ce que l'on voulait asservir puis de faire de savants calculs, à l'époque MATLAB n'existait pas et je crois qu'aujourd'hui MATLAB est assez utilisé pour simuler tout ça...?
Ou bien, est-ce que simplement le coté pragmatique doit reprendre le dessus et que les paramètres se règlent en faisant uniquement des essais???

Dans l'attente de votre aide :slight_smile:

Merci par avance.

Bonjour,

ojal:
à l'époque MATLAB n'existait pas

Ca doit dater sérieusement tes cours :wink:

Les deux options sont possibles: simuler ou pas. Disons que si tu essaies de pifométrer les réglages d'un PID sur un asservissement de température et que tu te plantes, c'est pas forcément très grave (à condition de surveiller le système, bien sûr). Si tu te plantes sur un drone, ça risque d'être plus gênant...
A ta place, j'essaierais de faire des calculs avant histoire d'avoir une première idée des paramètres de réglage (et pour info, il n'y a pas que Matlab dans la vie). Mais il y a peu de chance que tu tombes tout de suite sur des valeurs optimales, il faudra quand même faire des essais.

L'utilisation de logiciel de simulation (j'en ai créé et vendu un SISSY autour des années 2000) est un plus certain. Mais avant tout, il est nécessaire de caractériser chaque élément de la chaîne. Un asservissement de position est avant tout un système du second degré (passage d'une inertie à une position) qui est instable par nature. Il faut un correcteur (Dérivé) pour le stabiliser. A l'aide d'un simple graphique amplitude/fréquence et muni de tous les paramètres des composants, vous pourrez déterminer le gain (Proportionnel) et le correcteur à implanter : Contrôle Intégral pour la précision statique et contrôle Dérivé pour la stabilité.

Cordialement.

Pierre

Mes cours datent de fin des années 80... Il n'y avait pas d'Arduino, on parlait peu de robotique, on parlait d'automatisme, mais on faisait de l'asservissement avec des systèmes industriels assez coûteux et de la programmation pas du tout intuitive...

Je suis d'accord avec tout ce que vous me dites :slight_smile:
Néanmoins concrètement, je m'y prends comment ?

Merci :slight_smile:

PS: les notifications des messages sont arrivées dans ma boite de spam sur Gmail...

ojal:
Mes cours datent de fin des années 80... Il n'y avait pas d'Arduino, on parlait peu de robotique, on parlait d'automatisme, mais on faisait de l'asservissement avec des systèmes industriels assez coûteux et de la programmation pas du tout intuitive...

Matlab existait déjà :wink:
Mais bon, ce n'est pas important.

Tu vas devoir écrire quelques équations... mais es-tu sûr de vouloir refaire tout seul des choses qui existent déjà ? Tu peux trouver facilement sur le Net des pilotes automatiques de drones avec asservissement d'altitude sur la base d'un capteur ultrason.

Le problème est que tu ne démarres pas du plus facile: le problème de l'asservissement d'altitude d'un drone est que, si on se base sur un quadricoptère, il y a 4 hélices. Et donc, le problème principal n'est pas l'asservissement d'altitude, mais l'asservissement de l'assiette de l'engin.

Pour faire du PID, tu pourrais commencer simplement par l'asservissement d'un moteur à courant continu, ou alors tu achètes un robot avec un capteur ultrason et tu fais l'asservissement de distance avec un obstacle... histoire de se mettre en jambes avant d'attaquer quelque chose de plus compliqué.

La société MATHWORKS se créait juste et ne devait se diffuser qu'à une population très spécifique :slight_smile:
Pour en revenir à ce que je voulais faire, je ne voulais pas intervenir sur la commande de stabilisation du drone, mais juste intervenir sur la commande correspondant à la commande de gaz de la manette de pilotage... Tout en gardant le système de stabilisation du drone... Ca me semblait une voie possible???

A priori oui, si le logiciel ou le matériel de ton drone est suffisamment ouvert pour ça.
Dans ce cas, il faudra à un moment donné que tu définisses quelle est la poussée des hélices en fonction de la vitesse de rotation.

La poussée des hélices dépend énormément de la charge des accu… Charge pleine ça pousse à fond alors qu’à la fin ça ne pousse plus :(…
=> Je crois que je vais essayer la méthode du tâtonnement…
Coté logiciel PID, qu’existe-t-il sur ARDUINO???
Merci.

les discussions précédentes ne m'ont rien apporté de concrêt pour que je puisse commencer à avancer concrêtement :frowning:
Avez-vous fait des asservissements PID? Comment avez-vous fait? Avec quel code?

Merci par avance :slight_smile:

Concrètement, j'ai écrit des équations, je les ai mises sous forme de fonction de transfert ou sous forme d'état et j'ai utilisé un logiciel pour calculer les correcteurs.
Ensuite, une fois que tu as les paramètres (calculés par la méthode précédente), c'est facile d'écrire le(s) PID sur Arduino, en utilisant éventuellement une bibliothèque PID qui te mâche le travail d'écriture du code (mais pas de calcul des paramètres).

Mais si tu veux tâtonner pour trouver les bons paramètres, la première partie ne te sert à rien, il te faut juste utiliser éventuellement une librairie qui te permet d'écrire plus facilement le PID.

Ci-joint le schéma synoptique de ce que tu veux réaliser.

Avant que de pouvoir donner des coefficients Ki, Kp, Kd au PID, il faut que tu connaisses la fonction de transfert (le gain quoi !) de chaque élément qui compose ta chaîne.

Tu as certainement :

  • un ampli de puissance : Gain en Volt/Volt
  • un groupe moteurs/ hélices :Gain en Newton/Volt mais fonction de la tension batterie d’après toi
  • un détecteur de position : Gain en Volt/mètre
  • une consigne : Gain en Volt/mètre

De plus, comme on est en présence d’un asservissement de position, le contrôle dérivé devra comporter une limite d’action sinon tu risques d’avoir un bruit (dû aux différentes imperfections de chaque composant et à l’échantillonnage) qui te saturerait les étages de puissance et rendre le système ingérable.

Cordialement.

Pierre