jueves, 31 de diciembre de 2015

Configurar archivo .ini y .hal (PID) para usar librería MAX31855 con gmoccapy_lcd7

Para continuar con este tutorial se debe haber creado los arhivos de los siguientes tutoriales:

GUI Temperatura.
Librería MAX31855.
Componente HAL MAX31855.

Configuración archivo .ini

En el archivo .ini se pondrá la Gui de temperatura y el archivo postguihal necesarios para leer la temperatura y realizar las conexiones.

[DISPLAY]

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


#EMBED_TAB_NAME = right_side_panel
#EMBED_TAB_LOCATION = box_right
#EMBED_TAB_COMMAND = gladevcp -x {XID} ReadTemp.glade

EMBED_TAB_NAME = Temperatura
EMBED_TAB_LOCATION = ntb_user_tabs
EMBED_TAB_COMMAND = gladevcp -x {XID} ReadTemp.glade

En este caso se visualizará la temperatura en las pestañas de gmoccapy.

[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 =   joypad.hal
HALUI = halui

POSTGUI_HALFILE =       3D.postgui.hal

Se cargan los archivos .hal que se utilizarán, joypad y halui son para poder controlar machinekit con un mando de juegos en mi caso con el control del Xbox 360. Se realizará esta configuración en tutoriales posteriores.

Configuración Archivo .hal

En el archivo .hal se debe aumentar y modificar algunas líneas.

En este caso se va a leer dos extrusores (termocuplas) con el amplificador MAX31855 y se usará el módulo de PID para controlar la temperatura.

loadrt pid count=3
loadrt limit1 count=3
loadusr -Wn Extruder0 hal_temp_max31855 -n Extruder0 -b SPI0 -num 1 -i 0.3 
loadusr -Wn Extruder1 hal_temp_max31855 -n Extruder1 -b SPI0 -num 2 -i 0.3
 
Se añade el pid al servo-thread

addf pid.0.do-pid-calcs                   servo-thread
addf pid.1.do-pid-calcs                   servo-thread
addf pid.2.do-pid-calcs                   servo-thread
addf limit1.0                             servo-thread
addf limit1.1                             servo-thread
addf limit1.2                             servo-thread
 
Se crean nuevas señales que controlarán los extrusores y cama caliente.

newsig e0.temp.set   float
newsig e0.temp.meas  float
newsig bed.temp.set  float
newsig bed.temp.meas float
newsig e1.temp.set   float
newsig e1.temp.meas  float

Se da una frecuencia para generar las señales PWM, en este caso de 1khz.

1000000ns -> 0.001s.

1/0.001 = 1khz

setp hpg.pwmgen.00.pwm_period       1000000

Se define los GPIO que van a generar las señales PWM.

# P9.26 gpio0_14 Extrusor 1
setp hpg.pwmgen.00.out.01.pin       0x2E
setp hpg.pwmgen.00.out.01.enable    1
setp hpg.pwmgen.00.out.01.value     0.0

# J9.16 gpio1_19 Bed
#setp hpg.pwmgen.00.out.00.pin       0x53
#setp hpg.pwmgen.00.out.00.enable    1
#setp hpg.pwmgen.00.out.00.value     0.0

# P9.15 gpio1_16 Extrusor 0
setp hpg.pwmgen.00.out.02.pin       0x50
setp hpg.pwmgen.00.out.02.enable    1
setp hpg.pwmgen.00.out.02.value     0.0


Por útlimo se unen las señales con los componentes.

# PID for Extruder 0 temperature control
net e0.temp.meas    <= Extruder0.Temp.meas
net e0.temp.meas    => pid.0.feedback

sets e0.temp.set  0
net e0.temp.set motion.analog-out-02    => pid.0.command

net e0.temp.set => Extruder0.Temp.set
net e0.done motion.digital-in-02 <= Extruder0.Temp.set.done

net e0.heater  <= pid.0.output
net e0.heater  => limit1.0.in
net e0.heaterl <= limit1.0.out
net e0.heaterl => hpg.pwmgen.00.out.02.value

# Limit heater PWM to positive values
# PWM mimics hm2 implementation, which generates output for negative values
setp limit1.0.min 0

# PID for Extruder 1 temperature control
net e1.temp.meas    <= Extruder1.Temp.meas
net e1.temp.meas    => pid.1.feedback

sets e1.temp.set  0
net e1.temp.set motion.analog-out-01   => pid.1.command

net e1.temp.set => Extruder1.Temp.set
net e1.done motion.digital-in-01 <= Extruder1.Temp.set.done

net e1.heater  <= pid.1.output
net e1.heater  => limit1.2.in
net e1.heaterl <= limit1.2.out
net e1.heaterl => hpg.pwmgen.00.out.01.value


# Limit heater PWM to positive values
# PWM mimics hm2 implementation, which generates output for negative values
setp limit1.2.min 0

# PID for Bed temperature control
#net bed.temp.meas    <= Temp.Temperatura
#net bed.temp.meas    => pid.2.feedback

#sets bed.temp.set  0
#net bed.temp.set     => pid.2.command

#net bed.heater  <= pid.2.output
#net bed.heater  => limit1.2.in
#net bed.heaterl <= limit1.2.out
#net bed.heaterl => hpg.pwmgen.00.out.00.value


# Limit heater PWM to positive values
# PWM mimics hm2 implementation, which generates output for negative values
setp limit1.1.min 0

# PID Parameters for adjusting temperature control
# Extruder0
#setp pid.0.FF0      0
#setp pid.0.FF1      0
#setp pid.0.FF2      0
setp pid.0.Pgain  0.366693
setp pid.0.Igain  0.00001
setp pid.0.Dgain  0.9375
setp pid.0.maxerror 0.0
setp pid.0.bias    0.5
setp pid.0.enable   1

# Extruder1
#setp pid.1.FF0      0
#setp pid.1.FF1      0
#setp pid.1.FF2      0
setp pid.1.Pgain  0.366693
setp pid.1.Igain  0.00001
setp pid.1.Dgain  0.9375
setp pid.1.maxerror 0.0
setp pid.1.bias    0.5
setp pid.1.enable   1

# Bed
#setp pid.2.FF0      0
#setp pid.2.FF1      0
#setp pid.2.FF2      0
#setp pid.2.Pgain  1
#setp pid.2.Igain  0.0
#setp pid.2.Dgain  0.0
#setp pid.2.maxerrorI 1.0
#setp pid.2.bias    0.5
#setp pid.2.enable   1

Archivo Postgui  .hal.

# Include your customized HAL commands here
# Run on Gmoccapy with gladevcp panel 

net e0.temp.set  => ReadTemp.Extruder_Hal_lbl
net e0.temp.meas => ReadTemp.E0_Temp
net bed.temp.set  => ReadTemp.Bed_Hal_lbl
net bed.temp.meas => ReadTemp.Bed_Temp
net e1.temp.set  => ReadTemp.Extruder1_Hal_lbl
net e1.temp.meas => ReadTemp.E1_Temp


El siguiente esquematico se basa en el diseño de Adafruit para los MAX31855 y de CRAMPS para la conexión de los Fusores (Extrusores). A continuación dejo los links para los que deseen descargar los esquemáticos.

Adafruit MAX31855
CRAMPS





En el siguiente gif se muestra la lectura de temperatura usando el amplificador MAX31855 con termocuplas tipo K. Se calienta el primer extrusor y luego el segundo extrusor.



















No hay comentarios.:

Publicar un comentario