Go Down

Topic: logiciel CNC pour arduino en java (Read 3099 times) previous topic - next topic

Jean-François

Bonjour,

J'ai trouvé sur ce site une application CNC en java :

http://www.freewebs.com/adub/

L'adresse du zip pour télécharger les fichiers :

http://www.freewebs.com/adub/Slice_Dice_xml_reader.zip





Ca à l'air sympa et selon ce que dit la page d'accueil du site, ça devrait être compatible OS X.
Quand je lance l'application , elle ne s'affiche pas entièrement et ne fonctionne pas.

Dans le fichier .txt  d'instructions il est précisé que l'application à été compilée sur Wind... et que ça pourrais générer des problèmes .... effectivement.

Est-ce que quelqu'un aurait une piste pour corriger ce problème ?
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Vincent

Tu as fait la dernière mise à jour Java ?
a+

melka

Salut
Tu comptes utiliser ce logiciel pour piloter une CNC maison a base d'arduino?
Tiens nous au courant ^^
http://melka.one.free.fr/blog/
http://www.flickr.com/photos/melkaone/

Jean-François

#3
Jun 01, 2008, 07:33 am Last Edit: Jun 01, 2008, 07:37 am by jfs Reason: 1
Salut Vincent,

J'ai fait les mises à jours java, sur mon Emac OS X.3.9 j'ai la version 1.4.2 (je ne peux pas avoir une version plus récente) j'ai également testé sur mon Powerbook OS X 1.5 (dernère version de java disponible) et là ça ne fonctionne pas non plus, Quand je clique sur l'icône de l'appli pour la lancer elle s'installe à moitié et j'ai ça :




Voici ce qui se trouve dans le fichier readme.txt :

Code: [Select]
This application was created on Windows, which doesn't

properly support setting files as "executable",

a necessity for applications on Mac OS X.



To fix this, use the Terminal on Mac OS X, and from this

directory, type the following:



chmod +x Slice_Dice_xml_reader.app/Contents/MacOS/JavaApplicationStub



J'ai donc "chmodé" pour avoir un accès universel, mais c'est toujours la même situation.


Pour répondre à melka, avec l'arduino j'aimerais faire du "motion-control", au sens large du terme, si en passant je peux me faire une CNC, je vais pas dire non  ;D
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Vincent

#4
Jun 01, 2008, 10:48 am Last Edit: Jun 01, 2008, 02:40 pm by Vincent Reason: 1
Salut

J'ai la même chose, et le chmod ne change rien  :(
En tous cas, on comprend mieux pour les moteurs PAP maintenant  ;D

a+

Jean-François

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Vincent

#6
Jun 01, 2008, 11:15 am Last Edit: Jun 01, 2008, 11:17 am by Vincent Reason: 1
Non sur Mac (MacBook avec Leopard).
La solution serait peut être de récupérer les sources et les re-compiler sur Mac OS, mais je ne sais pas si c'est envisageable.

Jean-François

#7
Jun 01, 2008, 11:27 am Last Edit: Jun 01, 2008, 11:34 am by jfs Reason: 1
Un Mac user...  ;D

Quote
...
La solution serait peut être de récupérer les sources et les re-compiler sur Mac OS...


