Pour des projets futurs (CNC, automatisation etc...), j'ai besoin de contrôler des moteurs pas à pas bipolaire (4fils à gauche voire unipolaire à droite 6 fils) pour contrôler la vitesse ou la position d'un système. 

nema17-62oz-in-motor-datasheet

 

edit: voila une video expliquant le principe d'un moteur pas à pas :

 

Je vais utiliser pour mes tests des moteurs NEMA 17 (très utilisés dans les imprimante 3D), la puissance est gérée par une puce (driver) A4988 qui peut délivrer jusqu'a 2 ampères par moteur. Voila le schéma théorique:

connection

Pour éviter de trop s'embêter à câbler tout ce petit monde (j'ai 3 moteurs de connectés ensemble) j'utilise un shield CNC :

HCARDU0086_2_800_600Ce shield permet de faire toutes les connections entre le moteur/driver/arduino et de faire des réglages via des cavaliers, j'utilise dans mon test le mode micro pas 1/16, le moteur NEMA 17, ayant 200 pas pour faire un tour, avec ce mode on obtient 3200 micropas (bien plus précis!). on paramètre les cavaliers de cette façons (micropas 1/16):

micropas

 

On branche l'limentation 12v sur le bornier. On peut rajouter des switch d'arrêt (ENDSTOP pour l'axe X,Y ou Z). Attention à bien connecter les moteurs au driver, sinon il y a risque de cramage du driver!

 

sketch Arduino:

Une fois les connections faites, on passe au chargement du sketch dans l'arduino. J'ai utilisé un G-code décodeur, c'est un interpréteur qui en fonction de la commande (type G01 X5.0 Y5.0 Z5.0 (aller au coordonnées 5 pour l'axe X,Y et Z)) va faire tourner les moteurs avec le nombre de pas désirés, on peut même interroger l'arduino pour connaître sa position. J'ai utilisé le décodeur Gcode simplifié (https://github.com/sensor56/Simple-GCode-Decoder fait par le site www.mon-club-elec.fr). L'avantage de ce code est: qu'il est relativement léger (moins de 10ko) comparé à d'autre genre GRBL (30 ko que je n'ai pas réussi à faire fonctionner...). Pour téléverser j'ai dû retirer le shield cnc de la carte Arduino sinon cela ne passait pas.

Un fois tout le petit monde en place, on peut contrôler directement les moteurs pas à pas, via le moniteur série de l'arduino (pas très convivial je vous l'accorde, mais très pratique):

ide

En balançant quelques lignes formatées G-CODE on peut faire tourner notre moteurs de façon très précise:

 

L'interphace n'étant pas top, j'ai utilisé un scripte python pour communiquer avec l'arduino/cnc shield/driver/NEMA 17 :

 

interface

Je peux maintenant envoyer une chaîne de caractère G-code manuellement, utiliser l'interface graphique ou télécharger un fichier G-gode.

L'installaton de Pyton, Qt (interface graphique) et PySerial (pour communiquer) est un peu chiant à faire, (surtout pour trouver les versions qui vont bien...) mais bon en suivant ces tutos on y arrive :

Pyton :http://www.mon-club-elec.fr/mes_downloads/tutos_pyqt/pyqt_abc_installation_windows.pdf 

pySerial: http://mon-club-elec.fr/openmakermachine/wiki/doku.php?id=logiciels:simplegcodegui

Le code Pyton : https://github.com/sensor56/Simple-GCode-GUI 

 Edit: j'utilise maintenant le firmware GRBL et  l'interface http://easel.inventables.com/ :

 

CNC Finis :-) - Domotique, objets connectés et objet 3D; DomoChris

La CNC (machine à commande numérique pour découper, graver, sculpter des pièces) est fonctionnel.

http://domochris.canalblog.com

 

Retrouvez tous mes blog sur Domochris.fr :

Domochris

Domo Geek R2D2 BB8 Voyage et tour du monde Il était une fois...(petites histoires)

http://domochris.nexgate.ch