IMPORTANT! Ces différents Drivers n’ont AUCUN réglage d’usine. Le Réglage des Drivers pour Moteurs pas à pas Pololu A4988, DRV8825, DRV8824 et DRV4834, est donc une étape obligatoire dans la réalisation de votre machine CNC.
Introduction
Sans entrer dans les détails de fonctionnement d’un moteur pas à pas, qui sont très bien décrits dans de nombreux documents sur Internet, rappelons simplement le besoin d’envoyer des impulsions électriques de manière précise pour les piloter. Il est parfaitement possible de créer un circuit permettant de se passer du composant ”Driver” (Pilote, où Contrôleur, en Français), et de gérer directement le moteur depuis un Arduino. Pourtant, utiliser un composant/circuit dédié à cette tâche rend les chose (et le câblage) beaucoup plus simple et pratique. C’est là qu’interviennent les Drivers, et plus particulièrement les drivers Pololu, particulièrement bien adaptés aux machines CNC type fraiseuse “de bureau”, Imprimantes 3D et découpe à fil chaud.
Ces drivers ont tous en commun d’être destinés à piloter des moteurs pas à pas bipolaires, et la plupart des cartes pour les machines décrites plus haut sont prévues pour ces moteurs. Si vous utilisez un CNC Shield pour Arduino, il est prévu pour fonctionner avec l’un de ces drivers.
Ce qui différencie ces drivers, c’est le voltage qu’ils peuvent accepter, voltage qui va être envoyé au moteur, et le courant qu’ils peuvent délivrer (Ampérage) par phase, donc la puissance de l’impulsion électrique fournie au moteur. Il est important de faire attention à ces caractéristiques, et d’appairer au mieux moteur et driver.
Notre choix de moteur et driver
Dans cet article, nous utilisons un moteur Nema 17, qui porte la référence 17HS19-2004S. Les caractéristiques qui nous importent ici, sont la valeur de courant par phase, la résistance par phase, et le voltage recommandé:
Caractéristiques Moteur | Quantité | Unités |
Courant par Phase | 2.0 | Ampères |
Résistance par Phase | 1.4 | Ohms |
Voltage Recommandé | 12-24 | Volts |
Le driver choisi est le Pololu DRV8825. Les caractéristiques de ce driver sont:
Caractéristiques Driver | Quantité | Unités |
Courant par Phase | 2.2 Max | Ampères |
Voltage Recommandé | 8.2 – 45 | Volts |
L’alimentation utilisée est de 24 Volts. On voit tout de suite qu’elle convient au driver et au moteur. On voit aussi que le driver ne va pas limiter le courant que je peux envoyer au moteur, donc je vais pouvoir en exploiter tout le couple.
Circuit simple pour piloter le moteur pas à pas depuis l’Arduino
Pour réaliser ce circuit, installez votre driver sur la platine de test, et effectuez les divers liaisons comme indiqué.
Attention, ne branchez pas l’alimentation moteur avant que tout ne soit installé et prêt, y compris les branchements avec l’Arduino. Il vaut mieux aussi que le programme de test soit déjà flashé.
Sur ce schéma, les 4 fils du moteur sont identifiés B2, B1, A1, A2. Sur votre moteur, vous avez certainement des fils avec 4 couleurs différentes. Si vous pouvez trouver la documentation exacte de votre moteur, tant mieux! Pour mon moteur, j’ai la correspondance Noir = A+, Vert = A-, Rouge = B+, Bleu = B-
Si vous n’avez pas cette information, vous pouvez déterminer quels fils sont appairés sur la même phase avec votre multimètre. Si 2 fils partagent le même bobinage, vous aurez une résistance, sinon vous aurez une résistance infinie
L’image de droite correspond au schéma, implémenté sur une platine test, avec l’Arduino. Les alimentations de sont pas branchées. Celle du moteur, en 24 volts se branche sur le bornier bleu. Si vous ne connaissez pas Fritzing, avec lequel ce schéma a été réalisé, et qu’il vous arrive de dessiner vos propres circuits, penchez-vous sur cet excellent logiciel open source.
Mise à jour depuis la parution de cet article:
Je me suis rendu compte que platine d’essai sans soudures, condensateur et fils de connexion ne faisaient pas forcément partie de la trousse à outil de tous les lecteurs! Il sera donc beaucoup plus simple d’utiliser le shield de réglage que j’ai créé dans ce but. Même si vous avez par ailleurs un Shield CNC, où une carte pour imprimante 3D avec ces drivers montés, il sera bien plus facile de régler proprement votre driver en le montant tout seul sur ce shield. Le processus est simple, mais la manipulation ne l’est pas, le potentiomètre étant très sensible. Être à l’aise, avec l’espace dégagé, est un gage de réussite et de meilleur confort pour réaliser cette opération.
Régler sur quoi?
Notre premier réglage va s’effectuer avec le moteur pas à pas débranché. Mais la toute première chose à faire est de déterminer sur QUELLE VALEUR je veux régler mon driver!
Pour cela, il me faut le document technique de Pololu pour mon driver spécifique. je vais donc sur la page produit de Pololu pour le DRV8825, fait défiler vers le bas vers le chapitre “Current limiting”, pour trouver la formule qui nous intéresse:
Another way to set the current limit is to measure the voltage on the “ref” pin and to calculate the resulting current limit (the current sense resistors are 0.100Ω). The ref pin voltage is accessible on a via that is circled on the bottom silkscreen of the circuit board. The current limit relates to the reference voltage as follows:
Current Limit = VREF × 2
So, for example, if you have a stepper motor rated for 1 A, you can set the current limit to 1 A by setting the reference voltage to 0.5 V.
Encore une fois, vérifiez cette formule pour VOTRE driver. Pour un A4988, par exemple, la formule devient Current Limit = VREF × 2.5.
Comme nous l’avons vu plus haut, mon moteur est donné pour un maximum de 2 Ampères. Je pourrais donc régler le Voltage de Référence (nous allons expliquer comment dans une minute) à 1 Volt, et je serais dans les clous. Simplement, cette valeur est une valeur Max. Pololu indique clairement qu’au-dessus de 1.5 Ampère, il est impératif de refroidir le driver, ce que j’ai l’intention de faire, mais je ne pense pas avoir besoin de tourner en permanence au maximum, d’autant que si je peux éviter de diminuer la durée de vie de mes composants, ç’est autant de gagné. Je vais donc régler le Voltage sur 0.900 Volts, de manière à être réglé sur 1.8 Amps.
Comment Régler?
Si vous le pouvez, le mieux est de clipper votre petit tournevis avec une pince alligator branchée sur le plus de votre multimètre. Faites toucher la sonde coté moins du multimètre avec la broche neutre/moins du Pololu, et mettez la pointe du tournevis sur le potentiomètre. De cette manière, vous pouvez modifier le réglage en même temps que vous lisez la valeur affichée sur le multimètre. Si vous ne pouvez pas équiper la sonde du multimètre d’une pince alligator, vous pouvez toucher le point VREF avec la sonde plus, et régler avec le tournevis en même temps, mais c’est plus acrobatique! Attention, de tout petits mouvements du potentiomètre sont suffisants. Même s’il semble qu’un tournevis cruciforme devrait être utilisé, vous serez plus précis avec un petit tournevis à bout plat. En fait, si vous ne pouvez pas directement tourner le potentiomètre en même temps que vous lisez le voltage sur votre multimètre, procédez par petites touches et mesurez entre chaque. C’est encore la meilleure méthode si vous n’avez pas 4 mains!
Conclusion
Tout ceci peut paraître bien compliqué de prime abord, mais en fait, en progressant étape par étape, vous verrez rapidement qu’il n’y a rien de bien sorcier. On peut penser que monter un circuit de test pour cet usage, c’est en faire un peu trop, pourtant, cet étape de réglage des drivers pour moteurs pas à pas Pololu A4988, DRV8825, DRV8824 et DRV4834, est la meilleure manière d’isoler un problème potentiel dans le fonctionnement de votre machine. N’oubliez pas qu’il n’y aucun réglage d’usine. Passer par cette étape est s’assurer de la durée de vie de vos moteurs, de vos drivers, et même de celle de votre Arduino.
Code utilisé pour les réglages et tests
/* Simple step test for Pololu stepper motor driver carriers This code can be used with the A4988, DRV8825, DRV8824, and DRV8834 Pololu stepper motor driver carriers. It sends a pulse every 500 ms to the STEP pin of a stepper motor driver that is connected to pin 2 and changes the direction of the stepper motor every 50 steps by toggling pin 3. */ #define STEP_PIN 2 #define DIR_PIN 3 bool dirHigh = true; void setup() { dirHigh = true; digitalWrite(DIR_PIN, HIGH); digitalWrite(STEP_PIN, LOW); pinMode(DIR_PIN, OUTPUT); pinMode(STEP_PIN, OUTPUT); } void loop() { // Toggle the DIR pin to change direction. if (dirHigh) { dirHigh = false; digitalWrite(DIR_PIN, LOW); } else { dirHigh = true; digitalWrite(DIR_PIN, HIGH); } // Step the motor 50 times before changing direction again. for (int i = 0; i < 200; i++) { // Trigger the motor to take one step. digitalWrite(STEP_PIN, HIGH); delay(5); digitalWrite(STEP_PIN, LOW); delay(5); } }
Quelques commentaires sur ce code:
- La boucle compte jusqu’à 200 (en fait, 199, mais en partant de zéro), avant de changer de sens. Pour un moteur faisant 1,8° par pas, il faut 200 pas pour un tour. Nous faisons donc effectuer une rotation complète dans un sens, avant de changer de sens.
- Pour varier la vitesse de rotation, modifiez la valeur de délais, en millisecondes. Mettez 1 pour aller plus vite, 30 pour aller lentement.
- Ce code fait faire des pas “pleins” au moteur, ni demi pas, 1/4 de pas où plus. Ce n’est pas nécessaire ici.
BONJOUR?
COMMENT SE PROCURER VOTRE SHIELD DE REGLAGE POUR DRIVER 8825 ?
SI PAS POSSIBLE PEUT6ON FAIRE LES MESUREES LE DRIVER MONTE SUR LE CNC SHIELD PROTONER
MERCI
Le mieux est de me contacter en privé. J’ai encore des cartes et des composants pour vous faire un kit.
Bonjour
J’ai une imprimante 3 d leapfrog creatr hs équipée de 8825 soudés à la carte et sur laquelle il n’y a pas de potentiomètre de réglages.
Pensez vous qu’il soit possible de trouver un dispositif électronique à mettre entre le moteur et la sortie du driver de la carte mère qui permettra de régler le voltage car les moteurs semblent sur-alimenté (bruit + chauffe )
Merci pour votre aide
Bonjour, et désolé d’avoir mis aussi longtemps à vous répondre. J’ai été inondé de spam au moment de votre commentaire, et du coup je ne l’ai pas vu de suite. Pour ce genre de question, qui n’est pas vraiment un commentaire, je vous invite à rejoindre le forum, sur ce même site, et à y poser votre question.
Bonjour,
J’ai lu votre procédure pour le réglage des drivers.
Il y a un point que je comprends pas.
il faut limiter le driver en courant mais avant de limiter il faut tout brancher.
Je vais donc peut-être envoyer un courant qui va endommager mon circuit.
Qu’est ce qui cloche donc dans mon raisonnement ?
merci
Rien ne cloche! Simplement, il n’est pas nécessaire que le moteur soit branché pour régler le driver. Par ailleurs, il n’y a que les 5 volts de l’arduino qui passent, donc aucun risque sur le moteur, même s’il est branché…
Bonsoir,
je ne comprends pas comment la limitation de courant peut se faire après avoir tout branché (électriquement).
Si je n’ai pas limité le courant je vais donc envoyer n’importe quel courant dans le moteur au risque de l’endommager.
merci
Il n’est pas nécessaire de brancher le moteur pour régler le driver.
Bonjour Bernard,
Premièrement, merci pour ce site plein de trouvailles et qui permet de dé diaboliser un peu le monde des CNC.
Si vous me le permettez, J’ai une petite interrogation. Je construis une petite CNC qui sera piloté via une Arduino/CNC Shield.
Autant le réglage sur les drivers d’origines A4988 s’est déroulé sans soucis, autant sur les DRV8825 que je viens de recevoir, je sèche un peu.
Mon multimètre n’affiche aucune valeur lorsque je pointe entre la masse et le potentiomètre. Le driver est bien monté (poti vers le haut). Les 4 drivers me font la même chose.
Avez-vous une petite idée ? Peut-être que je ne pointe pas au bon endroit ?
D’avance merci.
Bonjour Fabien, Je me permet de donner une réponse plus détaillée sur le Forum, qui permettra peut-être à tout le monde de mieux suivre la conversation.
https://lebearcnc.com/discussions/?view=thread&id=3&part=1#postid-6
Cordialement,
Bernard
Bonjour
En fait, j’ai mal interprété “Notre premier réglage va s’effectuer avec le moteur pas à pas débranché”. Vous parlez du branchement mécanique et non pas du raccordement électrique.
Déformation professionnelle d’électromécanicien.
Une erreur s’est glissée dans mon message précédent: la répétition de in qui inverse le sens du mot intéressant . Mille excuses!
haha, pas grave, j’avais compris le sens donné à votre message dans son entier.
Bonjour
Votre article est très inintéressant pour moi, papy de 70ans débutant en CNC.
Cependant,je ne comprends pas la phrase suivante:
“Régler sur quoi?
Notre premier réglage va s’effectuer avec le moteur pas à pas débranché. ”
Comment peut-on régler une intensité par la mesure d’une chute de tension, dans un circuit qui ne débite pas ? Sans doute ai-je mal interprété. Je suppose que cela signifie sans commande au moteur, donc à travers les 2 bobines du moteur.
Merci de bien vouloir me renseigner
René COMTE
J’ai commencé ma réponse peu de temps après avoir lu votre question, mais je ne peux finir que maintenant. Désolé!
On ne mesure pas une intensité par chute de tension mais on ajuste un “voltage de référence”. Le circuit débite bien, puisque l’alimentation vers le moteur est, elle, bien branchée. Comme il n’y a aucun réglage d’usine, il FAUT faire ce réglage avant de connecter le moteur.
Il serait aussi possible de faire ce même réglage en mettant le moteur en “full step” et mesurer le courant (ampérage et non voltage) envoyé à UNE des bobines. Mais c’est bien moins pratique, de mon point de vue.
En espérant que cela réponde à la question.
PS: Vous pouvez vous référer à la doc originale pour plus de détails: https://www.pololu.com/product/2133