[ARDUINO] Asservissement grâce au PID

Le problème exposé dans ce sujet a été résolu.

D’accord, merci beaucoup de ta réponse @Aabu !

Pour le moment d’inertie, Jg, mes moteurs sont assez lourds mais je vais voir avec mes professeurs. Je verrai pour commencer à faire la simulation plus tard car j’ai une semaine de bac blanc à la rentrée à réviser :'( Je te tiendrais au courant :)

+0 -0

Salut @Aabu !

Je suis de retour ! :) J’ai enfin pu regarder un petit peu comment faire, et j’aurais une petite question pour mes calculs, ici (je détaille juste pour le moteur gauche) :

Image utilisateur
Image utilisateur

En faisant la somme des moments au point A j’ai (avec Cmot le "vecteur couple" et toutes les lettres de la 1ère à la 4ème ligne sont des vecteurs, à part Jg, et ^ : produit vectoriel) :

  • Moment_pointA_P + Moment_pointA_Fpoussée + Cmot = Jg * Aangulaire

  • AB ^ P + AC ^ Fmot + Cmot = Jg * Aangulaire

  • Or AB ^ P = vecteur nul

  • Donc : AC ^ Fmot + Cmot = Jg * Aangulaire

Et là si je ne me trompe pas, le vecteur AC s’écrit (-C sin alpha, -C cos alpha, 0)

Donc :

  • (-C sin alpha, -C cos alpha, 0) ^ (0, pousée_gauche) + (0, Cmot, 0) = Jg * Aangulaire

Mais du coup ici l’angle que l’on veut calculer (alpha) apparait déjà et avec l’accélération angulaire cela nous fait 2 inconnus, non ? Ou alors j’ai fait une/des grosse(s) erreur(s) bête ?

Merci d’avance pour ta réponse !

+0 -0

Bonjour,

J’ai du mal à suivre tes notations… C’est très confus. Mais j’ai quelques questions qui pourraient t’aider à éviter des écueils ou clarifier ce que tu fais.

  • Où est le point A ? Et B ? Et C ?
  • Cmot est un couple autour de quel axe ?
  • Pourquoi la poussée serait nécessairement verticale ?
  • Pourquoi ton moteur ferait à la fois une poussée et un couple autour du pivot ?

Merci pour ta réponse ! :

  • Ils sont sur la photo. Les points C et B ne sont pas très visibles désolé, il faut agrandir la photo.
  • Pour moi autour de y
  • Pour moi une poussée est une force verticale
  • Pour moi le moteur tourne (et crée un couple) et crée une force de poussée avec les hélices

D’accord, je comprends mieux.

Si Cmot est autour de y, c’est le couple du moteur. En quoi il intervient sur l’angle alpha ? Tu dis toi-même que la rotation du moteur crée une poussée…

La poussée n’est en général pas verticale. Imagine ce que fait le moteur quand la traverse du drone est verticale. Essaie d’en déduire l’orientation de la poussée par rapport au moteur.

Ensuite, il y a quelque chose de vraiment pas clair sur le moment du poids. Pourquoi tu prends AB ? Le fait que ton calcul prédit qu’il n’a pas d’effet quoi qu’il arrive devrait te faire tiquer.

Pour le fait que l’angle alpha apparaisse deux fois, c’est normal. Tu obtiens une équation différentielle, qui n’a qu’une seule inconnue, qui se trouve être une fonction du temps. Tu n’as pas besoin de la résoudre, seulement de la mettre sous une forme que tu pourras utiliser dans Simulink (alpha = f(…)), pour lui faire calculer une solution numérique.

D’accord merci beaucoup pour tes explications @Aabu ! :)

  • C’est vrai, tu l’avais dis précédemment en plus, je le retire.

  • Après avoir regardé des schémas représentant des forces de poussée, la mienne (pour le moteur gauche) semble être comme ça : <- (horizontale, droite vers gauche). C’est peut-être moi qui est un problème de logique (ou de compréhension) mais je ne comprend pas pourquoi un moteur ayant un pivot ? (je ne sais pas si c’est le bon mot mais je parle de la tige en métal sortant du moteur) tournant autour de y et entrainant des hélices peut créer une force horizontale…

  • Effectivement, je n’y avais pas vraiment fait attention. Je pensais devoir prendre AB car il a le même sens que le vecteur poids. Mais du coup je ne vois vraiment pas quelle distance prendre…

