problema con motore passo passo [Risolto]

Salve a tutti,
volevo un chiarimento sul funzionamento di un motore passo passo.

Ho un Nema17 con la solita scheda A4988 e tutto funziona normalmente eccetto che alla fase di accensione.
All'accensione il motore fa quasi un giro per conto suo, quasi dovesse alinearsi e poi, da qual momento, tutto funziona bene.
Ora, poichè vorrei utilizzarlo solo per fargli fare un quarto di giro, questo non mi va assolutamente bene.

Ho un Arduino Uno, ma succede anche con il Nano.

Mi sfugge qualcosa?

Grazie di tutto, Angelo

Buonasera e benvenuto, :slight_smile:
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

angelo94:
Ho un Nema17 con la solita scheda A4988 e tutto funziona normalmente eccetto che alla fase di accensione.

Come lo stai gestendo questo motore a livello di software? Non dovrebbe comportarsi cosi.
Comunque, per tagliare la testa al toro, puoi usare l'ingresso ENABLE (attivo basso) del driver.
Lo tieni a livello HIGH fino a quando il motore deve effettivamente girare. C'è solo una piccola seccatura da considerare: di default le uscite del micro sono nello stato LOW, quindi al reset avrai il segnale che non vuoi. Per evitarlo basta fare cosi:

#define PIN_ENABLE 10;

void setup(){
  digitalWrite(PIN_ENABLE, HIGH);   // Attiva il pullup interno sul PIN
  pinMode(PIN_ENABLE, OUTPUT);      // Il pin rimane nello stato HIGH
.....
}

cotestatnt:
Come lo stai gestendo questo motore a livello di software? …

Mah, intanto la prova mi ha fatto addirittura saltare il salvavita :slight_smile: credo sia il condensatore, che ora infatti dà valori sballati. Comunque danni non ne ha fatto. (preciso che non sono proprio inesperto, visto che ho costruito anche amplificatori a valvole con tensioni su 500 volts in continua).
Bando a questo, che forse era meglio tralasciare, succede sempre la stessa cosa; se stacco quando lavora e poi lo riaccendo, il motore mi fa una parte di giro, prima di funzionare come da programma. Ho messo il pin Enable. Allego il software, che è veramente minimale:

// definizione dei PIN
const int stepPin = 2; 
const int dirPin = 3; 

#define PIN_ENABLE 4

void setup()
   { pinMode(stepPin,OUTPUT);
    pinMode(dirPin,OUTPUT);

    digitalWrite(PIN_ENABLE, HIGH);
    pinMode(PIN_ENABLE, OUTPUT); 
   }
 
void loop()
  {digitalWrite(dirPin,HIGH);
  digitalWrite(PIN_ENABLE, LOW); 
 
  for(int x = 0; x < 200; x++)
     {digitalWrite(stepPin,HIGH);  
     delay (10); 
    digitalWrite(stepPin,LOW);
    delay (10); 
    }
 delay(1000); // pausa di un secondo
 }

>angelo94: … alcune cosette …

1. rileggere sempre i propri post. Se lo guardi capisci che hai fatto un bel … disastro … :smiley:

2. Quando si quota un post, NON è necessario riportarlo (inutilmente) tutto; bastano poche righe per far capire di cosa si parla ed a cosa ci si riferisce. Gli utenti da device “mobile” ringrazieranno per la cortesia :wink:

3. Il codice NON si inserice nei tag QUOTE, ma nei tag CODE.

Cortesemente quindi edita il tuo post qui sopra ed apporta le correzioni, grazie :slight_smile:

Guglielmo

Hai letto bene il mio post ? ? ? :o :o :o

NO nuovi post, cortesemente editare e correggere ciò che si è scritto di errato. Grazie.

Guglielmo

P.S.: ... utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post.

gpb01:
Hai letto bene il mio post ? ? ? :o :o :o ...........

Ma non ho fatto così.? Ho modificato la risposta, trascurando parte della risposta precedente ed ho messo il codice nel 'code'.
Sicuramente mi sfugge qualcosa, anche se mi sono riletto il regolamento.
Angelo

Vedi che continui a fare casino? Ma li rileggete i post quando scrivete? Hai infilato la tua risposta in un inutile QUOTE della mia … per questa volta ti pulisco io il tuo post incriminato, aprilo poi in edit e guarda come è stato corretto, così evitiamo altri problemi futuri e poi correggi quello qui sopra ! Grazie,

Guglielmo

Non c'è nulla che non va nel programma, al limite sostituisci

const intstepPin = 2;
const int dirPin = 3;

con

#define stepPin 2
#define dirPin 3

quindi il problema risiederà nel stepper driver

angelo94:

(CUT)

void loop()
  {digitalWrite(dirPin,HIGH);
  digitalWrite(PIN_ENABLE, LOW);

for(int x = 0; x < 200; x++)
    {digitalWrite(stepPin,HIGH); 
    delay (10);
    digitalWrite(stepPin,LOW);
    delay (10);
    }
delay(1000); // pausa di un secondo
}

Con questo listato all’avvio il micro-controllore piloterà immediatamente il motore passo-passo per 200 passi, non vedo perché l’albero non dovrebbe ruotare…

Salve.
Allora, dopo molti tentativi, ho capito che il problema non è il software. In effetti, il problema del motore che fa, in modo abbastanza casuale, un giro od una parte di giro, è dovuto all'accensione dello stesso. Mi spiego meglio; anche se nel programma non faccio riferimento al motore, quando inserisco la corrente, per circa uno o due secondi, il motore si muove. Ho già cambiato sia il motore che la scheda driver, senza risultati positivi. Forse lo faceva anche prima, ma, utilizzandolo con una vite senza fine, non aveva una grossa importanza. Ora invece, volendo far fare al motore solo un quarto di giro (0 - 90 gradi) questo problema non è più accettabile.
Aspetto suggerimenti, non so più cosa dire >:(

Forse vale più un breve video che mille parole. Ecco cosa succede, quando si accende: subito va in tilt, poi il programma prende il sopravvento e il motore funziona (giro antiorario).
Penso che non dovrebbe essere così, ma ho già cambiato sia il motore Nema17 che il driver A4988.

Ecco il link al video: https://youtu.be/xQ3mz-wEgdY

Ecco cosa succede, quando si accende: subito va in tilt, poi il programma prende il sopravvento e il motore funziona (giro antiorario).

Appena dai alimentazione tutti i pin dell'MCU non ancora configurati si trovano in uno stato indefinito. Prova ad aggiungere delle resistenze da 10 Kohm tra gli ingressi del driver e la massa (se l'azionamento è positivo, altrimenti verso i 5V).
Comunque meglio se pubblichi anche uno schema e una foto dei collegamenti.

Ciao, Ale.

Il video non riesco a vederlo. Mi dice che è privato

nello79:
Il video non riesco a vederlo. Mi dice che è privato

Ops, prova adesso

Mi sa e non hai regolato la corrente nel motore tramite il trimmer, nel A4988, e quindi il driver va in protezione termica,

ilguargua:
Appena dai alimentazione tutti i pin dell'MCU non ancora configurati si trovano in uno stato indefinito.

Allego le 2 foto richieste- Quella dei collegamenti è il classico disegno, l'altra è quella dei collegamenti fisici (non mi sembra molto comprensibile). I pin non utilizzati sono : enable - ms1 - ms2 - ms3: vuoi dire che questi pin devo collegarli al ground interponendo le resistenze da 1KOhm ? Cosa vuol dire 'se l'azionamento è positivo' ?

https://drive.google.com/file/d/1BN58nDdfnjRKYxpTMdwleLy05A4zYYUS/view?usp=sharing
https://drive.google.com/file/d/1m8g-1C36zPFDnkRoN34TZplf0LEkB9c9/view?usp=sharing

icio:
Mi sa e non hai regolato la corrente nel motore tramite il trimmer, nel A4988, e quindi il driver va in protezione termica,

Ah, questa mi è nuova. Sicuramente non ho toccato il trimmer. Come devo regolarlo?

Stacchi il motori , fornisci alimentazione, misuri la tensione sulla spazzola centrale del trimmer , la imposti a 400mV, puoi spingerti fino a 800mV ma non oltre
Usa cautela perché il trimmer è molto delicato, un cacciavite a taglio che permetta di ruotare senza sforzo, quando hai impostato la tensione giusta puoi spegnere collegare il motore e riaccendere e vedrai che tutto funzionerà

icio:
Stacchi il motori , fornisci alimentazione, misuri la tensione sulla spazzola centrale del trimmer ,

Ok, mi sono anche guardato la cosa sul web. Semplicissimo. L'unico problema è che la scheda mi dà 4 mv e non 400 mv.
Controllo l'alimentazione tra Vmot e Ground = 12 volts in continua. Controllo tra Trimmer e ground = 4 5 mv (non 400 mv o 0,4 volts). Mah. Forse la scheda è andata e Murphy mi perseguita, ma ho 3 schede uguali e tutte non vanno; mi sembra troppo. Avevo già comunque ordinato una diversa A4988, attendo che mi arrivi, poi riproverò toccandola con tutti i santi crismi per evitare anche l'elettricità statica (cosa che non ho fatto finora). Grazie, comunque.