Re: Jedicut - Arduino - Ramps 1.4

42
Jerome,

J'essaye d'avoir une vitesse rapide tres rapide, et une vitesse de decoupe environ a 4mm/s. Ma machine permet des deplacements rapides tres rapides ( 30mm/s), mais je n'arrive pas a avoir une configuration avec la vitesse tres rapide, et la vitesse de decoupe qui va bien. Pour l'instant. Pour avoir une vitesse tres rapide, je reduit le nombre de microsteps des drivers de moteurs.

Je continue a debugger mon systeme ( Table + logiciel).

Il est possible que je sois aussi victime du bug du Hub. Comme decrit par Alain. Reduire le nombre de microsteps = moins de mots de commande a gerer... Je verifie tout ca.

Olivier.

Re: Jedicut - Arduino - Ramps 1.4

43
Bonjour Hobi,
Pour adapter la configuratuion de jedicut à ta mécanique il faut:
- que tes drivers de PAP soit réglés sur 1/8 de pas ce qui te donne 800 steps par tour.
- 8 mm par tour divisés par 800 ce qui te donne 0.01mm par step.
- dans jedicut la config onglet communication " fréquence timer " 62500 c'est la fréquence max du timer de l'arduino
- dans jedicut la config onglet machine tu mets 0.01 dans nbre de mm/pas
- pour la vitesse de coupe tu mets 255 tu obtiens 2.43 mm/s
- pour la vitesse rapide tu mets 120 tu obtiens 5.12 mm/s (255 et 120 sont les valeurs transmises par jedicut)

Le problème c'est que dans l'arduino les valeurs reçues de jedicut sont limitées à 127 pour le max et 63 pour le mini.

[pre]
void handleCommand()
{

byte val = cmdArray[arrayIdxRead+1]; // The command parameter value
switch(cmdArray[arrayIdxRead])
{
case 'A': // All Motors on/off
if(val == '1') {digitalWrite(12, HIGH);}
else {digitalWrite(12, LOW);}
break;
case 'H': // Wire Heat ON/OFF (may be programmed as PWM (analog out))
if(val > 0) {digitalWrite(2, LOW);}
else {digitalWrite(2, HIGH);}
analogWrite(3,val*2.55); // PWM for wire heating (stretch 0-100% to a range of 0-255)
break;
case 'M': // Motor step Command
sendMotorCmd(val);
break;
case 'F': // Change the timer frequency, the time between two steps
// OCR1A values 255 = 250Hz 190 = 328Hz 127 = 500hz 63 = 1 Khz
if(val>127) val =127; // restrict from 0 to 127 corresponds to 1kHz to 0.5kHz
OCR1A = 63 + val;
break;
}

}
[/pre]

Pour ne plus avoir de limitation tu modifies comme ceci:

[pre]
void handleCommand()
{

byte val = cmdArray[arrayIdxRead+1]; // The command parameter value
switch(cmdArray[arrayIdxRead])
{
case 'A': // All Motors on/off
if(val == '1') {digitalWrite(12, HIGH);}
else {digitalWrite(12, LOW);}
break;
case 'H': // Wire Heat ON/OFF (may be programmed as PWM (analog out))
if(val > 0) {digitalWrite(2, LOW);}
else {digitalWrite(2, HIGH);}
analogWrite(3,val*2.55); // PWM for wire heating (stretch 0-100% to a range of 0-255)
break;
case 'M': // Motor step Command
sendMotorCmd(val);
break;
case 'F': // Change the timer frequency, the time between two steps
// OCR1A values 255 = 250Hz 190 = 328Hz 127 = 500hz 63 = 1 Khz
/*if(val>127) val =127; // restrict from 0 to 127 corresponds to 1kHz to 0.5kHz
OCR1A = 63 + val; */
if(val<10) val =10;
OCR1A = val;
break;
}

}
[/pre]

