Motore stepper la mia disperazione! :)

Ciao a tutti,

dopo un pò di tempo che brucio varie cose con arduino (led, integrati ecc...) finalmente son riuscito a fare un bel presepio per la mia piccola famiglia o fatto ben l'effetto fuoco per tutte le casettine...

Ora però non mi accontento di far girare anche il mulino con lo stepper e un interruttore ma vorrei anche sapere come fare per farlo partire con delicatezza, il motore è di una vecchia stampante ha 4 fili, dovrebbe essere bipolare. Insomma girare gira, ho comprato arduino e la scheda da un noto negozio italiano.

E' possibile sapere almeno dove reperire le informazioni o il libro che mi devo procurare?
Penso sia inutile postare il scheck perchè è quello che si utilizzerebbe per accendere 4 led in sequenza.

Grazie per un'eventuale aiuto Marco. :slight_smile:

Devi introdurre un ritardo (delay) tra una commutazione è l'altra: in questo modo è come se variassi la velocità.

Ovviamente questa ritardo, deve essere progressivamente diminuito sino a raggiungere la velocità massima.

Io invece ti consiglio la tecnica del micro-stepping. Si moltiplicano i passi per un fattore di 2, 4 od anche di più in modo che la granularità di un giro sia molto più fine, con riduzione di rumorosità e i vari stonk(!) dovuti al passo normale che percorre più strada (maggiori accelerazioni e decelerazioni dell massa rotorica).

Invece del solito L298 ti compri un driver Pololu, di quelli che vanno tanto di moda per le stampanti 3d.

Driver A4988

@BaBBuino

Microstepping e pilotaggio in corrente non funziona con tutti i motori perché devi dare delle tensioni di alimentazioni ca 4 volte quella nominale per avere il microstepping funzionate decentemente.

Percui dipende dal motore che ha ArTex quale drive puó usare.

Ciao Uwe

Rieccomi,

il mio driver che tra l'altro ho pagato una 20ina di euro ha l'integrato L298p... E ho anche nel cassetto un nema 23, ma per un mulino mi pare esagerato ma se serve come riferimento per farmi aiutare a collegarlo ci metto poco.

Con questo Sketch faccio girare qualsiasi motore passo passo che ho a disposizione:

int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 500;

void setup() {
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}

void loop() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
}

// :slight_smile: Non ho capito 2 cose:

  1. Devo cambiare il driver per lo stepper?
  2. Non sò inserire la stringa di comando con il delay per rallenare la partenza!!! :frowning:

Con i led mi era più facile! Dopo aver fritto un pò di cose ora son più prudente!!! :o

Grazie Marco.

In pratica, devi modificare progressivamente la variabile delayTime.

#define motorPin1     8
#define motorPin2     9
#define motorPin3     10
#define motorPin4     11

#define delayTimeMin  500
#define delayTimeMax  1000
#define Step          10

unsigned long delayTime = delayTimeMax;
 
void setup() {
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
}
 
void loop() {
  if (delayTime > delayTimeMin) {   // delayTime passa da delayTimeMax a delayTimeMin con passo Step
    delayTime -= Step;
  }
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);
}

Grazie della magnimità Maestro!

A questo punto ti dico: "passo il favore" una citazione di un fantastico film! :slight_smile:

Questa notte che la mia famigliola dorme proverò ad applicarlo!

Marco.

Ciao a tutti,

non sò perchè ma riesco a utilizzare con i miei arduini+scheda motori solo il seguente sketch:

/*

  • Sketch Test Motori Shield FE
  • @author: Alfieri Mauro
  • @see: http://www.mauroalfieri.it
  • @licenze: Creative common
    */
    int motorPinDirA = 4;
    int motorPinDirB = 12;
    int motorPinPwmA = 5;
    int motorPinPwmB = 10;
    int delayTime = 5;

void setup() {
pinMode(motorPinDirA, OUTPUT);
pinMode(motorPinDirB, OUTPUT);
pinMode(motorPinPwmA, OUTPUT);
pinMode(motorPinPwmB, OUTPUT);
}

