Motore X gira solo in un senso

Buongiorno,

Premetto che sono neofita assoluto ...

Ho una scheda Arduino UNO + CNC Shield + 3 drivers A4988 + 3 Motori NEMA 17

Penso di aver installato il tutto in modo corretto (firmware UNO, libreria GRBL, Universal Gcode Sender) ed infatti il tutto (o quasi) sembra anche funzionare in modo corretto.

I motori Y e Z funzionano bene ma il motore X va solo in una direzione, qualsiasi sia il comando inviato (positivo o negativo)

Esempio: G0 X10 gira in senso orario, G0 X-10 gira sempre in senso orario. Y e Z invece girano correttamente (orario ed antiorario)

Ho provato sostituire il motore e sostituire il driver ma niente da fare. Stesso motore e stesso driver se montati su asse Y funzionano bene.

Ho provato anche cambiare libreria svariate volte, usare anche il GRBL Controller (obsoleto) ma l'errore è sempre lo stesso.

Come dicevo, sono davvero alle prime armi, qualcuno mi potrebbe aiutare a risolvere questo problema?

Grazie

PS. La attuale configurazione Grbl è:

$0 = 10 (step pulse, usec)
$1 = 25 (step idle delay, msec)
$2 = 0 (step port invert mask:00000000)
$3 = 0 (dir port invert mask:00000000)
$4 = 0 (step enable invert, bool)
$5 = 0 (limit pins invert, bool)
$6 = 0 (probe pin invert, bool)
$10 = 3 (status report mask:00000011)
$11 = 0.010 (junction deviation, mm)
$12 = 0.002 (arc tolerance, mm)
$13 = 0 (report inches, bool)
$20 = 0 (soft limits, bool)
$21 = 0 (hard limits, bool)
$22 = 0 (homing cycle, bool)
$23 = 0 (homing dir invert mask:00000000)
$24 = 25.000 (homing feed, mm/min)
$25 = 500.000 (homing seek, mm/min)
$26 = 250 (homing debounce, msec)
$27 = 1.000 (homing pull-off, mm)
$100 = 250.000 (x, step/mm)
$101 = 250.000 (y, step/mm)
$102 = 250.000 (z, step/mm)
$110 = 500.000 (x max rate, mm/min)
$111 = 500.000 (y max rate, mm/min)
$112 = 500.000 (z max rate, mm/min)
$120 = 1.000 (x accel, mm/sec^2)
$121 = 1.000 (y accel, mm/sec^2)
$122 = 1.000 (z accel, mm/sec^2)
$130 = 200.000 (x max travel, mm)
$131 = 200.000 (y max travel, mm)
$132 = 200.000 (z max travel, mm)

Se il motore gira solo in un senso è abbastanza ovvio che al relativo driver il pin di controllo direzione non riceve il comando, ovvero rimane sempre alto o basso e questo comporta un unico verso di rotazione del motore indipendentemente dal comando.
Verifica con un multimetro se è realmente così e di conseguenza controlla i collegamenti elettrici, a livello di continuità, e se il pin è correttamente inizializzato/utilizzato nel software.

Grazie per l'aiuto che mi stai dando,

Dal momento che uso la scheda CNC Shield (e nessun jumper), penso che i collegamenti elettrici non possono essere sbagliati, piuttosto che possa essere una sbagliata configurazione del pin .... ma per correggere questo errore non saprei nemmeno da dove iniziare. Come e dove posso vedere se il pin è correttamente inizializzato/utilizzato? Lo so, sono domande magari banali ma per chi inizia purtroppo non lo sono affatto.

Sergio

ciao

La configurazione dei pin la fa GRBL.

Il pin che controlla la direzione del motore X è il n. 5.

Stacca la CNC Shield, carica il "solito" blink, modificalo per far lampeggiare l'uscita 5, collega un led e relativa resistenza sul pin 5. Se lampeggia la causa del problema è la CNC Shield; se resta fisso acceso (o spento) il 328 è quasto.

ciao
pippo72

Ciao,

Ho fatto la prova del led, ed ho visto che resta sempre acceso fisso (lo era già ancora prima di caricare il sw, appena messo il led).
Per ulteriore prova ho caricato il sw sul pin 6 e li funziona benissimo, led si mette a lampeggiare.
Cosa significa, che la mia UNO è andata?

La UNO per intero no, l'Atmega328 ha un pin "bruciato".
Puoi sostituire il 328 a pochi euro (si trovano su ebay o amazon), devi acquistare quelli con bootloader arduino installato.

ciao
pippo72

Grazie mille Pippo, ho già fatto l'ordine per un 328 nuovo