Je suis désolé si mes interrogations peuvent te paraitre idiotes…

  • Et d’accord , je verrais plus tard pour l’équation différentielle :) mais si j’ai bien compris, il faut juste que j’isole alpha et les membres à droite du signe "=" forment une fonction que je devrais rentrer dans Simulink pour calculer alpha, non ?

Encore merci pour ton aide en tout cas !

EDIT : Nouveau schéma avec les modifications :

Image utilisateur
Image utilisateur

(On remarque bien que c’est la Force de poussée qui est modifiée par l’angle alpha dans ce sens).

+0 -0

Bonjour,

à mon avis, on se complique la vie ici, et il est possible de simplifier le modèle:

On a un balancier tournant autour de l’axe passant en A.

  • Le balancier est rigide. Si il est équilibré (et vu qu’on construit un drone, on peut le construire équilibré) (à peu de chose près: le PID rattrapera l’inexactitude de l’équilibrage). Ainsi, si on l’équilibre, le couple résultant du poids des deux bras est nul. On peut donc oublier le poids.
  • Le support du balancier le soutient en A, la réaction du support ne crée donc pas de couple non plus.

La seule force exerçant un couple, et ayant un rôle dans la position angulaire du balancier, est donc la force de poussée des moteurs. Cette force est toujours normale aux bras du balancier, le couple au niveau de l’axe qui passe en A, produit de la poussée du moteur et de sa distance à l’axe, ne dépend pas de l’angle alpha.

+0 -0

Bonjour,

à mon avis, on se complique la vie ici, et il est possible de simplifier le modèle:
[…]

Jacen

L’idée est aussi de laisser @Jupiter41 chercher et formuler sa solution… Si le but était de donner une solution, le sujet serait déjà fini depuis longtemps. Et n’oublions pas qu’il s’agit d’un projet de lycée et que le professeur est aussi là pour éviter de faire fausse route.

Bon, puisqu’on en parle :

Ainsi, si on l’équilibre, le couple résultant du poids des deux bras est nul. On peut donc oublier le poids.

Certes, mais dans le cadre d’une modélisation destinée à être simulée, c’est intéressant de modéliser le déséquilibre, parce qu’il permet justement de comprendre ce que le contrôleur PID fera dans la vraie vie.

Cette force est toujours normale aux bras du balancier, le couple au niveau de l’axe qui passe en A, produit de la poussée du moteur et de sa distance à l’axe, ne dépend pas de l’angle alpha.

Cela fait partie des choses qui ne sont pas évidentes pour @Jupiter41, et j’aurai aimé le laisser trouver de lui-même.

Du coup, je n’avais pas répondu aux questions.

  • Après avoir regardé des schémas représentant des forces de poussée, la mienne (pour le moteur gauche) semble être comme ça : <- (horizontale, droite vers gauche). C’est peut-être moi qui est un problème de logique (ou de compréhension) mais je ne comprend pas pourquoi un moteur ayant un pivot ? (je ne sais pas si c’est le bon mot mais je parle de la tige en métal sortant du moteur) tournant autour de y et entrainant des hélices peut créer une force horizontale…

Je crois que tu confonds l’horizontale et la verticale, qui sont relatives au sol, avec la direction du bras de ton drone et sa tangente… C’est très différent (sauf pour le cas particulier alpha = 0).

  • Effectivement, je n’y avais pas vraiment fait attention. Je pensais devoir prendre AB car il a le même sens que le vecteur poids. Mais du coup je ne vois vraiment pas quelle distance prendre…

Tu connais la notion de bras de levier ?

Je suis désolé si mes interrogations peuvent te paraitre idiotes…

On est là pour apprendre. Je n’ai jamais fait de drones de ma vie, donc, dans un sens, tu es plus avancé que moi. :D

  • Et d’accord , je verrais plus tard pour l’équation différentielle :) mais si j’ai bien compris, il faut juste que j’isole alpha et les membres à droite du signe "=" forment une fonction que je devrais rentrer dans Simulink pour calculer alpha, non ?

Grossièrement, c’est en effet ce qui se passera.

EDIT : Nouveau schéma avec les modifications :

Image utilisateur
Image utilisateur

(On remarque bien que c’est la Force de poussée qui est modifiée par l’angle alpha dans ce sens).

