Après quelques allers/retours, la cnc ne revenait pas au point de départ.
J'ai d'abord suspecté des pertes de pas dues à des points durs mais ce n'était pas cela car cela se produisait même si le moteur n'était pas relié à la cnc.
J'ai donc suspecté les drivers TB6600 et j'ai commandé de nouveau drivers TMC2160 que j'ai reçu hier.
J'ai continué mes tests aujourd'hui avec le moteur non relié à la cnc et ces nouveaux drivers.
A noter que ces drivers sont particulièrement silencieux à tel point qu'au début j'avais demandé un petit déplacement lent et j'ai cru que cela ne fonctionnait pas car je n'entendais rien.
Toutefois j'ai continué à constater des déplacements incorrects. L'erreur n'est pas très grande et il est probable que si je faisais de simples allers/retours je ne la remarquerais pas. Elle semble un peu plus importante quand le déplacement est plus lent.
Pour mes tests, j'ai écrit un fichier de gcode comme suit:
Code : Tout sélectionner
$101=240
$121=40
G21
G91
F500
G01 Y40
G4P1
G01 Y40
G4P1
G01 Y40
G4P1
G01 Y40
G4P1
$121=40 fixe l'accélération (à une valeur conservative
G21 = distance en mm
G91 = déplacement en relatif
F500 = 500 mm/min
G01 Y40 = déplacement de 40mm = 6 tours moteurs dans mon cas)
G4P1 = arrêt pendant 1 sec pour avoir le temps de vérifier la position.
Les lignes G01 Y40 et G4P1 se répètent environ 150 fois.
Ceci provoque environ un déplacement de 6m (150 fois 40mm , 40mm = 6 tours, 1 tour =1600 steps).
A noter que ce Gcode ne peut pas fonctionner sur un moteur relié à la cnc car comme le moteur tourne toujours dans le même sens, la cnc atteindrait les fins de course. C'est important de faire tourner le moteur toujours dans le même sens car avec des allers/retours, si les décalages sont aléatoires, on reviendrait presque à la position initiale.
Après exécution (déplacement de 6m), j'observe un déplacement plus long d'environ 1/8 de tour moteur = quelques 1/10 de mm.
Il ne s'agit donc pas de perte de pas mais d'un nombre de pas plus grand que prévu.
Pour déterminer avec certitude si l'erreur venait de GRBL ou du driver, j'ai écrit un petit programme pour un arduino qui compte le nombre d'impulsions STEP (=PULSE) envoyées par GRBL au driver.
J'ai lancé (à plusieurs reprises) une commande G01 Y400 qui devrait donc générer 96000 steps.
A ma grande surprise, l'arduino a compté un peu plus de 100000 steps.
Le problème n'est donc pas le driver mais bien du côté de la carte GRBL.
J'ai refait les mêmes tests mais cette fois en n'alimentant pas les drivers en 24V et cette fois mon arduino compte exactement 96000 steps.
Le problème est donc lié à des parasites induits par les moteurs.
C'est très étonnant car les cartes TFT/GRBL sont alimentées en 5v par la prise USB de mon PC portable alors que les drivers sont alimentés par des vielles alim de pc récupérées.
Le portable n'a pas de masse commune avec les alims de drivers.
Les drivers ont des optocoupleurs et donc sont électriquement isolés.
Les fils qui vont du driver au moteur n'ont que 20cm de longs et sont à l'opposé des carte TFT/GRBL.
Je suis donc très surpris qu'il puisse y avoir des interférences.
Voila où j'en suis mais cela pourrait bien indiquer que les problèmes que certains ont imputés aux drivers (DM542 entre autre) ne sont peut être pas dûs aux drivers mais à des parasites sur la carte GRBL. A noter que plus le driver est performant, plus il est apte en général à traiter des signaux rapides et donc plus il peut réagir à des parasites qui proviennent de la carte GRBL.
Ce serait bien si d'autres personnes pouvait faire le même type de test.
En fait il suffit de :
- prendre un driver/moteur non attaché à une cnc.
- mettre un bout de tape sur l'axe du moteur pour avoir un point de repère
- calculer la distance à demander pour avoir un nombre exact de tours à exécuter le moteur (dépend du réglage des micro pas et du step/mm).
- lancer un Gcode du type G91 F500 G01 X12345 (12345 = étant la distance à parcourir de l'ordre de 6000 mm)
- vérifier à la fin si le repère sur l'axe moteur est au bon endroit (le même qu'au début).
Demain, j'essaierai de poursuivre les tests en ajoutant des résistances/capacités pour essayer de réduire les parasites et de solutionner le problème.