Automazione: Programmare e pilotare i Motori Passo_Passo e i Servomotori (Terza parte)

logo

A cura di Davide Munaretto

In questa Terza parte, vediamo come sia possibile, grazie ad una semplice funzione di programma, creare una rampa di decelerazione molto ripida, tale da rappresentare una sorta di freno alla rotazione del motore.

L’azione frenante è chiaramente subordinata all’accelerazione, alla velocità di rotazione e al carico inerziale collegato al motore

Il codice che ci permette di fare questo è il seguente ed in questo caso ho lasciato impostati i medesimi valori di velocità e accelerazione.

/* Codice che permette di controllare un Motore Passo_Passo o un ServoMotore
*  con funzione di frenata.
*  Chiamando la funzione stop() mentre il motore è alla massima velocità, porta
*  il motore a fermarsi il più in fretta possibile, entro i limiti imposti dall’accelerazione raggiunta

* Motore Passo_Passo
*/

#include <AccelStepper.h>

// Definizione dei pin di connessione del motore e delle interfacce motore nel caso vi fossero più di un motore:
#define dirPin 2
#define stepPin 3
#define motorInterfaceType 1

// Crea l’istanza AccelStepper:
AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);

void setup(){
// Setta la massima velocità e Accelerazione:
stepper.setMaxSpeed(10000);    //1150
stepper.setAcceleration(1000);
}

void loop(){
// Setta la posizione di fine corsa:
stepper.moveTo(2000);
while (stepper.currentPosition() != 300)  // Imposta la massima velocità sopra i 300 passi
stepper.run();
stepper.stop();   // Ferma il prima possibile
stepper.runToPosition();  // Setta la nuova posizione di fine corsa

stepper.moveTo(-500); // Torna indietro di 500 step
while (stepper.currentPosition() != 0) // Imposta la massima velocità già a partire da Zero
stepper.run();
stepper.stop(); // Ferma il prima possibile
stepper.runToPosition(); // Setta la nuova posizione di fine corsa
}

Come potrete vedere nel video che segue la fluidità del Servomotore è sicuramente superiore a quella del Motore Passo_Passo.