Autor Tema: Control de servomotor con placa de puerto paralelo  (Leído 557 veces)

Desconectado forane

  • Gurú
  • ******
  • Join Date: Nov 2009
  • Mensajes: 2936
  • Ubicación: Sevilla
Resulta que para el control de un servomotor de corriente alterna no me aclaro, pues intenté mandarlo con una placa para puerto paralelo con salidas para DIR y PULS de 5V; pero no se mueve y aparte salta en la pantalla de Mach3 "Reset", imposible de desactivar. Cuando desconecto estas dos salidas, el programa funciona normalmente.
El esquema es éste:

Y:


En otros manuales, aparece 5V en PP + y -, igual que en en PD + y -. Intenté conectarlo con ánodo común, conectando el cátodo de PP y PD a las señales DIR y PULS de la mencionada placa breakout, haciendo caso omiso del indicador "diferencial". Hay una señal de "Open colllector pulse" para 24 V más arriba, pero no entiendo bien el significado.
Lo expongo por si algún alma caritativa me pudiese ayudar.
Optimum 320X630; Enco Unimat 3; Elewer 9X20; fresadora Warco 6X26"; Limadora Atlas 7"; Sierra Rockwell-Delta 14"; Minifresadora horizontal Mygy  Etc.

Desconectado DEVILHUNTER

  • Maestro
  • *****
  • Join Date: Ago 2010
  • Mensajes: 570
  • Ubicación: Oviedo/Madrid
Re:Control de servomotor con placa de puerto paralelo
« Respuesta #1 en: 07 Marzo 2020, 09:13 »
Buenas Forane, ¿qué modelo de servo tienes?

Hace unos pocos meses he instalado unos servos chinos en mi máquina, para la conexión eléctrica con la breakout utilicé el esquema de esta web:

http://muck-solutions.com/?p=1824

Básicamente no necesitas los 24V. Conectas el positivo de la entrada diferencial de pulso o dirección a 5V y el negativo al pin de la breakout.

Tenía pensado abrir un post para hablar sobre los diferentes parámetros de programación, porque el manual en inglés traducido del chino deja mucho que desear. Después de comprar el primer servo (600W) le comenté al vendedor que iba a comprarle a más de 750W y me envió un manual con más información, pero la misma basura de traducción.

Para hacerlo funcionar tendrás que activarle el enable por los parametros del driver. Además, trabajando por puerto paralelo, es conveniente meterle una desmultiplicación de pulsos para tener una velocidad decente.

Por otra parte, los drivers tienen una función de autotuning del valor de ganancia proporcional, pero no me ha funcionado muy bien. Me ha sido más util aumentar la ganancia manualmente hasta que el motor empezaba a hacer un ruido horrible y retroceder un poco.

Desconectado angelnu

  • Ayudante
  • **
  • Join Date: Mar 2016
  • Mensajes: 33
  • Ubicación: Toledo
Re:Control de servomotor con placa de puerto paralelo
« Respuesta #2 en: 07 Marzo 2020, 10:09 »
Yo tengo uno de 1kw creo que es el mismo driver.
Primero tienes que cambiar el parámetro Pn002 a 2 para pulsos y el parámetro Pn001 segun tu motor el Pn003 a 1. Yo lo tengo con una placa mesa 7i76 y linuxcnc, tengo conectado pulso+ al pin 3 pulso- a 14 dirección + al 4  dirección - al 5.

Desconectado forane

  • Gurú
  • ******
  • Join Date: Nov 2009
  • Mensajes: 2936
  • Ubicación: Sevilla
