IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Stepper Leslie - Nema 17 & TMC 2209


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité de passage
    Homme Profil pro
    Ebeniste
    Inscrit en
    Septembre 2025
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ebeniste
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2025
    Messages : 4
    Par défaut Stepper Leslie - Nema 17 & TMC 2209
    Bonjour tout le monde !

    Je me permet de poster car je suis bloqué dans la réalisation d'un projet.
    (J'ai déjà fait pas mal de recherche et j'ai bien vu qu'un topic récent parlait du Nema 17 etc, mais malheureusement cela ne m'aide pas pour mon cas...)
    Premier point un peu rebutant, je débute en Arduino... et mes seules expériences en électroniques, c'est des réparations plutôt simples et de la soudure d'électro-aimant en série dans le cadre de mon travail (je suis facteur d'orgue).
    Bref, depuis 1 ans je travail sur un projet dans le cadre d'un concours de métier d'art, qui est de fabriquer une cabine Leslie. Voici un aperçue de la pièce pour les plus curieux :
    Nom : IMG_3175.jpg
Affichages : 166
Taille : 300,6 Ko
    A l'intérieur je vais donc intégrer une cabine Leslie, cependant je doit remplacer les moteur d'origine (beaucoup trop imposant) par des moteur beaucoup plus miniaturisé et contrôlé par Arduino, et par MIDI dans l'idéal. Par chance un vidéaste que je suis régulièrement a réalisé un projet similaire, voici mon inspiration :

    La vidéo ne détail cependant pas grand chose, de même sur son patreon...

    Cependant j'ai acheté les composants nécessaire suivant :
    - Nema 17 42SHD0001-24B
    - Driver TMC2209 v2.0 de chez WANGCL
    - Arduino nano

    Mon premier problème ici, c'est de faire tourner le moteur a une vitesse raisonnable pour la cabine Leslie, donc un minimum rapide. Chose que je n'arrive pas, le moteur décroche dès que je met une valeur en dessous de 200 pour le "delayMicroseconds(x)".
    La vitesse actuelle est vraiment lente et de ce que je vois sur des projets fonctionnel, c'est un moteur qui peut tout de même atteindre de vitesse assez hautes, c'est sur ce point que je bloque.

    J'ai réaliser des test/recherches et j'a branché de la manière suivante :

    - 24V alimentation moteur VM (J'ai l'impression que Look Mom No Computer, l'alimente en 15V, mais de ce que j'ai compris avec 24V je pourrais - obtenir des vitesses plus rapides)
    - 5V alimentation logique VDD/VIO (5V arduino)
    - GND commun et connecté à EN (pour activer le driver)
    - STEP pin D9
    - DIR pin D7
    - Branchement du Nema 17 (je ne me suis pas trompé dans les phases, c'est déjà un problème auquel j'ai fait face)
    - MS1 et MS2 sont sur GND pour être en Full Step pour plus de vitesse et de couple (le microstep n'est pas vraiment utile dans ce cas, cela limite la vitesse, je n'ai pas l'impression que c'est utilisé par Look Mom No Computer non plus )

    J'alimente tout avec une alim SPS-3010N 0-30V 0-10A (j'ai fait un essais sans le limiteur d'ampérage, mais cela ne vient pas de la)
    J'ai fait divers essais avec la Vref, avec la formule fournie et sans, cela n'as pas vraiment d'impact, j'ai l'impression.

    Après plusieurs recherches je suis un peu face a un mur, je ne sais pas si cela vient de mes branchements, de mes composants ou de mon code qui est simplement un test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // pin connections
    const int dirPin = 7; // direction pin
    const int stepPin = 9; // step pin
     
    void setup() {
      pinMode(dirPin, OUTPUT);
      pinMode(stepPin, OUTPUT);
      // set direction of rotation to clockwise
      digitalWrite(dirPin, HIGH);
    }
     
    void loop() {
      // take one step
      digitalWrite(stepPin, HIGH);
      delayMicroseconds(200);
      // pause before taking next step
      digitalWrite(stepPin, LOW);
      delayMicroseconds(200);
    }
    Je vous met en photo mon montage actuel :

    Nom : Capture d'écran 2025-09-23 231746.png
Affichages : 166
Taille : 894,9 Ko

    Et celui de Look Mom No Computer :

    Nom : Screen LMNC.png
Affichages : 163
Taille : 936,8 Ko

    Voila, je ne sais pas trop ou donner de la tête car chacun des tutos que j'ai vu sur le web a une façon différence de procéder, entre les libraires Arduino AccelStepper, le mode UART et toutes les spécificité du TMC2209, tout cela est un peu flou pour moi. C'est surement un peu compliqué comme projet pour débuter, mais j'ai des délais un peu court pour finir ma pièce, c'est aussi une des raisons pour laquelle je lance cette bouteille a la mer.
    J'ai essayer de donner le plus d'infos possible plus qu'a espérer qu'une âme charitable puisse prendre le temps de me donner quelques pistes !
    En attendant je repars faire mes recherches

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 129
    Par défaut
    Hello,

    J'y connais pas grand chose à ces composants, mais au code oui !

    Tu demandes au rotor de ton moteur pas à pas de passer d'une vitesse nulle à une vitesse angulaire élevée, c'est comme si tu voulais démarrer une voiture avec la 5ème vitesse. Tu ne prends pas en compte l'inertie...

    J'ai regardé ta lib AccelStepper et je pense que c'est exactement ce qu'il te faut -> https://www.pjrc.com/teensy/td_libs_AccelStepper.html
    Tu as setAcceleration qui te permet de configurer la rapidité avec laquelle le moteur atteint une certaine vitesse que tu dois aussi configurer avec setMaxSpeed

    Je me suis un peu documenté aussi sur tes composants, je pense que le code seul n'est pas le seul et unique argument pour résoudre ton problème.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre Expert
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 95
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 704
    Par défaut
    Salut,

    À toutes fins utiles voici un article assez intéressant et plutôt complet sur les moteurs pas à pas en contexte arduino.
    -> https://howtomechatronics.com/tutori...ltimate-guide/ (via https://duckduckgo.com/)

    J'ai parcouru un peu la vidéo, et je me demande si un servomoteur ferait mieux que le p. à p., notamment en termes de souplesse et temps de réaction.

    Citation Envoyé par Backel Voir le message
    Mon premier problème ici, c'est de faire tourner le moteur a une vitesse raisonnable pour la cabine Leslie, donc un minimum rapide. Chose que je n'arrive pas, le moteur décroche dès que je met une valeur en dessous de 200 pour le "delayMicroseconds(x)".
    La vitesse actuelle est vraiment lente et de ce que je vois sur des projets fonctionnel, c'est un moteur qui peut tout de même atteindre de vitesse assez hautes, c'est sur ce point que je bloque.
    Je n'ai pas regardé la datasheet de ton nema, mais il me semble que leurs vitesses max tournent autour des 1800 rpm, soit 30tours*200 pas par seconde, c'est-à-dire 166 microsecondes par pas. Avec tes 200 microsecondes d'intervalle, tu es à 1500 rpm, donc peut-être, déjà au max.

    Après si tu as l'impression d'une plus grande vitesse sur d'autres projets, c'est certainement à cause du rapport de démultiplication pignon/roue. On le voit aussi sur la fin de la vidéo, ce n'est plus le même petit pignon qu'au départ.

  4. #4
    Invité de passage
    Homme Profil pro
    Ebeniste
    Inscrit en
    Septembre 2025
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ebeniste
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2025
    Messages : 4
    Par défaut
    Merci pour tout vos retour !

    J'ai avancé de mon coté et je suis notamment en contact avec Look Mum No Computer via son patreon, on essaie de résoudre le problème en parallèle de ce post.
    Donc j'ai testé plusieurs choses, j'ai connecté un potentiomètre, fait des test avec des rampes etc.. sans succès.
    J'ai revérifié les branchement moteur, tenté de le faire fonctionner avec le mode UART pour les options StealthChop et SpreadCycle (sans succès, je n'ai pas réussi a l'activer)
    Le moteur continue de décrocher a vide, j'ai notamment calculé ma vitesse max en comptant le nombre de tour minute avec un scotch sur l'axe, je suis a 92, ce qui est bien loin des 1500 RPM

    Je me suis rendu compte aussi que dans sa vidéo il montre un premier moteur a 6 broches (avec que 4fils de connecté pour être en mode bipolaire) c'est ce genre de modèle que j'ai ici

    Et plus tard dans la vidéo il a un moteur avec directement 4 fils :
    https://www.amazon.com.be/Nema-Moteu.../dp/B0CLJ68BFW

    Donc je les ai commandé (au pire cela servira toujours), ainsi que les même TMC2209 que dans sa vidéo :
    https://www.amazon.fr/Youmile-pilote...1zcF9hdGY&th=1

    Il m'as aussi parlé de ce modèle de carte :
    https://thepihut.com/products/arduin...oaAqU-EALw_wcB
    Sachant que je n'ai pas une version officiel d'arduino Nano, je sais pas si cela pourrait venir de ça ?
    J'ai plus l'impression que cela viens de mon driver ou moteur, je sais plus trop quoi essayer a pars d'autres composants..

    Pour le servo moteur, il en utilise un de base dans son projet de vibraphone MIDI, sauf que c'est trop bruyant, c'est pour cela que le Nema 17 et le TMC2209 semblent vraiment bien pour ce projet, puis même si cela n'est pas super réactif, l'effet d'accélération et décélération est aussi un peu recherché. Je ne suis pas trop a ces détails près, l'idée c'est de faire un truc qui tourne "comme une leslie" et je peaufinerais quand j'aurais plus d'expérience !
    Enfin la remarque sur la démultiplication entre les pignons est très pertinente, j'ai fait un essai et même avec 92RPM avec une poulie un peu grande cela atteint une vitesse proche de la Leslie, mais plus en vitesse lente je dirait malheureusement
    D'ailleurs je pense être quand même limité en place dans mon projet, donc je pourrais mettre une poulie plus grand mais il faut que je regarde quel point j'ai de l'espace

    Je vous tiens au courant pour la suite, encore merci pour vos retours !!

  5. #5
    Membre Expert
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 018
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 018
    Par défaut
    Bonjour Backel
    Citation Envoyé par Backel Voir le message
    Bonjour tout le monde !
    - MS1 et MS2 sont sur GND pour être en Full Step
    C'est de là que provient la lenteur, MS1 et MS2 à GND, c'est 1/8 de pas
    L'info page 14
    Une entrée en l'air est à GND du fait de résistances internes PULLDOWN, page 9.

    Dans ton programme, tu gère l'impulsion positive et la négative, ce n'est pas nécessaire, ne gère que la négative et fixe la positive à 20 microsecondes, c'est le driver qui assure la mise en forme.
    Ainsi, pour régler la vitesse, il suffit de régler l'impulsion basse.

    Je t'ai modifié le programme de telle faç0n que tu puisses introduire la valeur de l'impulsion basse depuis la console, à 115200.
    Au départ l'impulsion basse est à 1500, ce qui correspond à ~ 200 tours/minute.
    Le programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    // pin connections
    const int dirPin = 7; // direction pin
    const int stepPin = 9; // step pin
     
    int timeLow = 1500; // Impulsion basse, 1500 evec microsteps = 8 ~ 200 tours/minute
    const int timeHigh = 20;
    const int microSteps = 8;
     
    void setup() 
    {
    	Serial.begin(115200);
    	pinMode(dirPin, OUTPUT);
    	pinMode(stepPin, OUTPUT);
    	// set direction of rotation to clockwise
    	digitalWrite(dirPin, HIGH);
    }
     
    void loop() 
    {
    	if (Serial.available())
    	{
    		timeLow = Serial.readStringUntil('\n').toInt();
    		Serial.println("timL: " + String(timeLow));
    	}
    	// take one step
    	digitalWrite(stepPin, HIGH);
    	delayMicroseconds(timeHigh);
    	// pause before taking next step
    	digitalWrite(stepPin, LOW);
    	delayMicroseconds(timeLow / microSteps);
    }
    J'ai essayé en vrai, ça fonctionne.

    Celà dit, faire tourner un Leslie avec un moteur pas à pas, c'est du luxe, mais comme tu as déjà le marériel

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  6. #6
    Invité de passage
    Homme Profil pro
    Ebeniste
    Inscrit en
    Septembre 2025
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ebeniste
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2025
    Messages : 4
    Par défaut
    Incroyable merci beaucoup pour ton retour et les infos que tu viens de m'apprendre !

    Du coup je reste en 1/8 car il n'y a pas d'option fullstep si j'ai bien compris
    J'ai essayé ton code, le serial monitor fonctionne bien et je peu tester différentes vitesses, cependant mon moteur vibre quand même, dès lors que j'essaie ton code
    J'ai vraiment l'impression que le cablage de mon moteur est foireux, j'arrive pas a comprendre de manière méthodique...
    Sur ma carte TMC 2209 j'ai les pin mis dans cet ordre :
    GND / VDD / 1B / 1A / 2A / 2B / GND

    Sur mon moteur il est indiqué :
    A+ : Red
    A- : Blue
    B+ : Green
    B- : Black

    J'ai aussi testé au multimetre, j'ai 2.5 Ohms entre Red et Blue, puis pareil entre Green et Black, donc mes 2 bobines respectives..
    Si je suis les logiques des cablage, mes fils devrai se croiser :
    1B --> Bleu
    1A --> Noir
    2A --> Vert
    2B --> Rouge

    Sauf que ce montage ne marche pas, le moteur vibre
    Sur mes montage precedent, ou je n'arrive seulement a 92RPM, j'ai branche de la manière suivante :
    1B --> vert
    1A --> bleu
    2A --> noir
    2B --> Rouge

    Ce qui n'est theoriquement pas logique ?? mais bizarrement cela fonctionnait, j'avais du couple et quand j'inverser les 2 bobines, le moteur changeais de sens

    Donc j'ai l'impression que mon probleme viens aussi beaucoup de la.. Si quelqu'un a une idée ? Cela semble vraiment basique pourtant la
    Je vais continuer mes essais avec ton code et différents branchement du coup, encore merci !

  7. #7
    Invité de passage
    Homme Profil pro
    Ebeniste
    Inscrit en
    Septembre 2025
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ebeniste
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2025
    Messages : 4
    Par défaut
    Ok j'ai fais quelques essais avec ton code, a vide quand je met une valeur en dessous de 2000 environ, ça vibre..
    Par contre sur mon montage Leslie avec le poids et une poulie assez grande sur le moteur et petite au niveau du horn aigu, j'arrive a le faire tourner a une vitesse cohérente pour une Leslie en vitesse rapide je suis a 3600 avec ton code, en dessous cela décroche, je dois aussi pousser le moteur a 28V. J'ai quelque chose de fonctionnel mais un peu bancal j'ai l'impression.
    Je vais recalculer mon Vref et faire d'autres test en attendant

  8. #8
    Membre Expert
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 95
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 704
    Par défaut
    Salut,

    Tu étais à 92 rpm quand même, ah oui, là passage par la datasheet obligatoire.

    Après pour le code, tu peux essayer en remplaçant tes deux lignes de delais par delayMicroseconds(timeLow);, tu commences à 250 par exemple, et tu descends.

    Pour le montage, regarde la page en lien dans mon message précédent.
    Il y en a un qui favorise la vitesse (half coil) et un autre le couple (full coil).
    Voici le schéma électrique de ton nema si tu en as besoin: https://www.all-electronics-online.c...3d-printer.jpg

Discussions similaires

  1. [FLASH MX2004] Utilisation du Numeric Stepper
    Par sovitec dans le forum Flash
    Réponses: 2
    Dernier message: 05/07/2005, 17h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo