miércoles, 2 de septiembre de 2015

Configurar archivo .ini machinekit

El archivo .ini va a ser el encargado de configurar todos los parámetros que van a ser usados con machinekit donde estará los archivos o librerias que se van a usar, variables que se usarán en el archivo .hal, programas externos que se quiera usar, tipos de GUI con la que se quiera inicializar, etc.

Antes de comenzar es recomendable que se revise el siguiente link para poder entender mejor las cosas.
https://github.com/machinekit/machinekit/tree/master/src/hal/drivers/hal_pru_generic

En la Beaglebone Black se necesita de programas externos hechos en c (.c) y ensamblador (.p) que son los que contienen las instrucciones necesarias para poder realizar los procesos:
- Pulso y dirección que controlan los drivers.
- Señal PWM para controlar ventiladores, taladros, etc.
- Los codificadores o encoders para poder hacer una lectura de posición con sensores de cuadratura.
- Lectura y ecritura de señales que se envian a través de las GPIO o PRUSS
- Señal de Espera hasta que la orden se haya completado.
- Procesamiento de tareas que se estan ejecutando en machinekit.

La siguiente información se encuentra en la carpeta de machinekit/src/hal/drivers/hal_pru_generic para los que deseen realizar cambios y mejorar el desempeño de las librerías. El link que dejo es de github. https://github.com/machinekit/machinekit/tree/master/src/hal/drivers/hal_pru_generic

Las secciones del archivo .ini van entre corchetes indicando su nombre y las que estan dentro de estas serán las variables.

Nota: Uno puede utilizar cualquier nombre en una sección personaliza y en la variable lo mismo, lo que se hace es que cualquier sección o variable que se ocupe utilizarla en el archivo .hal.

Ejemplo:

[miImpresora]
calentar=1
apagar=0

En el archivo hal se la puede mandar a llamar definiendo una nueva variable.
#impresora 1
newsig impresora.00.enable bit
sets impresora.00.enable   [miImpresora](calentar)
#impreora 2
newsig impresora.01.enable bit
sets impresora.01.enable   [miImpresora](apagar)

Y luego se debe enlazar con el comando net.
net impresora.00.enable <= axis.0.amp-enable-out
net impresora.00.enable => hpg.stepgen.00.enable
net impresora.01.enable <= axis.1.amp-enable-out
net impresora.01.enable => hpg.stepgen.01.enable

Bueno lo escrito en la parte superior sera explicado en una configuración avanzada de como enlazar estas variables con linuxcnc y GUI's personalizadas.

La sección de PRUCONF se utiliza en la Beaglebone Black y es la encargada de decir al archivo .ini que utilice la librería hal_pru_generic que contiene toda la información de las GPIO, STEP, DIR, PWM, Encoders, etc.

En el archivo .hal se explicará como machinekit llama a dichas librerias que se encuentran en el directorio de /usr/lib/linuxcnc/xenomai.

DRIVER es la variable que llama a la librería hal_pru_generic
CONFIG es la variable que configura num_stepgens que son los ejes que se van a usar (STEP/DIR) y num_pwmgens es el numero de señales pwm que se desea ya sea para ventiladores, láser, taladro, etc.
PRUBIN es la variable que manda a llamar a xenomai que es el kernel de machinekit para que funcione en tiempo real.

Ejemplos:

Configuración de impresora 3d con doble extrusor (2 motores pap), 3 motores (X,Y,Z), 2 ventiladores, 2 fusores (extrusor) y una cama caliente.
Los motores del extrusor los manejo con los drivers pololu que funcionan con STEP/DIR.
Los motores de los ejes X, Y, Z; los manejo con los drivers ACS606 (STEP/DIR).
Los ventiladores con 2 señales PWM.
Los fusores con 2 señales PWM.
La cama caliente con 1 señal PWM.
[PRUCONF]
DRIVER=hal_pru_generic
CONFIG=pru=1 num_stepgens=5 num_pwmgens=5
PRUBIN=xenomai/pru_generic.bin