Re:Control de servomotor con placa de puerto paralelo
« Respuesta #3 en: 07 Marzo 2020, 23:01 »
Antes que nada, agradecer el interés mostrado a DEVILHUNTER y angelnu. La verdad es que no esperaba contestación por el tema, un poco alejado de la electromemecánica de cada día en el foro.
Esta tarde ya solucioné el problema y la conexión +. PULS y DIR que me habíais dado era la que por deducción coloqué. Pero el fallo era que se saltaba el RESET en la pantalla del MACH3. No obstante no había visto el código de error: el puñetero "limit switch triggered". Lo que hice para probar fue que desactivé los límites de momento y ya veré por qué ocurre. No obstante, el cable que va al servo no está conectado a masa etc. Ya lo estudiaré.
Tengo que comentar que el parámetro que he modificado es sólo Pn3, para activar "enable" al enchufar el servo. Pn2 no es la forma de pulsos en mi servo, sino que se configura en el parámetro Pn096. El manual de mi servo es parecido al que se menciona en la página alemana que me ha enviado DEVILHUNTER->> https://www.machsupport.com/forum/index.php?action=dlattach;topic=33543.0;attach=44811. Tengo que mencionar que mi servo es éste: https://es.aliexpress.com/item/32898075388.html?spm=a2g0s.9042311.0.0.5a6c63c0fWXyyB y que de esta tienda sólo puedo hablar bien por el trato recibido (además de usar Fedex y no los p..os TNT, UPS y similares)

No obstante, para buscarme la vida, pensé en un sistema diferencial para enviar los pulsos, que según el manual favorece mayor velocidad. Y he pedido éste:
https://es.aliexpress.com/item/33013825383.html?spm=a2g0s.9042311.0.0.5a6c63c0fWXyyB
Que permitiría esta configuración, usando dos salidas de 5V de la placa tampón de puerto paralelo (salida diferencial también a 5 V):


Y nada más. Repito gracias a estos dos foreros.
« última modificación: 08 Marzo 2020, 15:02 por forane »
Optimum 320X630; Enco Unimat 3; Elewer 9X20; fresadora Warco 6X26"; Limadora Atlas 7"; Sierra Rockwell-Delta 14"; Minifresadora horizontal Mygy  Etc.

Desconectado DEVILHUNTER

  • Maestro
  • *****
  • Join Date: Ago 2010
  • Mensajes: 570
  • Ubicación: Oviedo/Madrid
Re:Control de servomotor con placa de puerto paralelo
« Respuesta #4 en: 08 Marzo 2020, 17:16 »
Interesante esa placa de conversión a salida diferencial, no las conocía, me las apunto. De todas formas con el LPT no le hacemos ni cosquillas al driver. Yo tengo pensado pasarme a una 7i76e en un futuro. Con mi configuración actual tengo 9000mm/min de rápidos y 5um de resolución, con estos servos (velocidad nominal 3000rpm, pero alcanzan 5000), podría llegar a 25000mm/min, pero ya los husillos a bolas estarían bailando.

De parámetros yo tengo puesto:
Pn001 = según motor (selección de motor)
Pn002 = 2 (modo de funcionamiento posición)
Pn003 = 1 (enable siempre)
Pn096 = 0 (configuración de pulso/dirección)
Pn098 = 10 (engrane electrónico para que un pulso del LPT sean 10 pulsos al servo)

Como os decía, he conseguido que me manden un manual con mas información de parámetros. No entiendo porqué no mandan directamente este manual. Os paso un enlace para que podáis descargarlo.

https://drive.google.com/file/d/1er2gAuGjGWDO9b1PJUJuXUb2aY4wMZUC/view?usp=sharing

Una recomendación que me dio el fabricante para ajustar las ganancias del servo mediante un autotuning: desconectar el enable por software (Pn003 = 0), ir a la Fn018, entrar dentro de la función y presionar SET durante un par de segundos. Volver a presionar SET un par de segundos y el motor comenzará a moverse adelante y atrás (aproximadamente media vuelta, pero tened cuidado que no pegue con nada) y en la pantalla mostrará un valor (va bailando un poco, pero bueno). Este valor es el ratio entre la potencia del motor y la inercia de la máquina, que se supone que hay que introducir en el parámetro Pn257.

Por supuesto el autotuning ha de hacerse con el motor montado en la máquina y con todas las cargas conectadas a él. Ahora bien, he notado que necesitas tener cero holguras (tuerca doble precargada) para que funcione medianamente bien. Mi recomendación es pasar de la Fn018 e ir subiendo el valor de Fn257 poco a poco e ir probando el funcionamiento del servo. Llegará un momento que el servo empiece a hacer un ruido horrible y a vibrar como un loco (a mi me llegó a derretir el plástico de un acople flexible del calor generado por la vibración en pocos segundos), entonces bajar un poco el Pn257 y listo. Para que os hagáis una idea yo tengo unos motores bastante sobredimensionados y tengo valores de entre 4 y 10 para el Pn257.

