Autor Tema: [Mini tutorial] Closed loop stepper  (Leído 10018 veces)

Desconectado PacoP

  • Aprendiz
  • *
  • Join Date: Jul 2016
  • Mensajes: 321
  • Ubicación: San Pedro del Pinatar, Murcia
[Mini tutorial] Closed loop stepper
« en: 30 Diciembre 2016, 22:38 »
Hola a todos

Hace tiempo que me estoy construyendo una fresadora tipo router, a ratos, por afición y para mis aficiones. Sigo diseñando mejoras y ultimando detalles, pero ya estoy comprando los componentes que ya tengo claros. He utilizado y me he basado mucho en este foro, y voy a ver si puedo aportar mi granito de arena, esta vez.

Hace bastante estuve leyendo sobre motores, servos, drivers, y sistemas de lazo cerrado. Entonces pensé que tal vez podría montarme mi propio sistema de lazo cerrado, consistente en un motor PaP, un encoder y un driver. Pues el otro día conseguí hacerlos funcionar, y voy a hacer un mini tutorial por si algún aventurero decide seguir mis pasos. Siempre viene bien una guía, especialmente para los novatos como yo.

Empecemos, pero ya que es un tutorial, primero veamos algunas cositas importantes.

- El sistema
Llamamos servo a cualquier sistema de motor que conozca su posición y la corrija si es necesario, para alcanzar la posición deseada.
El motor puede ser de cualquier tipo, que sea servo no indica qué tipo de motor es. Puede ser normal con escobillas (servo de modelismo), o sin escobillas (brushless), y en este caso generalmente suele ser de dos fases (los motores PaP normales que más se usan) o de tres fases (como los mandrinos, por ejemplo).

- Los sistemas todo en uno
Los fabricantes suelen vender el sistema entero, es decir, el driver y un motor que ya lleva el encoder integrado. El encoder es incremental, o sea, manda las señales de avance pero no tiene constancia de la posición absoluta.
El problema es que te tienes que ceñir al motor que te venden, y al encoder que va con ellos.

- El motivo
Primero por enredar, es decir, por curiosidad.
Segundo porque en su momento (hace un par de meses) creía que el "closed loop" era la h..tia. Luego veremos que no tanto.
Hay una cosa que sí es mejor: puedes elegir el motor/encoder que más te convenga. Puedes adaptarlo un poco a tus necesidades. En mi caso, elegí un motor que tiene más torque que los que venden con todo integrado, a un precio bastante menor.
En cuanto al precio, sí y no compensa, depende. Luego hablaremos un poco más.

[Continúa]

Desconectado PacoP

  • Aprendiz
  • *
  • Join Date: Jul 2016
  • Mensajes: 321
  • Ubicación: San Pedro del Pinatar, Murcia
Re:[Mini tutorial] Closed loop stepper
« Respuesta #1 en: 30 Diciembre 2016, 22:41 »
Bueno, ahora vamos a ver todos los componentes por separado.

DRIVER

- He encontrado varios fabricantes de drivers, aunque todos parecen cortados por el mismo patrón, fundamentalmente JMC, Lichuan, y Leadshine.
Leadshine me inspiró un poco más de confianza, así que compré uno de esos.

Los modelos son:
- EasyServo ES-D508 para motores de 3 fases
- EasyServo ES-D808 y ES-D1008 para motores de dos fases.
Yo compré el ES-D808. El 1008 es el mismo, pero puede conectarse a corriente alterna también.

Lo bueno es que lleva un conector RJ11 (de teléfono) para conectar el servo al ordenador, y modificar sus parámetros mediante su programa específico (protuner, se baja desde la web de leadshine).

Lo que yo hice:
- Poner el microstepping a 1600. Se puede poner mediante jumpers o mediante el protunner.
- Poner la resolución del encoder a 4000 pasos por revolución.
- Ajustar los porcentajes de corriente que debe entregar el driver en estado parado y en funcionamiento.
Bueno, se puede afinar el ajuste mediante otras cositas, hay que leerse el manual.






MOTOR

Probablemente aquí está la gracia.
Me compré tres motores de CNC4You, de 4 Nm de torque en parado, NEMA 23. El motor debe llevar eje por detrás (para agarrar el encoder).
Yo quería motores potentes pero no tan grandes como NEMA 34, y las soluciones todo en uno de leadshine no cumplen el requisito. El motor de mayor potencia que provee leadshine, para formato NEMA23 es el ES-M22430, con 3 Nm