C'est aussi ce que je pensais, mais je ne sais pas faire ça... j'utilise Xcode (ou plutôt j'essaye).

J'ai posé la question sur les forums Mactronique et Macgénération, mais pour l'instant je n'ai pas encore de réponse.

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Jean-François

Dans le fichier pour Windows il y a un fichier data, ce dernier manque dans le fichier OSX, il suffit de le transférer dans "application.macosx" et là La fenête s'ouvre correctement.

Sur mon eMac tout l'affichage clignote comme si je n'avais pas assez de ressource CPU, cela ne se produit pas sur le PowerBook.

Ensuite lorsque j'essaye de télécharger les fichiers xml (qui contiennent les coordonnées des mouvement), la fenêtre reste noire.  :-?
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Jean-François

#9
Jun 01, 2008, 04:51 pm Last Edit: Jun 01, 2008, 06:06 pm by jfs Reason: 1
En fait ça à l'air de bien marcher, il faut cocher les cases "Show Move" et "Sim Mod" , charger un fichier xml (zip), cliquer sur "Send Data" et ......  :D Coooool

Si l'on est pas en mode démo, le logiciele doit attendre une réponse de l'Arduino et bloque l'étape, comme le sketch fourni dans le zip qui se trouve dans le dossier Slice_Dice_xmlreader est en processing, je n'ai pas pu (su ?) le charger complètement avec arduino 0010, j'ai du mettre 1 ligne en commentaire et je pense que ça porte à conséquence.  :-?
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Jean-François

Dans le fichier xyz_gcode_interpreter (à dézipper) il y a trois fichiers .pde:

-xyz_gcode_interpreter.pde

-linear_interpolation.pde

-notes.pde (pas de code, mais des notes)

Il faut prendre le premier et faire un nouveau sketch dans l'ide arduino, puis faire glisser par dessus le deuxième.
Le nom des deux dois se voir en haut de la fenêtre, lors de la compilation les deux sont pris en compte.

En faisant des essais à "blanc", la plaque Arduino branchée seulement sur l'usb et rien d'autre (pas de moteurs), les lumières TX/RX clignote à chaque fois que je clique sur "continue" dans l'appli java.
Je pensais que les lumières TX/RX clignoteraient en continu, mais je dois chaque fois cliquer sur "continue" pour passer au Step suivant.
Je me demande si l'appli java n'attend pas un message de confirmation de la plaque Arduino pour continuer, mais je ne vois pas où cela se trouve dans le .pde.  :-/
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Jean-François

#11
Jun 05, 2008, 09:24 am Last Edit: Jun 05, 2008, 09:41 am by jfs Reason: 1
Je fais des essais entre l'Arduino et le tableau de contrôle CNC, l'Arduino devrait renvoyer quelque chose en confirmation pour passer de Step en Step, mais ce n'est pas le cas, le programme en java se met en pause après chaque étape et il faut le relancer.
J'ai placé des led sur les pins 2,3,4,5,7,8,10.
la led 10 reste allumée en permanence (PWM chauffe fil) et décochant la case "Heater c" et en mettant la valeur à zéro, la led ne s'éteint pas. Les autres ne s'allument pas lors du passage à un autre step.

D'après ce que j'ai pu comprendre dans le fichier java, il envoie des paquets comme ça :

UX+000006Y+000003Z+000002E1*

U : début du string
X-Y-Z : paramètre des trois axes en +/-
* : fin de string

Il me semble avoir encore vu quelque part qu'après l'* il y a encore un "/0" (mais je ne suis pas sur).

Par contre le string "UX+000006Y+000003Z+000002E1" est converti en Ascii 0-9.

j'ai essayé d'envoyer des paquets directement avec le Serila monitor d'Arduino 0010, mais rien ne bouge

Est -ce que l'Arduino reçoit "UX+000006Y+000003Z+000002E1" car il l'aurait convertit à nouveau en caractères ou est-ce qu'il reçoit "858843484848484854..." ?

Est-ce qu'il y a un moyen de récupérer ce qu'il y a en sortie du panneau de contrôle et de l'afficher quelque part ?
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Jean-François

J'y ai passé la journée et je pense avoir grillé un Atmega  :(

je n'arrive toujours pas à avoir cette confirmation de la part de l'Arduino.

J'ai déplacé un bout de code pour voir si j'arrive à envoyer des données au tableau de commande :

Cette partie qui se trouve à la fin de yxz_gcode_interpreter.pde :
Code: [Select]
int CheckTemp(boolean sendBack){
  // read adc pin and optionally send it back to Processing.
  thermistorValue = analogRead( thermistorPin );
  if(thermistorValue < MaxTempReading && thermistorValue > MinTempReading){ tempOK = true; }
  else{ tempOK = false;}
  int t = thermistorValue;
  if(sendBack){ // send temp back to processing if true or too hot/cold
     Serial.print("UT");
     Serial.print(t,DEC);// string representation
     Serial.print("*");
     Serial.print(10,BYTE);
  }
}


Légérement modifiée et placée au début :
Code: [Select]
void loop(){
  tempOK = false;
  int t = thermistorValue;

     Serial.print("UT");
     Serial.print(t,DEC);// string representation
     Serial.print("*");
     Serial.print(10,BYTE);


Au tableau je peux lire une valeur de température, valeur 341 (j'ai mis un capteur de lumière sur la pin a2) :



En haut du tableau sous "Status", il y a en rouge un "paused with 5 NACK", je ne sais pas exactement ce que c'est, je pense à une non-réponse de l'Arduino :

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Jean-François

#13
Jun 06, 2008, 05:37 pm Last Edit: Jun 06, 2008, 06:11 pm by jfs Reason: 1
Une nouvelle journée à faire des essais et à imprimer le .pde pour le scruter....
Je cherche le petit "truc" qui fait que l'Arduino n'interprète pas ce qui sort du tableau CNC.

J'ai fini par me dire qu'il fallait tout supprimer et ne garder que la base.
J'ai supprimé:

-le contrôle de redondance cyclique (CRC, j'ai pas encore vraiment compris comment il fonctionne  ::) )
-les contrôle de présences de l'extrudeur ou du fil chaud
-la mesure de température du fil chaud
-le contrôle temporisé d'entrée de flux
-la gestion des moteurs (avant / arrière / stop...)

J'ai gardé :

-la lecture du flux
-l'envoi de confirmation (ACK)
-le placement du flux dans un tableau
-la lecture du tableau

Sur les sorties Digitales j'ai mis 4 leds :

-une qui s'allume dès la mise en tension de l'Arduino (pour être sur que du courant sort et que le programme commence), elle devrait s'éteindre lorsqu'un 'U' est lu et se rallumer au bout de 1 seconde.

-trois autres qui correspondent à 'X', 'Y', 'Z', qui devraient s'allumer à la lecture d'une de ces lettres puis s'éteindre au bout de 2 seconde.


Voici le .pde dans cette configuration :

Code: [Select]
#define maxLength   261
#define ACK          6 //confirmation de récéption

char buffer[maxLength];

int pin1 = 2 ;
int pin2 = 4 ;
int pin3 = 5 ;
int bufferLength     = 0;
int heaterPin        = 10;

void setup(){
   Serial.begin(19200);
   pinMode(pin1,OUTPUT);
   pinMode(pin2,OUTPUT);
   pinMode(pin3,OUTPUT);
   pinMode(heaterPin,OUTPUT);
     clearBuffer();
}

void loop(){
 
 digitalWrite(heaterPin,HIGH);
 
  if ( Serial.available() > 0){
     char c = 0;
     
     while (c != 10){ // retour de ligne en fin de paquet
        c = Serial.read();  
      buffer[bufferLength] = c;
      bufferLength++;        
      parseBuffer();
       Serial.print(ACK,BYTE);//ACK = 006
      clearBuffer();
}}}

void clearBuffer(){
 
    bufferLength = 0;
  for(int i = 0; i < maxLength; i++){buffer[i] = 0;}
}

void parseBuffer(){
 
     for (int i = 0; i < bufferLength-3; i++){
      switch (buffer[i]){
        case 'U':
           digitalWrite(heaterPin,LOW);
           delay(1000);
           digitalWrite(heaterPin,HIGH);
        break;
        case 'X':
           digitalWrite(pin1, HIGH);
           delay(2000);
           digitalWrite(pin1, LOW);
           break;
        case 'Y':
           digitalWrite(pin2, HIGH);
           delay(2000);
           digitalWrite(pin2, LOW);
           break;
        case 'Z':
           digitalWrite(pin3, HIGH);
           delay(2000);
           digitalWrite(pin3, LOW);
           break;
      }
  }
}



Le tableau de commande CNC est tel quel (je ne sais pas compiler en java donc pas de modifs pour le moment).
Je charge le fichiers "123block.xml", j'envoie les données (Send Data).
Le xml est lu, l'écran montre l'avancée de "l'usinage".
L'Arduino reçoit et envoie  bien des infos, les led RX / TX clignotent comme je l'imaginais au début des essais.

Je m'aperçois que malgré une lecture de quelque chose, mes leds restent en l'état, je n'arrive pas à lire ou interpréter le flux entrant . :(

Est-ce que quelqu'un aurait une idée du problème ?
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Jean-François

Je viens de faire un essai en prenant directement la valeur de c (85 pour 'U'):

Code: [Select]

...
while (c != 10){ // retour de ligne en fin de paquet
        c = Serial.read();
       if (c == 85){ digitalWrite(heaterPin,LOW); // 85 = U
           delay(1000);
           digitalWrite(heaterPin,HIGH);}
...


Et là ça clignote.

Maintenant, il faut que je trouve comment convertir ça en caractère.
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Go Up