Utiliser axe A pour un deuxième moteur Y

MICHAFWI
Messages : 10
Enregistré le : 18 juin 2020 21:43

Utiliser axe A pour un deuxième moteur Y

Message par MICHAFWI »

Bonjour,

C'est la première fois que j'utilise un forum quel qu'il soit alors soyez indulgent...

Je construit une CNC 3 axes entièrement alu et vis a bille avec 4 nema 23 et broche 2200W refroidie a l'eau en triphasé 220 (j’enverrai une photo si je trouve comment faire).
Dis comme ça c'est très éloigné de la RS-CNC32 de Romain....Mais c'est bien toute la partie soft et alimentation de cette dernière que j'ai trouvée bien documenté et intuitive qui m'a poussée à me lancer dans l'aventure.
J'arrive à la fin de la construction proprement dite et je me rends compte a lecture des forums que l'axe A sur la carte n'est pas activé?? Mon axe Y sera mu par deux moteurs. Donc ma question...: Comment faire pour activer ce 4eme axe pour qu'il soit la recopie de l'axe Y en terme de déplacement...? sur d'autre carte j'ai vu un cavalier à placer mais la....

Merci par avance de votre aide
mstrens
Messages : 2611
Enregistré le : 27 févr. 2018 12:58

Re: Utiliser axe A pour un deuxième moteur Y

Message par mstrens »

Je crains que ce ne soit facile avec la carte GRBL STM32 (non prévu dans le firmware).

En fait la version officielle de GRBL prévue pour tourner sur arduino Uno a une option qui permet de dédoubler un axe.
Voici l'extrait de la doc.

// Select the one axis to mirror another motor. Only X and Y axis is supported at this time.
#define DUAL_AXIS_SELECT X_AXIS // Must be either X_AXIS or Y_AXIS

// To prevent the homing cycle from racking the dual axis, when one limit triggers before the
// other due to switch failure or noise, the homing cycle will automatically abort if the second
// motor's limit switch does not trigger within the three distance parameters defined below.
// Axis length percent will automatically compute a fail distance as a percentage of the max
// travel of the other non-dual axis, i.e. if dual axis select is X_AXIS at 5.0%, then the fail
// distance will be computed as 5.0% of y-axis max travel. Fail distance max and min are the
// limits of how far or little a valid fail distance is.
#define DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT 5.0 // Float (percent)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX 25.0 // Float (mm)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN 2.5 // Float (mm)

// Dual axis pin configuration currently supports two shields. Uncomment the shield you want,
// and comment out the other one(s).
// NOTE: Protoneer CNC Shield v3.51 has A.STP and A.DIR wired to pins A4 and A3 respectively.
// The variable spindle (i.e. laser mode) build option works and may be enabled or disabled.
// Coolant pin A3 is moved to D13, replacing spindle direction.
#define DUAL_AXIS_CONFIG_PROTONEER_V3_51 // Uncomment to select. Comment other configs.

// NOTE: Arduino CNC Shield Clone (Originally Protoneer v3.0) has A.STP and A.DIR wired to
// D12 and D13, respectively. With the limit pins and stepper enable pin on this same port,
// the spindle enable pin had to be moved and spindle direction pin deleted. The spindle
// enable pin now resides on A3, replacing coolant enable. Coolant enable is bumped over to
// pin A4. Spindle enable is used far more and this pin setup helps facilitate users to
// integrate this feature without arguably too much work.
// Variable spindle (i.e. laser mode) does NOT work with this shield as configured. While
// variable spindle technically can work with this shield, it requires too many changes for
// most user setups to accomodate. It would best be implemented by sharing all limit switches
// on pins D9/D10 (as [X1,Z]/[X2,Y] or [X,Y2]/[Y1,Z]), home each axis independently, and
// updating lots of code to ensure everything is running correctly.
// #define DUAL_AXIS_CONFIG_CNC_SHIELD_CLONE // Uncomment to select. Comment other configs.


Toutefois, je ne retrouve aucune trace de cela dans la version 32 bit pour stm32.

A défaut de cette option, il y a un risque important qu'en activant un 4ème axe indépendant, tu lances (en particulier avec le TFT ou le Nunchuk) une commande qui ne demande pas un déplacement du 4ème axe égal à celui de l'ae Y. Cela va alors forcer ta mécanique et quelque chose va casser.

Comme possibilité, j'en vois 2:
- ne pas utiliser la carte STM32 mais la version officielle de GRBL en la faisant exécuter sur un arduino UNO, pro mini ou nano. Cette version peut être interconnectée avec la carte ESP32 pour disposer des fonctionalités (wifi, tft,sd card,...) offertes
- utiliser la carte STM32 pour GRBL mais brancher 2 drivers TB6600 ou autre (un pour chaque moteur)sur les sorties DIR et PUL de l'axe Y.
Dans ce cas, il faut veiller à l'équerrage des 2 côtés Y avant de lancer le homing (car il n'y aurait qu'un fin de course)
MICHAFWI
Messages : 10
Enregistré le : 18 juin 2020 21:43

