Formule pour obtenir une courbe en "S" dans programme automate
Répondre à la discussion
Affichage des résultats 1 à 20 sur 20

Formule pour obtenir une courbe en "S" dans programme automate



  1. #1
    babao60

    Formule pour obtenir une courbe en "S" dans programme automate


    ------

    Bonjour à tous,

    Je me permet de poster ici car j'espère trouver quelqu'un qui puisse m'aider, je suis automaticien et souhaite piloter la deceleration d'un moteur sur une machine, mon problème ne concerne pas la programmation mais plutôt comment obtenir une courbe en "S" à partir d'une suite de chiffre qui par de "50" pour aller à "0" de manière linéaire.

    L'application est la suivante :

    Un moteur entraîne un bras qui par d'un point A pour arrêter à un point B, l'acceleration du moteur pour aller de "0" à "50" est géré automatiquement par le variateur de vitesse, par contre je pilote depuis l'automate la deceleration pour que mon moteur passe de "50" à "0", ce qui permet d'adoucir le mouvement et d’arrêter à une position précise.

    J'ai déjà programmé une deceleration mais celle est linéaire et reste trop brutal pour la mécanique que le moteur entraîne derrière.

    J'ai fait rapidement un tableau excel que vous pouvez télécharger ici : *** Merci de respecter les règles du forum pour les pièces jointes *** vous y verrez un tableau avec la valeur que j'envoi au variateur (consigne analogique) suivant la position du moteur, j'ai fait une courbe à partir de ma suite de chiffre, elle descend de manière linéaire, vous verrez aussi une courbe noir que j'ai dessiné et qui représente la forme de la courbe que je souhaiterais avoir.

    Mon automate accepte un grand nombre de formule mathématique, je peux faire plusieurs calcul différents (exemple 1 calcul pour le début de la courbe, un calcul pour le milieu et un calcul pour la fin de la courbe)

    J'espère que ma demande n'est pas trop tordu et surtout que j'ai reussi à vous la faire comprendre

    -----
    Dernière modification par Médiat ; 06/01/2017 à 22h25.

  2. #2
    babao60

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    J'ai oublié de dire que peu importe les valeurs, j'ai juste besoin d'avoir une suite de chiffre qui forme la courbe noir que vous voyez sur le fichier.

  3. #3
    Tryss2

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    Cette fonction pourrait convenir :

    https://fr.wikipedia.org/wiki/Foncti...que_(Verhulst)

  4. #4
    babao60

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    Merci pour ta réponse, j'avais trouvé cette fonction mais je n'arrive pas à l'appliquer à mon besoin...

  5. A voir en vidéo sur Futura
  6. #5
    Dlzlogic

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    Bonjour Tryss,
    Je ne connaissais pas cette fonction. Je vais l'ajouter à mon catalogue de fonctions pour mon outil de calcul de régression.
    D'après ce que j'ai lu, seule le fonction logistique (sigmoïde) est vraiment utile, la fonction inverse (logit), n'étant utile que pour le calcul.
    Bon exercice pour un samedi.

  7. #6
    babao60

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    Comme le lien vers mon fichier excel a été supprimé, voici une capture d'ecran :

    Nom : Capture.JPG
