Moteur pas à pas ne va pas à la vitesse demandée (à faible vitesse)
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Moteur pas à pas ne va pas à la vitesse demandée (à faible vitesse)



  1. #1
    Cyril33127

    Moteur pas à pas ne va pas à la vitesse demandée (à faible vitesse)


    ------

    Bonjour,

    Mon but est de modifier la vitesse d'un moteur pas à pas très légèrement pour compenser une erreur qui apparaît dans le système de transmission.
    Ce moteur pas à pas fonctionne à l'origine à une vitesse constante avec son système de commande.

    Pour modifier cette vitesse, je contrôle ce moteur pas à pas bipolaire 48 pas à l'aide d'Arduino et du composant L293D. J'utilise pour cela la bibliothèque <Stepper.h>.

    L'intérêt du moteur pas à pas est sa manière de fonctionner qui le rend très précis, notamment à faible vitesse. Il me semble donc qu'il ne nécessite aucun asservissement en position si on sait déjà la vitesse à laquelle il doit aller et que les perturbations sont négligeables. Je me trompe ?

    Or lorsque j'entre comme vitesse de consigne dans Arduino 60*0.1810 rpm (soit 0.181 tour/s) j'obtiens en sortie une vitesse d'environ 0.16 tour/s.
    A plus grande vitesse (1 tour/s par exemple), l'erreur est déjà moins grande mais quand même non nulle !
    Je ne comprend pas d'où cela peut-il venir, le signal électrique envoyé aux bobines étant normalement très précis...

    Pour finir, j'ai besoin de variations de vitesse de l'ordre de 0.001 tour/s, sachant que mon moteur doit aller à une vitesse de 0.1810 tour/s. Peut-on atteindre une telle précision ? Suis-je rêveur ? Etant donné le problème mentionné plus avant, je ne peux pas le vérifier expérimentalement..


    Merci

    -----

  2. #2
    PIXEL

    Re : Moteur pas à pas ne va pas à la vitesse demandée (à faible vitesse)

    as-tu vérifié la bonne fréquence du pilotage ? ( oscilloscope nécessaire)

  3. #3
    gienas
    Modérateur

    Re : Moteur pas à pas ne va pas à la vitesse demandée (à faible vitesse)

    Bonsoir Cyril33127 et tout,le groupe

    Citation Envoyé par Cyril33127 Voir le message
    ... lorsque j'entre comme vitesse de consigne dans Arduino 60*0.1810 rpm (soit 0.181 tour/s) j'obtiens en sortie une vitesse d'environ 0.16 tour/s ...
    Je conteste "l'opération" en gras.

    Je suppose de l'ordre de 10 tours par minute.

    Citation Envoyé par Cyril33127 Voir le message
    ... lorsque j'entre comme vitesse de consigne dans Arduino 60*0.1810 rpm (soit 0.181 tour/s) j'obtiens en sortie une vitesse d'environ 0.16 tour/s ...
    Le moteur est supposé faire un pas mécanique pour un pas électrique reçu, de manière rigoureuse. Quelle est la forme de la consigne?

    Si le résultat n'est pas convenable, c'est que Arduino ne fait pas ce que tu penses qu'il fait, ou que la commande électrique n'est pas la bonne, ou encore que la charge du moteur est trop forte et que le moteur manque des pas.

    C'est sûr que les contrôles oscilloscopiques proposés par PIXEL peuvent aider à vérifier l'aspect électrique (amplitudes et phases) des commandes des enroulements, mais c'est la fréquence qui détermine la vitesse.

  4. #4
    fdamien12

    Re : Moteur pas à pas ne va pas à la vitesse demandée (à faible vitesse)

    Citation Envoyé par gienas Voir le message
    Bonsoir Cyril33127 et tout,le groupe



    Je conteste "l'opération" en gras.
    Bonjour gienas,

    Et tu as bien raison de contester ! C'est d'ici que vient le problème.

    60*0.1810 = 10.86

    Toutefois, la valeur attendue par la fonction est entière (on travaille très très rarement avec des nombres flottants sur microcontrôleur). Du coup, c'est la partie entière 10 que traite la fonction.
    Ton moteur tourne donc avec la consigne 10 (je ne sais pas quelle est l'unité) au lieu de la consigne 10,86, soit 8,6% moins vite.

    D'où le comportement que tu annonces.

    Lorsque la vitesse augmente, l'écart diminue : c'est logique, il y a beaucoup plus d'erreur entre 5,5 et 5 qu'entre 100,5 et 100.

    Il faudrait modifier la librairie stepper pour faire des calculs avec des flottants par exemple, ou pour changer l'unité du paramètres (tu auras moins d'erreur en spécifiant un nombre entier en tours/min qu'en tours/s par exemple)

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

    Re : Moteur pas à pas ne va pas à la vitesse demandée (à faible vitesse)

    Merci pour vos réponses à tous !

    Pour ce qui est de la vérif avec oscillo, c'est à envisager en effet !

    Donc selon vous, Gienas et Blue Sn4ke, je dois en fait utiliser des nombres entiers. Modifier la bibliothèque Stepper.h me paraît compliqué, je vais regarder ça quand même.
    Si ça s'avère trop compliqué, la solution serait donc de créer la commande en PWM moi-même avec des ordres de commande en millisecondes...

    Ca m'étonne que cette bibliothèque limite tant la précision de la commande en tout cas !

  7. #6
    Cyril33127

    Re : Moteur pas à pas ne va pas à la vitesse demandée (à faible vitesse)

    Citation Envoyé par gienas Voir le message

    Le moteur est supposé faire un pas mécanique pour un pas électrique reçu, de manière rigoureuse. Quelle est la forme de la consigne?
    Mon code est le suivant:

    Code:
    #include <Stepper.h>
    
    const int NombredePasparTour= 48; //
    
    Stepper monMoteur(NombredePasparTour, 8,9,10,11);
    
    void setup() { 
    // Règle la vitesse à 60*0.18 rpm: 
    monMoteur.setSpeed(60*0.1810);
    }
    
    void loop(){
      monMoteur.step(48);
      }
     
    }
    Dernière modification par gienas ; 20/05/2015 à 21h00. Motif: Ajouté les balises code, obligatoires pour les programmes

  8. #7
    fdamien12

    Re : Moteur pas à pas ne va pas à la vitesse demandée (à faible vitesse)

    Essaie donc ça :

    Code:
    #include <Stepper.h>
    
    const int NombredePasparTour= 48/12; //
    
    Stepper monMoteur(NombredePasparTour, 8,9,10,11);
    
    void setup() {
    // Règle la vitesse à 60*0.18 rpm:
    monMoteur.setSpeed(60.0*12.0*0.1810); // valeur multipliée par 12 ici
    }
    
    void loop(){
    monMoteur.step(48);
    }
    
    }

  9. #8
    Cyril33127

    Re : Moteur pas à pas ne va pas à la vitesse demandée (à faible vitesse)

    Au premier essai, sur un échantillon de 5 minutes, je trouve une vitesse de rotation de..... 10.86 tour/min !!!

    Comment cette astuce peut-elle tant changer le résultat ?? On a encore entré un flottant pourtant ! EDIT: Ah non en multipliant par 12 on a augmenté d'un ordre 10 la consigne, ce qui implique que cette fois la troisième décimale de 0.181 est prise en compte !
    Dernière modification par Cyril33127 ; 20/05/2015 à 19h23.

  10. #9
    fdamien12

    Re : Moteur pas à pas ne va pas à la vitesse demandée (à faible vitesse)

    Tu as tout compris !

    On fait croire au programme que le moteur n'a pas 48 pas par tour, mais 4 (facteur 12).
    On lui dit ensuite de tourner 12 fois plus vite... ça compense.

    Mais le paramètre passé n'est plus 10,36, mais 130,32. Seule la valeur 130 est prise en compte, et là on a plus que 0,24% d'erreur...

    Si tu veux, tu peux même essayer de mettre 1 pas par tour et tu multiplies la consigne en vitesse par 48. Là tu obtiendras la précision maximale à savoir 0,054% d'erreur

  11. #10
    Cyril33127

    Re : Moteur pas à pas ne va pas à la vitesse demandée (à faible vitesse)

    Oui, encore mieux.
    Beh j'ai de la chance, j'obtiens tout juste la précision souhaitée de 0.001 tour/s avec cette astuce !

    Merci encore

  12. #11
    fdamien12

    Re : Moteur pas à pas ne va pas à la vitesse demandée (à faible vitesse)

    Si tu veux pousser le vice, et puisque t'es sur un Arduino, autant profiter du µC disponible.

    Tu peux mettre en consigne 130 pendant deux tiers du temps, et 131 le tiers qui reste (par exemple tu fais tourner pendant 10 secondes à la consigne 130, et 5 secondes à la consigne 131).

    En moyenne, tu les 15 secondes, la consigne aura été 130,33333333

  13. #12
    Cyril33127

    Re : Moteur pas à pas ne va pas à la vitesse demandée (à faible vitesse)

    Oui je vois. Merci !

Discussions similaires

  1. Moteur scie circulaire sur table tourne à faible vitesse ? [Résolu]
    Par fredbuch dans le forum Bricolage et décoration
    Réponses: 8
    Dernier message: 01/10/2014, 11h31
  2. Moteur asynchrone faible vitesse
    Par Beydir dans le forum Physique
    Réponses: 2
    Dernier message: 13/11/2013, 11h04
  3. [Blanc] Vibration moteur machine à laver à faible vitesse
    Par gouzou4 dans le forum Dépannage
    Réponses: 0
    Dernier message: 27/01/2011, 22h18
  4. générateur faible vitesse
    Par invitef67ea967 dans le forum Technologies
    Réponses: 1
    Dernier message: 20/06/2008, 09h02
  5. moteur tri: Petite Vitesse: OK, Grande Vitesse: pas OK, en sens inverse!
    Par invite96970a83 dans le forum Électronique
    Réponses: 3
    Dernier message: 26/03/2008, 13h18
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...