Controllare velocità motore passo passo con Arduino

Ecco un esempio su come controllare la velocità di un motore passo passo con Arduino, EasyDriver, potenziometro e due switch. Tramite gli switch è possibile scegliere se compiere una passo completo o 1/2 o 1/4 o 1/8. Tramite il potenziometro si può regolare la frequenza. Premendo il pulsante il motore gira ad una velocità condizionata dalla posizione degli switch e dal potenziometro. Nell’esempio mostrato Arduino viene alimentato tramite usb collegata al pc e 12v per alimentare il driver e rispettivo motore.

Schema

Sketch

// www.ilsito.net
// esempio con motore passo passo

byte DIR = 2;
byte STEP = 3;
byte SLEEP = 4;
byte MS1 = 5;
byte MS2 = 6;
int BT = 7;
int potenziometro = A0;
int valore = 0;
// i seguenti valori si possono modificare in base al motore
const int stepSleepMin = 750;
const int stepSleepMax = 10000;

void setup() {
  pinMode(DIR, OUTPUT);
  pinMode(STEP, OUTPUT);
  pinMode(SLEEP, OUTPUT);
  pinMode(MS1, OUTPUT);
  pinMode(MS2, OUTPUT);
  pinMode(BT, INPUT);
  digitalWrite(MS1, LOW);
  digitalWrite(MS2, LOW);
  Serial.begin(9600);
}

void loop() {
  int velocita = analogRead(potenziometro);
  valore = map(velocita, 0, 1023, stepSleepMin, stepSleepMax);
  Serial.println(valore);
  digitalWrite(DIR, HIGH);

  // se premo il pulsante
  if (digitalRead(BT) == HIGH) {
    digitalWrite(SLEEP, HIGH);
    digitalWrite(STEP, HIGH);
    delayMicroseconds(valore);
    digitalWrite(STEP, LOW);
    delayMicroseconds(valore);
  }
  // altrimenti
  else {
    digitalWrite(SLEEP, LOW);
  }

}

Download sketch e schema

Download “Regolare velocità motore passo passo” Modificare-velocita-motore-passo-passo.zip – Scaricato 17 volte – 204 KB