ENCODER

Y esta es otra de las gracias. Puedes poner el encoder que quieras, con diferentes resoluciones.

Yo me compré uno de CUI, modelo AMT112Q-V.
Estuve leyendo, y parecía que era lo mejor del mundo.
El cacharrito se puede programar mediante su software (AMT viewpoint). Él sólo se descarga el último firmware, y tú le dices la resolución a la que quieres que trabaje, y puedes alinear el índice.



No sufre tanto con las vibraciones como los encoders ópticos, no le afectan tanto las interferencias como a los magnéticos... todo virtudes. Luego resulta que no es tanto así. Parece que da una horquilla de lecturas falsas, que aunque sea pequeña, pues jode. Por ejemplo, aquí un ejemplo de reseñas negativas: http://www.cnczone.com/forums/viper-servo-drives/252390-economy-encoders-amt-vs-usdigital.html

¿Es importante? Pues hasta cierto punto, pero no parece que sea definitivo. En el driver de leadshine puedes programar cuántas señales debes considerar "normales" para que el motor no corrija la posición, y cuántas consideras que ya se pasa, y debe dar un error.

Como valoración personal y nada experta, a mi me parece que se comporta muy bien.

Por otra parte, si en el driver tienen contemplado un cierto margen de error, debe ser que todos los encoders dan alguna lectura falsa, incuidos los que ellos mismos montan (son encoders ópticos de 1000 líneas).

A tener en cuenta, si a alguien se le ocurre hacer lo mismo:
- En el encoder se programa cuál es su resolución (por ejemplo, 1000 cpr o "pasos"). Pero el encoder manda una señal cada vez que uno de los sensores cambia de estado (y tiene dos), de forma que A puede estar apagado/encendido, y B también, dando un total de 4 posibilidades.
- En el driver se definen los cambios de estado, de forma que para un encoder de 1000 líneas, hay que poner 4000 en el parámetro de resolución, por lo explicado anteriormente. El driver recibe 4000 señales de paso para un encoder de 1000 "pasos".

Sé que no me explico bien del todo, pero basta con leerse los tutoriales y la info de la web de CUI. En cualquier caso si alguien va a repetir los pasos y no se aclara, que pregunte aquí y yo ampliaré la información.



[Continúa]
« última modificación: 30 Diciembre 2016, 22:47 por PacoP »

Desconectado PacoP

  • Aprendiz
  • *
  • Join Date: Jul 2016
  • Mensajes: 321
  • Ubicación: San Pedro del Pinatar, Murcia
Re:[Mini tutorial] Closed loop stepper
« Respuesta #2 en: 30 Diciembre 2016, 22:45 »
LOS ACCESORIOS

Aquí viene la madre del cordero. Hace falta:

- Un cable para programar el encoder. Conecta el encoder a un puerto USB. No se puede fabricar por nosotros, no es una conexión pin a pin, lleva un circuito de por medio, ya lo he intentado y tuve que comprar el dichoso cable. Y no es nada barato. Va para los 30 euros, si no me equivoco.

- Un cable para conectar el encoder al driver. Este es más facil, es un cable simple apantallado, con algunas peculiaridades. Hay un terminal que conecta por dentro con otro cable, y tiene conexiones por fuera para hacer masa con el motor y el driver.

Yo me lo compré temiendo lo peor, que pasara como con el cable USB. El cable en sí es un timo, vale una pasta (otros 20 pavos) y mide unos 30 cm, sin comentarios. Peeeeero, si quieres hacerlo tu mismo, debes comprar los conectores y los pines de crimpar. No parece nada complicado hasta que los ves, son pequeñisimos y cuesta verlos hasta con lupa. Añade la crimpadora, o la pieza de ese tamaño para tu crimpadora.

- Un cable para conectar el driver al PC.
Este es barato y sencillo, por un lado el conector RJ11, y por el otro un conector serie. Entonces, hará falta:

- Un cable conversor USB/RS232. Barato y disponible, aunque yo no tenía, es un tumbo más que hay que dar.


PRUEBAS