Re: Utiliser axe A pour un deuxième moteur Y

Message par MICHAFWI »

Merci pour ton retour très complet,
Si j'ai tout bien compris, soit:
- je change tout et je passe sous arduino. El il faut tout programmer, chose que je ne sais pas faire...
- j'utilise une carte mega2560 R3 wifi que j'avais acheté avant de partir sur la solution SMT32, et la c'est pire a bidouiller parce qu'il faut aussi programmer un ecran.
-la solution des deux drivers sur une sortie ne me plait pas, rapport a l’équerrage...
- OU, et dis moi si je me trompe, activer le 4eme axe et le gérer en mode "slave" de façon logicielle via mach3 par exemple. Sachant du coup que l'on ne doit pas utiliser l’écran et le nunchuk. C'est une solution (temporaire ou pas) plus simple a mettre en oeuvre que la première ou pas ?
je doute :roll: :)
mstrens
Messages : 2611
Enregistré le : 27 févr. 2018 12:58

Re: Utiliser axe A pour un deuxième moteur Y

Message par mstrens »

Je n'ai sans doute pas été assez clair.
Si tu utilises un arduino, il n'y a rien à programmer.
Il faut juste éditer quelques lignes de paramétrage avant de flasher GRBL dans l'arduino.

L'arduino peut être un UNO, Nano ou pro mini (tous à base d'un AVR328) qui ne coûte de 2 ou 3 €.

Il est peut être possible d'utiliser un arduino Mega mais il faudrait vérifier dans cette version de GRBL (elle est différente) si l'option DUAL AXIS est prévue.

Ensuite quelque soit l'arduino que tu utilises, tu peux le connecter à la carte ESP32 (prévue pour la RS-CNC32 mais compatible GRBL) qui elle gère l'écran, la carte SD, la nunchuk, le wifi. Il n'y a rien à programmer.
A noter que dans la carte ESP32, il ne faut pas activer l'option 4ème axe car c'est en fait GRBL qui va lui même automatiquement dédoubler les commandes de l'axe Y par exemple pour commander 2 drivers simultanément. Lors du Home, c'est GRBL qui va activer séparément les 2 drivers/moteurs pour que chacun atteigne bien son propre fin de course.
J'espère que c'est plus clair.
Avatar du membre
HTheatre
Messages : 5912
Enregistré le : 31 mars 2019 08:21
Localisation : Rivesaltes

Re: Utiliser axe A pour un deuxième moteur Y

Message par HTheatre »

Bonjour à tous les deux,

Pour ma part, je n'ai toujours pas compris, et cela m'intéresserait de comprendre pour ma culture, de connaître la ou les différences qu'il y a à utiliser "deux voies" ENA-, DIR-, PUL- distinctes pour commander 2 moteurs via 2 drivers/steppers (1 par moteur) ou d'utiliser une seule voie ENA-, DIR-, PUL- pour commander ces 2 mêmes moteurs via 2 drivers/steppers (1 par moteur) toujours.

