Pages: [1] 2   Go Down
Author Topic: logiciel CNC pour arduino en java  (Read 2093 times)
0 Members and 1 Guest are viewing this topic.
Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
Logged

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

0
Offline Offline
Full Member
***
Karma: 0
Posts: 198
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Grenoble/Lyon - France
Offline Offline
Sr. Member
****
Karma: 0
Posts: 363
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut
Tu comptes utiliser ce logiciel pour piloter une CNC maison a base d'arduino?
Tiens nous au courant ^^
Logged


Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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
« Last Edit: June 01, 2008, 12:37:27 am by jfs » Logged

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

0
Offline Offline
Full Member
***
Karma: 0
Posts: 198
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut

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

a+
« Last Edit: June 01, 2008, 07:40:08 am by Vincent » Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Et tu es sur PC ?
Logged

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

0
Offline Offline
Full Member
***
Karma: 0
Posts: 198
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
« Last Edit: June 01, 2008, 04:17:26 am by Vincent » Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

« Last Edit: June 01, 2008, 04:34:10 am by jfs » Logged

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

Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.  :-?
Logged

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

Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ......  smiley-grin 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.  :-?
« Last Edit: June 01, 2008, 11:06:53 am by jfs » Logged

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

Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.  :-/
Logged

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

Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
« Last Edit: June 05, 2008, 02:41:19 am by jfs » Logged

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

Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

J'y ai passé la journée et je pense avoir grillé un Atmega  smiley-sad

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:
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:
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 :

Logged

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

Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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  :smiley )
-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:
#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 . smiley-sad

Est-ce que quelqu'un aurait une idée du problème ?
« Last Edit: June 06, 2008, 11:11:41 am by jfs » Logged

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

Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:

...
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.
Logged

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

Pages: [1] 2   Go Up
Jump to: