Materiel
- Objectif :Imprimer des circuits imprimés double faces.
- Moyen:
- Utilisation d'un processeur ATmega328P sur Arduino Nano
- Énergie utilisée : Alim 230V AC -> 5V DC
- Commande : USB
- Moteur : 2x 28BYJ-48 5V avec driver NPN Darlinton ULN2003
- Servomoteur : SG90
- Capteur de fin de course : 2xMicro Switch miniature 3 Bornes
- Sources:
- Le programme GRBL : https://github.com/ruizivo/GRBL-28byj-48-Servo
- Sketch uses 29,814 bytes (97%) of program storage space. Maximum is 30,720 bytes.
Global variables use 1,490 bytes (72%) of dynamic memory, leaving 558 bytes for local variables. Maximum is 2,048 bytes.
La partie mécanique
J'ai pris une base sur le net en "sketchup", mais je ne sais plus où. Je l'ai entièrement retraité sur Solidworks 2016.Les options ajoutées :
- Capteurs de fin de course
- ??
La partie électronique
Branchement de l'arduino NANO
Les moteurs (28byj-48) sont connectés à une carte contrôleur qui utilise l'ULN2003.Les branchements sont les suivants :
|
Configuration avant compilation
Grbl 0.9i avec servomoteur
GRBL 0.9i avec support de servomoteur. Utilisez le code PIN D11 pour piloter le servo.
Utilisez les commandes M03 Sxxx (xxx entre 0 et 255) pour faire tourner le servo entre 0-180.
La commande M05 tourne le servo à zéro degré.
Vous pouvez modifier la durée de l'impulsion dans le fichier spindle_control.c:
#define RC_SERVO_SHORT 15 // Timer pour une durée d'impulsion de 0,6 ms (9 pour 0.6ms) #define RC_SERVO_LONG 32 // Timer pour une durée d'impulsion de 2,5 ms (39 pour 2.5ms) //#define RC_SERVO_INVERT 1 // pour inverser la direction de du servoSi vous souhaitez que le servo fonctionne de 0 -> 180 degrés, changez RC_SERVO_SHORT et mettez 9, RC_SERVO_LONG et mettez 39.
Si vous souhaitez inverser la direction de l'asservissement, décommenté la ligne ci-dessus.
La partie informatique
- 1ère Phase
Mettre le programme dans l'arduino
- Télécharger le fichier GRBL : grbl.hex
- Téléversez ce fichier sur votre arduino nano préféré :
avrdude -C ..\etc\avrdude.conf
-p m328p -c arduino -P COM5 -b 57600 -U flash:w:"grbl.hex":i
2ème Phase
Configurer votre GRBL
On peut configurer GRBL afin qu’il s’adapte aux réglages de notre CNC grâce au moniteur série.Pour cela, ouvrez le moniteur série de Arduino IDE (Outils > Moniteur série).
Réglez la vitesse à 115200 baud et sélectionnez nouvelle ligne.
Grbl 0.9j ['$' for help]Si vous tappé "$" il devrai mettre ça:
$$ (view Grbl settings) $# (view # parameters) $G (view parser state) $I (view build info) $N (view startup blocks) $x=value (save Grbl setting) $Nx=line (save startup block) $C (check gcode mode) $X (kill alarm lock) $H (run homing cycle) ~ (cycle start) ! (feed hold) ? (current status) ctrl-x (reset Grbl) ok okAvec "$$", il sort l'ensemble des paramètres suivants :
$0=10 (step pulse, usec) $1=25 (step idle delay, msec) $2=0 (step port invert mask:00000000) $3=0 (dir port invert mask:00000000) $4=0 (step enable invert, bool) $5=0 (limit pins invert, bool) $6=0 (probe pin invert, bool) $10=3 (status report mask:00000011) $11=0.010 (junction deviation, mm) $12=0.002 (arc tolerance, mm) $13=0 (report inches, bool) $20=0 (soft limits, bool) $21=0 (hard limits, bool) $22=0 (homing cycle, bool) $23=0 (homing dir invert mask:00000000) $24=25.000 (homing feed, mm/min) Vitesse lente pour deuxième accostage limite. $25=500.000 (homing seek, mm/min) Vitesse de recherche de l'origine $26=250 (homing debounce, msec) $27=1.000 (homing pull-off, mm) Distance pour libérer l'interrupteur fin de course(par défaut 1 mm) $100=250.000 (x, step/mm) Pas/mm suivant X $101=250.000 (y, step/mm) Pas/mm suivant Y $102=250.000 (z, step/mm) Pas/mm suivant Z $110=500.000 (x max rate, mm/min) Pas/mm maxi suivant X $111=500.000 (y max rate, mm/min) Pas/mm maxi suivant Y $112=500.000 (z max rate, mm/min) Pas/mm maxi suivant Z $120=10.000 (x accel, mm/sec^2) $121=10.000 (y accel, mm/sec^2) $122=10.000 (z accel, mm/sec^2) $130=200.000 (x max travel, mm) Distance maximum suivant X en mm à partir de X0 $131=200.000 (y max travel, mm) Distance maximum suivant Y en mm à partir de Y0 $132=200.000 (z max travel, mm) Distance maximum suivant Z en mm à partir de Z0 ok ok
$\$100, \$101, \$102$ : pas/mm
Il est nécessaire de connaitre le nombre de pas/mm, plusieurs solutions (Attention utiliser la "," et pas le ".")Courroie vis | |
---|---|
Pas par tour du moteur : | |
Diamètre de la poulie moteur : | mm |
Pas de la vis : | mm |
Vitesse de rotation : | pas/s |
$3 : La direction des ports
Valeur du masque | Inversion | ||
---|---|---|---|
Décimal | X | Y | Z |
0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 |
2 | 0 | 1 | 0 |
3 | 1 | 1 | 0 |
4 | 0 | 0 | 1 |
5 | 1 | 0 | 1 |
6 | 0 | 1 | 1 |
7 | 1 | 1 | 1 |
Homing Config $\$21,\$22,\$23,\$24,\$25, \$26,\$27$
Capteur de fin de course en position HOME.Paramètre | Désignation |
---|---|
$21=1 | Valide limite HOME sur capteurs |
$22=1 | Valide cycle HOME |
$23=0 | Masque d'inversion de sens des axes. |
$24=25.000 | Vitesse lente pour deuxième approche du capteur en mm/min |
$25=500.000 | Vitesse de recherche de HOME en mm/min |
$26=250 | Temps pour éviter le rebond du capeur en msec |
$27=3.000 | Distance pour dégager le fin de course en mm. |