Ciao, il tuo "algoritmo" soluzione di cambio utensile, è praticamente quello adottato da macchine professionali, macchine grosse e che fanno grosse asportazioni, per torni hobbystici piccoli e che asportano poco materiale, 1 mm su diametro, può essere usato un sistema più semplice sia nella programmazione sia nella meccanica, ossia muovere la torretta con un motore passo passo, collegato alla torretta con cinghia o ingranaggio di riduzione, in questo modo puoi spostare una torretta pesante, e la torretta verrà tenuta ferma dal motore passo passo che ha una coppia resistente moltiplicata per la riduzione tra motore e torretta.
Per trovare codice di questo tipo è bene fare ricerche in inglese visto che la comunità USA è molto consistenze si trovano soluzioni che magari in Italia sono più rari e difficili.
Qui un link per soluzione con motore passo passo, senza fermi senza relè e senza sensori di posizione, si basa come gli assi del tornio con i passi del motore, l'asse torretta è asse A.
Link forum
https://www.machsupport.com/forum/index ... ic=25198.0
Codice da MODIFICARE E COMPRENDERE
Codice: Seleziona tutto
Code"G53 X0.2" 'Move to tool change location
While Ismoving()
Wend
Code"G53 Z0.2"
While Ismoving()
Wend
ActivateSignal(output1) 'unlock the turrent
Sleep(1000) 'Give it time to move to end of stroke
If GetCurrentTool() = 1 then ' Check for the Tool #
Code"G0 A0.000" ' Move to position
While Ismoving() 'wait for the movement to stop
Wend
End If
If GetCurrentTool() = 2 then
Code"G0 A45"
While Ismoving()
Wend
End If
If GetCurrentTool() = 3 then
Code"G0 A90"
While Ismoving()
Wend
End If
If GetCurrentTool() = 4 then
Code"G0 A135"
While Ismoving()
Wend
End If
If GetCurrentTool() = 5 then
Code"G0 A180"
While Ismoving()
Wend
End If
If GetCurrentTool() = 6 then
Code"G0 A225"
While Ismoving()
Wend
End If
If GetCurrentTool() = 7 then
Code"G0 A270"
While Ismoving()
Wend
End If
If GetCurrentTool() = 8 then
Code"G0 A315"
While Ismoving()
Wend
End If
DeacctivateSignal(output1) 'Release air cylinder
Sleep(2000) 'Give it time to move to end of stroke
End
Se la tua macchina deve fare forte asportazione e si tratta di un tornio che necessita di fermi meccanici, allora il tuo sistema è da considerare, ma la cosa è molto più complicata e non so se trovi codice pronto o qualcuno che te lo realizzi, comunque un utente del forum ha fatto una torretta simile a quella che vorresti fare tu e magari se trovi il contatto potrebbe darti qualche dritta.
Ma se può andare userei il sistema che ti ho proposto per la sua semplicità di programma e di meccanica, se usi un motore con molta coppia "magari un nema 34, e una forte riduzione la torretta non dovrebbe muoversi"