Tu ne devrais pas avoir de problème de vitesse de l'arduino car tu vas être au dessus de 63.
Pour ma mécanique, je dois travailler avec des valeurs sous 63 et c'est là que la vitesse de la carte arduino ne suit pas dans certains cas, je n'ai pas encore élucidé le problème.
A+
Je vous invite sur mon blog :
http://alainfelixdenis.wordpress.com/
sur mon site :
http://www.aeroden.fr

Re: Jedicut - Arduino - Ramps 1.4

46
Alain,

Je viens de regarder ton organigramme, et cela me fait penser a qqchose. La led orange sur la Mega ne devrait jamais clignoter pendant une decoupe, exact???

Soit j'ai fait une erreur de code ( les modifs sont minimes) soit il y a un probleme d'underflow / com dans mon systeme.

Je verifie mercredi!

Olivier.

Re: Jedicut - Arduino - Ramps 1.4

47
Bonsoir Olivier,
Lorsque tu parles de led orange sur la méga est-ce la diode sortie 13 parce que la mienne est rouge.
La diode 13 peut s'éteindre pendant une découpe, cela veux dire que le buffer "cmdArray" est presque plein et il envoie un ordre de stop d'envoi des données par Jedicut "Serial.write ("S")". C'est un peu plus compliqué que cela, cmdArray est utilisé en circulaire avec 20 octets de sécurité, et lorsque ces octets de sécurité passent à 25 il y a un ordre vers jedicut de continuer la transmission "Serial.write ("C")". Et ainsi de suite.

Est-ce que tu as une ramps 1.4 sur la Mega ? Est-ce que tu as obtenu les vitesse comme j'avais expliqué ? attention dans la modif, il ne faut pas oublier /* ..*/ en encadrement des anciennes lignes.
[pre]
if(val>127) val =127; // restrict from 0 to 127 corresponds to 1kHz to 0.5kHz
OCR1A = 63 + val;
[/pre]

A+ Alain
Je vous invite sur mon blog :
http://alainfelixdenis.wordpress.com/
sur mon site :
http://www.aeroden.fr

Re: Jedicut - Arduino - Ramps 1.4

48
Alain

Oui je parle de la led sur la pin 13. Ok donc la led est le flag de la fifo d'entree. C'est clair. J'ai bien une Ramps 1.4 sur une Mega ( pour l'instant) .

J'ai bien vu ton code, et tout est pret pour des tests ce soir. 2.43mm/s en vitesse de découpe, c'est pas rapide, mais je pense que ca permet d'avoir des decoupes plus belles, et de réduire la chauffe.

Je me rends compte que je voulais aller beaucoup trop vite.

Ceci fait que l'on a d'une part des vitesses de découpe lentes, mais il est bon d'avoir des vitesses de positionnement rapides.

Une amelioration a prevoir dans la generation du Gcode... Et peut être dans la version "normale" de jedicut.

Je te tiens au courant.

Olivier.

Re: Jedicut - Arduino - Ramps 1.4

49
Bonjour OLivier,
Comme tu as une Ramps 1.4, les drivers n'ont besoin que de 1µs en temps de step. Tu peux déjà diminuer le temps de 25 µs dans la génération du step.
Moi, j'ai mis 5µs par sécurité, 2 µs fonctionne encore.
[pre]
void sendMotorCmd(byte cmd)
{
PORTD = (PORTD & 0x0F) | (cmd & 0xf0); // Directions first!
PORTB = (PORTB & 0xF0) | (cmd & 0x0f); // and step
delayMicroseconds(25); // eventually wait a little bit
// and falling edge of step pulse
PORTB = (PORTB & 0xF0);
}
[/pre]

Bien entendu pour la carte méga + ramps ce ne sont pas ces ports.

Malgré toute mes recherches, je n'arrive pas à avoir la vitesse rapide sans le Hub USB. J'ai l'impression que le hub a un buffer qui facilite la tâche.
Voici le lien du Hub ; NGS IHUB4 , Je l'ai acheté en grande surface. Hyper U
A+ alain
Je vous invite sur mon blog :
http://alainfelixdenis.wordpress.com/
sur mon site :
http://www.aeroden.fr
cron
`); }); })(jQuery, window, document, phpbb);