Configuración de fresadora 3 ejes (X,Y,Z).
Los motores de los ejes X, Y, Z; los manejo con los drivers ACS606 (STEP/DIR).
El taladro lo manejo con el driver hx-ws400 (PWM).
[PRUCONF]
DRIVER=hal_pru_generic
CONFIG=pru=1 num_stepgens=3 num_pwmgens=1
PRUBIN=xenomai/pru_generic.bin

Configuración de fresadora 4 ejes (X,Y,Z).
Los motores de los ejes X, Y, Z; los manejo con los drivers ACS606 (STEP/DIR).
El cuarto motor lo manejo con el driver ST-M5045 (STEP/DIR).
El taladro lo manejo con el driver hx-ws400 (PWM).
[PRUCONF]
DRIVER=hal_pru_generic
CONFIG=pru=1 num_stepgens=4 num_pwmgens=1
PRUBIN=xenomai/pru_generic.bin

La sección de EMC se encarga de informar la versión de la configuración, el nombre de la máquina y si se quiere ejecutar machinekit con mensajes que ayudan a depurar algun error que haya.

En la GUI de gmoccapy_lcd7 no importa los nombres de version y machine ya que en el archivo python se manda el nombre de gmoccapy_lcd7 y la versión de la misma con lo que en la ventana aparece el nombre gmoccapy_lcd7 y version 1.0.

En la GUI axis si se escribe lo que se haya puesto de nombre y versión.

Ambas GUI ejecutan el modo en que se quiere usar la depuración utilizando 0 para que no se visualice los mensajes de procesos de machinekit.

[EMC]

# Version of this INI file
VERSION =               $Revision:1.0$

# Name of machine, for use with display, etc.
MACHINE =               MF5.mill.4.axis

# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG =                0x00000003
#DEBUG =                0x00000007
DEBUG = 0

La sección de DISPLAY en la variable DISPLAY ejecuta la GUI que se desea siempre y cuando este instalada; puede ser la axis, tkemc, gmoccapy, gscreen, touchy o la que modifique que es gmoccapy_lcd7.
La variable CYCLE_TIME va detectar cambios y actualizar los procesos cada 0.200 segundos.
La variable HELP_FILE va indicar un archivo de texto con información que puede ayudar a entender mejor machinekit, solo se usa en la GUI que este programada con tklinuxcnc como la axis.
La variable POSITION_OFFSET configura machinekit ya se con posiciones relativas o posiciones absolutas.
La variable POSITION_FEEDBACK determina si la posición que se requiere es dada por el programa machinekit o por la retroalimentación de los motores.
La variable MAX_FEED_OVERRIDE indica que porcentaje usar para manipular velocidad y aceleración de los ejes. Si se usa 1.0 dara 100% de la velocidad máxima configurada, si es 1.5 dara el 150%.
La variable PROGRAM_PREFIX indica la ruta donde se encuentran los archivos nc que pueden ser ejemplos en código G o subrutinas. Si se tiene una carpeta con los archivos de código G o subrutinas en otra ruta hay que cambiarlo.
La variable INTRO_GRAFIC indica la imagen que sale al iniciar machinekit (se la puede cambiar colocando la imagen gif en /usr/share/linuxcnc).
La variable INTRO_TIME se usa para que la imagen de introducción (machinekit.gif) se despliegue por 5 segundos.
La variable INCREMENTS contiene los valores ya sean en pulgadas o mm que se quiera usar cuando se usa un eje para desplazar. Si esta seleccionado 10 mm en la gui y se selecciona el husillo x+, este se desplazara 10 mm en la dirección positiva del punto de referencia. En la GUI gmoccapy_lcd7 solo se puede poner hasta maximo 7 valores de lo contrario no ejecutara machinekit y saldrá un mensaje de error.

[DISPLAY]

# Name of display program, e.g., tkemc
#DISPLAY =               tkemc
#DISPLAY =              axis
DISPLAY =              gmoccapy_lcd7

# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME =            0.200

# Path to help file
HELP_FILE =             tklinucnc.txt

# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET =       RELATIVE

# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK =     ACTUAL

# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE =     1.5

# Prefix to be used
PROGRAM_PREFIX = /home/machinekit/machinekit/nc_files

# Introductory graphic
INTRO_GRAPHIC =         machinekit.gif
INTRO_TIME =            5

# Increments for the JOG section
INCREMENTS = 10 1 0.1 0.01

La sección de FILTER se usa para poder llamar a extensiones de programas que se desea usar con machinekit, el .gcode se incluyo para poder leer las subrutinas que se usan en impresora 3d con programas como el slic3r.

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
PROGRAM_EXTENSION = .gcode RepRap Flavour GCode
gcode = gcode-to-ngc
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python

La sección TASK es la encargada de controlar los ciclos de actualiación cuando se pausa el programa o se manda un comando para que realice un proceso.

[TASK]

# Name of task controller program, e.g., milltask
TASK =                  milltask

# Cycle time, in seconds, that task controller will sleep between polls
CYCLE_TIME =            0.010

La sección RS274NGC se encarga de indicar el directorio de las subrutinas, codigo G y M personalizado y guardar los ultimos parámetros que machinekit uso en el archivo .var. Los parámetros del archivo .var guardan datos de la gui y de posición.

Nota: no copiar los archivos "REMAP= " al archivo .ini hay que realizar unas configuraciones para que funcionen, eso será explicado en otro tutorial.

[RS274NGC]
# Machinekit fdm subroutines path
SUBROUTINE_PATH = /usr/share/linuxcnc/ncfiles/remap-subroutines/fdm
# alternatively you can copy the subroutines a local subroutines folder
# SUBROUTINE_PATH = subroutines

# remapping Machinekit FDM GCodes
REMAP=G22 modalgroup=1 ngc=g22
REMAP=G23 modalgroup=1 ngc=g23
REMAP=G28 modalgroup=1 argspec=xyza ngc=g28
REMAP=G29 modalgroup=1 ngc=g29
REMAP=G29.1 modalgroup=1 argspec=xyz ngc=g29_1
REMAP=G29.2 modalgroup=1 argspec=xyz ngc=g29_2
REMAP=G30 modalgroup=1 argspec=pxy ngc=g30
REMAP=M104 modalgroup=10 argspec=iPt ngc=m104
REMAP=M106 modalgroup=10 argspec=iPt ngc=m106
REMAP=M107 modalgroup=10 argspec=it ngc=m107
REMAP=M109 modalgroup=10 argspec=tP ngc=m109
REMAP=M140 modalgroup=10 argspec=iP ngc=m140
REMAP=M141 modalgroup=10 argspec=iP ngc=m141
REMAP=M190 modalgroup=10 argspec=P ngc=m190
REMAP=M191 modalgroup=10 argspec=P ngc=m191
REMAP=M200 modalgroup=10 argspec=D ngc=m200
REMAP=M207 modalgroup=10 argspec=PQ ngc=m207
REMAP=M221 modalgroup=10 argspec=P ngc=m221
REMAP=M226 modalgroup=10 ngc=m226
REMAP=M280 modalgroup=10 argspec=itP ngc=m280
REMAP=M300 modalgroup=10 argspec=iqP ngc=m300
REMAP=M400 modalgroup=10 ngc=m400
REMAP=M420 modalgroup=10 argspec=itredp ngc=m420
REMAP=M700 modalgroup=10 argspec=iP ngc=m700
REMAP=M701 modalgroup=10 argspec=iP ngc=m701
REMAP=M702 modalgroup=10 argspec=iP ngc=m702
REMAP=M710 modalgroup=10 argspec=epq ngc=m710
# enable ini parameter passing
FEATURES = 4
# File containing interpreter variables
PARAMETER_FILE =        MF5-Dual-Extrusion.var

