+ + + +
+
+
+ + +
+ +
+

+Table des matières

+ +
+ +
+ + + +

Charlyrobot GRBL

+
+
    +
  • Porteur du projet : resonance & julien maire
    +
  • +
  • Date : 16/03/2017/ - …
    +
  • +
  • Licence : CC-by-sa-3.0
    +
  • +
  • Description : Passer en GRBL une fraiseuse numérique Charlyrobot CRA4
    +
  • +
+ + +
+ +

Description

+
+ +

+Passer en grbl une fraiseuse numérique Charlyrobot CRA4 +

+ +

+Les Charlyrobot ont envahi les collèges dans les années 90, ce sont des +machines robustes, mais leur logiciel est un peu archaïque.
+ +Nous décidons de remettre a jour une CRA4 récupérée à l'ESADMM +(Beaux-Arts de Marseille) en changeant l'électronique par une Arduino +qui permettra une gestion en Grbl avec des logiciels comme Universal Gcode sender. +

+ +

+charly robot grbl +

+ +

+Inspiration : +http://www.usinages.com/threads/retrofit-charlyrobot.42233/print +

+ +

+Nous n'allons certainement pas garder : +

+
    +
  • le verrouillage du capot
    +
  • +
  • certains boutons à l'avant de la machine
    +
  • +
+ +
+ +

Matériaux

+
+
    +
  • 1 Arduino (uno)
    +
  • +
  • 1 cnc shield
    +
  • +
  • 3 drivers moteur DM420A
    +
  • +
  • du cable électrique
    +
  • +
+ +
+ +

Notes

+
+
    +
  • Les steppers ont 8 fils , 4 paire de deux. (il y en a une paire rouge (1e bobine) et une paire marron (2e bobine).
    +
  • +
  • Les end stops sont des fils jaunes vifs (certains sont bariolés), en paire avec les fils rouges (+ dans l'ancienne config).
    +
  • +
  • Le palpeur semble être un fil gris clair.
    +
  • +
  • L'alimentation d'origine délivre 32.5v
    +
  • +
+ +
+ +

Code test drivers pas à pas :

+
+ +

+Nous allons tester les moteurs et drivers un par un avec ce code test : +

+ +

+ +

+ +

+ps : nous règlons les DIPSWITCHs : +

+
    +
  • pour un maximum de courant : SW1,SW2,SW3 = OFF OFF OFF, SW4 = ON
    +
  • +
  • pour une résolution au 1/16e de pas : SW5 SW6 SW7 = ON ON OFF
    +
  • +
+
//Relier les entrées du driver à l'Arduino
+int dirPin = 2;
+int pulPin = 3;
+int enblPin = 4;
+ 
+void setup(){
+    pinMode(dirPin, OUTPUT);
+    pinMode(pulPin, OUTPUT);
+    pinMode(enblPin, OUTPUT);
+    digitalWrite(enblPin, HIGH);
+}
+ 
+void loop(){
+    slide('L', 500, 500); //go Left for 500 steps at speed 500, (the lower the number is the faster the motor will go)
+    delay(2000);
+    slide('R', 500, 500); //go Right for 500 steps at speed 500
+    delay(2000);
+}
+ 
+void slide(int dir, int steps, int sspeed){
+    if (sspeed < 50) sspeed = 10; //keeps the speed above 10
+    if (dir == 'L') digitalWrite(dirPin, HIGH);
+    else if (dir == 'R') digitalWrite(dirPin, LOW);
+ 
+    while (steps > 0){
+        digitalWrite(pulPin, HIGH);
+        delayMicroseconds(10);
+        digitalWrite(pulPin, LOW);
+        delayMicroseconds(10);
+        delayMicroseconds(sspeed);
+        steps--;
+    }
+}
+ +
+ +

Configuration GRBL

+
+ +

+Nous devons configurer le grbl … +https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.9 +

+
$0=10 (step pulse, usec)
+$1=255 (step idle delay, msec)
+$2=0 (step port invert mask:00000000)
+$3=0 (dir port invert mask:00000000)
+$4=1 (step enable invert, bool)
+$5=1 (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)    // homing ne marche pas bien , donc desactivé pour le moment
+$23=4 (homing dir invert mask:00000001)
+$24=250.000 (homing feed, mm/min)
+$25=1500.000 (homing seek, mm/min)
+$26=250 (homing debounce, msec)
+$27=1.000 (homing pull-off, mm)
+$100=640.000 (x, step/mm)
+$101=640.000 (y, step/mm)
+$102=640.000 (z, step/mm)
+$110=3000.000 (x max rate, mm/min)
+$111=3000.000 (y max rate, mm/min)
+$112=500.000 (z max rate, mm/min)
+$120=100.000 (x accel, mm/sec^2)
+$121=100.000 (y accel, mm/sec^2)
+$122=40.000 (z accel, mm/sec^2)
+$130=320.000 (x max travel, mm)
+$131=220.000 (y max travel, mm)
+$132=80.000 (z max travel, mm)
+
+
+

+Si vous utilisé UGS le reglage de la vitesse de deplacement (Feedrate) +manuelle est tres lente par defaut, il faut penser à la regler sinon +vous penserez que ca ne marche pas ! +

+
+

+note : sur WIn 10 UGS platform ne marche pas… il faut utiliser le Classic GUI il semble… +

+ +
+ +

Code allumage fraiseuse bouton de façade

+
+ +

+Nous avons choisi d'ajouter une petite Arduino nano et un relai +5V>220V pour contrôler avec les bouton de façade l'allumage de la +défonceuse. +Les boutons sont en pullUp, et le stop est inversé… de plus nous +obtenons pas mal de bruit qui déclenche l'allumage intempestif de la +fraiseuse …. du coup nous rajoutons des condensateurs +antibruit en parallèle et un code arduino tarabiscoté pour attendre que +les boutons soit amaintenu appuyé quelques centaines de millisecondes +pour agir… +

+ +

+ +

+
float Compteur = 0;
+ 
+int StartBouton = 4;
+int StopBouton = 5;
+int RelayPin = 3;
+ 
+void setup(){
+  pinMode(StartBouton, INPUT_PULLUP);
+  pinMode(StopBouton, INPUT_PULLUP);       
+  pinMode(RelayPin, OUTPUT); 
+  //Debug
+  Serial.begin(9600);                                     
+} // close setup
+ 
+ 
+void loop() {
+  while (digitalRead(StartBouton) == LOW ){ 
+ 
+    delay(100);  //resolution
+    Compteur = Compteur + 100;   
+ 
+    //Afficher le temps allumé
+    Serial.print("ms_start = ");
+    Serial.println(Compteur);
+ 
+                  if (Compteur >= 600){
+                  digitalWrite(RelayPin, HIGH);
+                  Serial.print("START");     
+                } 
+ 
+  }  //close while
+ 
+ 
+ // attention le bouton stop est inversé !
+  while (digitalRead(StopBouton) == HIGH ){ 
+ 
+    delay(100);  //resolution
+    Compteur = Compteur + 100;   
+ 
+    //Afficher le temps allumé
+    Serial.print("ms_stop = ");
+    Serial.println(Compteur);
+ 
+                  if (Compteur >= 300){
+                  digitalWrite(RelayPin, LOW);
+                  Serial.print("STOP");                   
+                } 
+ 
+  }  //close while
+ 
+//reset compteur
+Compteur = 0;
+}
+ +
+ +

Photos

+
+ +
+ + + + +
+
+
+ + +