Affichages : 1589
Taille : 129,7 Ko

    Pour rappel, la courbe orange est celle avec que j'utilise actuellement et la noir est celle que j'aimerais avoir

  8. #7
    ansset
    Animateur Mathématiques

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    bonjour d'où vient la noire ?
    - à la main ?
    - avec une méthode pariculière ?
    sinon on peut faire une approximation polynomiale très proche , mais le graphique est trop "grossier".
    ps 1 : ton lien initial était une vrai cata ( une sorte d'Excel gratuit qui sort de je ne sais ou et qui refusait de se fermer )
    ps 2 : @Tryss : je doute de la fonction que tu proposes car les dérivées en début et en fin de courbe de sa fonction ne sont pas nulle.
    et il est difficile de "mesurer" la pente au point d'inflexion.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  9. #8
    Médiat

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    Bonjour,

    Avec une simple fonction du 3 ième degré on obtient quelque chose de très approchant entre 5.5 et 7


    [EDIT]Croisement avec ansset
    Dernière modification par Médiat ; 07/01/2017 à 16h32.
    Je suis Charlie.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse

  10. #9
    babao60

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    La courbe noir a été faite à la "main",

    @ansset, qu'entend-tu par "grossier" ? Il n'y à pas assez de valeurs dans le tableau ? J'ai volontairement reduit le nombre de point mais mon automate rafraîchit la position tout les 20ms donc en gros la valeur "position" s'incremente de 0.2 à chaque fois.

    Je prend note de vos propositions mais je n'ai pas fait de mathématique depuis 13 ans donc il faudrait si possible me guider pour que j'arrive à l'appliquer

    Si cela pose problème, je ne suis pas obligé de terminer à "0", si la dernière valeur est autour de 1 ce n'est pas très genant

  11. #10
    ansset
    Animateur Mathématiques

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    le terme grossier est mal choisi je n'ai pas téléchargé ta courbe pur bien "lire" les valeurs des dérivées au début, milieu ( point d'inflexion ) et fin de la courbe. ( idem début je pense )
    mais peut être peux tu toi nous donner ces valeurs.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  12. #11
    babao60

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    Je veux bien vous donner les dérivés que vous me demandez mais le problème c'est que je ne sais pas exactement de quoi il s'agit...! Je doit le calculer par rapport à ma courbe ?

    Comme je vous l'ai dit je n'ai jamais refait de mathématique depuis mon BTS et je doit avouer que tout ces termes sont très loin...

  13. #12
    Tryss2

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    Citation Envoyé par ansset Voir le message
    ps 2 : @Tryss : je doute de la fonction que tu proposes car les dérivées en début et en fin de courbe de sa fonction ne sont pas nulle.
    et il est difficile de "mesurer" la pente au point d'inflexion.
    Il me semble qu'il est plus intéressant dans son problème d'avoir justement une accélération continue (et dérivable), pour limiter les efforts mécaniques...

  14. #13
    Dlzlogic

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    Je propose cette courbe.
    Consigne.png
    Images attachées Images attachées  

  15. #14
    azizovsky

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    Bonsoir, peut être la fonction avec .

  16. #15
    azizovsky

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    et pour décaler la courbe vers le haut, on rajoute une constante (pi/2?) à la fonction ...(à la louche )
    Dernière modification par azizovsky ; 08/01/2017 à 00h13.

  17. #16
    babao60

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    Citation Envoyé par Dlzlogic Voir le message
    Je propose cette courbe.
    Pièce jointe 331598
    J'ai appliqué cette formule sur excel : =((0)*PUISSANCE(A16;4))+((-0,00043)*PUISSANCE(A16;3))+((0 ,352)*PUISSANCE(A16;2))+((-125)*A16+16373) où A16 correspond à 550 et j'obtiens -17438,25 et plus "x" augmente plus mon résultat descend, ai-je fait une erreur ?

  18. #17
    babao60

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    Citation Envoyé par azizovsky Voir le message
    Bonsoir, peut être la fonction avec .
    Je suis désolé d’être si ignorant ! mais à quoi correspond "artg" ? a= constante, r=?, tg=tangente ???

  19. #18
    Dlzlogic

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    Bonsoir,
    J'ai refait le calcul pour les valeurs mesurées, ça donne ça :
    Régression polynôme Y=A.X^4 + B.X^3 + C.X^2 + D.X + E
    nbpts= 7 A = 0.00000 B = -0.00043 C = 0.352 D = -125. E = 16373.
    Ecart-type (écart moyen quadratique) = 1.396
    Coefficient de corrélation = -0.982
    X=552.00 ==> Y= 49.73
    X=572.00 ==> Y= 48.80
    X=590.00 ==> Y= 43.71
    X=620.00 ==> Y= 28.44
    X=643.00 ==> Y= 14.46
    X=668.00 ==> Y= 2.49
    X=690.00 ==> Y= 0.38

    Ca peut vous permettre de vérifier votre formule.
    Dites-moi si ça ne marche pas, je vous ferai une petite feuille Excel.

  20. #19
    azizovsky

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    Bonsoir, la fonction arctg(x) est défini ici :https://fr.wikipedia.org/wiki/Arc_tangente

    une multiplication par -1 inverse la courbe suivante : https://fr.wikipedia.org/wiki/Arc_ta...ile:Arctan.svg

    puisque , on lui rajoute pour qu elle soit au dessus de l'axe (ox), je l'ai essayé ici :

    http://www.wolframalpha.com/input/?i...2-arctg(x%2Fa)

    et pour déplacer la courbe vers la droite : le point d'inflexion, il faut ajouté une constante à x, càd :.

    ps: ah une application: https://fr.wikipedia.org/wiki/Filtre...File:FPBP1.png , filre basse bas en électronique

    je ne suis pas sur que cette fonction est la bonne, mais qui ne tente rien n'aura rien .
    Dernière modification par azizovsky ; 09/01/2017 à 20h02.

  21. #20
    Dlzlogic

    Re : Formule pour obtenir une courbe en "S" dans programme automate

    Bonjour,
    Par sécurité, j'ai essayé de mettre en oeuvre la formule avec Excel. J'ai trouvé comme vous.
    La seule explication que je vois est que l'opération consiste à faire des opérations arithmétiques, multiplications, addition et soustraction avec des grands nombres. Le machines n'aiment généralement pas cela. Il ne faut pas oublier que les constantes (A, B, C, D, E) sont données avec un petit nombre de chiffres significatifs. Je les ai calculés avec plus de décimales. Essayez pour voir ce que ça donne.
    0.0000001940 -0.0004305640 0.3517185400 -125.1571433597 16372.9093242734
    Bon calcul

Discussions similaires

  1. [Programmation] [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?
    Par REDZORR dans le forum Électronique
    Réponses: 23
    Dernier message: 09/05/2016, 08h11
  2. Réponses: 1
    Dernier message: 12/06/2012, 19h00
  3. Logiciel pour obtenir l'effet d'inscription des "règles" de bienvenue a zombieland
    Par Maxx70 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 09/09/2011, 23h13
  4. Graph "courbe" dans une representation log-log
    Par VauRDeC dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 24/06/2010, 14h53
  5. le programme de calcul en temps partagé pour PC:"mindmodeling" de BOINC!!!
    Par invite47e0ec41 dans le forum Psychologies (archives)
    Réponses: 0
    Dernier message: 08/12/2008, 23h35