Desde el mismo driver puedes hacer pruebas y rotar los motores. Puedes establecer al nº de vueltas, velocidad, aceleración...
El panel de pruebas incorpora un gráfico con los pasos que lee el driver desde el encoder, y se ve que siempre está mandando lecturas de +/- 1 paso, incluso en parado. Esto son 1/4000 vueltas, es decir, el driver no se molesta en corregir el error porque el microstepping está establecido en 1/1600 de vuelta, y no podría corregirse. Por tanto, aunque de lecturas falsas, no es importante ya que son demasiado pequeñas.



En funcionamiento, vemos que el driver reporta un rango mayor de errores de posicionamiento (entre +/- 18 lecturas, es decir, 18/4000 de vuelta).
Si el driver corrige o no, ni idea. Cuando tenga montada la fresadora tomaré el comparador y haré pruebas de posicionamiento.


PRESUPUESTO FINAL

Pues el driver me lo mandaron por DHL creo, y pasó por aduana. Suerte que el vendedor declaró un precio inferior, pero aún así en la hojita de aduanas ponía el "precio estimado" para pagar los tributos, que era superior, claro. Además, el IVA. No diré lo que pienso de este tipo de impuestos no proporcionales y abusivos, porque me enciendo (ojo, hay que pagar impuestos, no digo lo contrario, pero no hablemos de este tema). Total: 100,9 + 30,28 (aduana)

El encoder también pasó por la garita (vino de USA), y los cables, conectores... todo. Al final sube un pico. (51,5 + 15  aduana + 75 € en cables)

Los motores vinieron de UK, por ahí sin problemas. (162 € los tres)

Al final, el precio es más o menos el mismo que comprarse el sistema completo, solo que el sistema completo de Leadshine no tiene la potencia que quiero, o la tiene con un tamaño mayor de motor, o no ofrece la flexibilidad que tengo ahora (puedo poner el encoder en el husillo). Por otra parte, el sistema completo también puede salirte por una pasta, hay que añdir el envío y puede que aduanas, si compras en chino.

Finalmente, algunos desembolsos son para una sola vez (los cables que van al PC), y compré conectores y pines de sobra para montarme los otros cables, si necesito, que van del encoder al driver.


CONCLUSIÓN

Pues yo estoy contento, ahora tengo que hacer pruebas con diferentes parámetros (ajustar algunas cositas que todavía no entiendo bien), y sobre todo comprobar el sistema en funcionamiento real.

Lo que sí tengo claro: el sistema se mueve con una suavidad increible. Un ruido muy suave incluso a 2000 rpm, y no sé, poco más puedo decir.

¿Voy a comprar otros dos drivers y encoders para completar los otros ejes? Pues a día de hoy no lo sé.
En realidad con unos buenos drivers normales y unos motores potentes, la máquina no debe perder pasos. Y aunque los pierda, el lazo cerrado no puede hacer nada para corregirlo. Sólo puede avisar del fallo y pararse (que no es poco, imaginemos un atasco, es mejor que se pare solo).

Voy a valorar si merece la pena, y si alguien tiene una opinión, dudas, preguntas, aportes o críticas, que lo diga.

Saludos
« última modificación: 30 Diciembre 2016, 22:57 por PacoP »

Desconectado rmp123

  • Aprendiz
  • *
  • Join Date: Feb 2015
  • Mensajes: 23
  • Ubicación: Puente Genil
Re:[Mini tutorial] Closed loop stepper
« Respuesta #3 en: 31 Diciembre 2016, 10:37 »
Buenos días ,PacoP
Ante todo feliz año que entra
Me llamo Rafael soy de Córdoba (cómo no podría ser)
Bueno ante todo estos aportes para neófitos como yo, nos vienen de perlas dado que me estoy iniciando en este basto y apasionante mundo.
Ahora mismo estoy en fase de diseño de mi CNC ( sin ningún conocimiento ni experiencia)
Siempre he estado en el montaje industrial y mantenimiento eléctrico, rodeado de colegas con centros de mecanizado a nivel industrial
Todas las horas que podía, las dedicaba a estar en el taller de un amigo y la verdad que no sé si me equivoqué de oficio(que NUNCA se culminará de aprender) pero se me pasaban las horas observando cómo "arrancaba viruta  " y preguntando como si tuviera 8 añitos .
 Y ya se acabó😂,esa espinita tiene fecha para que salga mi primer prototipo de fresado hecho en casa, y esto me lo he propuesto como las contratas o cumples fecha o Sanción  por horas de desfase.
