Bonjour, pas moyen de trouver un câblage qui fonctionne! merci d’avance de m’indiquer les bonne connexions ou de me communiquer un schéma qui fonctionne… Le projet inclu un ArduinoUNO, 2 moteurs pas à pas Nema17 de 20mm avec leur driver TMC 2209. Ensuite j’espère parvenir à entrainer ces 2 moteurs pour piloter une bille dans une sorte de bac à sable. Genre https://makerworld.com/fr/models/841332-dune-weaver-a-3d-printed-kinetic-sand-table#profileId-787553
certes, merci mais j’ai beaucoup cherché et je n’ai pas trouvé le bon exemple! la plupart présentent des montages chatgpt où les couleurs des cablages sont fantaisistes et souvent pour justement exposer leur difficulté à les faire fonctionner! donc je tourne en rond! par exemple sur ce site: Interfaçage TMC2209 Conducteur de moteur pas à pas avec Arduino Uno - Direction de base et contrôle de pas j’ai fait le même câblage et le même code mais je n’obtiens qu’un léger sifflement dans le moteur… il n’est pas mentionné s’il faut une alimentation séparée pour le moteur, c’est bizarre!
Bonjour nonjef
C'est en fait assez simple de décider du câblage, avec un ohmmètre, tu repères les bobinages que tu connectes, le premier sur A2 et A1 et l'autre B1 et B2, si ton moteur tourne mal, tu croises B1 et B2 ou A2 et A1.
Tu peux aussi chercher des exemples pour A4988, c'est le même câblage et ils sont échangeables.
Bonne journée
jpbbricole
Malheureusement, chatGPT ne remplacera jamais le travail personnel préparatoire.
J'insiste sur les mots "travail" et "préparatoire".
As-tu cherché des tutos sur les moteurs pas à pas ?
As-tu lu de la documentation sur le circuit intégré TMC 2209 ?
As-tu utilisé l'excellant tuto eskimon.fr ?
A cette adresse tu trouvera des explications :
L'article date un peu, les circuits intégrés utilisés sont dépassés, mais l'essentiel sur le fonctionnement est toujours vrai.
Si tu fais ce travail préparatoire, les recherches sur internet et même sur l'IA seront bien plus profitables.
Il faudra régler le courant dans le TMC2209.
Un fichier "excel" est fourni par Analog Devices, le créateur du TMC2209, voir le site https://www.analog.com/en/products/TMC2209.html .
Probablement qu'il faudra connaître les paramètres du moteur et l'indication Nema 17 n'en donne aucun.
Nema 17 veut simplement dire que la platine de fixation est un carré de 1,7 pouce de côté.
Il faut la référence exacte qui est marquée sur l'étiquette du moteur pour connaitre sa tension d'alimentation, son courant, etc
<parenthèse>
A titre totalement personnel, chat GPT n'est pas le plus qualifié, j'utilise perplexity qui donne de meilleures réponses : c'est un choix personnel).
</parenthèse>
Ce sont des Toranysadecegumy 17HS08-1004S - 12volts, Nema17 bipolaire 4,2x4,2x2cm 4fils,
Avec la référence on trouve que c'est un pas à pas de chez "Stepper on line" et de caractéristiques (extrait) :
----------------------------------------------------------
-------------------------------------------------------------------------
Attention les moteurs sont commandés en courant et non pas en tension.
Ce qui veux dire que le TCM2209 s'occupera de gérer le courant qui va bien pour faire des micros pas, tu n'auras rien à faire de ce côté là.
Simplement la mention "1A 3,5 V" veut dire que le courant max est de 1 A et que sous 1 A la tension aux bornes sera 3,5 V et donc qu'il faut choisir une alimentation en conséquence.
comme il faut des marges je prendrai une alimentation 2A 5V.
C'est l'un ou l'autre! C'est peut être mal indiqué, par exemple un moteur 1A qui peut être alimenté par un driver qui lui est alimenté en 12V.
Pas d'accord. C'est un moteur alimenté en courant et le moteur est alimenté au travers du driver. On peut très bien alimenter le driver avec des tension supérieures pour permettre des vitesses plus élevées.
Je ne connais pas le TMC2209, mais dans la doc on peut voir:
Et une alimentation de 5V semble ne pas convenir. Avec un A4988, c'est au moins 7,5V.
Une alim 12V conviendrait mieux, à vérifier, plus si on veut des vitesses élevées.
Pour le choix de la puissance, je n'ai vu nulle part comment la choisir. Les essais que j'ai fait avec des A4988 montre qu'il faut 3 fois la puissance du moteur. Avec un moteur 1A/3,5V soit 3,5W il faudrait une alim de 10W, par exemple 12V/1A ou 24V/500mA.
Maintenant si il s'agit de moteurs 12V, toujours en 3,5W (la puissance dépend surtout de la taille du moteur), il faut une alim par exemple de 12V/400mA. Un moteur alimenté en tension n'aura pas un courant supérieur au courant nominal.
Dans tous les cas, sous alimenter un pas à pas diminue le couple maximum utilisable, et diminue l'échauffement ce qui prolonge la durée de vie. Si on a besoin de moins de couple que le maximum, autant diminuer l'alimentation, ce qui est facile pour un moteur alimenté en courant avec un réglage. Si le réglage est trop bas, le moteur décroche.
Bonjour Olivier,
Je ne sais pas où tu as vu une alim de 12 V avec ce moteur. À une exception près (Amazon) je n'ai jamais vu de tension de 12 V, mais toujours 3,5 V.
Il serait anormal de trouver deux tensions de service avec la même référence produit.
Je crois à une erreur sur Amazon.
Dans la datasheet analog Devices, première page, paragraphe "Features and Benefits", je lis :
"Voltage Range 4.75… 29V DC"
On ne va pas ergoter, il y a bien à un autre endroit dans cette même datasheet où on peut lire Vmin = 5,5 V.
Donc effectivement prendre une tension de 6 V serait plus confortable.
Tout baisse, même chez Analog Devices.
Il est possible de voir dans la datasheet que la résistance nominale des enroulements est de 3,5 ohms.
Donc 1A dans 3,5 ohms donnera U = RI = 3,5 V.
Par contre, je ne suis pas d'accord avec ce principe :
Si l'utilisateur respecte les limites spécifiées par le constructeur du moteur, c'est-à-dire dans le cas présent 1 A, comme les bobinages ont une résistance de 3,5 ohms, la tension aux bornes du moteur ne pourra pas dépasser 3,5 V quelle que soit la tension d'alimentation du TMC 2209.
Je ne dis pas que ce que tu dis est impossible.
Je dis que pour faire ce que tu dis, il faut régler le TMC2209 pour lui faire débiter un courant supérieur à 1 A et donc se mettre hors des spécifications du moteur.
Ça je ne le ferai pas avec quelqu'un qui visiblement ne connait pas les moteurs pas à pas.
Vu la tournure de la description du matériel imposé, je pense à un sujet pour bac STI2D.
Les feuilles des arbres tombent en novembre.
Les feuilles des sujets pour le bac tombent en décembre.
bon, avec ce code:
je suis parvenu à faire tourner un moteur dans un sens puis dans un autre, mais il a fallu du 12v , sinon ça ne bouge pas! Par rapport au câblage ci-dessous j’ai donc séparé l’alimentation avec VDD12v et VS5v, le code que j’indique après fonctionne. Reste à le travailler…
/*
Code pour Bolasable JF Scalbert
*/
// Pin Definitions
#define EN_PIN 8 // LOW: Driver enabled, HIGH: Driver disabled
#define STEP_PIN 9 // Step on the rising edge
#define DIR_PIN 10 // Set stepping direction
int noOfSteps = 4000; // Number of steps to move in each direction
int microSecondsDelay = 500; // Delay in microseconds between each step
void setup() {
// Configure pin modes
pinMode(EN_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
pinMode(DIR_PIN, OUTPUT);
// Initialize pin states
digitalWrite(EN_PIN, LOW); // Enable the driver
digitalWrite(DIR_PIN, LOW); // Set initial direction
}
void loop() {
// Move motor in one direction
digitalWrite(DIR_PIN, LOW); // Set direction to LOW
moveSteps(noOfSteps);
// Move motor in the opposite direction
digitalWrite(DIR_PIN, HIGH); // Set direction to HIGH
moveSteps(noOfSteps);
}
void moveSteps(int steps) {
for (int i = 0; i < steps; i++) {
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(microSecondsDelay);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(microSecondsDelay);
}
}
Bonjour nonjef
C'est du sport de faire fonctionner un MPAP "à la main"
, mais pour un programme ambitieux comme le tien pourquoi ne pas utiliser, dès le départ une bibliothèque comme AccelStepper, ça te facilite bien les choses. Cette bibliothèque a un complément MultiStepper qui permet de coordonner plusieurs MPAP ce qui est une aide pour faire du graphisme.
Si tu persistes à faire à la main, sache qu'il n'est pas nécessaire de faire du carré:
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(microSecondsDelay);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(microSecondsDelay);
une impulsion de 20 microSecondes suffit, ça laisse plus de lattitude voir de "temps libre" entre les impulsions.
Mais, avec cette méthode, tu va galérer à faire de beaux dessins ![]()
Cordialement
jpbbricole
je vais probablement utiliser accelstepper, je le connais un peu grâce à cette réalisation auquel tu avais participé muzemu.fr
Dans le post#6
Maintenant c'est possible que cela vienne d'Amazone...
Ben si justement, et c'est tout l'intérêt de l'alimentation en courant. Si le TMC est alimenté en VAlim, quand on alimente un enroulement, tant que le courant de consigne n'est pas atteint, les transistors du driver sont passant et on met aux bornes du moteur VAlim. Quand le courant est atteint, on coupe toute l'alimentation (0 volts). Le courant décroit alors et on remettra plus tard le jus. En moyenne sur la partie résistive de l'enroulement, on va trouver une tension de 3,5V par exemple, mais l'inductance de l'enroulement va absorber le reste.

Notamment si on veut faire passer 1A, on peut:
− mettre le moteur sous 3,5V, mais la montée du courant est faible
− l'alimenter en 12V ou 24V, dans ce cas les 1A seront atteints 4 ou 10 fois plus vite.
Quand on demande des vitesses élevées, il faut par conséquent forcer le courant à passer et mettre des tensions plus importantes. C'est pour cela que les datasheet des moteurs pour ce type de moteur donne les courbes pour 12V et 24V, même si le moteur est un 3,45V. D'ailleurs souvent la tension du moteur n'est pas indiqué.
Bonsoir nonjef
Attention avec le driver TMC2209, il est, par défaut, en 1/8 de pas.
Tu as déjà une idée de programme(s) pour réaliser ces dessins?
A+
jpbbricole
voici le lien vers ma future traceuse de sable: https://www.youtube.com/watch?v=uOqlbAB1IZE&list=PLOdQxgDiA5SIuEHl5Z1Vw-eLI2R-c99bL&index=10 Comme vous pouvez le voir et l’entendre, il y a collision au niveau de l’axe “crémaillère” et de son pignon (Moteur A), normalement cela devrait permettre de définir le point zéro au centre (Homing) en se passant de “contact fin de course”. Je n’invente rien avec ce concept, on peut voir l’équivalent ici: https://www.youtube.com/watch?v=bsmrAEKMkq4&t=764s et là https://www.youtube.com/watch?v=HScvCN_WQUM&t=55s, cependant je n’ai pas trouvé de code qui fonctionne. L’idée, je suppose, c’est de faire tourner la couronne (Moteur B) jusqu’à parvenir à cette collision en désactivant le moteur A pour qu’il puisse être entraîné sans résistance…


