Aller au contenu

GO Print

Projet GRBL 4axes + Laser


Messages recommandés

Bonjour

La CNC que je suis en train de terminer pour mon fablab Cobois >>> n'est pas encore finalisée que je suis déjà en train de brainstormer son évolution en 4 axes + laser

En effet nos adhérents fabriquent beaucoup de jouets (pour les "blouses roses >>> " ) et de stylos en bois, qu'ils désirent personnaliser en gravant dessus un nom ou toute autre mention de leur choix. Comme ça :

image.png.74c990a65e13cf70bb4e3d34a87e3b6b.png

Grâce aux diverses récupes dont j'ai bénéficié ici (merci à @guigro et à @Bakatora ) j'en suis à tester une config à plat sur la table :

4axes.gif.c10561787d79dcbfa601489bf8c299d1.gif

 

 

Je suis parti sur une RAMPS 1.4 / Arduino Mega et ce GRBL >>>> appelé GRBL Mega 5X pour 5 axes, dont je n'utiliserai que 4 : X, Y, Z et A

Presque tout marche, les 4 moteurs tournent les origines se font, je sais démarrer la broche, allumer l'aspirateur toussa toussa

Seule la prise de ref de l'axe rotatif se refuse à fonctionner

J'ai lu attentivement tout ce que mon Anglais approximatif m'a permis de comprendre, mais je n'arrive pas à trouver comment faire malgré ça :

relay

