Comment établir une liaison"Logiciel CNC" vers > arduino ? avec motorshield v1.2

Bonjour! tout d'abord avant de commencer je tien a vous remercier !
car si j'en suis la aujourd’hui hé bien c'est grâce a vous!
et tout ces tutos, code, forum!

j’avais en tête de me faire une petite cnc 2d avec de la récup, jai donc récupérer quelque imprimante et leur moteurs(bipolaire)
Ensuite je me suis acheter le Motorshield v1.2 qui peut contrôler 2 steppers(et autre moteur cc et servo) avec les ci L293D

j'arrive bien a les controler via le soft arduino et le code fournis

jais donc écrie le code suivant sous le soft arduino:

#include <AFMotor.h>
//alimentation du moteur : 12 V a 0.69A
AF_Stepper motor1(48, 1);
AF_Stepper motor2(48, 2);
void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Stepper test!");
  motor1.setSpeed(60);  // 10 rpm   
  motor2.setSpeed(60);
}
void loop() {
  motor1.step(10, FORWARD, MICROSTEP); //MICROSTEP  SIGNLE DOUBLE on peut rajouter delay(1000); pour attendre un seconde
  delay(400);
  motor2.step(10, FORWARD, MICROSTEP); //gauche
  delay(400);
  motor1.step(10, BACKWARD, MICROSTEP);//haut
  delay(400);
  motor2.step(10, BACKWARD, MICROSTEP);//droite
  delay(400);
  motor1.step(20, FORWARD, MICROSTEP); //MICROSTEP  SINGLE DOUBLE on peut rajouter delay(1000); pour attendre un seconde
  delay(400);
  motor2.step(20, FORWARD, MICROSTEP);//gauche
  delay(400);
  motor1.step(20, BACKWARD, MICROSTEP);//haut
  delay(400);
  motor2.step(20, BACKWARD, MICROSTEP);
  delay(400);
  motor1.step(30, FORWARD, MICROSTEP); //MICROSTEP  SINGLE DOUBLESINGLE DOUBLE on peut rajouter delay(1000); pour attendre un seconde
  delay(400);
  motor2.step(30, FORWARD, MICROSTEP);
  delay(400);
  motor1.step(30, BACKWARD, MICROSTEP);
  delay(400);
  motor2.step(30, BACKWARD, MICROSTEP);
  delay(400);
   motor1.step(40, FORWARD, MICROSTEP); //MICROSTEP  SINGLE DOUBLE on peut rajouter delay(1000); pour attendre un seconde
  delay(400);
  motor2.step(40, FORWARD, MICROSTEP);
  delay(400);
  motor1.step(40, BACKWARD, MICROSTEP);
  delay(400);
  motor2.step(40, BACKWARD, MICROSTEP);
  delay(400);
  motor1.step(70, FORWARD, MICROSTEP); //MICROSTEP  SINGLE DOUBLE on peut rajouter delay(1000); pour attendre un seconde
  delay(400);
  motor2.step(70, FORWARD, MICROSTEP);
  delay(400);
  motor1.step(70, BACKWARD, MICROSTEP);
  delay(400);
  motor2.step(70, BACKWARD, MICROSTEP);
  delay(400);
   motor1.step(90, FORWARD, MICROSTEP); //MICROSTEP  SINGLE DOUBLE on peut rajouter delay(1000); pour attendre un seconde
  delay(400);
  motor2.step(90, FORWARD, MICROSTEP);
  delay(400);
  motor1.step(90, BACKWARD, MICROSTEP);
  delay(400);
  motor2.step(90, BACKWARD, MICROSTEP);
  delay(400);
   motor1.step(120, FORWARD, MICROSTEP); //MICROSTEP  SINGLE DOUBLE on peut rajouter delay(1000); pour attendre un seconde
  delay(400);
  motor2.step(120, FORWARD, MICROSTEP);
  delay(400);
  motor1.step(120, BACKWARD, MICROSTEP);
  delay(400);
  motor2.step(120, BACKWARD, MICROSTEP);
  delay(400);
}

Ce qui nous donne a peut-pré sa:

je me suis vite rendu compte qu'il me fallait automatiser tout sa (ce taper tout ces copier coller c'est lourd puis imaginez la galère pour faire un cercle sous le soft arduino), après moult renseignement, quelques tuto et recherche
j'ai lu beaucoup de choses :
-le Gcode qui semble avoir un importance dans l'histoire
-les fichiers dfx et tout ce qui entoure le Gcode
-les Gcode sender la conversion de fichier DFX avec dfx2gcode

"Et si il t"en venai aux fait?" OUI oui sa vien :smiley:

j'ai dabord tester "replicatorG" sans succes. j'ai ensuite tenter d'utiliser GRBL apré la tentative de "chargement" du fichier.hex sans succés :frowning:

Alors voici ma question:
Je ne comprend pas commet établir une liaison "soft gérant le gcode" Ver l'arduino? avec le motorshield

Et sachant que le code ci dessus et "charger" dans l'arduino il faudrai au moin que "Serial.begin(9600);" soit préciser dans le code
Ou tout autre commande de communication

Il me semble avoir tout les élément en main mais ya quelque chose qui passe pas
l'utilisation du motorshield et du gcode n'est pas compatible ?

Et ce fichier .hex m'intrigue il semble aussi avoir un role important.

Un aiguillage serait vraiment un bon coup de pouce car la , jai trop d'info et je ne sai plu ou tourner du bec

Merci d'avoir pris le temps de lire!

Matériel utiliser:

-ordinateur portable sous xp

-arduino uno atmega328 et le soft officiel via usb

-motorshield V1.2 avec 2ci L293d refroidi

-alimentation bt 305

Et bin on va être copain : http://arduino.cc/forum/index.php/topic,156793.0.html :slight_smile:

GRBL existe en librairie : GRBL Arduino Library – Use the Arduino IDE to flash GRBL directly to your Arduino | Protoneer.co.nz
Et le soft qui va bien pour streamer le Gcode : GitHub - grbl/Universal-G-Code-Sender: A Java based GRBL compatible cross-platform G-Code sender.

Quelques explications ici : Piloter une CNC par une Arduino avec Grbl : multiplateforme et USB ! - Civade.com

Super merci pour la réponse !
Ton suport cnc et super propre bravo!
la mienne et a létat de carcasse expérimentale! :smiley:

J'ai réussi a transférer la librairie GRBL sur l'arduino uno
Ensuite j'ai lancer "universal gcode sender"

en me connectant jai eu ce message:

**** Connected to COM4 @ 9600 baud ****

