Bonjour à tous,
j'ai construit une petit fraiseuse numérique à l'aide d'un shield CNC :
CNC SHIELD PROTONEER
Explications CNC Shield
Pour info sur le shield j'ai des A4988 :
POLULU A4988
Shield monté sur une Redboard
Redboard sparkfun
J'ai des moteurs Nema 17 qu'on ne présente plus.
J'ai installé tout ce qu'il fallait pour piloter tout cela en televersant GRBL et les librairies associées :
GRBL
Et je pilote tout cela avec Universal Gcode sender dispo ici (le lien github ne fonctionne plus)
Universal Gcode sender
Devinez quoi : tout fonctionne à merveille. Mais là j'ai besoin de passer à l'étape d'après et là, je suis totalement incompétent.
J'aimerais garder le montage CNC shield mais me passer du petit logiciel Universal Gcode Sender et dans un premier temps piloter les moteurs avec le moniteur du logiciel arduino puis avec une interface 'Processing'.
J'ai testé pas mal de choses, mais à part faire vibrer les moteurs avec un programme totalement inadapté, je suis sec.
J'ai téléchargé des librairies sur Github du A4988, mais rien n'y fait. cela ne bouge pas, fait les petits programmes de bases associés, mais rien n'y fait.
Par exemple voici le code associé :
/*
* Simple demo, should work with any driver board
*
* Connect STEP, DIR as indicated
*
* Copyright (C)2015-2017 Laurentiu Badea
*
* This file may be redistributed under the terms of the MIT license.
* A copy of this license has been included with this distribution in the file LICENSE.
*/
#include <Arduino.h>
#include "BasicStepperDriver.h"
// Motor steps per revolution. Most steppers are 200 steps or 1.8 degrees/step
#define MOTOR_STEPS 200
#define RPM 120
// Since microstepping is set externally, make sure this matches the selected mode
// If it doesn't, the motor will move at a different RPM than chosen
// 1=full step, 2=half step etc.
#define MICROSTEPS 1
// All the wires needed for full functionality
#define DIR 5
#define STEP 2
//Uncomment line to use enable/disable functionality
//#define SLEEP 13
// 2-wire basic config, microstepping is hardwired on the driver
BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP);
//Uncomment line to use enable/disable functionality
//BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP, SLEEP);
void setup() {
stepper.begin(RPM, MICROSTEPS);
// if using enable/disable on ENABLE pin (active LOW) instead of SLEEP uncomment next line
// stepper.setEnableActiveState(LOW);
}
void loop() {
// energize coils - the motor will hold position
// stepper.enable();
/*
* Moving motor one full revolution using the degree notation
*/
stepper.rotate(360);
/*
* Moving motor to original position using steps
*/
stepper.move(-MOTOR_STEPS*MICROSTEPS);
// pause and allow the motor to be moved by hand
// stepper.disable();
delay(5000);
}
Donc, qui peut m'aider pour savoir comment faire communiquer depuis le logiciel Arduino et par exemple demander à un moteur de tourner de 100 pas.
J'ai réussi à faire cela avec une carte Roméo, mais je dois piloter 3 moteurs maintenant.
J'aurais besoin de vos lumières...
Merci et bonne soirée.
PS : j'arrive à communiquer avec le moniteur en tapant du Gcode, mais j'aimerais changer ce mode de communication en passant par des entiers (123, 456...) afin de programmer mon interface graphique...