(évidemment les assignations de pines sont incomplètes ici  : chacune doit être reliée à un GND, je suppose que c'est implicite)

 

Alors si les "pointures" ici présentes pouvaient me trouver dans les fichiers de config la ligne magique qui m'arrangerait, je serais ravi

J'en appelle donc encore une fois à mes complices habituels @Locouarn @Tircown @mikebzh44 @Poisson21 @Kachidoki @bracame @trotro @Snakesrules @Guizboy @cmatec @gelam @DBC3D @Yo' et d'autres, que j'oublie sûrement et que je prie de m'essssscuser

Modifié (le) par Jean-Claude Garnier
  • J'aime 2
Lien vers le commentaire
Partager sur d’autres sites

La prise de ref ça reviens à faire un "home" de l'axe rotatif c'est bien ça ? ( désolé je n'ai pas trop de vocabulaire en usinage...)

Si c'est bien ça, en théorie il faut utiliser "l'Axe 4 min End stop" et ça ne fonctionne pas, c'est bien ça ?

Lien vers le commentaire
Partager sur d’autres sites

il y a 8 minutes, lulux a dit :

La prise de ref ça revient à faire un "home" de l'axe rotatif c'est bien ça ?

C'est tout à fait ça, comme c'est un axe rotatif, on monte une espèce de "came" sur la partie tournante qui accoste le end-stop en rotation

Sur les "vraies" ça se fait avec un codeur incrémental  

il y a 8 minutes, lulux a dit :

en théorie il faut utiliser "l'Axe 4 min End stop" et ça ne fonctionne pas, c'est bien ça ?

Eh oui ! "en théorie"....😊

Modifié (le) par Jean-Claude Garnier
Lien vers le commentaire
Partager sur d’autres sites

Ok, ça ne réagit pas quand tu actionne ton FDC ? 

 

Tu as quoi comme paramètre au niveau des axes de ton config.h ?

// Axis array index values. Must start with 0 and be continuous.
#ifdef DEFAULTS_RAMPS_BOARD
  // 4, 5 & 6 axis support only for RAMPS 1.4 (for the moment :-)...)
  #define N_AXIS 5            // Number of axes
  #define N_AXIS_LINEAR 3     // Number of linears axis
#else
  #define N_AXIS 3 // Number of axes = 3 if not DEFAULTS_RAMPS_BOARD
#endif
Modifié (le) par lulux
  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

J'ai ça et ça marche bien dans CNCjs :

Citation

#ifdef DEFAULTS_RAMPS_BOARD
  // 4, 5 & 6 axis support only for RAMPS 1.4 (for the moment :-)...)
  #define N_AXIS 4            // Number of axes.  4 was 5. JCG
  #define N_AXIS_LINEAR 3     // Number of linears axis
#else
  #define N_AXIS 3 // Number of axes = 3 if not DEFAULTS_RAMPS_BOARD
#endif

#define AXIS_1 0        // Axis indexing value. Must start with 0 and be continuous.
#define AXIS_1_NAME 'X' // Axis names must be in X, Y, Z, A, B, C, U, V & W.
#define AXIS_2 1
#define AXIS_2_NAME 'Y'
#define AXIS_3 2
#define AXIS_3_NAME 'Z'

#if N_AXIS ❤️
  #error "N_AXIS must be >= 3. N_AXIS < 3 is not implemented."
#endif
#if N_AXIS > 3
  #define AXIS_4 3
  #define AXIS_4_NAME 'A' // Letter of axis number 4
#endif

Le problème est tailleur.

Hassam Simrick

  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Il y a 6 heures, Jean-Claude Garnier a dit :

C'est tout à fait ça, comme c'est un axe rotatif, on monte une espèce de "came" sur la partie tournante qui accoste le end-stop en rotation

Sur les "vraies" ça se fait avec un codeur incrémental  

Eh oui ! "en théorie"....😊

Bonsoir,

@Jean-Claude Garnier

Merci de m'avoir "associé" (cité) et content de donner un coup de main pour ce type de projet...

Sur les vraies, ou il y a un codeur absolus (qui sait en permanence même après coupure de courant ou il est) ou un codeur incrémental allié à un switch et une came pour faire son origine.

Donc sans ce switch, avec des moteurs pas à pas désactive la prise de ref.

(Je termine actuellement le "rétrofit" de ma CN en GRBL :  Pas de prise de ref. prévu pour le diviseur (axe A).)

Modifié (le) par bracame
précision
Lien vers le commentaire
Partager sur d’autres sites

@bracame bien reçu ainsi que le MP qui a retenu toute mon attention

Il y a 10 heures, bracame a dit :

Donc sans ce switch, avec des moteurs pas à pas désactive la prise de ref.

(Je termine actuellement le "rétrofit" de ma CN en GRBL :  Pas de prise de ref. prévue pour le diviseur (axe A).)

D'autres l'ont déjà constaté, hein @Locouarn quand j'ai une idée dans la tête je l'ai pas dans le Q et je suis pas d'accord sur l'inutilité de la prise de ref de l'axe A dans notre cas

J'en suis pas encore là mais je compte bien essayer de mettre une came sur le diviseur

En effet vu que le endstop sera NO il ne servira qu'une fois au moment du Homing et (normalement) la CN va s'en foutre complètement pendant la suite des opérations.

Mais bon, c'est peut-être toi qui as raison, après tout comme j'aime à le répéter, "dans la Commande Numérique j'y connais que dalle"

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Tu as ça dans ton config.h

Il y a 15 heures, Jean-Claude Garnier a dit :

#ifdef DEFAULTS_RAMPS_BOARD

D'où une petite question, DEFAULTS_RAMPS_BOARD est-il défini ? Sinon tu pourras mettre/changer ce que tu veux entre le ifdef et le else, ça ne changera rien du tout.

Edit: Je viens de regarder les sources sur github, il est bien défini, on oublie !

Modifié (le) par DBC3D
Lien vers le commentaire
Partager sur d’autres sites

Hello,

 

Il y a 3 heures, Jean-Claude Garnier a dit :

En effet vu que le endstop sera NO il ne servira qu'une fois au moment du Homing et (normalement) la CN va s'en foutre complètement pendant la suite des opérations.

Je me demande si la réponse n'est pas là.

Est-ce que la CN ne se fout pas du endstop de la broche ?

 

Quelle étape défini inhibition du endstop ?

Par principe, j'aurai mis la broche sur l'axe 1 (pour qu'il soit le premier à faire le home (d'ailleurs, je ne sais pas si ça fonctionne comme ça)).

 

M'en vais jeter un oeil vite fait au code.

 

EDIT :

Lignes 625 à 630 du fichier limits.c

  // The active cycle axes should now be homed and machine limits have been located. By
  // default, Grbl defines machine space as all negative, as do most CNCs. Since limit switches
  // can be on either side of an axes, check and set axes machine zero appropriately. Also,
  // set up pull-off maneuver from axes limit switches that have been homed. This provides
  // some initial clearance off the switches and should also help prevent them from falsely
  // triggering when hard limits are enabled or when more than one axes shares a limit pin.

 

Là aussi, c'est intéressant :

Ligne 371 et 372 du limits.c

      // Set target based on max_travel setting. Ensure homing switches engaged with search scalar.
      // NOTE: settings.max_travel[] is stored as a negative value.

Mais on est dans le cas où l'axe se déplace sans toucher le endstop.

 

En pensant à ça, @Jean-Claude Garnier, n'y a t'il pas un "sens de rotation" à respecter ?

Admettons que sur un axe linaire, tu ai le endstop min à gauche et le endstop max à droite.

Min________Axe_________Max

 

Que se passe-t-il si l'axe part à droite en cherchant le endstop min ?

Se pourrait-il que ce soit le endstop max qui soit recherché, dans ton cas (et donc que la broche tourne sans s’arrêter) ?

Est-ce que le end stop de la broche est branché sur les bons pins ?

 

🙂

Modifié (le) par Yo'
Lien vers le commentaire
Partager sur d’autres sites

@Yo'

On ne doit pas parler de la même chose

Sur une CN 4 axes, on a 3 axes linéaires X Y et Z comme sur une imprimante 3D

Plus un axe rotatif, un diviseur qui est l'axe A et permet de fraiser / graver sur un cylindre, les pièces longues étant soutenues par la contre-pointe

image.png.e2b245fb601f0ed55fe605530ac22deb.png

 

La broche, c'est l'outil rotatif qui usine la pièce. Elle n'a pas besoin de homing. On la met en route sens horaire ou antihoraire, à une vitesse variable, et on l'arrête.

Au passage je viens de faire une expérience que tu peux (peut-être) vérifier sur ta propre printeuse :

Sur nos cartes, il y a des pines de ref + et -

Sur ma plaque test, j'actionne les endstops à la main, juste pour voir où les brancher et tester le fonctionnement du homing

Usuellement, on les branche sur les pines + ou - comme indiqué sur le fucking manual et on cherche pas plus loin

J'ai branché mes endstops alternativement sur les + et les -, ça n'a aucune incidence, les deux marchent pareil !

D'autre part j'ai pu vérifier que, quand un axe, une fois "Homé" (!)  se déplace, on peut bien appuyer sur les endstops tant qu'on veut, ça lui fait nichon ni froid.

Donc je pense @bracame que tu ne devrais pas te priver de mettre un endstop sur ton diviseur, c'est camême sympa de retrouver sa ref quand ça plante en cours de route et qu'on doit reprendre le job pour le finir. Sinon, walou pour retrouver le bon zéro A !

@Yo' ça répond à certaines de tes questions ?

Il y a 1 heure, Yo' a dit :

Que se passe-t-il si l'axe part à droite en cherchant le endstop min ?

Se pourrait-il que ce soit le endstop max qui soit recherché, dans ton cas (et donc que la broche tourne sans s’arrêter) ?

Est-ce que le end stop de la broche est branché sur les bons pins ?

Oui le endstop du diviseur est bien branché là où c'est précisé sur l'image que j'ai jointe

C'est pour ça que je cherche dans les configs, mais que j'ai toujours pas trouvé...

Je vais ptêt me payer le culot d'envoyer un émile au développeur, tiens....

Lien vers le commentaire
Partager sur d’autres sites

Il y a 4 heures, Jean-Claude Garnier a dit :

On ne doit pas parler de la même chose

Si si,

J'ai parlé d'axe linéaire car c’était plus simple à dessiner qu'un axe rotatif.

Puis un axe linéaire n'est qu'un axe rotatif "étalé", d'un point de vue schéma.

 

Bref, ça fait pas avancer.

 

J'ai regardé du coté des pins assignés, des fois qu'il y ai une erreur et ce n'est pas le cas.

Ligne 259 à 297 de cpu_map.h

 #define MIN_LIMIT_BIT_0 5 // X Limit Min - Pin D3
  #define MIN_LIMIT_BIT_1 1 // Y Limit Min - Pin D14
  #define MIN_LIMIT_BIT_2 3 // Z Limit Min - Pin D18
  #if N_AXIS > 3
    #define MIN_LIMIT_BIT_3 7 // Axis number 4 : RAMPS AUX2 pin D42
  #endif
  #if N_AXIS > 4
    #define MIN_LIMIT_BIT_4 5 // Axis number 5 : RAMPS AUX2 pin D44
  #endif
  #if N_AXIS > 5
    #define MIN_LIMIT_BIT_5 3 // Axis number 6 : RAMPS AUX2 pin D57
  #endif
  #define _MIN_LIMIT_BIT(i) MIN_LIMIT_BIT_##i
  #define MIN_LIMIT_BIT(i) _MIN_LIMIT_BIT(i)
  #define MIN_LIMIT_DDR(i) _DDR(MIN_LIMIT_PORT_##i)
  #define MIN_LIMIT_PORT(i) _PORT(MIN_LIMIT_PORT_##i)
  #define MIN_LIMIT_PIN(i) _PIN(MIN_LIMIT_PORT_##i)

  #define MAX_LIMIT_PORT_0 E
  #define MAX_LIMIT_PORT_1 J
  #define MAX_LIMIT_PORT_2 D
  #if N_AXIS > 3
    #define MAX_LIMIT_PORT_3 G
  #endif
  #if N_AXIS > 4
    #define MAX_LIMIT_PORT_4 F
  #endif
  #if N_AXIS > 5
    #define MAX_LIMIT_PORT_5 F // (Ramps Aux-3 D58)
  #endif
  #define MAX_LIMIT_BIT_0 4 // X Limit Max - Pin D2
  #define MAX_LIMIT_BIT_1 0 // Y Limit Max - Pin D15
  #define MAX_LIMIT_BIT_2 2 // Z Limit Max - Pin D19
  #if N_AXIS > 3
    #define MAX_LIMIT_BIT_3 1 // Axis number 4 : RAMPS AUX2 pin D40
  #endif
  #if N_AXIS > 4
    #define MAX_LIMIT_BIT_4 5 // Axis number 5 : RAMPS AUX2 pin D59
  #endif

Faudrait peut être assigner d'autre pins MIN et MAX, des fois que ta carte ai un problème.

 

Je n'ai pas testé, mais je te fais confiance sur le coup des endstop inhibés après le home de l'axe concerné.

Y'a pas de raison que l'axe A (la broche) fonctionne différemment.

 

Je penche pour un problème mécanique/électrique.

 

🙂

Modifié (le) par Yo'
Lien vers le commentaire
Partager sur d’autres sites

Il y a 4 heures, Jean-Claude Garnier a dit :

...Donc je pense @bracame que tu ne devrais pas te priver de mettre un endstop sur ton diviseur, c'est camême sympa de retrouver sa ref quand ça plante en cours de route et qu'on doit reprendre le job pour le finir. Sinon, walou pour retrouver le bon zéro A !

....

Merci, mais je ne m'en suis jamais privé car son emploi m’embête pour "sortir" certaine pièces.

Il y a une question à ce poser lorsque l'on ajoute un ou plusieurs axes rotatifs :

MODULO : A 360° il repasse à 0

Ou pas MODULO est la pas de limite ...

Certes, cela parait simple mais pas pour fabriquer des pièces en "involute".

Mon conseil était pour simplifier la chose, pas pour l'oublier.

Sinon, a vous lire : Le sens de A ou B ou C est normalisé (heureusement) sinon, on fabrique une pièce en mode miroir "qui s'enroule" 😉 C'est beau mais c'est pas ce qu'on veut.

Bonne soirée.

Christophe

Lien vers le commentaire
Partager sur d’autres sites

il y a 26 minutes, Yo' a dit :

Y'a pas de raison que l'axe A (la broche) fonctionne différemment.

Non, pas la broche. Comme je te l'ai dit la broche c'est pas ça.

Mais je pinaille, je pinaille....

Je vais essayer d'assigner d'autres pins, pour voir. Je suis moins à l'aise que toi pour faire ça, j'espère que je vais pas boulettiser

  • Haha 1
Lien vers le commentaire
Partager sur d’autres sites

La broche peut être un "C" si elle tourne autour de "Z" ... "A" pour "X" et "B" pour "Y".

Tous cela est normalisé (heureusement !!!)

Toute broche peut être employée en mode "AXE" mais elle n'est plus la broche donc.

...Pffff : J'ai l'impression de répéter mes formateurs du siècle dernier 😉

Lien vers le commentaire
Partager sur d’autres sites

Hello

Cherchez plus, j'ai trouvé

Le bug se trouvait comme on dit souvent "entre la chaise et le clavier"

(....comme disait Brassens "quand on est con, on est con"........)

Tout marche en simulation, prise de refs, broche, aspirateur, boutons, z-probe

Testé avec un post-pro 4axes OK >>>

Yapluka !

IMG_20200119_103259.thumb.jpg.67298962736db53b8555dbaa6dfc9f5e.jpg

Modifié (le) par Jean-Claude Garnier
  • J'aime 3
Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

Oui bien le banc test ! 😀.

Ce sujet a fini par faire travailler mon neurone : Pourquoi pas ajouter ce switch pendant que je suis en train de rétrofiter ma machine ....

Mais un switch sur un axe rotatif a besoin d'une came avec des pentes "douces" afin de ne pas trop morfler pendant le fonctionnement à "grande vitesse".

-> Qui dit pente douce dit précision pas terrible.

Donc j'ai pensé à deux solutions :

- Capteur optique (récupération d'un capteur de souris, celui de la molette sur les souris modernes ou de la boule sur les vieilles) : Cela demande peut être une adaptation pour la connexion à la RAMPS. Moi, je vais câbler en presque direct sur un MEGA2560 (GRBL-Méga perso 4 axes). L'inconvénient est le risque de projection de copeaux ou poussières : Détection intempestives.

- Autre solution si il y a une réduction sur le diviseur : Utiliser deux switchs en série (Que si ils sont NO bien sur) avec des cames. Un sur le mandrin, l'autre sur le moteur ou un des pignons du réducteur. La précision sera bien améliorée.

Merci @Jean-Claude Garnier d'avoir lancé la machine à gamberger.😉 Sur un forum de passionnés, on devrait trouver la meilleure !

Modifié (le) par bracame
Rectification
Lien vers le commentaire
Partager sur d’autres sites

Je dirais bien les capteurs optiques qu'on utilise au boulot et qui peuvent pour certain avoir une sacrée portée (1m avec une précision de détection au 1/100eme) mais je n'ai absolument aucune idée si ils peuvent être compatibles avec les cartes qu'on utilises.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous,

Je ne viens plus très souvent ici mais avec ce sujet je ne suis pas venu pour rien !

Moi qui ai essayé une yottachiée de firmwares capables de faire fonctionner (correctement) cette maudite RAMPS en Grbl sans en trouver un seul correct, voilà que l'ami @Jean-Claude Garnier a fait le travail et le sert tout chaud. Il me tarde de tester, mais pour le moment j'ai bien d'autres choses à faire (et pas de budget).

Lien vers le commentaire
Partager sur d’autres sites

@Locouarn je te l'avais bien dit, que j'étais une teigne.....

Il y a 10 heures, bracame a dit :

Merci @Jean-Claude Garnier d'avoir lancé la machine à gamberger

Y'a pas de quoi, je suis content de partager ce que j'aime.

J'imagine qu'un capteur à fourche dans ce genre ça devrait marcher :

image.png.092c683af4f8cf90450163915a535e9f.png

Il suffirait, sur l'arrière du diviseur, de planter une goupille de 2mm dans une partie tournante, faire un petit carter qui maintiendrait le end-stop et protègerait de la poussière, et hop !

  • +1 1
Lien vers le commentaire
Partager sur d’autres sites

Hello, les "followers" de ce projet

Dernières (mauvaises) nouvelles 😭😭😭😭

Une fois mon proto testé et re-testé, tout marche nickel, j'enlève les Pololus, je passe la Ramps dans le coffret de la CN, je lui connecte mes TB6600 selon le schéma qui va bien, et qui avait très bien fonctionné avec le shield Protoneer : EN, DIR et PUL

image.png.39aae8fa66b2eba85a36cacb07b6ad10.png

Je lance CNCjs, je mets les $$ en ordre de marche (courses, sens des axes, steps toussa toussa)

Trinquille, je commence à faire bouger les axes......

Et là, plus rien qui va !

Quand je bouge l'X c'est l'Y et le Z qui bougent en même temps, les autres axes pareil, même souk, j'y passe l'après midi à tout revérifier dans tous les sens rien à faire.

Pris d'un doute je démonte la Ramps, je remets les Pololus, je reconstitue le proto sur sa planchette, CNCjs, plus rien qui bouge, les moteurs ne se bloquent même plus....

Je me dis Zut j'ai cramé la Ramps, j'en commande une autre vite fait ça coûte 8.99€ je la reçois ce matin, CNCjs...... que dalle !

Je teste vite-fait les Pololus sur une autre carte (Anycubic @Bakatora....) tout bouge, les Pololus sont OK

Aurais-je acheté une Ramps pour rien et fumé l'Arduino ?  Et comment tester ce dernier ?

C'était les niouzes.  Me voilà "bien marri" comme y disent dans les livres.

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...