"Disculpa la chapa"
 Sobre tu aporte ( muy agradecido, y ánimo a  seguir) me surge una cuestión en principio
 -Si el lazo cerrado no corrige y realmente solo es una señal de control que realmente es para evaluar si parar el sistema (CNc) por atascamiento posible
Este atascamiento produce un sobre consumo . !Debería discriminarlo el Driver !? y realizar cualquier acción de seguridad, bien sea alarma, parada, retroceso o reinicio ( entendiéndose antemano que cualquier acción sería previa programación):Si fuera de esta manera, ! Cómo podría un encoder acoplado al eje bien sea motor o husillo tener acción directa en la corrección y reajuste sin provocar paradas o realizar solo la función de información ( por expresarlo de alguna forma) utilizando algún hardware por medio como un autómata
Gracias


Desconectado PacoP

  • Aprendiz
  • *
  • Join Date: Jul 2016
  • Mensajes: 321
  • Ubicación: San Pedro del Pinatar, Murcia
Re:[Mini tutorial] Closed loop stepper
« Respuesta #4 en: 31 Diciembre 2016, 18:34 »
Hola rmp123

A lo mejor no me he sabido explicar bien, lo intento:

- El sistema "closed loop" SÍ que corrige la posición, ante una desviación o parada momentánea.
Mira este vídeo, es el mismo driver que el mío: https://youtu.be/a8XcC4QwOXE
Y en este otro, también se observa: https://youtu.be/2SozZ7af3wg
Por eso estos sistemas son tan precisos, llevan la cuenta de la posición, y si hay un salto, una vibración o cualquier pequeño accidente, se corrigen y vuelven al sitio correcto.

- El sistema se para automáticamente cuando no consigue corregir la posición durante un tiempo que tu estableces en el driver, mediante el programa "protuner". Por ejemplo, 1000 milisegundos (1 seg.) por defecto. Si no se consigue corregir la posición y se mantiene el bloqueo durante 1 segundo, se para de forma automática.

- En cuanto al sobreconsumo, me pierdo un poco. El driver entrega la corriente necesaria en todo momento, hasta un límite méximo que tu le marcas. Puedes discernir la corriente entregada en posición de parada (que se define como el 50% de la máxima) y la corriente en movimiento (hasta el 100%).
Según pone en el manual (traducido del inglés):
"En el modo de funcionamiento normal, el driver monitoriza la posición del eje en todo momento. La corriente entregada al motor cambia dinámicamente basándose en el seguimiento del error entre la posición actual y la ordenada por la controladora."
Imagino que quiere decir que cuanto más error de posicionamiento, más corriente entregada, para que haga más fuerza y corrija dicho error.

- El encoder se puede situar en el eje del motor o del husillo.
La ventaja de ponerlo en el husillo es que mide directamente lo que gira éste, independientemente de lo que gire el motor (no tendrá en cuenta la transmisión intermedia).
Por ejemplo, si instalamos poleas/correas entre el motor y el husillo, y ponemos el encoder en el husillo, se corrige el backlash de la polea/correa, porque el motor no parará hasta que el encoder (el husillo en definitiva) haya alcanzado su posición correcta. Llevándolo al extremo de lo absurdo, podríamos instalar correas lisas, de fricción. El motor girará y girará, aunque resbale un poco, hasta que se alcance la posición correcta en el husillo, que es donde importa.

- Finalmente, este sistema no lleva ningún hardware de por medio. El driver lleva la cuenta de los pulsos y su comparación con las señales del encoder.
Hay sistemas en los que la cuenta la lleva la tarjeta controladora, pero no es el caso.

No sé si he respondido a tus dudas, si no, pregunta otra vez
Saludos y feliz año


Desconectado rmp123

  • Aprendiz
  • *
  • Join Date: Feb 2015
  • Mensajes: 23
  • Ubicación: Puente Genil