La sección EMCMOT es utilizada para interactuar con las señales I/O, Analógicas y retroalimentación de señales de posicionamiento. Para saber mas dejo el siguiente link http://www.linuxcnc.org/docs/html/config/emc2hal.html#sec:motion.
La variable que mas interesa en la de SERVO_PERIOD que se encarga de decir a machinekit que se trabaja con ese tiempo para controlar las señales de los motores (Pulso/Dirección). El valor se obtiene con una prueba de latencia que realiza machinekit en la Beaglebone Black.

[EMCMOT]

EMCMOT =                motmod

# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT =          1.0

# Interval between tries to emcmot, in seconds
COMM_WAIT =             0.010

# Servo task period, in nanoseconds
SERVO_PERIOD =          1000000

La sección HAL ejecuta los archivos .hal siempre y cuando estan en la misma ruta que el archivo .ini, el archivo MF5-Dual-Extrusion va a contener toda la información para hacer funcionar la impresora 3d. Los archivos spindle_sim.hal y postgui.hal son ejemplos de que machinekit es capaz de ejecutar varios archivos .hal. Como ejemplo el archivo spindle_sim.hal tendra información de con que parámetros de desea ejecutar el taladro y a que GPIO estará unido, mientras que el archivo postgui.hal será el encargado de unir las GPIO con una GUI personalizada enlazada a la GUI principal del programa.

En un tutorial que pretendo explicar como crear GUI's enlazadas a la GUI gmoccapy_lcd7 explicaré como funciona.

[HAL]

# The run script first uses halcmd to execute any HALFILE
# files, and then to execute any individual HALCMD commands.

# list of hal config files to run through halcmd
# files are executed in the order in which they appear

HALFILE =  MF5-Dual-Extrusion.hal
HALFILE =               spindle_sim.hal

# Single file that is executed after the GUI has started.
POSTGUI_HALFILE =       postgui.hal

# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD =               save neta

La sección de TRAJ es la encargada de configurar todos los parámetros con los qe va a funcionar la máqina.
La variable Axes indica el número de ejes (DIR/STEP) que va utilizar la máquina, en este caso son 5 que pertenecen a los ejes X, Y, Z y A, B extrusores.
La variable COORDINATES indica la letra en orden que se le asigna a los ejes, se puede poner X, Y, Z, A, C siendo C el extrusor número 2.
La variable LINEAR_UNITS indica si se quiere trabajar en mm, pulgandas (in) o imperiales (imperial). Según esta configuración se va asignar las unidades a la variable INCREMENT explicada arriba.
La variable ANGULAR_UNITS indica si se quiere trabajar en grados (degree), radianes (radian) o grad or gon (400 por ciclo).
La variable MAX_ANGULAR_VELOCITY es la que determina la maxima velocidad angular.
La variable DEFAULT_ANGULAR_VELOCITY determina el valor por defecto.
La variable MAX_LINEAR_VELOCITY indica la máxima velocidad lineal, es muy importante este valor ya que si se deja muy alto se genera un error "hpg: stepgen.00.maxvel is too big for current step timings & position-scale, clipping to max possible", si el valor es muy bajo al configurar la velocidad en cada eje no surtira efecto al poner valores por encima del configurado aquí.
La variable DEFAULT_VELOCITY sería la velocidad por defecto, yo lo pongo un 20% menos de la máxima velocidad.
La variable POSITION_FILE guarda los valores en los cuales se encuentra, importante cuando se cierra machinekit y se vuelve a abrir estará en la útlima posición establecida o cuando se realiza un offset de un archivo de código G estará guardado en la posición a donde se lo arrastro.
La variable NO_FORCE_HOMING=1 indica se machinekit puede mover los ejes (jogging) sin tener que hacer un homing (desplazar los ejes al punto de referencia inicial), cuando es cero se debe hacer un homing para poder mover los husillos.

[TRAJ]

AXES =                  5
COORDINATES =           X Y Z A B
LINEAR_UNITS =          mm

ANGULAR_UNITS =         degree

MAX_ANGULAR_VELOCITY = 45.00
DEFAULT_ANGULAR_VELOCITY = 4.50

