Catégories
Liens
Ceci est une ancienne révision du document !
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.
Inspiration : http://www.usinages.com/threads/retrofit-charlyrobot.42233/print
Nous n'allons certainement pas garder :
Nous allons tester les moteurs et drivers un par un avec ce code test :
ps : nous règlons les DIPSWITCHs :
//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--; } }
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=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=1 (hard limits, bool) $22=1 (homing cycle, bool) $23=2 (homing dir invert mask:00000010) $24=25.000 (homing feed, mm/min) $25=500.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=2000.000 (x max rate, mm/min) $111=2000.000 (y max rate, mm/min) $112=500.000 (z max rate, mm/min) $120=40.000 (x accel, mm/sec^2) $121=40.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)
Nous avons choisi d'ajouter une petite arduino nano et un relai 5V>220V pour controler avec les bouton de facade l'allumage de la defonceuse. Les boutons sont en pullUp, et le stop est inversé… de plus nous obtenons pas mal de bruit qui declenche l'allumage de la fraiseuse intempestif…. du coup nous rajoutons des condensateurs antibruit et un code arduino tarabiscoté pour attendre que les boutons soit appuyé et maintenu appuyé quelques centaines de millisecondes…
float Compteur = 0; int StartBouton = 4; int StopBouton = 5; int RelayPin = 13; 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 >= 400){ 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; }