void loop() {

digitalWrite(motorPinDirA, HIGH);
digitalWrite(motorPinDirB, LOW);
digitalWrite(motorPinPwmA, HIGH);
digitalWrite(motorPinPwmB, LOW);
delay(delayTime);

digitalWrite(motorPinDirA, LOW);
digitalWrite(motorPinDirB, HIGH);
digitalWrite(motorPinPwmA, LOW);
digitalWrite(motorPinPwmB, HIGH);
delay(delayTime);

digitalWrite(motorPinDirA, LOW);
digitalWrite(motorPinDirB, LOW);
digitalWrite(motorPinPwmA, HIGH);
digitalWrite(motorPinPwmB, LOW);
delay(delayTime);

digitalWrite(motorPinDirA, LOW);
digitalWrite(motorPinDirB, LOW);
digitalWrite(motorPinPwmA, LOW);
digitalWrite(motorPinPwmB, HIGH);
delay(delayTime);

}

....Pensavo fosse facile infondo sono solo 4 fili! :cry: :cry: :cry:

Ho sottovalutato troppo le mie capacità missà che è ora di friggere qualche altro componente! :grin:

Grazie e chi mi illuminerà senza usare sostanze infiammabili però eh! :astonished:

Marco.

Metti il codice usanado il tag “</>” in alto sinistra.

Il primo sketch è corretto, a patto di aver azzeccato la giusta sequenza dei fili dello stepper e pilotare con dei transistor o MOSFET lo stepper.

Lo L298 è invece un doppio ponte H normalmente usato per motori normali o stepper.

Il pilotaggio richiede di fornire ai quattro ingressi dei segnali in opposizione di fase.

Quello di Alfieri in più ha la possibilità di usare il PWM.

Tuttavia per i motori stepper ci sono driver specifici, che consentono di usare la tecnica del microstepping in modo da avere un aumento della risoluzione ed un controllo della corrente.

Di contro, richiedono un’alimentazione separata (minimo 8V) per i soli motori.

Rieccomi,

io ho comprato questa scheda che per i miei "scopi" pensavo fosse più semplice e multiuso dato che funziona anche con i motori brushed:

Ma a questo punto poi prova oggi e prova domani mi vien voglia di fare cose tipo rampa di accelerazione o portare a un numero di giri prefissato...

Io comunque alimento tutto con l'ingrasso che ha la scheda con un alimentatore a 12V 4A in continua, pensavo che se lo sketch di Alfieri funzionava allora anche gli altri sketch postati da voi dovevano funzionare, logicamente cambiando i pin di arduino.

dato che se non ho capito male la mia scheda che ha solo un ponta a "H" non sia delle più prestanti, mi è venuta la scimmia di comprare questo da te cyberhs! :slight_smile:

Grazie e continuo con gli esperimenti chissà che non riesco a fare il modellino di funivia per mia figlia!!!

Marco.

Sono riuscito a far “muovere”
i miei stepper e volevo postare il disegno fatto con fritzing ma non riesco… :confused:

Come scopo ludico può andar bene cos’ho ottenuto ma all’atto pratico se uso lo sketch postato da cyberhs i motori variano la velocità in maniera scattosa e di fatto mi spaccano ciò a cui vengono attaccati… Ho provato ad attaccare una ruota di un mulino in compensato ma sembra che abbia il “parchison” e si stacca ogni volta…

Riassumento i problemini son due:

  1. Scarsa velocità, girano 200 g/m e 150 g/m il nema23
  2. Rampa di accelerazione a scatti

Forse per fare questo tipo di applicazione dovrei usare motori brushed comandati da arduino e mosfet?!?

Ho letto tanti post e tutti si risolvono in nulla di concreto, mi dispiace vedere che la gente lasci così le cose.

Grazie a tutti Marco.

Usate il tag code </> per includere il codice nella pagina. Grazie.