Jupiter41

Euh… Les vecteurs et tout c’est bien, mais il faut garder un peu de sens physique quand même ! Tu crois vraiment que l’hélice tire perpendiculairement à son axe de rotation ? Essaie de t’imaginer un hélicoptère !

Merci pour vous réponses @Jacen et @Aabu !

J’ai compris un truc, j’avais en tête la bonne Force de poussée mais en voulant simplifier le schéma, je l’ai rendu faux. Je sais bien que sur ma photo par exemple la force et perpendiculaire au moteur donc en diagonale :)

Par contre je ne comprends pas trop pour le poids. Pour moi, le centre de gravité est le point A donc c’est normal qu’en faisant la somme des moments à ce point, le poids n’apparaît pas.

Par contre je ne comprends pas trop pour le poids. Pour moi, le centre de gravité est le point A donc c’est normal qu’en faisant la somme des moments à ce point, le poids n’apparaît pas.

Jupiter41

Il n’apparaît pas si tu choisis de modéliser un balancier équilibré. Dans un premier temps, c’est la meilleure approche. Cependant, il est intéressant de ne pas faire cette hypothèse et voir ce qu’il se passe dans ce cas là.

Pour moi, le point A étant le centre de gravité quoiqu’il arrive (que le système soit équilibré ou non), si je fais la somme des moments à ce point, le poids n’apparaît pas. Mais pourrais tu me dire ou tu penserais plutôt mettre le poids (et la distance correspondante) pour que je puisse regarder s’il te plaît @Aabu ?

Pour moi, le point A étant le centre de gravité quoiqu’il arrive (que le système soit équilibré ou non)

Ton affirmation est fausse. Il y a plein de balançoires dans les jeux pour enfant qui montrent que ce n’est pas le cas. Elles ne sont pas toutes équilibrées sur le pivot, en particulier quand on a deux enfants de poids différents qui jouent avec !

si je fais la somme des moments à ce point, le poids n’apparaît pas.

Comment as-tu fais le calcul ?

Mais pourrais tu me dire ou tu penserais plutôt mettre le poids (et la distance correspondante) pour que je puisse regarder s’il te plaît @Aabu ?

Jupiter41

Le poids se met là où il y a de la masse ! Si tu modélises avec plusieurs masses, tu auras plusieurs poids différents. Si tu pars sur une approche « mécanique du solide », tu auras la résultante du poids (donc un seul poids) appliqué au centre de masse (pas forcément A s’il y a un déséquilibre). La position du centre de masse se détermine relativement facilement (par modélisation ou mesure, par exemple).

Par exemple, si on modélise ton balancier comme dans la figure ci-dessous, la somme des moments en A est nul dans deux cas seulement : balancier équilibré (m1=m2m_1=m_2) ou balancier vertical (α=±π2\alpha = \pm\frac{\pi}{2}). Je te laisse faire le calcul si tu veux t’en convaincre.

Modèle du balancier à deux masses.
Modèle du balancier à deux masses.

D’accord merci beaucoup pour tes explications @Aabu! Cela fait quelque chose comme ça non ? :

Image utilisateur
Image utilisateur

Donc P1 ne dépends pas de alpha et son moment cinétique est M au point A de la force P1 = AB ^ P1

Et P2 dépends de Beta et son moment cinétique M au point A de la force P2 = ED ^ P2

Mais je ne suis pas sûr…

+0 -0

Mais pour moi, dans notre cas contrairement à ton schéma de balancier. Il n’y a qu’un poids au centre de gravité. (A). Le poids des 2 côtés et le même.

Jupiter41

Évidemment, intuitivement, un balancier équilibré est… équilibré. Mais ça se démontre !

Certaines démonstrations sont fausses (par exemple ta devinette), d’autres très simples (argument de symétrie).

Finalement, il ne faut pas te prendre la tête. Si tu fais l’hypothèse que ton système est équilibré, alors le poids ne fait pas de couple (c’est ce que disait Jacen il y a quelques messages déjà).

Pour revenir à ton but initial, ton dernier schéma est pas mal du tout. Les poussées sont orientées correctement et tu as ce qu’il faut pour implanter ça dans Simulink.

Restons simple comme Jacen l’a suggéré. Le reste peu attendre et servir d’approfondissement par la suite.

Ce sujet est verrouillé.