Si je fais l'analogie avec l'aéromodélisme, pour commander par exemple les volets d'un avion (surface mobile qui permet d'augmenter/diminuer la portance des ailes lors des phase de décollage et atterrissage), on utilise très souvent 2 servomoteurs (1 par volet - il y en a un sur chacune des ailes) qui agissent simultanément et à l'identique sur le volet respectif qu'il commande. Les servomoteurs qui disposent chacun de leur propre driver/stepper embarqué sont alors reliés à 1 seule voie du récepteur radio à laquelle on connecte un câble en "Y". Le récepteur se trouve dans l'avion et transmet les ordres de mouvements demandés par le pilote via l'émetteur radio (qu'il tient dans les mains) aux servomoteurs commandant les volets. Cette configuration correspond donc pour une CNC à connecter 2 drivers/steppers (chacun commandant un moteur) à une seul voie ENA-, DIR-, PUL- et me paraît être la configuration optimale pour commander les déplacements d'un axe de la CNC à l'aide de 2 moteurs... Mais je me trompe certainement apparemment.

Je ne comprends pas non plus la notion de "veiller à l'équerrage". Je pensais, en effet, que l'on commande l'axe des Y, par exemple, avec 1 seul ou 2 moteurs, l'équerrage de la CNC doit être parfait. Est-ce que la vérification du bon équerrage n'a pour unique but ici de permettre que les 2 endstops (un pour chaque moteur) soit activés exactement en même temps ? Si tel est le cas paraît quasiment impossible. Par ailleurs, en quoi le fait de n'avoir qu'un seul endstop pour un seul des 2 moteurs serait-il problématique, puisque dans tous les cas l'équerrage d'un CNC doit être parfait ?

@+
mstrens
Messages : 2611
Enregistré le : 27 févr. 2018 12:58

Re: Utiliser axe A pour un deuxième moteur Y

Message par mstrens »

Si tu as deux moteurs (un pour chaque côté) qui ne sont pas solidaires mécaniquement, et que les moteurs ne sont pas alimentés, il est possible de déplacer légèrement un côté par rapport à l'autre car le portique n'a pas une rigidité infinie.
Si tu n'as qu'une seule source qui donne les impulsions (DIR/PUL) à 2 drivers, il faut veiller à "aligner" les côtés avant d'allumer les moteurs. Sinon, s'il y a un décalage initial de par exemple 1 ou 2 mm, celui-ci va se maintenir sur tous les mouvements ultérieurs. Il faut donc mettre le portique à "l'équerre" par exemple en déplaçant manuellement chacun des 2 côtés pour l'amener sur des butées mécaniques et ce avant de lancer la commande Home.

Si GRBL peut générer des signaux DIR/PUL séparés pour chacun des 2 moteurs, il est possible de laisser GRBL faire l'équerrage automatiquement sur base d'un fin de course de chaque côté. C'est une option spéciale dans la version officielle de GRBL qui n'a pas été reprise lors de l'adaptation au STM32. Avec cette option, GRBL duplique automatiquement les signaux DIR/PUL d'un axe (par exemple Y) pour des mouvements normaux sauf pour le Homing. Pour ce dernier, je présume qu'il commence à bouger les 2 moteurs en même temps, il en arrête un dès qu'il rencontre son fin de course mais continue à bouger l'autre tant que ce dernier n'a pas atteint son fin de course. Une fois les 2 fins de course atteint, le portique est supposé être en position correcte et les 2 côtés alignés. C'est une option documentée mais que je n'ai jamais testée. je ne sais donc pas comment il gère le retrait (simultanément ou pas pour les 2 côtés).
Avatar du membre
HTheatre
Messages : 5912
Enregistré le : 31 mars 2019 08:21
Localisation : Rivesaltes

Re: Utiliser axe A pour un deuxième moteur Y

Message par HTheatre »

Merci mstrens,

C'est maintenant parfaitement clair pour moi.

@+
MICHAFWI
Messages : 10
Enregistré le : 18 juin 2020 21:43

Re: Utiliser axe A pour un deuxième moteur Y

Message par MICHAFWI »

Merci encore,

Ce que tu me dis est clair.
Cependant ..... :lol:
Je ne comprends pas pourquoi on peut dans la version gbrl 1.1 release h activer le dualmotor et en même temps on doit ajouter un shield et deplacer un cavalier pour choisir la recopie d'axe. Ce n'est pas l'un ou l'autre ?
J'ai regardé le dernier GBRL de la Mega effectivement ne supporte pas le dualmotor, mais si on rajoute le shield il suffit de placer les cavaliers au bon endroit non ? j'essaye de comprendre ma ça dépasse mes compétences théoriques sur le sujet
Aze
Messages : 1928
Enregistré le : 11 mars 2017 14:13

Re: Utiliser axe A pour un deuxième moteur Y

Message par Aze »

Si tu mets un cavalier, en gros c'est comme-ci tu branchais en 'Y' donc il n'y a pas d'options pour l'équerrage, et donc à toi de faire l'équerrage manuellement en amenant ton portique en butée avant allumage de la machine.
Si tu ne mets pas de Shield et prends un UNO, tu peux gérer directement l'équerrage via le firmware GRBL qui a l'option. Si c'est un shield qui est officiellement 4 axes (il y en a 2 modèles apparemment, c'est écrit dans le commentaire du firmware qu'a copié Mstrens), tu n'as pas besoin de mettre le cavalier, c'est bien le programme qui va faire la copie des signaux.
En espérant ne pas dire des bêtises.
MICHAFWI
Messages : 10
Enregistré le : 18 juin 2020 21:43

Re: Utiliser axe A pour un deuxième moteur Y

Message par MICHAFWI »

Merci pour vos reponses,
j'ai commandé arduino uno et CNC shied V3.0, reçu aujourd'hui.
j'ai compilé la derniere version GRBL en activant le dual motor. Mais alors maintenant me voila comme une poule avec une brosse a dent....
premiere question bete: il faut alimenter le arduino uno en 12V (donc changer d'alim) ou le SHied en 24V?
Ensuite sur le shield contrairement à la carte de Romain il n'y a q'un pin EN, est il commun a tous comme le 5V?
Enfin (pour l'instant) pour connecter l'ecran il faut aussi inverser Rx et TX?
Répondre