Grbl 0.8c ['

c'est un grand pas en avant Merci!!!! :slight_smile: Me reste a configurer GRBL

A tu une idée pour configurer GRBL sur les bornes d'entrées du motorshiel v1.2 ?
Car avec la librairie pour le motorshield il est préciser en début de code ce que l'on veut utiliser:

AF_Stepper motor1(48, 1);
AF_Stepper motor2(48, 2);

Moteur1 sur port 1
Moteur2 sur port 2

Comment la carte(motorshield) peut controler les moteur si elle n'a pas cette information? for help]


c'est un grand pas en avant Merci!!!! :) Me reste a configurer GRBL

A tu une idée pour configurer GRBL sur les bornes d'entrées du motorshiel v1.2 ?
Car avec la librairie pour le motorshield il est préciser en début de code ce que l'on veut utiliser:

§DISCOURSE_HOISTED_CODE_1§


Moteur1 sur port 1
Moteur2 sur port 2

Comment la carte(motorshield) peut controler les moteur si elle n'a pas cette information?

Il faut aller dans le dossier de la lib et éditer config.h :wink:

Rebonjour Merci pour ta reponse!

vu que j'utilise la librairie GRBL, pas besoin dinstaller le fichier .hex
J'ai donc d'abord penser au code "charger dans l'arduino uno", qui permet d'établir la liaison universagcodesender>arduino
je me suis dit facile! je rajoute #include <config.h>

#define SETTINGS_ARDUINO_UNO
#include <grblmain.h>
#include <config.h>

void setup(){
	startGrbl();
}

void loop(){}

Mais rien aucun mouvement!

alors, jai consuter les liens ci dessous pour l'édition du fichier config.h

Grbl (Arduino G-Code Processor) – Pin Layout | Protoneer.co.nz >>Grbl (Arduino G-Code Processor) – Pin Layout
Connecting Grbl · grbl/grbl Wiki · GitHub >> Connecting Grbl
Arduino Forum sujet similaire sur arduino.cc

le fichier config.h que je poséde correspond bien a l'explication de ce lien
Enfin je jcrois...

/*
  config.h - compile time configuration
  Part of Grbl

  Copyright (c) 2009-2011 Simen Svale Skogsrud
  Copyright (c) 2011-2012 Sungeun K. Jeon

  Grbl is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  Grbl is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with Grbl.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef config_h
#define config_h

// IMPORTANT: Any changes here requires a full re-compiling of the source code to propagate them.

// Default settings. Used when resetting EEPROM. Change to desired name in defaults.h
#define DEFAULTS_GENERIC

// Serial baud rate
#define BAUD_RATE 9600

// Define pin-assignments
// NOTE: All step bit and direction pins must be on the same port.
#define STEPPING_DDR       DDRD
#define STEPPING_PORT      PORTD
#define X_STEP_BIT         2  // Uno Digital Pin 2
#define Y_STEP_BIT         3  // Uno Digital Pin 3
#define Z_STEP_BIT         4  // Uno Digital Pin 4
#define X_DIRECTION_BIT    5  // Uno Digital Pin 5
#define Y_DIRECTION_BIT    6  // Uno Digital Pin 6
#define Z_DIRECTION_BIT    7  // Uno Digital Pin 7
#define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // All step bits
#define DIRECTION_MASK ((1<<X_DIRECTION_BIT)|(1<<Y_DIRECTION_BIT)|(1<<Z_DIRECTION_BIT)) // All direction bits
#define STEPPING_MASK (STEP_MASK | DIRECTION_MASK) // All stepping-related bits (step/direction)

#define STEPPERS_DISABLE_DDR    DDRB
#define STEPPERS_DISABLE_PORT   PORTB
#define STEPPERS_DISABLE_BIT    0  // Uno Digital Pin 8
#define STEPPERS_DISABLE_MASK (1<<STEPPERS_DISABLE_BIT)

// NOTE: All limit bit pins must be on the same port
#define LIMIT_DDR       DDRB
#define LIMIT_PIN       PINB
#define LIMIT_PORT      PORTB
#define X_LIMIT_BIT     1  // Uno Digital Pin 9
#define Y_LIMIT_BIT     2  // Uno Digital Pin 10
#define Z_LIMIT_BIT     3  // Uno Digital Pin 11
#define LIMIT_INT       PCIE0  // Pin change interrupt enable pin
#define LIMIT_INT_vect  PCINT0_vect 
#define LIMIT_PCMSK     PCMSK0 // Pin change interrupt register
#define LIMIT_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)) // All limit bits

#define SPINDLE_ENABLE_DDR   DDRB
#define SPINDLE_ENABLE_PORT  PORTB
#define SPINDLE_ENABLE_BIT   4  // Uno Digital Pin 12

#define SPINDLE_DIRECTION_DDR   DDRB
#define SPINDLE_DIRECTION_PORT  PORTB
#define SPINDLE_DIRECTION_BIT   5  // Uno Digital Pin 13 (NOTE: D13 can't be pulled-high input due to LED.)

#define COOLANT_FLOOD_DDR   DDRC
#define COOLANT_FLOOD_PORT  PORTC
#define COOLANT_FLOOD_BIT   3  // Uno Analog Pin 3

// NOTE: Uno analog pins 4 and 5 are reserved for an i2c interface, and may be installed at
// a later date if flash and memory space allows.
// #define ENABLE_M7  // Mist coolant disabled by default. Uncomment to enable.
#ifdef ENABLE_M7
  #define COOLANT_MIST_DDR   DDRC
  #define COOLANT_MIST_PORT  PORTC
  #define COOLANT_MIST_BIT   4 // Uno Analog Pin 4
#endif  

// NOTE: All pinouts pins must be on the same port
#define PINOUT_DDR       DDRC
#define PINOUT_PIN       PINC
#define PINOUT_PORT      PORTC
#define PIN_RESET        0  // Uno Analog Pin 0
#define PIN_FEED_HOLD    1  // Uno Analog Pin 1
#define PIN_CYCLE_START  2  // Uno Analog Pin 2
#define PINOUT_INT       PCIE1  // Pin change interrupt enable pin
#define PINOUT_INT_vect  PCINT1_vect
#define PINOUT_PCMSK     PCMSK1 // Pin change interrupt register
#define PINOUT_MASK ((1<<PIN_RESET)|(1<<PIN_FEED_HOLD)|(1<<PIN_CYCLE_START))

// Define runtime command special characters. These characters are 'picked-off' directly from the
// serial read data stream and are not passed to the grbl line execution parser. Select characters
// that do not and must not exist in the streamed g-code program. ASCII control characters may be 
// used, if they are available per user setup. Also, extended ASCII codes (>127), which are never in 
// g-code programs, maybe selected for interface programs.
// NOTE: If changed, manually update help message in report.c.
#define CMD_STATUS_REPORT '?'
#define CMD_FEED_HOLD '!'
#define CMD_CYCLE_START '~'
#define CMD_RESET 0x18 // ctrl-x

lier au 74hc595N ??
Je n'ai pas tout compris et J'avoue étre un peut dépasser la !

Le config.h est inclus dans la lib GRBL donc c'est normal que ça ne change rien quand tu le rajoutes dans ton .ino :wink:

Je suis en train de démarrer ma CNC donc je comprends bien que c'est pas facile, moi même il y a encore beaucoup de chose qui m'échappe.

Dans donc cas il faut d'abord bien vérifier que les configurations de pin sont OK, sachant que la lib impose certaines restrictions (même port pour une série de pin par exemple). Je de regarder le motorshield en vitesse et j'avoue que j'ai pas encore piger le principe et par consequent je ne peux même pas te dire si ça peut marcher. Il faut voir comment il communique par défaut avec l'arduino et les lib fournis pas adafruit car GRBL lui ne gère que des signaux logiques et génère des horloges. Donc si le shield est par exemple prévu pour une com série, ça sera pas possible ...

Bonsoir tout le monde, Je pense avoir trouver la solution a mon problème!
Avis a tout ce qui pourrai prendre mon chemin

A prendre tout de même avec des pincettes, car je pense que tout est contournable
mais je n'ai pas les capacités actuellement. mais j'ai beaucoup appris, la et le principal.

Je vais peut être m'orienter ver un driver de moteur pas a pas différent peut être le "grblshield"
Affaire a suivre pour ce que sa interesse

I don't know much about the Adafruit motor shield, but it looks like the pins are hardwired in a certain way to work their Arduino software. Unfortunately, Grbl most likely uses a different pinout than your shield. Also, if I read the Adafruit shield specs correctly, it uses H-bridge drivers. Grbl doesn't support H-bridge drivers. Sorry! Please refer to our Wiki to see how you can use Grbl with some off the shelf stepper drivers, like Pololu's or Sparkfun's Easydrivers.

Bonsoir tout le monde, Je pense avoir trouver la solution a mon problème!
Avis a tout ce qui pourrai prendre mon chemin

A prendre tout de même avec des pincettes, car je pense que tout est contournable
mais je n'ai pas les capacités actuellement. mais j'ai beaucoup appris, la et le principal.

Je vais peut être m'orienter ver un driver de moteur pas a pas différent peut être le "grblshield"
Affaire a suivre pour ce que sa interesse

Quote
I don't know much about the Adafruit motor shield, but it looks like the pins are hardwired in a certain way to work their Arduino software. Unfortunately, Grbl most likely uses a different pinout than your shield. Also, if I read the Adafruit shield specs correctly, it uses H-bridge drivers. Grbl doesn't support H-bridge drivers. Sorry! Please refer to our Wiki to see how you can use Grbl with some off the shelf stepper drivers, like Pololu's or Sparkfun's Easydrivers.

FAUX ! j'ai réussi a transferer des fichier gcode vers la carte "motorshield" en utilisant le code d'un draw-bot "makelangelo"

https://github.com/MarginallyClever/Makelangelo/tree/master/java/Windows

Qui est la modification de la librairie "motorshiel" et en utilisant le logiciel "makelengelo v0.9.4"

Et sa marche! Ensuite vienne les réglages de diamétre, vitesse, nombre de pas ect ect

Merci Beaucoup tout le monde!