Formule pour algorithme moteur pas à pas (temps, accel, decel...)
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

Formule pour algorithme moteur pas à pas (temps, accel, decel...)



  1. #1
    strophe

    Question Formule pour algorithme moteur pas à pas (temps, accel, decel...)


    ------

    Bonjoir !

    Il est bien loin le temps de maths au lycée, et même en ce temps, je ne suis pas sur que je l'aurai trouvé...

    Je suis en train de monter la flowchart du logiciel de commandes d'appareils de motion-control que je suis en train de concevoir (pour les amateurs : logiciel sous Max/Msp dans Max4Live ->hack de Maxuino pour support tcp -> Arduino avec ConfigurableFirmata).

    Je vais donc avoir besoin, pour monter l'algorithme de commande des actionneurs, d'une formule hachement compiquée dont je n'arrive même pas à poser l'équation...

    Il s'agit de la commandes de moteurs pas à pas (permet de transformer une impulsion électrique en un mouvement angulaire).

    On connait PasParTour, le nombre de pas par tour du moteur (généralement 200, pour l'anecdote).

    On sait qu'il doit effectuer nPas en tSec (temps en secondes, pas une de plus, pas une de moins)

    La fonction utilisée dans firmata (Alternate approach - plus bas) demande à entrer 3 valeurs :
    - La vitesse de pointe Vdp en : 0.01*rad/sec
    - L'accélération : soit Acc en 0.01*rad/sec^2
    - La décélération : soit Decel en 0.01*rad/sec^2

    Comment calculer ces 3 valeurs en donnant ces 3 là : PasParTour, nPas, tSec ?

    J'imagine que ce sera plus simple de remplacer ces noms de variables par des x et des zigrec ...

    Si ça vous paraît simple et que vous avez 5 minutes, à vot'bon coeur m'sieur dames ! Vous contribuerez à amener de belles choses dans ce monde... (c'est la finalité de tout ça, au travers de spectacles jeunes publics).

    -----

  2. #2
    Tryss2

    Re : Formule pour algorithme moteur pas à pas (temps, accel, decel...)

    Ça dépend des caractéristiques du moteur et de comment tu veux que le moteur se comporte.

    En gros, ton problème est le suivant : Je dois parcourir 1km en 5 minutes, quelle est mon accélération, ma vitesse et ma décélération? Réponse : ça dépend.

    Tu peux accélérer et ralentir très fort, avec une vitesse de pointe faible, ou bien accélérer et ralentir très doucement, avec une vitesse de pointe plus élevée

  3. #3
    strophe

    Re : Formule pour algorithme moteur pas à pas (temps, accel, decel...)

    Salut Tryss, voilà tu as bien compris une partie de la question.
    Donc il est question de maths ici et j'ai donné toutes les connues et les inconnues. Le type de moteur ne rentre dans l'équation que avec PasParTour

    Merci de ta réponse mais non, le schmilblick n'est pas vert. Candidat suivant, Simone ?

  4. #4
    antek

    Re : Formule pour algorithme moteur pas à pas (temps, accel, decel...)

    C'est quoi la vitesse de pointe ?
    - vitesse à ne pas dépasser
    - consigne de vitesse
    - vitesse actuelle
    - ? ? ?

    Si j'ai compris tu veux calculer Vdp Acc et Decel pour un PPT donné en fonction de nPas et tSec ?

  5. A voir en vidéo sur Futura
  6. #5
    gg0
    Animateur Mathématiques

    Re : Formule pour algorithme moteur pas à pas (temps, accel, decel...)

    Une réponse qui ne donne pas envie d'aider !

    Quand tu auras compris la réponse de Tryss2, reviens ...

  7. #6
    strophe

    Re : Formule pour algorithme moteur pas à pas (temps, accel, decel...)

    Merci pour vos réponses à tous les 3, et vraiment désolé si quelqu'un s'est senti froissé par mes blagues à 2 francs, je m'abstiendrai désormais.

    J'ai du très mal m'exprimer dans mon premier post...

    En fait voilà le truc. C'est un problème hyper concret et très mathématique, je n'arrive toujours pas à écrire la formule.
    je vais essayer de reposer toutes les données :

    D'un coté j'ai des moteurs pas à pas, dont on connait le nombre de pas par rotation PasPasTour.
    @Tryss et gg0 : Pour l'heure peu importe les autres caractéristiques de ce moteur, qui permettent pas exemple de trouver les vitesses limites, acceleration optimales selon la charge etc. Ce sera plus tard et probablement comme d'hab de manière empirique.

    Au milieu j'ai une interface utilisateur :
    Dans ce système, on déclenche les moteurs à partir de 4 instructions utilisateurs :
    - le nombre de pas à parcourir nPas
    - le temps pour faire l'ensemble de ces pas tSec
    - une valeur d'accélération
    - une valeur de décélération : Ces 2 valeurs pourront être exprimées en % ou en valeurs directes peu importe, c'est juste des valeurs interfaces d'entrées utilisateur qui pourront être traitées pour correspondre aux formules.
    Cette interface doit "turbiner" ces valeurs selon la ou les formules en question, et les envoyer ci-dessous.

    De l'autre coté j'ai la "machinerie" qui va faire tourner ce moteur.
    Elle doit recevoir ces données pour fonctionner :
    - le sens de rotation (ok pas de soucis)
    - le nombre de pas (ok c'est nPas)
    - la vitesse de rotation (Vdp en 0.01*rad/sec) -> là ça se complique
    - et 2 valeurs optionnelles mais nécessaires dans mon système d'accélération et décélération (Acc et Decel en 0.01*rad/sec^2)

    @Antek :
    Si j'ai compris tu veux calculer Vdp Acc et Decel pour un PPT donné en fonction de nPas et tSec ?
    Oui c'est tout à fait ça !
    et Vdp est la consigne de vitesse, la vitesse à laquelle tourne le moteur à chaque pas quand Acc et Decel ne sont pas renseignés (optionnels)
    Pour Acc et Decel, plus le nombre est grand et plus les acc-déc-élérations sont rapides, plus on s'approche de 0 et plus c'est long, au risque de ne jamais atteindre la Vdp. Ex sur cette vidéo à 17:17 https://vimeo.com/89969453

    Pour info, pour donner un peu de concret, mais ça n'a pas à entrer dans les formules (excepté pour l'interprétation des données utilisateur Acc et Dec en % par exemple), les data Vdp Acc et Decel sont codées en 14 bits, soit un entier positif de 16383 max. nPas est en 21 bits (plus de 2 millions).

    Si vous avez d'autres questions n'hésitez pas, j'espère cette fois ci avoir été le plus clair possible, et que la vidéo vous aura montré le concret de la chose.

    PS: avant de venir vous demander, j'ai essayé de poser l'équation, parcouru bon nombres de ressources, fait énormément de recherches, retenté de poser l'équation, recherché même dans des codes sur Github... bref... rien... Du coup, une fois ces formules trouvées grace à vos aides, et une fois l'algorithme créé, je partagerais ces résultats

  8. #7
    antek

    Re : Formule pour algorithme moteur pas à pas (temps, accel, decel...)

    Vitesse angulaire c'est d angle / d temps
    En radian/seconde -> (2pi/Ppt) x (nPas/tSec)

    Pour la fréquence F = nPas/tSec
    Dernière modification par antek ; 26/07/2016 à 15h17.

  9. #8
    strophe

    Re : Formule pour algorithme moteur pas à pas (temps, accel, decel...)

    Merci, ça fait avancer le truc, mais je ne sais pas si j'ai tout compris. C'est quoi la fréquence et est-ce un paramètre qui entre en ligne de compte pour résoudre ce problème ?
    Donc si je comprends bien on pourrait écrire :
    Vdp=0.01 x (2pi/Ppt) x (nPas/tSec)
    Acc=0.01 x [(2pi/Ppt) x (nPas/tSec)] ^2
    Decel=idem

    Est-ce que c'est juste ? Je ne suis pas devant le système pour programmer les essais...

  10. #9
    antek

    Re : Formule pour algorithme moteur pas à pas (temps, accel, decel...)

    Citation Envoyé par strophe Voir le message
    C'est quoi la fréquence et est-ce un paramètre qui entre en ligne de compte pour résoudre ce problème ?
    Connais-tu la commande d'un moteur pas à pas ?
    Sa vitesse est déterminée par la fréquence des cycles de commande envoyés sur ses bobines.
    Tu aurais dû poser la question en électronique ou technologie.

  11. #10
    antek

    Re : Formule pour algorithme moteur pas à pas (temps, accel, decel...)

    Citation Envoyé par strophe Voir le message
    Vdp=0.01 x (2pi/Ppt) x (nPas/tSec)
    Acc=0.01 x [(2pi/Ppt) x (nPas/tSec)] ^2
    Decel=idem
    Acc = [(2pi.nPas)/Ppt] / tSec2
    Dernière modification par antek ; 26/07/2016 à 17h45.

  12. #11
    strophe

    Re : Formule pour algorithme moteur pas à pas (temps, accel, decel...)

    Ok merci pour Acc...

    Maintenant il ne reste plus qu'à réfléchir à une formule ou un algo pour intégrer les valeurs d'accélération et décélération, que j'ai eu le tord de ne pas nommer dans mes élucubrations précédentes, mais dont je parle là :
    Au milieu j'ai une interface utilisateur :
    Dans ce système, on déclenche les moteurs à partir de 4 instructions utilisateurs :
    - le nombre de pas à parcourir nPas
    - le temps pour faire l'ensemble de ces pas tSec
    - une valeur d'accélération
    - une valeur de décélération : Ces 2 valeurs pourront être exprimées en % ou en valeurs directes peu importe, c'est juste des valeurs interfaces d'entrées utilisateur qui pourront être traitées pour correspondre aux formules.
    Cette interface doit "turbiner" ces valeurs selon la ou les formules en question, et les envoyer ci-dessous.
    C'est donc ce qu'il ce passe, 4 valeurs en entrées (4 unités différentes) ->comput-> 3 valeurs en sorties (vitesse exprimée différemment si c'est Acc/Decel ou Vdp).
    Pour le choix des unités de "valeur d'acc et decel", dans l'interface utilisateur, à intégrer dans la formule, peu importe. Il faut juste savoir que dans l'interface ce sera probablement et bêtement exprimé en % accolé à un slider ou bouton rotatif de 0 à 10 par exemple, donc qui part de 0 et qui est limité, peu importe la limite.

    J'ai très mal posé le problème, je suis désolé, j'ai tellement le nez dans le guidon que j'ai l'impression que tout coule de source...

    ça me semble incalculable ! c'est du niveau lycée ? Peut-être vaut-il mieux que je pose la question dans le sous-forum des maths du supérieur ?

    Pour ce qui est de la fréquence des cycles de commandes aux bobines, oui je connais puisque j'avais, au siècle dernier, écrit un soft en Vb pour commander une tourelle de vidéoproj, avec sa routine pour l'envoi des impulses aux bobines (c'était commandé directement par port // imprimante, avec des sortes de relais ou mofsets je sais plus). Bref.

    Ici c'est une bibliothèque qui le gère directement dans Arduino. Il faut donc simplement lui donner les 3 valeurs de vitesses, le num du moteur et la direction, et elle s'occupe du reste (bien sur je simplifie).
    Mais dans mon utilisation concrète, j'ai des contraintes qui s'expriment en d'autres valeurs (valeur n'est pas un jugement de valeur ahahah un peu d'humour youpi).

  13. #12
    Tryss2

    Re : Formule pour algorithme moteur pas à pas (temps, accel, decel...)

    Ça n'est pas compliqué :

    Pour parcourir une distance (angulaire) D en un temps T, avec une accélération Acc et une décélération Dec, on a :

    Une phase d'accélération :



    Une phase de décélération :



    Une phase à Vmax :

    mais aussi


    On a donc

    En remplacant :

    Puis


    Donc finalement,


    est donc la solution d'une équation de degré 2.






    Par exemple, avec Acc = Dec = 1 rad/s², T = 25s et D = 100 rad, on trouve :



    Donc : On accélère pendant 5s jusqu'à atteindre 5 rad/s, on reste 15s à 5 rad/s puis on ralenti pendant 5s
    Distance parcourue :
    Dernière modification par Tryss2 ; 27/07/2016 à 07h59.

  14. #13
    antek

    Re : Formule pour algorithme moteur pas à pas (temps, accel, decel...)

    Je suis troublé par la conception et les relations entre "interface utilisateur" et "machinerie".
    Pour commander le moteur, "machinerie" a besoin des informations "nPas" et "fréquence cycle" et de rien d'autre.
    Donc à partir des informations nPas, tSec, Acc et Decel que reçoit "interface utilisateur" il est inutile de calculer des vitesses en rad/s et des accélérations.

    Quelque chose m'échappe ?

  15. #14
    strophe

    Re : Formule pour algorithme moteur pas à pas (temps, accel, decel...)

    @Tryss2 : ah ben non c'était pas compliqué ! (c'est ce que disait Rostropovitch en jouant les suites de Bach)
    Je t'avoue ne pas tout comprendre, mais en tout cas c'est beau comme une fugue de l'Illustre !

    Grand merci pour cette merveilleuse avancée ! Je pense que j'y serai arrivé tout seul... en quelques semaines ou mois d'apprentissage et de recherches...

    En tout cas les 2 dernières formules Delta et Vmax on dirait bien que c'est exactement ça !!

    Juste le truc que je n'arrive pas à faire, c'est obtenir D en rad. Je sais que ça doit faire Npas et que le moteur fait PasParTours. Je réfléchis encore ça doit être simple.

    Une autre question, concernant les limites d'acc et decel, sur certains mouvements je dois avoir une accélération douce et surtout aucune décélération, car ça enchaine avec un autre mouvement qui n'a pas d'accélération, mais qui termine avec une décél.

    Est-ce que (par ex pour le premier mouvement sans décel) ça s'exprime avec Decel=0 ?? j'ai pas l'impression à cause des divisions par 0... ou alors Decel = +l'infini ou une certaine limite relative à Vmax ?


    @Antek : oui je pense qu'il a du t'échapper que j'utilise un firmaware du µcontroleur qui a une fonction prédéfinie pour contrôler les moteurs pas-à-pas, et pour m'auto-citer :
    De l'autre coté j'ai la "machinerie" qui va faire tourner ce moteur.
    Elle doit recevoir ces données pour fonctionner :
    - le sens de rotation (ok pas de soucis)
    - le nombre de pas (ok c'est nPas)
    - la vitesse de rotation (Vdp en 0.01*rad/sec) -> là ça se complique
    - et 2 valeurs optionnelles mais nécessaires dans mon système d'accélération et décélération (Acc et Decel en 0.01*rad/sec^2)
    Revoilà le lien vers le protocole utilisé par Firmata (le nom de ce firmware pour Arduino) en ce qui concerne les steppers. Il faut que tu regardes la 2eme, "Alternate Approach".

  16. #15
    gg0
    Animateur Mathématiques

    Re : Formule pour algorithme moteur pas à pas (temps, accel, decel...)

    Un tour fait 2 pi radians.

  17. #16
    strophe

    Re : Formule pour algorithme moteur pas à pas (temps, accel, decel...)

    Merci gg0 c'est évident, j'aurais du regarder wikipedia Radian avant de poser cette question, c'est tout bon...

    en ce qui concerne :
    Une autre question, concernant les limites d'acc et decel, sur certains mouvements je dois avoir une accélération douce et surtout aucune décélération, car ça enchaine avec un autre mouvement qui n'a pas d'accélération, mais qui termine avec une décél.

    Est-ce que (par ex pour le premier mouvement sans décel) ça s'exprime avec Decel=0 ?? j'ai pas l'impression à cause des divisions par 0... ou alors Decel = +l'infini ou une certaine limite relative à Vmax ?
    je verais tout ça en expérimentant, je trouverais bien une unité relative (enfin, j'me comprends) pour mon interface utilisateur...

    Si c'est ok pour tout le monde, je laisse ce sujet ouvert, je viendrais y poster les résultats quand j'aurais achevé cette partie du code, j'espère d'ici fin septembre. Je retourne à la conception 3D.

    MERCI à TRYSS2 et à TOUS !!
    Dernière modification par strophe ; 28/07/2016 à 13h40.

Discussions similaires

  1. Risque pour un moteur 4 temps avec un melange essence/huile...
    Par invite69ccd6d1 dans le forum Chimie
    Réponses: 16
    Dernier message: 29/07/2018, 20h48
  2. Algorithme Polynomial-Temps
    Par invite238d83df dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 05/11/2011, 23h36
  3. Algorithme avec contrainte de temps
    Par invite8928d6a6 dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 17/04/2011, 09h14
  4. algorithme et temps
    Par Jiav dans le forum Epistémologie et Logique (archives)
    Réponses: 22
    Dernier message: 21/03/2009, 20h01
  5. logiciel accel
    Par pol5700 dans le forum Électronique
    Réponses: 3
    Dernier message: 13/03/2007, 09h46