J'en suis bien conscient, je vais monter dessus une proxxon ibs/e, il faudra effectivement limiter la profondeur de passe et réduire un max la vitesse d'avance, ce sera un juste dosage entre avance/vitesse/profondeur, pour ne pas cramer ni le bois, ni le matos. Dès qu'elle marchera !!!
D'où l'idée d'origine de pouvoir la convertir en imprimante 3D.
Concernant mon problème, voici la liste précise de mon matériel (pour voir si quelqu'un n'y verrait pas une quelconque incompatibilité) :
Arduino UNO
CNC shield V3
Drivers DRV 8825
Moteurs nema 17 42byghw811 :
Nombre de pas: 200
Angle par pas: 1,8°
Alimentation: 3,1 V
Résistance/phase: 1,25 ohms
Courant/phase: 2,5 A
Inductance/phase: 1,8 mH
Couple de maintien: 4,8 kg.cm
Connexion: 4 fils
Dimensions de l'axe: Ø5 x 22 mm
Dimensions: 42 x 42 x 48 mm
Poids: 340 g
Je me pose notamment la question (que j'avais creusé au début du projet), si mes moteurs ne seraient pas trop gourmands pour mes drivers, j'avais regardé sur différents forums et les 2.5 A/phase étaient le max avec refroidissement.
Est-ce que ça pourrait expliquer mes problèmes :
Déplacement par commande manuelle sur X et Y sans action simultanée des deux moteurs (déplacement en diagonal)
Déplacement par fichier gcode avec une action simultanée des deux moteurs (déplacement linéaire), mais une rotation de 45° par rapport aux axes du logiciel
Et si tel est le cas pourquoi ça aurait fonctionné pendant 1 mois sans rien cramer (notamment les drivers).
Voici la réflexion de ce jour, ayant tout retourné dans tous les sens.
Rems:
Magique, si je lui fait faire un carré elle me fait un losange a angle droit, c'est barge !!!!
donc trois solutions possibles
courroies mal mises
gcode incluant une orientation
configuration
grbl 0.9i with Servo motor and Core[X,Y] Configuration of Motion Control
Use the PIN D11 to drive the servo. Use the commands M03 Sxxx (xxx between 0 and 255) to rotate the servo between 0-180. The command M05 turn the servo to zero degrees.
you can change the pulse duration in the file spindle_control.c:
define RC_SERVO_SHORT 15 // Timer ticks for 0.6ms pulse duration (9 for 0.6ms)
define RC_SERVO_LONG 32 // Timer ticks for 2.5 ms pulse duration (39 for 2.5ms)
define RC_SERVO_INVERT 1 // Uncomment to invert servo direction
If you want to have the servo working from 0 --> 180 degrees change RC_SERVO_SHORT and put 9, RC_SERVO_LONG and put 39 If you want invert the servo direction uncomment the line above.
Effectivement, j'ai fait passer le spindle_control.c que j'utilise depuis le début, avant et après mes problèmes. J'ai testé le spindle_control.c de grbl-coreXY-servo quand tu me l'a indiqué au début de nos échanges et cela n'avait rien changé.
Rems:
Effectivement, j'ai fait passer le spindle_control.c que j'utilise depuis le début, avant et après mes problèmes. J'ai testé le spindle_control.c de grbl-coreXY-servo quand tu me l'a indiqué au début de nos échanges et cela n'avait rien changé.
Je viens de supprimer la bibliothèque grbl-coreXY-servo de mon arduino IDE pour la retélécharger sur Github, la téléverser à nouveau dans mon arduino Uno et relancer mon gcode via Grbl Controller.
Et rien n'y fait mon problème de rotation de 45° (mais en utilisant le principe Core XY) demeure ainsi que mes commandes manuelles avec un seul moteur à la fois.
X et Y 100 steps/tour : Nema 17 1,8° avec drivers réglés à 1/16, courroie GT2 et poulie 16 dents. Mais au pire je ne serai pas bon pour mes cotes, mais ça aussi c’est OK.
Les courroies sont bien mises, ça marchait avant et je ne les ai pas touché.
Je vais recevoir de nouveaux moteurs à 1,7A / phases, il n'y a plus que ça que je n'ai pas changé, je pense toujours que mes actuels à 2,5A / phase posent problème avec les DRV 8825. Mais pourquoi ça a marché et que d'un coup ça merde. Si ils ne reçoivent pas assez de jus, est-ce qu'ils se permettent de faire n'importe quoi ?
Je viens de faire le changement de moteur passé de nema 17 à 2.5A/phase à des 1.68A/phase
et Oh désespoir ! rien n'a changé, toujours les deux mêmes problèmes.
tu confonds certaines choses.
200 pas pour faire 1 tour avec un 1/8 degré
que tu sois en 1 1/8 1/16 1/32 ca change rien
c'est le nb d'impulsions pour faire 1 mm avec un moteur 200 pas en 1/8 de degré et en 1/16
résolution de 10 microns en principe
ca c'est la théorie, dans la pratique, il faut faire avec l'élasticité de la courroie, du jeu dans les axes, etc.....
Dommage, j'ai plus assez de GT2 et pas de shield cnc pour faire le test.
Lorsque l'on calibre un cnc, on entre une commande Gcode pour tester la longueur afin de paramétrer chaque axe.
M92 X100.00 pour 10cm sur axe X par exemple
si tu n'as pas cette longueur, il faut diminuer ou augmenter le nb de pas pour l'axe
idem pour le Y et le Z, la A et B si tu as 4 ou 5 axes
donc, si rien ne change avec d'autres moteurs, c'est une question de paramétrage.
de mémoire si on fait $$ dans la console avec grbl, on a la config de la machine
mets ici la config pour voir
il se peut aussi que de pas sautent sans que tu le vois, pas assez de jus ou un microstepping que ta carte ne prend pas en charge, ou une surchauffe d'un driver.
Voilà quelques problèmes réglés, je viens de retrouver mon principe coreXY en manuel comme avec un programme. Pour ce faire, j'ai installé ma CNC sur l'ordi (win 7) qui sert à mon imprimante 3D avec Arduino IDE 1.8.3, j'ai récupéré un fichier tout neuf de "servo coreXY", téléversé, et là Oh miracle !! Tout fonctionne comme au premier jour.
Mes côtes sont au poil, donc mes réglages $100 et $101 sont bons reste Y à vérifier.
Il y a tout de même quelque-chose que je ne saisi pas (j'avais pourtant tout désinstallé et réinstallé (Arduino IDE + bibliothèques) sous win 10). Où était le bug ?
Il persiste tout de même deux petits problèmes, certes mineurs, mais que j'aimerai résoudre :
Le premier est que je n'arrive pas à récupérer l'orientation souhaitée de mes axes
En rouge sur la photo le système d'axe actuel ($2=0 et $3=2) et en vert le système d'axe souhaité.
J'ai essayé toutes les combinaisons avec $2 de 0 à 3 (pas jusqu'à 6, Y étant bon) et $3 de 0 à 3, mais rien ne me permet d'obtenir ce que je souhaite peut-être faut-il modifier le config.h ou autre.
Le deuxième petit problème est que lorsque j'ouvre ma connexion sur Grbl controller mon Y de travail se met toujours à 6mm, alors que X et Y sont bien à 0. Je n'ai pas de capteur de fin de course.
Voilà quelques problèmes réglés, je viens de retrouver mon principe coreXY en manuel comme avec un programme. Pour ce faire, j'ai installé ma CNC sur l'ordi (win 7) qui sert à mon imprimante 3D avec Arduino IDE 1.8.3, j'ai récupéré un fichier tout neuf de "servo coreXY", téléversé, et là Oh miracle !! Tout fonctionne comme au premier jour.
cela fait combien de fois que je dis de remettre une version propre du code?
pour win10, peut être que tu as réinstallé le code sur le même répertoire et donc des fichiers modifiés sont restés.
pour ton soucis d'axe, dans le config.h, il me semble, tu as la possibilité d'inverser les axes.
dans spindle.c
//#define RC_SERVO_INVERT 1 // Uncomment to invert servo direction
EDIT
un petit conseil quand tu modifie un paramètre, moi je fais comme ca, en plus de faire un backup d'une conf qui fonctionne
je commente la ligne modifiée et la copie avec plusieurs //////////////
ca permet de retrouver facilement la ligne modifie et de retrouver son original de suite
plus un fichier texte avec les modif faites et le nom du fichier, surtout sur de la cnc ou 3d
exemple
///////////////////#define RC_SERVO_INVERT 1 // Uncomment to invert servo direction
#define RC_SERVO_INVERT 1 // Uncomment to invert servo direction
pour ton soucis d'axe, dans le config.h, il me semble, tu as la possibilité d'inverser les axes.
dans spindle.c
//#define RC_SERVO_INVERT 1 // Uncomment to invert servo direction
Je viens de faire la modif, mais ça ne change rien dans mon cas, les axes ne sont pas inversés.
Je te fais part de ma méthode pour changer une ou plusieurs lignes de code, pour être sur que ces modifs soient prises en considération par ma carte UNO:
J'édite le fichier concerné avec Wordpad, je modifie la/les ligne(s),
Je sauvegarde,
Dans l'IDE, je téléverse le GrblUpload du programme concerné.
cela fait combien de fois que je dis de remettre une version propre du code?
En ce qui concerne la remise au propre de mon code, j'ai supprimé la bibliothèque concernée dans Documents\Arduino\libraries, et à partir de l'IDE réimporté le fichier .zip fraichement retéléchargé avec Croquis + Inclure une bibliothèque + Ajouter la bibliothèque .Zip.
Je n'ai pas trouvé de méthode pour supprimer une bibliothèque directement à partir de l'IDE.
Ça la remet effectivement dans le même dossier, est-ce que cela ne suffit-il pas ? Des traces restent ?
Qu'elle la bonne méthode ?
au lieu de passer par l'ide pour dézipper
tu efface le rep concerné via le gestionnaire fichier windows
vide la corbeille
dezippe le fichier au bon endroit, pas besoin de passer par l'ide
au moins, tu es certain que des fichiers temp ne se remettent pas ou de confondre les zip entre eux
pour être certain d'effacer l'eeprom à fond, a faire avec précaution
#include <EEPROM.h>
void setup() {
// initialize the LED pin as an output.
pinMode(13, OUTPUT);
/***
Iterate through each byte of the EEPROM storage.
Larger AVR processors have larger EEPROM sizes, E.g:
- Arduno Duemilanove: 512b EEPROM storage.
- Arduino Uno: 1kb EEPROM storage.
- Arduino Mega: 4kb EEPROM storage.
Rather than hard-coding the length, you should use the pre-provided length function.
This will make your code portable to all AVR processors.
***/
for (int i = 0 ; i < EEPROM.length() ; i++) {
EEPROM.write(i, 0);
}
// turn the LED on when we're done
digitalWrite(13, HIGH);
}
void loop() {
/** Empty loop. **/
}