Des nouvelles du front...
Je termine la construction par la pose de trois connecteurs type cinch/RCA pour connecter par la suite un arrêt d'urgence "physique", un bouton de pause pour arrêter provisoirement un usinage en cours, et un dispositif de jauge pour déterminer la longueur des outils.

- Prises_Aux.jpg (61.44 Kio) Consulté 6379 fois
Contrôle de planéité avant de passer à la partie logicielle.

- Planeite.jpg (61.11 Kio) Consulté 6379 fois
Logiciel et paramétrages de base
Comme indiqué au début de la construction je vais utiliser bCNC pour piloter la machine. Pour la rendre autonome j'ai recyclé un ordinateur portable datant d'une quinzaine d'année (Toshiba Satellite A100 équipé d'un processeur centrino double cœur) pour installer ce logiciel. Le système d'exploitation d'origine (Windows XP) ne permettant pas d'exploiter toutes les fonctionnalités de bCNC, je l'ai remplacé par Linux (Ubuntu 18.04 pour i386) avec l'interface graphique MATE, agréable à l’œil et très fluide dans son fonctionnement. Gros avantage avec Linux, on est débarrassé une bonne fois pour toute du cirque des pilotes windows devenus rapidement obsolètes et dont on ne trouve pas les mises à jour ; on branche et on passe aux choses sérieuses.
Pour les premiers essais je n'ai modifié qu'un minimum de paramètres par défaut de GRBL :

- Param_GRBL.png (140.92 Kio) Consulté 6379 fois
$2 --> passé à 255 ; ce paramètre détermine le temps de maintien sous tension des moteurs entre deux ordres de déplacement. Le temps est exprimé en ms. En lui attribuant la valeur 255, il reste sous tension en permanence, donc bloqué (sauf bien sûr si on lui demande un déplacement). Raison de ce choix :
- la conception du chariot Z qui a tendance à descendre spontanément sous son propre poids et le fait que l'axe Z reçoit peu d'ordres pendant les opérations de découpe donc livré à lui même pendant des périodes très longues.
- la possibilité qu'offre bCNC de changer d'outil en cours d'usinage ; sans verrouillage l'axe Z risque de bouger, et de perdre des pas pendant les opérations de démontage/remontage des outils.
$30 et $31 Vitesse maxi et mini de la broche mis à 14000 et 0 dans un premier temps. Je reviendrais sur ces deux paramètres suite aux essais.
$100, $101, $102 Réglé à 100 sur les trois axes.
Nombre de pas du moteur pour obtenir un déplacement des chariots de 1 mm (pignon de 16 dents avec un pas circonférentiel de 2mm ; moteur à 200 pas par tour ; micros pas du driver réglé à 16). Chaque micro pas provoque un déplacement de 0.01mm (32 mm(1 tour pignon) / 3200 (200 pas x 16 micros pas)
$130, $131, $132 Réglé à 420 (X), 572 (Y), 70 (Z) Déplacements maximum des 3 axes.
Résultats des premiers tests:
-Sens de déplacement des chariots : X et Y OK, Z à inverser ($3 à mettre à 4)

- InversionAxes.png (40.62 Kio) Consulté 6379 fois
-Valeur des déplacements : Contrôle au pied à coulisse avec équerre et cales pour l'axe Y, directement avec la structure les axes X et Z. Précision de 0.1 mm sur les trois axes. Déplacement programmé de 100 mm sur X et Y, 50 mm sur Z.

- IMesure_Y0.jpg (67.06 Kio) Consulté 6379 fois

- Mesure_Y1.jpg (57.43 Kio) Consulté 6379 fois

- Mesure_Y2.jpg (46 Kio) Consulté 6379 fois
-Fonctionnement des fin de course : appui manuel en absence de déplacement des chariots (inutile de risquer la casse si un des câblage est défectueux. GRBL renvoie l'information dans la barre de statut IDLE (X...)

- E_Stops.jpg (96.51 Kio) Consulté 6379 fois
Test PWM pour piloter la broche par le Gcode :
Catastrophe La vitesse de broche évolue bien mais pas comme on le souhaite. GRBL génère une sortie PWM linéaire entre 0 et 5 V (en noir) et le comportement de la broche (en rouge). La progression de vitesse évolue suivant une courbe, atteint son maxi avant d'atteindre les 5 V et diminue ensuite.
Les valeurs en ordonnée correspondent au contenu de l'octet qui gère le PWM ; valeurs entre 0 et 254.
Après quelques recherches, j'ai constaté que la solution se trouve dans... GRBL.
1- Ouvrir le fichier cpu_map.h et rechercher les lignes suivantes :
// Prescaled, 8-bit Fast PWM mode.
#define SPINDLE_TCCRA_INIT_MASK ((1<<WGM20) | (1<<WGM21)) // Configures fast PWM mode.
// #define SPINDLE_TCCRB_INIT_MASK (1<<CS20) // Disable prescaler -> 62.5kHz
// #define SPINDLE_TCCRB_INIT_MASK (1<<CS21) // 1/8 prescaler -> 7.8kHz (Used in v0.9)
// #define SPINDLE_TCCRB_INIT_MASK ((1<<CS21) | (1<<CS20)) // 1/32 prescaler -> 1.96kHz
#define SPINDLE_TCCRB_INIT_MASK (1<<CS22) // 1/64 prescaler -> 0.98kHz (J-tech laser)
// NOTE: On the 328p, these must be the same as the SPINDLE_ENABLE settings.
#define SPINDLE_PWM_DDR DDRB
#define SPINDLE_PWM_PORT PORTB
#define SPINDLE_PWM_BIT 3 // Uno Digital Pin 11
Par défaut la fréquence du PWM est calée sur 0.98 kHz (en gras), mais le module d'adaptation pour piloter la broche fonctionne entre 1 et 3 kHz.
Pour modifier la fréquence, il faut mettre en commentaire la ligne en gras (//) et dé-commenter la ligne au-dessus (supprimer les '//'). La fréquence passe à 1.96 kHz, dans la fourchette du module.
Pour éviter les problèmes, on ne touche à rien d'autre et on sauvegarde la fichier. Pour qu'il soit opérationnel, il faudra le recompiler et le téléverser dans l'arduino (sans rien débrancher sur la machine, mais avec l'alim de puissance du shield hors tension). Les paramètres de la machine sont conservés pendant la mise à jour de l'arduino.
2- Toujours dans le dossier GRBL répertoire
Doc/script ouvrir le fichier
fit_nonlinear_spindle.py avec un utilitaire genre notepad (éviter les traitements de texte qui insèrent des caractères de contrôle qui mettent le bazar dans les lignes de code).
La démarche à suivre est parfaitement expliquée, il suffit de lire... tranquillement.
Après application de la solution proposée, les vitesses programmées par 'Sxxxx' se situent entre 100 et 200 tr/mn au-dessus de la consigne. Considérant qu'il s'agit de vitesses à vide, c'est correct.
D'ou les paramètres affichés sur le document paramètres "controller"
$30 = 14383 vitesse maxi calculée
$31 = 803.9 vitesse de rotation mini.
Désolé d'avoir été un peu long, mais cette broche se devait d'être un peu plus obéissante.
Bonne soirée.
JP