Re:[Mini tutorial] Closed loop stepper
« Respuesta #5 en: 02 Enero 2017, 09:58 »
Hola PacoP
Muchas gracias por la aclaración, ahora lo he entendido perfectamente y me lo has puesto muy claro
No tengo duda que lo voy a incluir en el diseño ya que pondré los motores con poleas en principio por realizar un diseño como los que observo en el foro, quedando la cnc más compacta y teniendo la capacidad  de variar la relación entre poleas
Me parece mejor idea colocarlo en los ejes y no en el motor (lo veo más coherente )

Si pudieras darme tu opinión en los siguientes componentes ( y no cometer muchos errores apoyándome en vuestra experiencia con equipos y proveedores )

 -Motores PAP (fiables, mi intención es nena 34 o 42)
 -Draivers
 -controladora ( Gecko,Triple best..)
  (Mi intención es más adelante poner el cuarto eje)

Gracias
Un saludo


Anderl

  • Visitante
Re:[Mini tutorial] Closed loop stepper
« Respuesta #6 en: 02 Enero 2017, 12:59 »
Interesante aporte, y muy bien detallado. Muchas gracias!

Una pregunta de novato que trata de aclarar conceptos: no se usan los DRO (digital read out) para esto mismo, sustituyendo al encoder? alguna ventaja de un sistema frente al otro?

Saludos y ánimo con el proyecto.

Desconectado PacoP

  • Aprendiz
  • *
  • Join Date: Jul 2016
  • Mensajes: 321
  • Ubicación: San Pedro del Pinatar, Murcia
Re:[Mini tutorial] Closed loop stepper
« Respuesta #7 en: 02 Enero 2017, 19:25 »
Hola rmp123

- Motores y drivers los encuentras a paladas, de cualquier tamaño.
Los sabios del lugar dicen con acierto que debes comprar el de mayor potencia que tu bolsillo te permita.
Es decir, para NEMA 34, los de mayor potencia suelen estar en torno a los 8 Nm y hasta 12, he visto en ocasiones.
Hay muchas tiendas, por ejemplo stepperonline, Changzhou Longs Motor en Ebay... busca NEMA 34 y te aparecen muchos.
Intenta comprar con envíos desde países en euros, es más rápido y te olvidas de aduanas y otros inconvenientes.

En cuanto a los drivers, si dices que vas a incluir el closed loop en tu diseño, pues ahí lo tienes, es el HBS86.
Si no vas a poner closed loop, te sale mejor comprar un kit de 3 motores + 3 drivers, suelen venir ya con el driver apropiado para cada caso. Ahora mismo no sabría aconsejarte, no los he comparado. Creo que los mejores son los digitales, pero no me hagas mucho caso, investiga un poco.

- En cuanto a la controladora hace no mucho se habló en este foro de algunas de ellas. Tendrás que saber si vas a controlar la máquina por puerto USB, ethernet, o paralelo (a evitar).
Mira aquí: http://foro.metalaficion.com/index.php?topic=26243.0

Anderl

Los DRO no son incrementales, son absolutos, es decir, son sensores que te dan la posición exacta. Y si, se usan para lo mismo, pero con una filosofía diferente.

No sé exactamente cómo funcionan, pero imagino que envían la posición absoluta a la controladora (no al driver) y ella se encarga de ver si tiene que corregir o no.

Es muy apropiado para desplazamientos lineales, por ejemplo, es muy útil saber si estás en la posición 10 o 10,05 del eje X. Pero es menos apropiado para movimientos circulares, por ejemplo, no es muy útil saber si estás en el ángulo 45.01º del husillo, sencillamente porque habrá que saber también en qué vuelta te encuentras para saber el avance en ese eje. Puesto que de todas formas hay que contar las vueltas, pues ya contamos la posición relativa (pasos) y ya está.

Hay un caso especial: en caso de parada, como sí que se conoce la posición absoluta, se puede reenganchar el trabajo en el mismo punto. Pero yo creo que es más apropiado para tornos, y de todas formas no he visto ningún sistema servo que lleve un encoder absoluto, todos son incrementales.

Saludos

Desconectado rmp123

  • Aprendiz
  • *
  • Join Date: Feb 2015
  • Mensajes: 23
  • Ubicación: Puente Genil
Re:[Mini tutorial] Closed loop stepper
« Respuesta #8 en: 02 Enero 2017, 21:40 »
Hola PacoP
Muchas gracias
Un saludo

Anderl

  • Visitante