MAX_LINEAR_VELOCITY = 48.0
DEFAULT_VELOCITY = 40.0

CYCLE_TIME =            0.010
POSITION_FILE = position.txt
NO_FORCE_HOMING = 1

La sección AXIS_n donde n es el número del eje, indica la configuración de cada eje.

Los eje X, Y, Z de mi máquina utilizan los driver ACS606 que controlan motores BLDC modelo BLM57180.
En la hoja técnica del motor me dice que se necesitan de 4000 pulsos para dar una revolución, por lo tanto teniendo un husillo de 5 mm de paso se calcula la escala 4000pulsos/5mm = 800 pulsos/mm y eso es una revolucion del husillo.

La variable TYPE es lineal ya que se convierte el movimento aungular del motor a lineal con los husillos.

La velocidad máxima va a ser igual a 40.0 cuando se usa la pantalla LCD, pero si no se usará la velocidad es el doble. La pantalla LCD baja la velocidad de procesamiento para las señales STEP/DIR, por el momento no he podido realizar pruebas con un sd card clase 10 o cuando me llegue mi beaglebone black rev C y ejecute desde la eMMC actualizare esta informcaión. Es importante que cada uno realice pruebas aumento la velocidad hasta que de el error mensionado arriba.

 La variable STEPGEN_MAX_VEL es un 20% mas según la configuración recomendada en machienkit.

La variable MAX_ACCELERATION yo la pongo 10 veces mayor a la velocidad pero es recomendable hacer pruebas ejecutando en modo MDI de la gui comandos y viendo si la aceleración es muy alta no desacelera a tiempo y puede pasarse de la posición requerida.

La variable STEPGEN_MAX_ACC es un 20% mas que la máxima aceleración.

La variable SCALE ya la explique arriba.

Las variables MIN_LIMIT y MAX_LIMIT determinan el recorrido máximo y minimo, si se tiene un husillo de 800 mm y las rieles tienen una distancia de 200mm  lo que va a recorrer el eje será máximo 600 mm por lo tanto se puede poner MIN_LIMIT =0 y MAX_LIMIT=600.0 o si se quiere MIN_LIMIT=100.0 y MAX_LIMIT=500.0 sabiendo que recorre en el eje negativo para llegar al punto de referencia inicial.

Las variables FERROR y MIN_FERROR determinan cuanto es el error que se requiere que haya de posicionamiento, FERROR sería el error máximo en este caso 0.5mm y MIN_FERROR hasta cuanto es la resolución máxima que llega el motor para determinar el minimo error posible como ejemplo mi motor es 4000 pulsos y el husillo 5mm entonces el minimo error que tolera es de 5mm/4000pulsos = 0.00125.

La variable HOME indica el punto de referencia del eje, en mi caso esta 0 pero estos pueden ser valores positivos o negativos, cuando se usa finales de carrera (limit switches) estos determinan la posición inicial a donde se desea que se desplace el husillo y de ahi se determina el valor de home que si el switch esta en un valor negtivo para llegar a cero el husillo podría recorrer hasta la mitad por ejemplo y el HOME_OFFSET ayudaría a que se desplace un distancia dada de donde se quedo ya se positiva o negativa.

Nota: Aún no construyo mi máquina para afirmar esto de los finales de carrera y home por lo que las variables HOME_SEARCH_VEL, HOME_LATCH_VEL, HOME_USE_INDEX no las tomaré en cuenta por ahora.

La variable HOME_IGNORE_LIMITS esta comenta por que no tengo la máquina por lo tanto no hago pruebas aún con finales de carrera. Cuando esta variables es YES o 1 quiere decir que se usarán finales de carrera.

La variable HOME_SEQUENCE determina si se quiere hacer homing a todos los husillos que están configurados con un valor de 0. Si yo pongo X, Z y A HOME_SEQUENCE=0 todos estos harán un homing y el eje Y no hara el proceso de homing.