Puoi usare la libreria Stepper.h di Arduino oppure optare per librerie terze come l’AccelStepper.h.
Dovrebbero garantire un funzionamento più lineare.

Rieccomi,

nel frattempo ho comprato ho comprato due driver mica potevo farne a meno! HAhaha!

Ho comprato:

e

e mi sono convinto per il secondo grazie a questo “ragazzo” che mi ha impressionato con le spiegazioni…

http://www.ivanbortolin.it/

Insomma collegato il mio Nema23 con 200 passi da 1,9N …Alimentato con un trasformatore che ha 12V e 1,25A e settato pure la tensione sui driver non riesco ad avere più di 150g/m…

Con la differenza però che con questi due driver non ho più il tavolo che trema quindi applicabile per scopi modellistici… Peccato però che non riesco ad aumentare la velocità!

#include <Stepper.h>
 
int DIR = 2;
int CLK = 3;
int EN = 4;
int steps = 1;
int velocita = 1500;
  
 Stepper stepGo(steps, DIR, CLK);
  
void setup() {
    pinMode(DIR, OUTPUT);
    pinMode(CLK, OUTPUT);
    pinMode(EN, OUTPUT);
} 
void loop()
{
    digitalWrite(EN,HIGH);
    digitalWrite(DIR,HIGH);
        stepGo.setSpeed(velocita);
        delay(50);
    for ( int i=0; i<200; i++) 
    { 
        stepGo.step(steps);
    }
    digitalWrite(DIR,LOW);
     
        steps=-1;
        for ( int i=0; i<200; i++) 
        {
       stepGo.step(steps);
        }
    digitalWrite(EN,LOW);   
}

questo è del sito di ivanbartolini… Spero serva anche a qualcun’altro.

Grazie a chi mi aiuta con la mia sindrome da pescatore! Và piano!!! :grin: :grin:

Marco.

IL PIBOT è praticemento lo stesso di questi:

http://www.ebay.it/itm/Single-Axis-CNC-Engraving-Machine-Stepper-Motor-Driver-Controller-TB6600-0-2-5A-/331555572152?hash=item4d324089b8

http://www.ebay.it/itm/TB6600-4-5A-CNC-single-axis-stepper-motor-driver-board-controller-NEW-/201350398319?hash=item2ee16b416f

http://www.ebay.it/itm/Free-ship-CNC-Single-Axis-TB6600-4-5A-Two-Phase-Stepper-Motor-Driver-Controller-/262018002187?hash=item3d017d6d0b

Grazie per il tuo contributo io posso solo dire che hai ragione non li ho provati quindi a occhio sembrano tutti uguali...
La cosa che non capisco però e che online ho letto che genericamente un motore Stepper potrebbe fare anche 3000 g/min ma non capisco come mai i miei che ho in "casa" non fanno più di 250 g/min?
Forse perchè alimento al max a 12V?

Sul web si vede di tutto ma francamente con spiegazioni nulle oppure chi fà finta di spiegare pensa che siano tutti "già studiati"... E a questo punto mi chiedo a cosa serve occupare mega e mega di spazio sui server le spiegazioni non ci sono? Forse nel caso di youtube la gente ci guadagnerà qualcosa. 8)

La mia domanda rimane senza risposta come mai i motori non girano a più di 250g/min?

Tra l'altro ho letto mille post sul web e anche su questo sito ma in pochissimi scrivono che i Driver vanno tarati!!! Occhio perchè si frigge tutto se non si fà!

Ciao e buona giornata a tutti Marco.

A 12V girano piano, per vederli andare più veloci bisogna alimentarli da 24V in sù, anche oltre i 100V, bisogna scegliere motori con bassa tensione (3-4 volts) e alto amperaggio, il driver li pilota sempre in corrente ma l'alta tensione di alimentazione del driver è indispensabile per ottenere alte prestazioni, l'argomento è lungo da spiegare, nei forums l'ho scritto varie volte ad esempio su cnc-italia, di buoni articoli e buoni commenti se ne trovano molti