Re:[Mini tutorial] Closed loop stepper
« Respuesta #9 en: 03 Enero 2017, 16:00 »
Citar
Anderl

Los DRO no son incrementales, son absolutos, es decir, son sensores que te dan la posición exacta. Y si, se usan para lo mismo, pero con una filosofía diferente.

No sé exactamente cómo funcionan, pero imagino que envían la posición absoluta a la controladora (no al driver) y ella se encarga de ver si tiene que corregir o no.

Es muy apropiado para desplazamientos lineales, por ejemplo, es muy útil saber si estás en la posición 10 o 10,05 del eje X. Pero es menos apropiado para movimientos circulares, por ejemplo, no es muy útil saber si estás en el ángulo 45.01º del husillo, sencillamente porque habrá que saber también en qué vuelta te encuentras para saber el avance en ese eje. Puesto que de todas formas hay que contar las vueltas, pues ya contamos la posición relativa (pasos) y ya está.

Hay un caso especial: en caso de parada, como sí que se conoce la posición absoluta, se puede reenganchar el trabajo en el mismo punto. Pero yo creo que es más apropiado para tornos, y de todas formas no he visto ningún sistema servo que lleve un encoder absoluto, todos son incrementales.

Te agradezco la aclaración.
Slds

Desconectado PacoP

  • Aprendiz
  • *
  • Join Date: Jul 2016
  • Mensajes: 321
  • Ubicación: San Pedro del Pinatar, Murcia
Re:[Mini tutorial] Closed loop stepper
« Respuesta #10 en: 03 Enero 2017, 18:16 »
De nada
Casualmente navegando por ahí he visto que el fabricante de uno de estos drivers propone instalar el encoder en dos sitios que hemos comentado, y uno de ellos es un DRO. En ambos casos es el driver el que lleva la responsabilidad de comparar la posición ordenada y la posición efectivamente alcanzada.






Saludos
Paco

yotiro

  • Visitante
Re:[Mini tutorial] Closed loop stepper
« Respuesta #11 en: 13 Febrero 2017, 09:20 »
Muchas gracias por tan detallado tutorial PacoP.bien

Tras leerlo me he animado a probar y he pedido a china un par de drivers de JMC y encoders opticos de 1000 lineas.
Los motores de doble eje ya los tengo (28kg/cm asi los reaprovecho). A ver si funciona medio bien siendo marcas con menor "prestigio" que Leadshine u otras.

Por ahora a esperar, ya contaré que tal.
¿Has podido tu hacer mas pruebas?

Saludos
Fernando

Desconectado PacoP

  • Aprendiz
  • *
  • Join Date: Jul 2016
  • Mensajes: 321
  • Ubicación: San Pedro del Pinatar, Murcia
Re:[Mini tutorial] Closed loop stepper
« Respuesta #12 en: 13 Febrero 2017, 14:39 »
De nada, me alegro de que te haya servido, ese era el propósito, que no haga falta recorrer el camino desde cero.
He hecho pocas pruebas más, sólo velocidades, micropasos y algún ajuste que otro.
He visto que el motor va sobrado con un micropaso de 4 (800 pulsos/vuelta), y el encoder a 800 pulsos. Consigo girarlo a 3000 rpm, y suena muy suave.
Si acaso haré un vídeo y lo subo, aunque no hay mucho que enseñar más que un motor girando...

yotiro

  • Visitante
Re:[Mini tutorial] Closed loop stepper
« Respuesta #13 en: 13 Febrero 2017, 21:01 »
Ten cuidado, por lo que leí en otros foros, un motor paso a paso, a partir de 1500-2000 rpm genera suficiente fuerza contraelectromotriz como para cargarse los drivers en caso de una parada brusca.  .confuso2

Desconectado PacoP

  • Aprendiz
  • *
  • Join Date: Jul 2016
  • Mensajes: 321
  • Ubicación: San Pedro del Pinatar, Murcia
Re:[Mini tutorial] Closed loop stepper
« Respuesta #14 en: 13 Febrero 2017, 21:27 »
Pues mira no tenía ni idea, es la primera vez que lo oigo. Se acabaron las pruebas de velocidad  :D
De todas formas el driver debería estar preparado, por la pasta que cuesta, y le he programado una aceleración y deceleración lentas.