Bueno, he estado toda la tarde liado con lo que me indicabas y en principio ya funciona correctamente. He estado haciendo pruebas con una placa nueva que he diseñado. He usado drivers TMC2208 por UART y en modo heredado y he probado varias configuraciones de uPxPaso y de Precisión. He llegado hasta una precision de x32 con lo que usando la opcion "Test motor" 32 veces el motor de 200 pasos ha dado giro completo de 360º. Si pongo la precisión a x1, con una sola vez que la active el motor (Test Motor) me dá una vuelta completa ya que esta opción se envia 200 pasos o 400 pasos dependiendo del motor.Alfredo M. Rubio escribió: ↑Mar May 28, 2019 6:09 pmPues Daniel, ya voy entendiendo (en parte) como has hecho para usar los micropasos.
Como de esto no se nada, no sé si las demás controladoras usan el mismo sistema u otro para dar órdenes al driver, pero si se el resultado.
A ver qué te parece esto:
Si en la SBBX con un motor de 400 pasos, pones tornillo de 1mm de paso (lead), 32 micropasos (uPxPaso), y X4 en Precisión; en Dis.Paso, puedes llegar a poner 0,62 μm, 1,25 μm, 1,87 μm, o 2,50 μm y etc… (0,625*n) que se verá en el display.
Si eso se cumple, queda claro que el sistema no aprovecha bien los micropasos.
No sé cómo se escribe el código en Arduino, pero si puedes poner (como dices) más Precisión, se podrán dar pasos más pequeños y más ajustados a lo necesario para cada objetivo:
Si pudieras escribir:
Precisión = Micropasos y ocultar el parámetro Precisión, ocurrirá que:
Si pongo 32 Micropasos, la Precisión (oculta) será X32 (un treintaidosavo de los micropulsos totales) y de esta forma dispondremos de una secuencia tal que 0,078125*n, en tamaño de paso; puesto que 1000/400/32=0,078125. O sea que podremos dar pasos y verlos en el display, de:
0,07 μm, 0,15 μm, 0,23 μm, 0,31 μm, 0,39 μm, 0,46 μm, etc…
Si pongo 16 Micropasos, la Precisión será X16 y de esta forma la secuencia será de 0,15625*n, en tamaño de paso.
Si pongo 8 Micropasos, la Precisión será X8 y obtendremos una secuencia de 0,3125*n en tamaño de paso.
Y así sucesivamente…
Si puedes escribir ese código, yo puedo hacer las pruebas en el reloj, en cuanto AntonioT me mande la SBBX y veremos cómo varía la precisión de paso con una serie de motores de diferente amperaje, paso y fabricante.
Describo de nuevo el significado de cada opción porque las dos son distintas e importantes de comprender :
uPxPaso = indica al driver cuantos micropulsos hardware deben enviarse para que el motor dé un paso. Su valor maximo depende de las características del driver fisico: A8825 ó TMC2208. Si se cambia este valor la precisión se reestablece automáticamente a x1. Siempre que se cambie este valor, hay que ajustar el valor de espera entre los micropulsos "Delay uP" para que el motor se mueva suave y no a tirones.
Precisión = indica cuanto es capaz de moverse el motor como minimo, en cuanto se divide un paso completo y por tanto la distancia minima que es capaz de avanzar el carril. Al cambiar la precisión se ajustan todas las distancias establecidas. El valor máximo es siempre el nº de uPxPaso. Si un driver admite 32 uPxPaso, como máximo tendrá una precisión de x32.
Como ejemplo real, mi carril que tiene un husillo de 8mm/vuelta y un motor de 200 pasos, tiene una distancia de paso (Dis.Paso) minima real de 40 micras. Si configuro el driver TMC2208 con 256 uPxPasos y le pongo una precisión de x256, consigo una distancia de paso de 0,15 micras.
Alfredo, cuando actualices y hagas las pruebas con una precisión de x32 (la máxima para el A8825) me dices si realmente se consigue ese desplazamiento. Yo lo he conseguido con mi carril pero claro, el husillo es de 8mm.
Espero de verdad que este cambio sea util y podais aprovecharlo.
Saludos,
Daniel