Encontrei um problema, mas não faço idéia de como resolver.
Aparentemente parece na sincronização das fases, mas não é porque o motor corrige o erro.
O código está funcionando como Alexmos, porém com este bug.
Notem: quando movimenta lentamente, há um momento em que o motor dá um movimento a mais.