Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


Panneau latéral

materiel:a4988:accueil

A4988

Voir projet TEMPS qui utilise 3 drivers avec une UNO et Shield.

// http://aconcaguasci.blogspot.fr/2016/11/arduino-cnc-shield-control-stepper.html
 
// current limit settings
/* 70
 * Current Limit = 0.7 * VRef * 2 = 1.4 * vref
 * nema 1.7 A
 * Vref = 1.7/ 1.4 = 1.2V
 * Test avec 9v . 06.01.2018 
 */
#define EN        8  
 
//Direction pin
#define X_DIR     5
#define Y_DIR     6
#define Z_DIR     7
 
//Step pin
#define X_STP     2
#define Y_STP     3 
#define Z_STP     4 
 
// a9488 settings
int delayTime=500; //Delay between each pause (uS)
 
void step(byte stepperPin, int steps)
{
  for (int i = 0; i < steps; i++) {
    digitalWrite(stepperPin, HIGH);
    delayMicroseconds(delayTime); // bloquant
    digitalWrite(stepperPin, LOW);
    delayMicroseconds(delayTime); 
  }
}
 
void setup(){
  pinMode(X_STP, OUTPUT);
  pinMode(Y_STP, OUTPUT);
  pinMode(Z_STP, OUTPUT);
 
  pinMode(X_DIR, OUTPUT);
  pinMode(Y_DIR, OUTPUT);
  pinMode(Z_DIR, OUTPUT);
 
  digitalWrite(X_DIR, HIGH);
  digitalWrite(Y_DIR, HIGH);
  digitalWrite(Z_DIR, HIGH);
 
  pinMode(EN, OUTPUT);
  digitalWrite(EN, LOW);
}
 
void loop(){
  step(X_STP, 53); //X, Clockwise
 
  delay(1000);
}

Test vitesse

// Arduino UNO / CNC shield / 3 * A4988 drivers (microstep (1/16)) / 3 Steppers nema 17 HS???
 
// pins
#define X_DIR     5
#define Y_DIR     6
#define Z_DIR     7
#define X         2
#define Y         3 
#define Z         4 
#define EN        8  
 
// Variables
int count=0;
int vitesse = 500; // vitesse 500 OK
int count_hour = 60; // normalement ~3200 pas pour changer d'heure (= tour)
 
void setup(){
  // Pins
  pinMode(X, OUTPUT);
  pinMode(Y, OUTPUT);
  pinMode(Z, OUTPUT);
  pinMode(X_DIR, OUTPUT);
  pinMode(Y_DIR, OUTPUT);
  pinMode(Z_DIR, OUTPUT);
 
  // Directions
  digitalWrite(X_DIR, HIGH);
  digitalWrite(Y_DIR, HIGH);
  digitalWrite(Z_DIR, HIGH);
 
  // Enable
  pinMode(EN, OUTPUT);
  digitalWrite(EN, LOW);
}
 
void loop(){
  count++;
  moveMotor(X,60,vitesse);
  moveMotor(Y,1,vitesse);
  if ((count % count_hour) == 0) {
    moveMotor(Z,1,vitesse);
  }
}
 
void moveMotor(int _pin, int _nb, int _delay){
  for (int i = 0; i < _nb; i++) {
    digitalWrite(_pin, HIGH);
    delayMicroseconds(_delay);
    digitalWrite(_pin, LOW);
    delayMicroseconds(_delay); 
  }
}
/home/resonancg/www/wiki/data/pages/materiel/a4988/accueil.txt · Dernière modification: 2018/04/19 14:44 de resonance