Las variables DIRSETUP, DIRHOLD, STEPLEN y STEPSPACE usan valores que se indican en el datasheet del driver. El driver ACS606 dice que hay un tiempo de 5us entre el pulso y la dirección por lo tanto DIRSETUP es 5us=5000ns, DIRHOLD no se sabe, STEPLEN es 0.85us=850ns y STEPSPACE es 0.85us =850ns. Por lo tanto esos son los valores de configuración del driver, en la página de linuxcnc vienen los valores ya establecidos en nano segundos de los drivers más conocidos, este es el link http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Stepper_Drive_Timing.

[AXIS_0]

# 
# Step timing used in Shapeoko arduino electronics was 30 us steplen + 30 us stepspace
# That gave a 60 us step period = 16.7 KHz step freq
#
# X axis drive mechanics are:
#    blm57180 = 4000 pulses/rev
#
# so Scale = 4000 pulses / 5 mm  = 800 pulses/mm = 1 rev husillo
#
# 
#


TYPE =              LINEAR
MAX_VELOCITY =       40.0
# Set Stepgen max vel 20% higher than the axis
STEPGEN_MAX_VEL =    48.0

MAX_ACCELERATION =   400.0
# Set Stepgen max accel 10% higher than the axis
STEPGEN_MAX_ACC =    480.0

BACKLASH =           0.000

SCALE = 800.0

MIN_LIMIT =             -1.0
MAX_LIMIT =             600.0

FERROR =     0.5
MIN_FERROR = 0.00125

HOME =                  0.000
HOME_OFFSET =           0.00
#HOME_SEARCH_VEL =       0.10
#HOME_LATCH_VEL =        -0.01
#HOME_USE_INDEX =        YES
#HOME_IGNORE_LIMITS =    YES
HOME_SEQUENCE = 0

# these are in nanoseconds
DIRSETUP   =              5000
DIRHOLD    =              6700
STEPLEN    =              850
STEPSPACE  =              850

[AXIS_1]

# 
# Step timing used in Shapeoko arduino electronics was 30 us steplen + 30 us stepspace
# That gave a 60 us step period = 16.7 KHz step freq
#
# X axis drive mechanics are:
#    blm57180 = 4000 pulses/rev
#
# so Scale = 4000 pulses / 5 mm  = 800 pulses/mm = 1 rev husillo
#
# 
#


TYPE =              LINEAR
MAX_VELOCITY =       40.0
# Set Stepgen max vel 20% higher than the axis
STEPGEN_MAX_VEL =    48.0

MAX_ACCELERATION =   400.0
# Set Stepgen max accel 10% higher than the axis
STEPGEN_MAX_ACC =    480.0

BACKLASH =           0.000

SCALE = 800.0

MIN_LIMIT =             -1.0
MAX_LIMIT =             400.0

FERROR =     0.5
MIN_FERROR = 0.00125

HOME =                  0.000
HOME_OFFSET =           0.00
#HOME_SEARCH_VEL =       0.10
#HOME_LATCH_VEL =        -0.01
#HOME_USE_INDEX =        YES
#HOME_IGNORE_LIMITS =    YES
HOME_SEQUENCE = 0

# these are in nanoseconds
DIRSETUP   =              5000
DIRHOLD    =              6700
STEPLEN    =              850
STEPSPACE  =              850

[AXIS_2]

# 
# Step timing used in Shapeoko arduino electronics was 30 us steplen + 30 us stepspace
# That gave a 60 us step period = 16.7 KHz step freq
#
# X axis drive mechanics are:
#    blm57180 = 4000 pulses/rev
#
# so Scale = 4000 pulses / 5 mm  = 800 pulses/mm = 1 rev husillo
#
# 
#


TYPE =              LINEAR
MAX_VELOCITY =       40.0
# Set Stepgen max vel 20% higher than the axis
STEPGEN_MAX_VEL =    48.0

MAX_ACCELERATION =   400.0
# Set Stepgen max accel 10% higher than the axis
STEPGEN_MAX_ACC =    480.0