Hasta ahí lo poco que he probado de configuración del driver, si alguien tiene mas sugerencias son bienvenidas.
 

Desconectado forane

  • Gurú
  • ******
  • Join Date: Nov 2009
  • Mensajes: 2936
  • Ubicación: Sevilla
Re:Control de servomotor con placa de puerto paralelo
« Respuesta #5 en: 08 Marzo 2020, 22:55 »
Interesante DEVILHUNTER. ¡Entre todos vamos a sacar a los servos de las catacumbas del Foro!
El manual que me envió por E-mail TwoWin era el que incluyes en el enlace. Pero también venía incluido en el driver un librito impreso con las instrucciones. Como nota curiosa, incluía un ejemplo para programar el "electronic gear ratio" -> paso rosca del tornillo/0'001 mm ej. para 4mm serían 4/0,001 -> 4000 Y ahora divide 10000(no sé de dónde sale) entre 4000 y reduce la fracción dividiendo cada operando por 2000 y da 5/2. Pn98 lo programa con 5 y Pn102 con 2.

Tengo que matizar que no es que me vuelva loco Mach3, pero antes usaba DDCSV2.1; pero la programación era muy rígida y no te permitía "tontear". Por tanto, provisoriamente pasé de DDCSV2-1 a Mach3 (LinuxCNC es muy pesado de programar, mal explicado y no tenía ganas de pensar, así que pasé de uno a otro mediante esta placa y un conector de 37 pines que conecta el DDCSV2.1 o el ordenador/breakout  a la máquina --de la que ya hablaré:

https://es.aliexpress.com/item/33043412947.html?spm=a2g0s.9042311.0.0.274263c0nDXPWB


Y ya no me extiendo más.
Optimum 320X630; Enco Unimat 3; Elewer 9X20; fresadora Warco 6X26"; Limadora Atlas 7"; Sierra Rockwell-Delta 14"; Minifresadora horizontal Mygy  Etc.

Desconectado fagoreto

  • Oficial de 2ª
  • ***
  • Join Date: Mar 2018
  • Mensajes: 182
  • Ubicación: RonquioLand
Re:Control de servomotor con placa de puerto paralelo
« Respuesta #6 en: 09 Marzo 2020, 01:22 »
........LinuxCNC es muy pesado de programar, mal explicado y no tenía ganas de pensar........

Te doy toda la razon, Forane. Muy pesado de programar y hay pocas ganas de pensar.
Con lo otro, ya no estoy tan de acuerdo. Ahi va el HAL de un par de servos DC PWM/DIR como nunca lo habiais visto. La parte facil, desde el conector DB25 es eso; la parte facil.

 



Desconectado forane

  • Gurú
  • ******
  • Join Date: Nov 2009
  • Mensajes: 2936
  • Ubicación: Sevilla
Re:Control de servomotor con placa de puerto paralelo
« Respuesta #7 en: 09 Marzo 2020, 08:18 »
Lo siento, fagoreto, pero no puedo ver con claridad la imagen.
Optimum 320X630; Enco Unimat 3; Elewer 9X20; fresadora Warco 6X26"; Limadora Atlas 7"; Sierra Rockwell-Delta 14"; Minifresadora horizontal Mygy  Etc.

Desconectado kankarrio

  • Gurú
  • ******
  • Join Date: Sep 2011
  • Mensajes: 5238
  • Ubicación: leon
Re:Control de servomotor con placa de puerto paralelo
« Respuesta #8 en: 09 Marzo 2020, 11:41 »
Interesante DEVILHUNTER. ¡Entre todos vamos a sacar a los servos de las catacumbas del Foro!
El manual que me envió por E-mail TwoWin era el que incluyes en el enlace. Pero también venía incluido en el driver un librito impreso con las instrucciones. Como nota curiosa, incluía un ejemplo para programar el "electronic gear ratio" -> paso rosca del tornillo/0'001 mm ej. para 4mm serían 4/0,001 -> 4000 Y ahora divide 10000(no sé de dónde sale) entre 4000 y reduce la fracción dividiendo cada operando por 2000 y da 5/2. Pn98 lo programa con 5 y Pn102 con 2.

Tengo que matizar que no es que me vuelva loco Mach3, pero antes usaba DDCSV2.1; pero la programación era muy rígida y no te permitía "tontear". Por tanto, provisoriamente pasé de DDCSV2-1 a Mach3 (LinuxCNC es muy pesado de programar, mal explicado y no tenía ganas de pensar, así que pasé de uno a otro mediante esta placa y un conector de 37 pines que conecta el DDCSV2.1 o el ordenador/breakout  a la máquina --de la que ya hablaré:

https://es.aliexpress.com/item/33043412947.html?spm=a2g0s.9042311.0.0.274263c0nDXPWB


Y ya no me extiendo más.

ya contaras como lo hiciste , de momento voy a mirar la placa por si me interesa ,
proyecto en construcción cumbre 022--fresadora einhell MBF 550-- 2 mini tornos einhell BT ML 300-- 2 taladros columna chinos-- soldadora inverter 80A --- soldadora AC 140A-- soporte para amoladora de 230mm -- UN CARRO DE TELARES MAS

Desconectado forane

  • Gurú
  • ******
  • Join Date: Nov 2009
  • Mensajes: 2936
  • Ubicación: Sevilla
Re:Control de servomotor con placa de puerto paralelo
« Respuesta #9 en: 09 Marzo 2020, 13:56 »
Necesitas tres placas. Yo las escogí de este tipo, para que no existan pines al aire y lleguen a rozar algo:



Luego, necesitas un cable de extensión de 37 pines macho-macho:

https://es.aliexpress.com/item/32822128916.html?spm=a2g0s.9042311.0.0.274263c0k3VI4i, aunque ahora éste no está disponible (no creo que tengas problemas para localizarlo con estos datos.

Y si quieres bordarlo, cable blindado de 37 colores para conectar breakout u placa:

https://es.aliexpress.com/item/4000042550316.html?spm=a2g0s.9042311.0.0.274263c0k3VI4i

Para la distribución, de señales, puede usarse la que usa este señor, aunque añade una tensión de 24 V (en la versión 2.1 no existe voltaje de salida de 24V):



http://www.brainright.com/Projects/CNCController/

Y lo único que hay que hacer es extender a cada placa las entradas y salidas del DCSV o linux o lo que sea (una por cada dispositivo) Y OTRA PLACA GEMELA QUE CONECTA  A LOS DRIVES, MOTORES, FINALES DE CARRERA ETC. Por supuesto que hay que conectar los dos extremos de las placa con el cable de 37 pines.
Optimum 320X630; Enco Unimat 3; Elewer 9X20; fresadora Warco 6X26"; Limadora Atlas 7"; Sierra Rockwell-Delta 14"; Minifresadora horizontal Mygy  Etc.

Desconectado kankarrio

  • Gurú
  • ******
  • Join Date: Sep 2011
  • Mensajes: 5238
  • Ubicación: leon
Re:Control de servomotor con placa de puerto paralelo
« Respuesta #10 en: 09 Marzo 2020, 14:11 »
bueno es saberlo , de momento seguiré con el ddcsv aprendiendo porq instalar un ordenador con puerto paralelo en el zulo me mata , como no lo cuelgue del techo

me ire mirando lo necesario, gracias forane
proyecto en construcción cumbre 022--fresadora einhell MBF 550-- 2 mini tornos einhell BT ML 300-- 2 taladros columna chinos-- soldadora inverter 80A --- soldadora AC 140A-- soporte para amoladora de 230mm -- UN CARRO DE TELARES MAS

Desconectado DEVILHUNTER

  • Maestro
  • *****
  • Join Date: Ago 2010
  • Mensajes: 570
  • Ubicación: Oviedo/Madrid
Re:Control de servomotor con placa de puerto paralelo
« Respuesta #11 en: 09 Marzo 2020, 21:10 »
El tema del engrane electrónico es una de esas cosas que hay que pelearse, la traducción del manual dice "molécula" cuando quiere decir "división". Al final la base es que te permite multiplicar tus pasos del puerto paralelo por un número que puede ser una fracción. Entonces el Pn098 es el numerador y el Pn102 es el denominador. Esos 10000 seguramente sean los pulsos por revolución de tu encoder de 2500ppr.

Como usuario de LinuxCNC estoy completamente de acuerdo que uno de sus grandes problemas es la falta de documentación debidamente explicada. Instalar y usar LinuxCNC en su base es simple, pero en cuanto empiezas a salirte de lo básico ya da muchos problemas. Requiere estar muy familiarizado con el entorno Linux porque asume que ese conocimiento ya lo tienen los usuarios. Hace no mucho me he estado peleando para conseguir instalar las versiones de prueba (2.8 o 2.9) y no he sido capaz de ninguna forma.

Por ejemplo, he estado haciendo compensación geométrica de unos pequeños errores que tenía mi máquina (perpendicularidad entre ejes). Al principio tenía el error entre X e Y hecho por HAL siguiendo un ejemplo que encontré por internet. Pero en cuanto me puse a meter otra corrección no me funcionaba. Entonces creé un módulo de kinemática basado en trivkins, pero cada vez que pasaba de modo ejes a modo joints (de modo auto a modo MDI) la máquina se me movía una cantidad igual al error que estaba corrigiendo. Al final volvía al HAL y conseguí hacerlo funcionar, todo era un espacio de mas cuando en ningún lado te dicen que sea tan rígido de programar.

Desconectado fagoreto

  • Oficial de 2ª
  • ***
  • Join Date: Mar 2018
  • Mensajes: 182
  • Ubicación: RonquioLand
Re:Control de servomotor con placa de puerto paralelo
« Respuesta #12 en: 09 Marzo 2020, 23:19 »
A ver si en pdf se ve mejor.

 

Se usa una suite de diseño electronico, gEDA, en Linux y libre, por supuesto.
El problema de LinuxCNC es que para configurar una maquina hay que pensar en terminos electrico/electronicos. O eso, o copiar algo ya hecho, claro.
Los cuadros verdes son componentes "electronicos" HAL, que tienen sus pines que se conectan entre ellos.Esas conexiones seran las "señales HAL".
Al final del diseño se genera lo que en diseño electronico se llama una NETLIST, que para LinuxCNC es un tanto especial. Se ve asi:


Código: [Seleccionar]
START header

gEDA's netlist format
Created specifically for testing of gnetlist

END header

START components

CONN? device=DB25
constant0 device=constant
motmod device=motion
encoder1 device=encoder
encoder0 device=encoder
base device=thread
servo device=thread
parport.0 device=hal_parport
ddt3 device=ddt
ddt2 device=ddt
iocontrol device=io
motmodJoint1 device=motmod
motmodJoint0 device=motmod
pwmgen.1 device=pwmgen
pwmgen.0 device=pwmgen
ddt1 device=ddt
ddt0 device=ddt
pid1 device=pid
pid0 device=pid
trivkins device=trivkins

END components

START nets

unnamed_net8 : CONN? 3
unnamed_net7 : CONN? 2, CONN? 4
unnamed_net6 : CONN? 6
unnamed_net5 : CONN? 5, CONN? 7
unnamed_net4 : CONN? 10
unnamed_net3 : CONN? 11
unnamed_net2 : CONN? 12
GND : CONN? 19, CONN? 20, CONN? 21, CONN? 22, CONN? 23, CONN? 24, CONN? 18, CONN? 25
unnamed_net1 : CONN? 13
[JOINT_1]INPUT_SCALE : encoder1 11
[JOINT_0]INPUT_SCALE : encoder0 11
[1] : parport.0 P7, parport.0 P4
enc1B : encoder1 3, parport.0 16
enc1A : encoder1 2, parport.0 15
enc0B : encoder0 3, parport.0 14
enc0A : encoder0 2, parport.0 13
Yacc : ddt3 2
Yvel : ddt3 1, ddt2 2
tool-prep-loop : iocontrol 12, iocontrol 4
tool-change-loop : iocontrol 8, iocontrol 3
estop-loop : iocontrol 13, iocontrol 1
Ydir : parport.0 5, parport.0 7, pwmgen.1 10
Ypwm : parport.0 6, pwmgen.1 9
base-thread : encoder0 23, base 1, parport.0 50, parport.0 48, pwmgen.0 13
Xdir : parport.0 4, parport.0 2, pwmgen.0 10
Xpwm : parport.0 3, pwmgen.0 9
Xacc : ddt1 2
servo-thread : constant0 3, ddt3 3, ddt2 3, ddt1 3, motmod 37, motmod 38, encoder0 24, servo 1, pwmgen.0 12, ddt0 3
Xvel : ddt1 1, ddt0 2
Yvel-cmd : pwmgen.1 2, pid1 25
[JOINT_1]DEADBAND : pid1 18
[JOINT_1]FF2 : pid1 16
[JOINT_1]FF1 : pid1 15
[JOINT_1]FF0 : pid1 14
[JOINT_1]BIAS : pid1 13
Yenable : pwmgen.1 1, motmodJoint1 13, pid1 11
Ypos-fb : motmodJoint1 17, encoder1 13, pid1 5
[JOINT_1]D : pid1 4
[JOINT_1]I : pid1 3
[JOINT_1]P : pid1 2
Ypos-cmd : ddt2 1, motmodJoint1 15, pid1 1
Xvel-cmd : pwmgen.0 2, pid0 25
[1.0] : pid1 19, pid0 19
[JOINT_0]DEADBAND : pid0 18
[JOINT_0]FF2 : pid0 16
[JOINT_0]FF1 : pid0 15
[JOINT_0]FF0 : pid0 14
[JOINT_0]BIAS : pid0 13
Xenable : pwmgen.0 1, motmodJoint0 13, pid0 11
Xpos-fb : motmodJoint0 17, encoder0 14, pid0 5
[JOINT_0]D : pid0 4
[JOINT_0]I : pid0 3
[JOINT_0]P : pid0 2
Xpos-cmd : motmodJoint0 15, ddt0 1, pid0 1

END nets


Con el netlist  se genera el .hal correspondiente.

Tambien hay componentes para generar el .ini

 

Y componentes que representan hardware comercial

 

Y bueno; asi esta la cosa.
« última modificación: 09 Marzo 2020, 23:33 por fagoreto »

Desconectado forane

  • Gurú
  • ******
  • Join Date: Nov 2009
  • Mensajes: 2936
  • Ubicación: Sevilla
Re:Control de servomotor con placa de puerto paralelo
« Respuesta #13 en: 17 Marzo 2020, 12:13 »
Tengo que manifestar que conseguí que no se activase falsamente "limit switch triggered". Ha costado trabajo. Ocurría cuando conectaba a la red eléctrica el servomotor de corriente alterna.
El mecanismo para confabular estas interferencias consistió en conectar cada entrada de límites de la placa a una resistencia de 100K conectada al positivo y también a un condensador de 100nF al negativo de la alimentación que sirve de referencia a las entradas de estos límites. Me explico: Mi placa tiene dos alimentaciones que comparten el polo negativo; una desde el ordenador que sirve para alimentar los drivers de los motores de paso, servomotor más relés y otra externa de 15 a 32 V; pero tiene un regulador con salida a 12 V positivos, Pues bien, tomo este voltaje para alimentar a los sensores inductivos de fin de carrera, siendo el negativo común. Cada salida de los fines de carrera inductivos entran en la placa a través de una resistencia (no recuerdo ahora si su valor era de 680 ohmios o más). Y así lo tenía configurado para que cuando el sensor inductivo suministrase el valor alto (12 V) no quemase la placa breakout.
Saludos.

Dejo un enlace a esto en el tema ya antiguo de "El extraño caso de Limit Switch Triggered"
« última modificación: 17 Marzo 2020, 12:15 por forane »
Optimum 320X630; Enco Unimat 3; Elewer 9X20; fresadora Warco 6X26"; Limadora Atlas 7"; Sierra Rockwell-Delta 14"; Minifresadora horizontal Mygy  Etc.

Foro MetalAficion

Re:Control de servomotor con placa de puerto paralelo
« Respuesta #13 en: 17 Marzo 2020, 12:13 »

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20