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

  1. #1
    Invité de passage
    Homme Profil pro
    Ebeniste
    Inscrit en
    Septembre 2025
    Messages
    6
    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 : 6
    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 : 300
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 : 301
Taille : 894,9 Ko

    Et celui de Look Mom No Computer :

    Nom : Screen LMNC.png
Affichages : 297
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 573
    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 573
    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
    729
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 95
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 729
    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
    6
    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 : 6
    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 019
    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 019
    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
    6
    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 : 6
    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
    6
    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 : 6
    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
    729
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 95
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 729
    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

  9. #9
    Membre Expert
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 019
    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 019
    Par défaut
    Bonjour Backel

    Comme le fait remarquer @fred1599, il faut tenir compte de l'inertie du leslie au démarrage et à l'arrêt.

    Avec le programme "simple", ça risque d'être trop brusque.

    Pour utiliser une accélération, pour simplifier, il faut passer par une bibliothèque comme AccelStepper, qui a cette option.

    En collaboration avec l'IA, j'ai "étoffé" le programme de test.
    Toujours via la console, il comprend ces commandes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    === Commandes moteur (Non sensible à la casse)
    Start   -> Démarrage moteur progressif (accélération)
    Stop    -> Arrêt progressif (décélération)
    Halt    -> Arrêt instantané
    RPMxxx  -> Régler la vitesse en RPM (ex: RPM150)
    ACCxxx  -> Régler l'accélération (ex: ACC400)
    DIR     -> Inverser le sens de rotation progressif
    HELP    -> Afficher la liste des commandes
    ================================
    Le sketch:
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
     
    /*
    Name:       ARDDEV_StepperLeslieTool.ino
    Created:	26.09.2025
    Author:     jpbbricole/IA
    Remarque:	Pour régler les paramètres d'un moteur pas à pas.
    https://www.developpez.net/forums/d2179445/general-developpement/programmation-systeme/embarque/arduino/stepper-leslie-nema-17-tmc-2209-a/#post12097174
    */
    #include <AccelStepper.h>
     
    // Définition des broches
    const int dirPin = 7; // direction pin
    const int stepPin = 9; // step pin
     
    // Création de l'objet AccelStepper
    AccelStepper stepper(AccelStepper::DRIVER, stepPin, dirPin);
     
    // Variables de contrôle
    bool motorRunning = false;
    float targetRpm = 150.0;      // en RPM
    float acceleration = 400.0;   // en steps/s^2
    bool directionForward = true;  // sens de rotation
     
    // Constantes pour la conversion
    const int stepsPerRev = 200;      // moteur Nema17 classique
    const int microsteps = 8;         // micro-pas fixés sur le TMC2209
    const int stepsPerRotation = stepsPerRev * microsteps;
     
    void setup()
    {
    	Serial.begin(115200);
     
    	stepper.setMaxSpeed(rpmToStepsPerSecond(targetRpm));
    	stepper.setAcceleration(acceleration);
     
    	helpDisplay();
    }
     
    void loop()
    {
    	// Vérification des commandes série
    	if (Serial.available() > 0)
    	{
    		commandExecute(Serial.readStringUntil('\n'));
    	}
     
    	// Gestion du moteur
    	if (motorRunning || stepper.isRunning())
    	{
    		if (motorRunning && stepper.distanceToGo() < 1000)
    		{
    			stepper.moveTo(stepper.currentPosition() + 1000000L);
    		}
    		stepper.run();
    	}
    }
     
    // Exécution des commandes moniteur
    void commandExecute(String command)
    {
    	command.trim(); // Nettoyage de la commande
    	command.toUpperCase(); // Tout en majuscules
    	command.replace(" ", ""); // Suppression des espaces
     
    	if (command == "START")
    	{
    		motorRunning = true;
    		setStepperSpeed();
    		stepper.moveTo(stepper.currentPosition() + 1000000L);
    		Serial.println("Moteur démarré.");
    	}
    	else if (command == "STOP")
    	{
    		motorRunning = false;
    		stepper.stop();
    		Serial.println("Moteur en décélération...");
    	}
    	else if (command == "HALT")
    	{
    		motorRunning = false;
    		stepper.setCurrentPosition(stepper.currentPosition());
    		stepper.moveTo(stepper.currentPosition());
    		Serial.println("Moteur stoppé immédiatement !");
    	}
    	else if (command.startsWith("RPM"))
    	{
    		String valueStr = command.substring(3);
    		float newRpm = valueStr.toFloat();
    		if (newRpm > 0)
    		{
    			targetRpm = newRpm;
    			setStepperSpeed();
    			Serial.print("Nouvelle vitesse: ");
    			Serial.print(targetRpm);
    			Serial.println(" RPM");
    		}
    	}
    	else if (command.startsWith("ACC"))
    	{
    		String valueStr = command.substring(3);
    		float newAcc = valueStr.toFloat();
    		if (newAcc > 0)
    		{
    			acceleration = newAcc;
    			stepper.setAcceleration(acceleration);
    			Serial.print("Nouvelle accélération: ");
    			Serial.println(acceleration);
    		}
    	}
    	else if (command == "DIR")
    	{
    		if (motorRunning)
    		{
    			stepper.stop();
    			while (stepper.isRunning())
    			{
    				stepper.run();
    			}
    		}
     
    		// Inverser la direction
    		directionForward = !directionForward;
    		stepper.setPinsInverted(!directionForward, false, false);
     
    		Serial.print("Sens de rotation inversé. ");
    		Serial.println(directionForward ? "Avant" : "Arrière");
    		// Repartir dans le nouveau sens si le moteur était en marche
    		if (motorRunning)
    		{
    			setStepperSpeed();
    			stepper.moveTo(stepper.currentPosition() + 1000000L);
    		}
    	}
    	else if (command == "HELP")
    	{
    		helpDisplay();
    	}
    	else
    	{
    		Serial.println("Commande inconnue: " + command);
    	}
    }
     
    // Conversion RPM -> steps/s
    float rpmToStepsPerSecond(float rpm)
    {
    	return (rpm * stepsPerRotation) / 60.0;
    }
     
    // Définir la vitesse du moteur en fonction du sens
    void setStepperSpeed()
    {
    	float speed = rpmToStepsPerSecond(targetRpm);
    	stepper.setMaxSpeed(directionForward ? speed : -speed);
    }
     
    void helpDisplay()
    {
    	Serial.println("=== Commandes moteur (Non sensible à la casse)");
    	Serial.println("Start   -> Démarrage moteur progressif (accélération)");
    	Serial.println("Stop    -> Arrêt progressif (décélération)");
    	Serial.println("Halt    -> Arrêt instantané");
    	Serial.println("RPMxxx  -> Régler la vitesse en RPM (ex: RPM150)");
    	Serial.println("ACCxxx  -> Régler l'accélération (ex: ACC400)");
    	Serial.println("DIR     -> Inverser le sens de rotation progressif");
    	Serial.println("HELP    -> Afficher la liste des commandes");
    	Serial.println("================================");
    }
    Pour la transmission, tu as déjà prévu quelque chose?
    Pour ce qui est de l'interfaçage Midi, ce devrait être possible, mais je n'ai pas de matériel pour essayer, aurais-tu un émulateur sur PC à me proposer?

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

  10. #10
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 573
    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 573
    Par défaut
    @jpbbricole,

    Merci et comme je l'avais aussi dit précédemment, il y a d'autres configs, calculs, etc... à effectuer ! J'ai pas étudié longtemps le sujet, mais il me semble qu'on a pas tout les tenants et aboutissants pour vraiment aider l'auteur du post. Il faudrait nous préciser les calculs effectués, les réglages et le code modifié... sans ces détails, on part à tâtons.
    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)

  11. #11
    Invité de passage
    Homme Profil pro
    Ebeniste
    Inscrit en
    Septembre 2025
    Messages
    6
    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 : 6
    Par défaut
    Alors bonne nouvelle, j'ai reçu mes nouveaux TMC2209 et moteur, bah ça fonctionne... et je crois bien que cela vient des mes anciens TMC2209 qui je ne sais pour quelle raison faisait que le moteur decrochait facilement ??
    J'arrive a descendre a une valeur de 1400 avec tout mon montage (en augmentant progressivement la vitesse bien-sur et pour la vitesse a vide j'ai l'impression d'etre 2 fois plus rapide, donc environs 200tours minute comme prévu
    Pour ce qui est du MIDI je ne me suis pas encore penché dessus, je pense faire cette options beaucoup plus tard dans mon projet, dans l'idée pour l'instant j'aimerais faire fonctionner mon moteur avec l'ancienne pedale de la cabine leslie et de simplement avoir les 2 boutons d'origines un on/off et l'autre rapide/lent
    Mais si cela t'interesse quand même je peu regarder pour un logiciel simulant le MIDI, je sais que sur Ableton par exemple il est pas necessaire d'avoir un clavier MIDI pour composer, le clavier de l'ordinateur peut faire office de clavier MIDI.
    Il y a 2 types de boutons (un qui laisse ou non passer le courant) et un autre qui permute entre 2 pair de broches ( donc 4 broches), désolé je ne me rappel plus des termes techniques de ces boutons c'est un peu catastrophique... Ce sont des boutons style "pédale de guitare electrique"
    De base cela fonctionne avec du 230V, donc pour l'instant j'ai tout retiré et je vais essayer de cabler ça pour l'arduino, sachant que dans ma gaine (de la pedale d'origine j'ai 3 cables) je vais essayer de reflechir a un montage, c'est quelque chose de très basique j'imagine mais comme dit j'ai jamais fait d'arduino..

  12. #12
    Invité de passage
    Homme Profil pro
    Ebeniste
    Inscrit en
    Septembre 2025
    Messages
    6
    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 : 6
    Par défaut
    Pour ce qui est du code avec la librairie AccelStepper, je vais regarder tout ça merci !
    Il me semblait que la librairie fonctionnait avec le mode UART mais je dois un peu tout confondre
    D'ailleurs il me semble que LookMumNoComputer met une rampe d'acceleration mais sans utiliser la libraire AccelStepper, cela serait quoi les avantage ?
    J'ai peur d'un peu trop compliquer le code et de me perdre dans des choses que je ne maitrise pas encore

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

    Informations professionnelles :
    Activité : ..

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

    La rampe c'est pour adapter la vitesse et l'accélération par rapport au montage mécanique,, il la peaufine jusqu'à obtenir un résultat satisfaisant et dans la mesure du possible.

    Un dernier mot pour la démultiplication et ton problème de manque de place. ça peut se résoudre avec une 3 ème roue intermediaire double (2 poulies solidaires, coaxiales et de diamètres différents), ça permet de réduire l"encombrement tout en conservant un même rapport de transmission.

Discussions similaires

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

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