BACKLASH =           0.000

SCALE = 800.0

MIN_LIMIT =             -1.0
MAX_LIMIT =             200.0

FERROR =     0.5
MIN_FERROR = 0.00125

HOME =                  0.000
HOME_OFFSET =           0.00
#HOME_SEARCH_VEL =       0.10
#HOME_LATCH_VEL =        -0.01
#HOME_USE_INDEX =        YES
#HOME_IGNORE_LIMITS =    YES
HOME_SEQUENCE = 0

# these are in nanoseconds
DIRSETUP   =              500
DIRHOLD    =              6700
STEPLEN    =              850
STEPSPACE  =              850

Los ejes A y B del extrusor tienen la siguiente configuración, usan los driver pololu A4988.
Para calcular la escala se realiza de acuerdo a los micropasos que se configure en los drivers, ejemplo si se usa el motor con 16 micropasos se calcula 200 pasos una vuelta.

200pasos/1rev x 16micropasos/1paso = 3200 micropasos/revolución. Ahora si se extruye el filamento poniendo una revolución (por estar configurada la variable TYPE=ANGULAR) y da un valor de 40.35 mm entonces el valor del scale sería de 3200micropasos/1rev x 1rev/40.35mm=79.3060718ustep/mm.

Las variables DIRSETUP=200, DIRHOLD=200, STEPLEN=1000 y STEPSPACE=1000; están en la configuración de drivers de linuxcnc. http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Stepper_Drive_Timing

[AXIS_3]
# TBD set up as a copy of axis_2 just to have a way to test the 4th axis driver on the K9

TYPE =              ANGULAR
MAX_VELOCITY =       200.0
# Set Stepgen max vel 20% higher than the axis
STEPGEN_MAX_VEL =    240.0

MAX_ACCELERATION =   3000.0
# Set Stepgen max accel 10% higher than the axis
STEPGEN_MAX_ACC =    3600.0

BACKLASH =           0.000

SCALE = 79.3060718

MIN_LIMIT =             -9999.0
MAX_LIMIT =             99999.0

FERROR =     1.0
MIN_FERROR = 0.50

HOME =                  0.000
HOME_OFFSET =           0.00
#HOME_SEARCH_VEL =       0.10
#HOME_LATCH_VEL =        -0.01
#HOME_USE_INDEX =        YES
#HOME_IGNORE_LIMITS =    YES
HOME_SEQUENCE = 0

# these are in nanoseconds
DIRSETUP   =              200
DIRHOLD    =              200
STEPLEN    =              1000
STEPSPACE  =              1000

[AXIS_4]
# TBD set up as a copy of axis_2 just to have a way to test the 4th axis driver on the K9

TYPE =              ANGULAR
MAX_VELOCITY =       200.0
# Set Stepgen max vel 20% higher than the axis
STEPGEN_MAX_VEL =    240.0

MAX_ACCELERATION =   3000.0
# Set Stepgen max accel 10% higher than the axis
STEPGEN_MAX_ACC =    3600.0

BACKLASH =           0.000

SCALE = 79.3060718

MIN_LIMIT =             -9999.0
MAX_LIMIT =             99999.0

FERROR =     1.0
MIN_FERROR = 0.50

HOME =                  0.000
HOME_OFFSET =           0.00
#HOME_SEARCH_VEL =       0.10
#HOME_LATCH_VEL =        -0.01
#HOME_USE_INDEX =        YES
#HOME_IGNORE_LIMITS =    YES
HOME_SEQUENCE = 0

# these are in nanoseconds
DIRSETUP   =              5000
DIRHOLD    =              8000
STEPLEN    =              1500
STEPSPACE  =              1500

Los archivos de configuración .ini y .hal los subiré a github cuando termine el tutorial de configuración hal.

A continuación dejo unos videos que subi a youtube.

Impresora 3D funcionamiento (motores)

Fresadora 4 ejes funcionamiento (motores)



 

No hay comentarios.:

Publicar un comentario