Grazie Max allora ne approfitto subito!
Continuando le prove mi sono accorto che nella filettatura a misura, alla ripresa della passata successiva avevo un certo offset sul sincronismo, l'utensile non seguiva la precedente passata e partiva con un certo anticipo, costante nel tempo e ripetitivo nelle passate. (spero di riuscire a spiegarmi). Penso di aver trovato la magagna ma la risposta definitiva tocca a te.
Invece di usare un'encoder da 250 ppr come il tuo ne ho usato uno da 400, ovviamente ho impostato i parametri giusti nelle impostazioni.
Nella routine di attesa per il sincronismo fai il modulo con il numero fisso "1000" che io (purtroppo senza aver approfondito il funzionamento del codice) ho pensato che fosse il numero degli impulsi encoder * 4. Ho provato a modificarlo in base al mio encoder ed ora funziona, il sync è OK.
Codice:
StepperMoveToPosition(thread_offset_steps);
absolute_steps = ThreadSteps+thread_offset_steps;
//absolute_encoder_steps = 500;
absolute_encoder_steps = 800;
while (stay)
{
lcd.setCursor(0, 3);
lcd.print(" ");
pass_done = false;
// while (((absolute_encoder_steps % 1000) != 0) & (stay)) //wait here until the mandrel catch the sync with the screw
while (((absolute_encoder_steps % 1600) != 0) & (stay))
{
if (digitalRead(ESC) == PRESSED) stay = false;
}
Ma siccome non sono sicuro di ciò che ho fatto attendo un tuo parere.