Page 1 of 2

Smoothieboard + Dual Extruders. :-)

Posted: Sat May 17, 2014 9:48 pm
by gestalt73
So, I've been working with the smoothieboard guys to work out the kinks in the multi extruder code, and it looks like we've got it figured it out.

Go ahead and take a look at the config file to see how it's set up.
The soluton is extendable to X number of extruders, memory and pins permitting.
So it should work for your Kraken folks as well.

For now, make sure your slicer is set to use "5G - Absolute" coordinates.
this branch doesn't handle offsets correctly if your slicer is generating relative code, for now.

[img]http://i.imgur.com/Ya8ehlSs.jpg[/img]

You can pull the source files from here:
https://github.com/logxen/Smoothie/tree/multitool

also attached the zipped up firmware file.
This firmware merges the latest edge branch with loxgen's multitool branch.
firmware.zip
(182.82 KiB) Downloaded 511 times
I'm in the process of dialing in the offsets using a simple test file, and then I guess my first multi material print!
(I'm so tired of removing support material, I have high hopes that ABS + HIPS will solve that for me)

Here is the config file I'm using:

Code: Select all

# NOTE Lines must not exceed 132 characters
# Robot module configurations : general handling of movement G-codes and slicing into moves
default_feed_rate                            4000             # Default rate ( mm/minute ) for G1/G2/G3 moves
default_seek_rate                            4000             # Default rate ( mm/minute ) for G0 moves
mm_per_arc_segment                           0.25               # Arcs are cut into segments ( lines ), this is the length for 
                                                              # these segments.  Smaller values mean more resolution, 
                                                              # higher values mean faster computation
#mm_per_line_segment                         0.5              # Lines can be cut into segments ( not usefull with cartesian
                                                              # coordinates robots ).
delta_segments_per_second                    600              # for deltas only same as in Marlin/Delta, set to 0 to disable
                                                              # and use mm_per_line_segment
                                                             

# Arm solution configuration : Cartesian robot. Translates mm positions into stepper positions
arm_solution                                 kossel           # selects the kossel arm solution
alpha_steps_per_mm                           80               # Steps per mm for alpha stepper
beta_steps_per_mm                            80               # Steps per mm for beta stepper
gamma_steps_per_mm                           80               # Steps per mm for gamma stepper

arm_length                                   269.00           # this is the length of an arm from hinge to hinge
arm_radius                                   126.750            # this is the horiontal distance from hinge to hinge
                                                              # when the effector is centered

# Planner module configuration : Look-ahead and acceleration configuration
planner_queue_size                           32               # DO NOT CHANGE THIS UNLESS YOU KNOW EXACTLY WHAT YOU ARE DOING
acceleration                                 1000             # Acceleration in mm/second/second.
acceleration_ticks_per_second                1000             # Number of times per second the speed is updated
junction_deviation                           0.05             # Similar to the old "max_jerk", in millimeters, 
                                                              # see https://github.com/grbl/grbl/blob/master/planner.c#L409
                                                              # and https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.8
                                                              # Lower values mean being more careful, higher values means being
                                                              # faster and have more jerk
#minimum_planner_speed                       0.0              # sets the minimum planner speed in mm/sec

# Stepper module configuration
microseconds_per_step_pulse                  1                # Duration of step pulses to stepper drivers, in microseconds
minimum_steps_per_minute                     1200             # Never step slower than this
base_stepping_frequency                      100000           # Base frequency for stepping, higher gives smoother movement

# Cartesian axis speed limits
x_axis_max_speed                             30000            # mm/min
y_axis_max_speed                             30000            # mm/min
z_axis_max_speed                             30000            # mm/min

# Stepper module pins ( ports, and pin numbers, appending "!" to the number will invert a pin )
alpha_step_pin                               2.0              # Pin for alpha stepper step signal
alpha_dir_pin                                0.5              # Pin for alpha stepper direction
alpha_en_pin                                 0.4              # Pin for alpha enable pin
alpha_current                                1.5              # X stepper motor current
alpha_max_rate                               30000.0          # mm/min

beta_step_pin                                2.1              # Pin for beta stepper step signal
beta_dir_pin                                 0.11             # Pin for beta stepper direction
beta_en_pin                                  0.10             # Pin for beta enable
beta_current                                 1.5              # Y stepper motor current
beta_max_rate                                30000.0          # mm/min

gamma_step_pin                               2.2              # Pin for gamma stepper step signal
gamma_dir_pin                                0.20             # Pin for gamma stepper direction
gamma_en_pin                                 0.19             # Pin for gamma enable
gamma_current                                1.5              # Z stepper motor current
gamma_max_rate                               30000.0          # mm/min

# Serial communications configuration ( baud rate default to 9600 if undefined )
uart0.baud_rate                              115200           # Baud rate for the default hardware serial port
second_usb_serial_enable                     false            # This enables a second usb serial port (to have both pronterface 
                                                              # and a terminal connected)
#leds_disable                                true             # disable using leds after config loaded

# Extruder1 module configuration
extruder.hotend1.enable                          true             # Whether to activate the extruder module at all. All configuration is ignored if false
extruder.hotend1.steps_per_mm                    91              # Steps per mm for extruder stepper
extruder.hotend1.default_feed_rate               600              # Default rate ( mm/minute ) for moves where only the extruder moves
extruder.hotend1.acceleration                    250               # Acceleration for the stepper motor, as of 0.6, arbitrary ratio
extruder.hotend1.max_speed                       25             # mm^3/s

extruder.hotend1.step_pin                        2.3              # Pin for extruder step signal
extruder.hotend1.dir_pin                         0.22             # Pin for extruder dir signal
extruder.hotend1.en_pin                          0.21             # Pin for extruder enable signal

# for now the first extruder's offsets should be left at 0 or homing will get confused
extruder.hotend1.x_offset                        0                # x offset from origin in mm
extruder.hotend1.y_offset                        -12.50           # y offset from origin in mm
extruder.hotend1.z_offset                        0                # z offset from origin in mm

delta_current                                1.5              # First extruder stepper motor current

# Second extruder module configuration
extruder.hotend2.enable                          true             # Whether to activate the extruder module at all. All configuration is ignored if false
extruder.hotend2.steps_per_mm                    91              # Steps per mm for extruder stepper
extruder.hotend2.default_feed_rate               600              # Default rate ( mm/minute ) for moves where only the extruder moves
extruder.hotend2.acceleration                    250               # Acceleration for the stepper motor, as of 0.6, arbitrary ratio
extruder.hotend2.max_speed                       25             # mm^3/s

extruder.hotend2.step_pin                        2.8              # Pin for extruder step signal
extruder.hotend2.dir_pin                         2.13             # Pin for extruder dir signal
extruder.hotend2.en_pin                          4.29             # Pin for extruder enable signal

extruder.hotend2.x_offset                        -0.50                # x offset from origin in mm
extruder.hotend2.y_offset                        13.00             # y offset from origin in mm
extruder.hotend2.z_offset                        0                # z offset from origin in mm

epsilon_current                              1.5              # Second extruder stepper motor current


# Laser module configuration
laser_module_enable                          false            # Whether to activate the laser module at all. All configuration is 
                                                              # ignored if false.
#laser_module_pin                             2.5             # this pin will be PWMed to control the laser. Only P2.0 - P2.5 
                                                              # can be used since laser requires hardware PWM
#laser_module_max_power                       0.8             # this is the maximum duty cycle that will be applied to the laser
#laser_module_tickle_power                    0.0             # this duty cycle will be used for travel moves to keep the laser 
                                                              # active without actually burning
#laser_module_pwm_period                      20              # this sets the pwm frequency as the period in microseconds

# Hotend1 temperature control configuration
temperature_control.hotend1.enable            true             # Whether to activate this ( "hotend" ) module at all. 
                                                              # All configuration is ignored if false.
temperature_control.hotend1.link_to_tool      true             # This tells smoothie to enable and disable control of this hotend at the same time as the extruder of the same name
temperature_control.hotend1.thermistor_pin    0.23             # Pin for the thermistor to read
temperature_control.hotend1.heater_pin        2.5              # Pin that controls the heater
temperature_control.hotend1.thermistor        EPCOS100K        # see src/modules/tools/temperaturecontrol/TemperatureControl.cpp:64
                                                              # for a list of valid thermistor names
temperature_control.hotend1.set_m_code        104              #
temperature_control.hotend1.set_and_wait_m_code 109            #
temperature_control.hotend1.designator        H0               #

temperature_control.hotend1.p_factor         27.200           # permanently set the PID values after an auto pid
temperature_control.hotend1.i_factor          2.304           #
temperature_control.hotend1.d_factor         81.000           #

#temperature_control.hotend1.max_pwm          64               # max pwm, 64 is a good value if driving a 12v resistor with 24v.

# Hotend2 temperature control configuration
temperature_control.hotend2.enable            true             # Whether to activate this ( "hotend" ) module at all. 
                                                              # All configuration is ignored if false.
temperature_control.hotend2.link_to_tool      true             # This tells smoothie to enable and disable control of this hotend at the same time as the extruder of the same name
temperature_control.hotend2.thermistor_pin    0.25             # Pin for the thermistor to read
temperature_control.hotend2.heater_pin        1.23              # Pin that controls the heater
temperature_control.hotend2.thermistor        EPCOS100K        # see src/modules/tools/temperaturecontrol/TemperatureControl.cpp:64
                                                              # for a list of valid thermistor names
temperature_control.hotend2.set_m_code        104              #
temperature_control.hotend2.set_and_wait_m_code 109            #
temperature_control.hotend2.designator        H1               #

temperature_control.hotend2.p_factor         27.200           # permanently set the PID values after an auto pid
temperature_control.hotend2.i_factor          2.304           #
temperature_control.hotend2.d_factor         81.000           #

#temperature_control.hotend.max_pwm          64               # max pwm, 64 is a good value if driving a 12v resistor with 24v.

temperature_control.bed.enable               true             #
temperature_control.bed.thermistor_pin       0.24             #
temperature_control.bed.heater_pin           2.7              #
temperature_control.bed.thermistor           Honeywell100K    # see src/modules/tools/temperaturecontrol/TemperatureControl.cpp:64
                                                              # for a list of valid thermistor names
temperature_control.bed.set_m_code           140              #
temperature_control.bed.set_and_wait_m_code  190              #
temperature_control.bed.designator           B                #

#temperature_control.bed.bang_bang            false           # set to true to use bang bang control rather than PID
#temperature_control.bed.hysteresis           2.0             # set to the temperature in degrees C to use as hysteresis
                                                              # when using bang bang
															  
temperature_control.bed.p_factor         87.100               # permanently set the PID values after an auto pid
temperature_control.bed.i_factor          6.716               #
temperature_control.bed.d_factor        283.000               #

# Switch module for fan control
switch.fan.enable                            true             #
switch.fan.input_on_command                  M106             #
switch.fan.input_off_command                 M107             #
switch.fan.output_pin                        2.6              #
switch.fan.output_type                       pwm              # pwm output settable with S parameter in the input_on_comand
#switch.fan.max_pwm                           255              # set max pwm for the pin default is 255

#switch.misc.enable                           true             #
#switch.misc.input_on_command                 M42              #
#switch.misc.input_off_command                M43              #
#switch.misc.output_pin                       2.4              #
#switch.misc.output_type                      digital          # just an on or off pin

# Switch module for spindle control
#switch.spindle.enable                        false            #

# Endstops
endstops_enable                              true             # the endstop module is enabled by default and can be disabled here
delta_homing                                 true             # forces all three axis to home a the same time regardless of 
                                                              # what is specified in G28
alpha_min_endstop                            nc               #
alpha_max_endstop                            1.25^            # add ! to invert pullup if switch is NO to ground
alpha_homing_direction                       home_to_max      # Home up
alpha_max                                    0                #
beta_min_endstop                             nc               #
beta_max_endstop                             1.27^            #
beta_homing_direction                        home_to_max      #
beta_max                                     0                #
gamma_min_endstop                            nc               #
gamma_max_endstop                            1.29^            #
gamma_homing_direction                       home_to_max      #
gamma_max                                    301.200          #

alpha_fast_homing_rate_mm_s                  80               # homing feedrates in mm/second
beta_fast_homing_rate_mm_s                   80               #
gamma_fast_homing_rate_mm_s                  80               #
alpha_slow_homing_rate_mm_s                  20               #
beta_slow_homing_rate_mm_s                   20               #
gamma_slow_homing_rate_mm_s                  20

alpha_homing_retract_mm                      5                # retract/bounce distance after homing in mm
beta_homing_retract_mm                       5                #
gamma_homing_retract_mm                      5                #

alpha_trim                                   0                 # software trim for alpha stepper endstop (in mm)
beta_trim                                    0                 # software trim for beta stepper endstop (in mm)
gamma_trim                                   0                 # software trim for gamma stepper endstop (in mm)

#endstop_debounce_count                       100              # uncomment if you get noise on your endstops

# optional Z probe
zprobe.enable                                false           # set to true to enable a zprobe
zprobe.probe_pin                             1.28!^          # pin probe is attached to if NC remove the !
zprobe.slow_feedrate                         5               # mm/sec probe feed rate
#zprobe.debounce_count                       100             # set if noisy
zprobe.fast_feedrate                         100             # move feedrate mm/sec
zprobe.probe_radius                          100             # where to probe
zprobe.probe_height                          5               # how much above bed to start probe
#gamma_min_endstop                           nc              # normally 1.28. Change to nc to prevent conflict,

# Pause button
pause_button_enable                          true             #

# Panel
panel.enable                                 false             # set to true to enable the panel code
panel.lcd                                    smoothiepanel     # set type of panel 
panel.encoder_a_pin                          3.25!^            # encoder pin
panel.encoder_b_pin                          3.26!^            # encoder pin

# Example for reprap discount GLCD
# on glcd EXP1 is to left and EXP2 is to right, pin 1 is bottom left, pin 2 is top left etc.
# +5v is EXP1 pin 10, Gnd is EXP1 pin 9
#panel.lcd                                   reprap_discount_glcd     #
#panel.spi_channel                           0                 # spi channel to use  ; GLCD EXP1 Pins 3,5 (MOSI, SCLK)
#panel.spi_cs_pin                            0.16              # spi chip select     ; GLCD EXP1 Pin 4
#panel.encoder_a_pin                         3.25!^            # encoder pin         ; GLCD EXP2 Pin 3
#panel.encoder_b_pin                         3.26!^            # encoder pin         ; GLCD EXP2 Pin 5
#panel.click_button_pin                      1.30!^            # click button        ; GLCD EXP1 Pin 2
#panel.buzz_pin                              1.31              # pin for buzzer      ; GLCD EXP1 Pin 1
#panel.button_pause_pin                      2.11^             # kill/pause          ; GLCD EXP2 Pin 8 either
#panel.back_button_pin                       2.11!^            # back button         ; GLCD EXP2 Pin 8 or

# pins used with other panels
#panel.up_button_pin                         0.1!              # up button if used
#panel.down_button_pin                       0.0!              # down button if used
#panel.click_button_pin                      0.18!             # click button if used

panel.menu_offset                            0                 # some panels will need 1 here

panel.alpha_jog_feedrate                     6000              # x jogging feedrate in mm/min
panel.beta_jog_feedrate                      6000              # y jogging feedrate in mm/min
panel.gamma_jog_feedrate                     200               # z jogging feedrate in mm/min

panel.hotend_temperature                     185               # temp to set hotend when preheat is selected
panel.bed_temperature                        60                # temp to set bed when preheat is selected

# Example of a custom menu entry, which will show up in the Custom entry.
# NOTE _ gets converted to space in the menu and commands, | is used to separate multiple commands
custom_menu.power_on.enable                true              #
custom_menu.power_on.name                  Power_on          #
custom_menu.power_on.command               M80               #

custom_menu.power_off.enable               true              #
custom_menu.power_off.name                 Power_off         #
custom_menu.power_off.command              M81               #

# Only needed on a smoothieboard
currentcontrol_module_enable                 true             #

return_error_on_unhandled_gcode              false            #

# network settings
network.enable                               false            # enable the ethernet network services
network.webserver.enable                     true             # enable the webserver
network.telnet.enable                        true             # enable the telnet server
network.ip_address                           auto             # use dhcp to get ip address
# uncomment the 3 below to manually setup ip address
#network.ip_address                           192.168.3.222    # the IP address
#network.ip_mask                              255.255.255.0    # the ip mask
#network.ip_gateway                           192.168.3.1      # the gateway address
#network.mac_override                         xx.xx.xx.xx.xx.xx  # override the mac address, only do this if you have a conflict

Re: Smoothieboard + Dual Extruders. :-)

Posted: Sat May 17, 2014 10:05 pm
by gestalt73
So, for my first print, I thought I'd try a hilbert cube:
http://www.thingiverse.com/thing:16343

This is two layers in.

It's interesting how kisslicer manages multi material prints. it prints two layers at a time before changing.

I also took a stab at some gcode to insert before and after a toolchange.
So far it's looking pretty good!

[img]http://i.imgur.com/WTTUQW0l.jpg[/img]

Re: Smoothieboard + Dual Extruders. :-)

Posted: Sun May 18, 2014 2:02 am
by gestalt73
Ok, so I forgot to mount the second spool, and the HIPS extruder ran out of material, so I had to cancel. :?

So I started a client job that requires support and am going to let it run overnight.

So far it looks really good.

I'm a little disappointed in the exterior surface quality, it's running 20 perimeter/30 infill/40 sparse infill, but I'm using a new spool of white abs from PrototypeSupply. I may switch out for another filament to test tomorrow.

[img]http://i.imgur.com/ce7nsNP.jpg[/img]

Re: Smoothieboard + Dual Extruders. :-)

Posted: Sun May 18, 2014 2:34 pm
by Demolishun
You are making me drool over the Smoothie board. Keep it up!

This is just awesome!

Re: Smoothieboard + Dual Extruders. :-)

Posted: Sun May 18, 2014 6:03 pm
by gestalt73
Updated first post to add notes about absolute vs relative gcode.

Overall it works really well, I've been using KISSlicer, and have been making use of the select and deselect extruder gcode entries to manage the hotends.

I'm dropping the active hotend to 220c before switching to the next hotend, which seems to eliminate drool.

The part that was the absolute worst though, was matching the z height for both nozzles. Even with bubbasnow's instructions, it was a PITA.

Made me wish I held out for the Kraken. :-)

But once it's dialed in, both nozzles are at the exact same height, and you have your offsets set correctly, it's a pretty sweet setup.

Re: Smoothieboard + Dual Extruders. :-)

Posted: Sat May 24, 2014 1:03 pm
by gestalt73
Ok, so after after about a week of fiddling with a new brand of filament, I got back to actually printing parts.

As an aside, ToyBuilderLabs/Prototype Supply ABS filament looks great, but only prints well at low temperatures.
From their website, their preferred temperature range is 215c to 245c, which is fine for most small to medium parts.
But if you need to print hot, because of large parts or parts that need to be durable, it's a little sloppy.

Octave ABS filaments behave very well at 260c, with great adhesion and uniformity in external perimeters.

If anyone has any other filament types, let me know.

Took maybe 5 minutes to clean out all the HIPS support material. internal finish is pretty good.

Imgur Album of images:
http://imgur.com/a/BZJcJ#0

Final product.
[img]http://i.imgur.com/sl5X4E0l.jpg[/img]

Re: Smoothieboard + Dual Extruders. :-)

Posted: Sat Jun 07, 2014 3:16 pm
by gestalt73
Ok everyone, repeat after me, so I don't forget this again.

"Ultra Copper High Temp RTV Silicone Gasket Maker is NOT a thermal conductor. It is not an adhesive. It is actually a thermal insulator. Stay far away from it. Do not use it in the thermister hole, do not get it between the thermister and the hot end block, and for goodness sakes, DO NOT fill the thermister hole with it and then stuff the thermister into it"

I've been fighting what I thought was PID auto tune problems, with a +-5c temperature oscillations, which shows up in smaller prints as rhythmic ridges on the perimeter of the print, and other perimeter sloppiness.

After I moved over to screw in thermisters, everything is back to normal.

The end.

Re: Smoothieboard + Dual Extruders. :-)

Posted: Sat Jun 07, 2014 4:36 pm
by Flateric
This is what I posted regarding the product long ago.

I actually contacted them and got them to offically state this.

Re: Smoothieboard + Dual Extruders. :-)

Posted: Sat Jun 07, 2014 5:24 pm
by JohnStack
gestalt73 wrote:Ok everyone, repeat after me, so I don't forget this again.

"Ultra Copper High Temp RTV Silicone Gasket Maker is NOT a thermal conductor. It is not an adhesive. It is actually a thermal insulator. Stay far away from it. Do not use it in the thermister hole, do not get it between the thermister and the hot end block, and for goodness sakes, DO NOT fill the thermister hole with it and then stuff the thermister into it"

I've been fighting what I thought was PID auto tune problems, with a +-5c temperature oscillations, which shows up in smaller prints as rhythmic ridges on the perimeter of the print, and other perimeter sloppiness.

After I moved over to screw in thermisters, everything is back to normal.

The end.
Copied to Main Thread. THANKS!

Re: Smoothieboard + Dual Extruders. :-)

Posted: Thu Jun 19, 2014 2:10 am
by toybuilder
gestalt73 wrote:As an aside, ToyBuilderLabs/Prototype Supply ABS filament looks great, but only prints well at low temperatures.
From their website, their preferred temperature range is 215c to 245c, which is fine for most small to medium parts.
But if you need to print hot, because of large parts or parts that need to be durable, it's a little sloppy.]
Hi gestalt73,

I noticed this post and wanted to reply -- although the product has a recommended range of 215 to 245 C, the actual temperature definitely will vary based on the hot end, as different hot ends may report somewhat higher or lower temps, and also the dwell time in the hotend can differ between different designs. Unfortunately, I don't have an E3D, nor know anyone operating one with our filament.

I noticed you mentioning that you have a +/- 5C swing on your temperature regulation -- that's a 10 degree range -- that's definitely enough to swing the flow characteristics of most ABS's. Have things gotten better since you've mounted the thermistor with a more direct thermal path to the hotend?

Thanks for the positive mention on our white, btw! I love our white. It's not quite as bright as premium bleached paper, but it's a lot whiter than most white objects around the office! :)

Joseph

Re: Smoothieboard + Dual Extruders. :-)

Posted: Thu Jun 19, 2014 2:29 am
by gestalt73
Hey Toybuilder,

It's great to have you here in the forums.

Since my first sets of prints, I narrowed down the culprit to that +/-5c temp swing. I've manually tuned my PID (actually just PI) to greatly reduce that swing.

So, the buzz around the net is that the pid autotuners are having a hard time finding sane values for the 40w heater cartridge like in the E3Ds.
I'm not sure how well it works on the new 0.91 repetier (I've heard that it works pretty well now) but for Smoothie, the autotune values were "not ideal".

Alot of my prints are large, so I've gotten into the habit of printing hotter than normal to increase layer adhesion and to reduce splits.

I've been doing alot more printing with toybuilderlabs filament lately, and a stable temp seems to be key to getting good results with this (or any) filament.
It definitely is more sensitive to temp swings, but once that's under control, it prints beautifully.

And of course, for smaller, lower temp prints back in the recommended temp range, they're gorgeous.

Now, if I could only find a "how to manually tune the PID values for your hotend" tutorial, I'd be set. :-)

Re: Smoothieboard + Dual Extruders. :-)

Posted: Fri Jun 27, 2014 5:30 pm
by TFMike
gestalt73 wrote: But if you need to print hot, because of large parts or parts that need to be durable, it's a little sloppy.
First time I have heard that large items need to be printed hot, I have been printing big prototype parts on my Orion at 225-230 with the stock hot end with just a clear trash bag over the printer to block against drafts and to try to keep the heat in. What is the reasoning behind printing ABS at 260 for large parts? Will this minimize de-lamination and warping?

EDIT:
Would this help you at all with your PID values? http://forum.seemecnc.com/viewtopic.php?f=36&t=5562

Re: Smoothieboard + Dual Extruders. :-)

Posted: Fri Jun 27, 2014 5:47 pm
by Polygonhell
The strength of the bond between layers of ABS is heavily dependent on the print temperature (or specifically how much of the layer underneath is hot enough to weld to the layer being deposited), hotter = stronger to some limit.
If your running fine at 230 don't worry about it.
I usually print ABS in the 240+ range not because the models split, but because I find below that point the strength of the bond is poor and mechanical parts tend to split if fasteners are tight in the ABS, and occasionally I will print hotter (say 250C) so I can run a fan to cool the ABS, I do this for severe overhangs where I still need a good layer adhesion.

Re: Smoothieboard + Dual Extruders. :-)

Posted: Fri Jun 27, 2014 10:28 pm
by gestalt73
I was getting major splits on very large prints (7in x 7in x 5in high). It was a type of shell, with maybe 6mm thick walls, and completely hollow in the center.

So kept cranking up the temperature and it eventually worked, with minimal splitting.
That was with 20mm/s perimeters, 30mm/s solid infill, 40mm/s sparse infill speeds.

I do wonder now if I just printed slower, if it would give the layers a better chance to adhere.

But now that I'm using screw in thermisters, which use jbweld, my high temp printing days may be over. jb-weld is rated to 260c.

I'm really surprised that you are able to complete large prints at 230c without splitting.

I'm just now starting to tone down the temps for smaller prints. I've been printing at 250c, and once I have some time to mess around and experiment, I'll try lowering it to 240.

Even from my earlier printing days, 230c wasn't quite enough for a strong bond between layers.

Re: Smoothieboard + Dual Extruders. :-)

Posted: Fri Jun 27, 2014 10:37 pm
by TFMike
gestalt73 wrote:I was getting major splits on very large prints (7in x 7in x 5in high). It was a type of shell, with maybe 6mm thick walls, and completely hollow in the center.

So kept cranking up the temperature and it eventually worked, with minimal splitting.
That was with 20mm/s perimeters, 30mm/s solid infill, 40mm/s sparse infill speeds.

I do wonder now if I just printed slower, if it would give the layers a better chance to adhere.

But now that I'm using screw in thermisters, which use jbweld, my high temp printing days may be over. jb-weld is rated to 260c.

I'm really surprised that you are able to complete large prints at 230c without splitting.

I'm just now starting to tone down the temps for smaller prints. I've been printing at 250c, and once I have some time to mess around and experiment, I'll try lowering it to 240.

Even from my earlier printing days, 230c wasn't quite enough for a strong bond between layers.

Well maybe you can use something other than JB Weld? Are you printing inside an enclosure or not? I toned my printer down to no faster than 55 mm/sec for infill and 35 or less for perimeters. Was having a grinding problem for awhile at the cold end but I think I solved it.

Re: Smoothieboard + Dual Extruders. :-)

Posted: Sun Aug 03, 2014 11:13 pm
by Generic Default
Bump.

What host program do you use with your smoothieboard? With Rambo I was able to control both hotends at the same time, but now I upgraded to smoothie and I can only control the temperature of the first hotend.

The second one reads the same value as the first one, and when I set it's pin in the config file to the bed thermistors pin, it reads the bed temperature. There seems to be no way to turn on the second hotend for dual extrusion. Here is my current config file;

Code: Select all

# NOTE Lines must not exceed 132 characters
# Robot module configurations : general handling of movement G-codes and slicing into moves
default_feed_rate 4000 # Default rate ( mm/minute ) for G1/G2/G3 moves
default_seek_rate 4000 # Default rate ( mm/minute ) for G0 moves
mm_per_arc_segment 0.5 # Arcs are cut into segments ( lines ), this is the length for
                                                              # these segments. Smaller values mean more resolution,
                                                              # higher values mean faster computation
#mm_per_line_segment 0.5 # Lines can be cut into segments ( not useful with cartesian
                                                              # coordinates robots ).
delta_segments_per_second 100 # for deltas only same as in Marlin/Delta, set to 0 to disable
                                                              # and use mm_per_line_segment


# Arm solution configuration : Cartesian robot. Translates mm positions into stepper positions
arm_solution linear_delta # selects the delta arm solution
alpha_steps_per_mm 80 # Steps per mm for alpha stepper
beta_steps_per_mm 80 # Steps per mm for beta stepper
gamma_steps_per_mm 80 # Steps per mm for gamma stepper

arm_length 275.8 # this is the length of an arm from hinge to hinge
arm_radius 124.2 # this is the horizontal distance from hinge to hinge
                                                              # when the effector is centered

# Planner module configuration : Look-ahead and acceleration configuration
planner_queue_size 32 # DO NOT CHANGE THIS UNLESS YOU KNOW EXACTLY WHAT YOU ARE DOING
acceleration 2000 # Acceleration in mm/second/second.
acceleration_ticks_per_second 1000 # Number of times per second the speed is updated
junction_deviation 0.05 # Similar to the old "max_jerk", in millimeters,
                                                              # see https://github.com/grbl/grbl/blob/master/planner.c#L409
                                                              # and https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.8
                                                              # Lower values mean being more careful, higher values means being
                                                              # faster and have more jerk
#minimum_planner_speed 0.0 # sets the minimum planner speed in mm/sec

# Stepper module configuration
microseconds_per_step_pulse 1 # Duration of step pulses to stepper drivers, in microseconds
minimum_steps_per_minute 1200 # Never step slower than this
base_stepping_frequency 100000 # Base frequency for stepping, higher gives smoother movement

# Cartesian axis speed limits
x_axis_max_speed 8000 # mm/min
y_axis_max_speed 8000 # mm/min
z_axis_max_speed 8000 # mm/min

# Stepper module pins ( ports, and pin numbers, appending "!" to the number will invert a pin )
alpha_step_pin 2.0 # Pin for alpha stepper step signal
alpha_dir_pin 0.5 # Pin for alpha stepper direction
alpha_en_pin 0.4 # Pin for alpha enable pin
alpha_current 1.2 # X stepper motor current
alpha_max_rate 30000.0 # mm/min

beta_step_pin 2.1 # Pin for beta stepper step signal
beta_dir_pin 0.11 # Pin for beta stepper direction
beta_en_pin 0.10 # Pin for beta enable
beta_current 1.2 # Y stepper motor current
beta_max_rate 30000.0 # mm/min

gamma_step_pin 2.2 # Pin for gamma stepper step signal
gamma_dir_pin 0.20 # Pin for gamma stepper direction
gamma_en_pin 0.19 # Pin for gamma enable
gamma_current 1.2 # Z stepper motor current
gamma_max_rate 30000.0 # mm/min

# Serial communications configuration ( baud rate default to 9600 if undefined )
uart0.baud_rate 115200 # Baud rate for the default hardware serial port
second_usb_serial_enable false # This enables a second usb serial port (to have both pronterface
                                                              # and a terminal connected)
#leds_disable true # disable using leds after config loaded

# Extruder module configuration
extruder.hotend.enable true # Whether to activate the extruder module at all. All configuration is ignored if false
extruder.hotend.steps_per_mm 292 # Steps per mm for extruder stepper
extruder.hotend.default_feed_rate 3000 # Default rate ( mm/minute ) for moves where only the extruder moves
extruder.hotend.acceleration 500 # Acceleration for the stepper motor, as of 0.6, arbitrary ratio
extruder.hotend.max_speed 140 # mm/s

extruder.hotend.step_pin 2.3 # Pin for extruder step signal
extruder.hotend.dir_pin 0.22 # Pin for extruder dir signal
extruder.hotend.en_pin 0.21 # Pin for extruder enable signal

# extruder offset
#extruder.hotend.x_offset 0 # x offset from origin in mm
#extruder.hotend.y_offset 0 # y offset from origin in mm
#extruder.hotend.z_offset 0 # z offset from origin in mm

# firmware retract settings when using G10/G11, these are the defaults if not defined, must be defined for each extruder if not using the defaults
#extruder.hotend.retract_length 20 # retract length in mm
#extruder.hotend.retract_feedrate 60 # retract feedrate in mm/sec
#extruder.hotend.retract_recover_length 0 # additional length for recover
#extruder.hotend.retract_recover_feedrate 50 # recover feedrate in mm/sec (should be less than retract feedrate)
#extruder.hotend.retract_zlift_length 1 # zlift on retract in mm, 0 disables
#extruder.hotend.retract_zlift_feedrate 6000 # zlift feedrate in mm/min (Note mm/min NOT mm/sec)

delta_current 1.0 # First extruder stepper motor current

# Second extruder module configuration example
extruder.hotend2.enable true # Whether to activate the extruder module at all. All configuration is ignored if false
extruder.hotend2.steps_per_mm 292 # Steps per mm for extruder stepper
extruder.hotend2.default_feed_rate 3000 # Default rate ( mm/minute ) for moves where only the extruder moves
extruder.hotend2.acceleration 500 # Acceleration for the stepper motor, as of 0.6, arbitrary ratio
extruder.hotend2.max_speed 140 # mm/s

extruder.hotend2.step_pin 2.8 # Pin for extruder step signal
extruder.hotend2.dir_pin 2.13 # Pin for extruder dir signal
extruder.hotend2.en_pin 4.29 # Pin for extruder enable signal

#extruder.hotend2.x_offset 10.4 # x offset from origin in mm
#extruder.hotend2.y_offset 0 # y offset from origin in mm
#extruder.hotend2.z_offset 0 # z offset from origin in mm
epsilon_current 1.0 # Second extruder stepper motor current

# Laser module configuration
laser_module_enable false # Whether to activate the laser module at all. All configuration is
                                                              # ignored if false.
#laser_module_pin 2.5 # this pin will be PWMed to control the laser. Only P2.0 - P2.5
                                                              # can be used since laser requires hardware PWM
#laser_module_max_power 0.8 # this is the maximum duty cycle that will be applied to the laser
#laser_module_tickle_power 0.0 # this duty cycle will be used for travel moves to keep the laser
                                                              # active without actually burning
#laser_module_pwm_period 20 # this sets the pwm frequency as the period in microseconds

# Hotend temperature control configuration
temperature_control.hotend.enable true # Whether to activate this ( "hotend" ) module at all.
                                                              # All configuration is ignored if false.
temperature_control.hotend.thermistor_pin 0.23 # Pin for the thermistor to read
temperature_control.hotend.heater_pin 2.7 # Pin that controls the heater
temperature_control.hotend.thermistor Semitec # see src/modules/tools/temperaturecontrol/TemperatureControl.cpp:64
                                                              # for a list of valid thermistor names
temperature_control.hotend.set_m_code 104 #
temperature_control.hotend.set_and_wait_m_code 109 #
temperature_control.hotend.designator T #

temperature_control.hotend.p_factor 3 # permanently set the PID values after an auto pid
temperature_control.hotend.i_factor 0.035 #
temperature_control.hotend.d_factor 10.0#

#temperature_control.hotend.max_pwm 64 # max pwm, 64 is a good value if driving a 12v resistor with 24v.

# Hotend2 temperature control configuration
temperature_control.hotend2.enable true # Whether to activate this ( "hotend" ) module at all.
                                                              # All configuration is ignored if false.

temperature_control.hotend2.thermistor_pin 0.24 # Pin for the thermistor to read
temperature_control.hotend2.heater_pin 1.25 # Pin that controls the heater
temperature_control.hotend2.thermistor Semitec # see src/modules/tools/temperaturecontrol/TemperatureControl.cpp:64
                                                              # for a list of valid thermistor names
temperature_control.hotend2.set_m_code 884 #
temperature_control.hotend2.set_and_wait_m_code 889 #
temperature_control.hotend2.designator T1 #

temperature_control.hotend2.p_factor 3.0 # permanently set the PID values after an auto pid
temperature_control.hotend2.i_factor 0.05 #
temperature_control.hotend2.d_factor 10.0 #

#temperature_control.hotend2.max_pwm 64 # max pwm, 64 is a good value if driving a 12v resistor with 24v.

temperature_control.bed.enable true #
temperature_control.bed.thermistor_pin 0.26 #
temperature_control.bed.heater_pin 2.5 #
temperature_control.bed.thermistor Honeywell100K # see src/modules/tools/temperaturecontrol/TemperatureControl.cpp:64
                                                              # for a list of valid thermistor names
temperature_control.bed.set_m_code 140 #
temperature_control.bed.set_and_wait_m_code 190 #
temperature_control.bed.designator B #

#temperature_control.bed.bang_bang true # set to true to use bang bang control rather than PID
#temperature_control.bed.hysteresis 2.0 # set to the temperature in degrees C to use as hysteresis
                                                              # when using bang bang

# Switch module for fan control
switch.fan.enable true #
switch.fan.input_on_command M106 #
switch.fan.input_off_command M107 #
switch.fan.output_pin 2.6 #
switch.fan.output_type pwm # pwm output settable with S parameter in the input_on_comand
#switch.fan.max_pwm 255 # set max pwm for the pin default is 255

#switch.misc.enable true #
#switch.misc.input_on_command M42 #
#switch.misc.input_off_command M43 #
#switch.misc.output_pin 2.4 #
#switch.misc.output_type digital # just an on or off pin

# automatically toggle a switch at a specified temperature
# useful to turn on a fan or water pump to cool the hotend
#temperatureswitch.hotend.enable true #
#temperatureswitch.hotend.type misc # select which MOSFET to use, fan or misc (small MOSFETs)
#temperatureswitch.hotend.threshold_temp 60.0 # temperature to turn on (if rising) or off the switch
#temperatureswitch.hotend.heatup_poll 15 # poll heatup at 15 sec intervals
#temperatureswitch.hotend.cooldown_poll 60 # poll cooldown at 60 sec intervals

# Switch module for spindle control
#switch.spindle.enable false #

# Endstops
endstops_enable true # the endstop module is enabled by default and can be disabled here
delta_homing false # forces all three axis to home a the same time regardless of
                                                              # what is specified in G28
alpha_min_endstop nc #
alpha_max_endstop 1.24^ # add ! to invert pullup if switch is NO to ground
alpha_homing_direction home_to_max # Home up
alpha_max 0 #
beta_min_endstop nc #
beta_max_endstop 1.26^ #
beta_homing_direction home_to_max #
beta_max 0 #
gamma_min_endstop nc #
gamma_max_endstop 1.28^ #
gamma_homing_direction home_to_max #
gamma_max 341.0 #

alpha_fast_homing_rate_mm_s 80 # homing feedrates in mm/second
beta_fast_homing_rate_mm_s 80 #
gamma_fast_homing_rate_mm_s 80 #
alpha_slow_homing_rate_mm_s 5 #
beta_slow_homing_rate_mm_s 5 #
gamma_slow_homing_rate_mm_s 5

alpha_homing_retract_mm 5 # retract/bounce distance after homing in mm
beta_homing_retract_mm 5 #
gamma_homing_retract_mm 5 #

alpha_trim 0 # software trim for alpha stepper endstop (in mm)
beta_trim 0 # software trim for beta stepper endstop (in mm)
gamma_trim 0 # software trim for gamma stepper endstop (in mm)

#endstop_debounce_count 100 # uncomment if you get noise on your endstops

# optional Z probe
zprobe.enable false # set to true to enable a zprobe
zprobe.probe_pin 1.28!^ # pin probe is attached to if NC remove the !
zprobe.slow_feedrate 5 # mm/sec probe feed rate
#zprobe.debounce_count 100 # set if noisy
zprobe.fast_feedrate 100 # move feedrate mm/sec
zprobe.probe_radius 100 # where to probe
zprobe.probe_height 5 # how much above bed to start probe
#gamma_min_endstop nc # normally 1.28. Change to nc to prevent conflict,

# Pause button
pause_button_enable true #

# Panel
panel.enable false # set to true to enable the panel code
panel.lcd smoothiepanel # set type of panel
panel.encoder_a_pin 3.25!^ # encoder pin
panel.encoder_b_pin 3.26!^ # encoder pin

# Example for reprap discount GLCD
# on glcd EXP1 is to left and EXP2 is to right, pin 1 is bottom left, pin 2 is top left etc.
# +5v is EXP1 pin 10, Gnd is EXP1 pin 9
#panel.lcd reprap_discount_glcd #
#panel.spi_channel 0 # spi channel to use ; GLCD EXP1 Pins 3,5 (MOSI, SCLK)
#panel.spi_cs_pin 0.16 # spi chip select ; GLCD EXP1 Pin 4
#panel.encoder_a_pin 3.25!^ # encoder pin ; GLCD EXP2 Pin 3
#panel.encoder_b_pin 3.26!^ # encoder pin ; GLCD EXP2 Pin 5
#panel.click_button_pin 1.30!^ # click button ; GLCD EXP1 Pin 2
#panel.buzz_pin 1.31 # pin for buzzer ; GLCD EXP1 Pin 1
#panel.button_pause_pin 2.11^ # kill/pause ; GLCD EXP2 Pin 8 either
#panel.back_button_pin 2.11!^ # back button ; GLCD EXP2 Pin 8 or

# pins used with other panels
#panel.up_button_pin 0.1! # up button if used
#panel.down_button_pin 0.0! # down button if used
#panel.click_button_pin 0.18! # click button if used

panel.menu_offset 0 # some panels will need 1 here

panel.alpha_jog_feedrate 6000 # x jogging feedrate in mm/min
panel.beta_jog_feedrate 6000 # y jogging feedrate in mm/min
panel.gamma_jog_feedrate 200 # z jogging feedrate in mm/min

panel.hotend_temperature 250 # temp to set hotend when preheat is selected
panel.bed_temperature 80 # temp to set bed when preheat is selected

# Example of a custom menu entry, which will show up in the Custom entry.
# NOTE _ gets converted to space in the menu and commands, | is used to separate multiple commands
custom_menu.power_on.enable true #
custom_menu.power_on.name Power_on #
custom_menu.power_on.command M80 #

custom_menu.power_off.enable true #
custom_menu.power_off.name Power_off #
custom_menu.power_off.command M81 #

# Only needed on a smoothieboard
currentcontrol_module_enable true #

return_error_on_unhandled_gcode false #

# network settings
network.enable false # enable the ethernet network services
network.webserver.enable true # enable the webserver
network.telnet.enable true # enable the telnet server
network.ip_address auto # use dhcp to get ip address
# uncomment the 3 below to manually setup ip address
#network.ip_address 192.168.3.222 # the IP address
#network.ip_mask 255.255.255.0 # the ip mask
#network.ip_gateway 192.168.3.1 # the gateway address
#network.mac_override xx.xx.xx.xx.xx.xx # override the mac address, only do this if you have a conflict

Re: Smoothieboard + Dual Extruders. :-)

Posted: Tue Jan 27, 2015 6:24 pm
by leodearden
I use Pronterface to control mine (both the one on the printer and the one on the CNC router).

That problem got me too for a while.

You can only set the temperature on the active tool. If you want to set the temp on the hotend2 issue T1 first, on a line of it's own, then (in your case) M884 or M889. If you want to set hotend (the first one) issue T0 first, then M104 or M109.

Cheers!

Leo

Re: Smoothieboard + Dual Extruders. :-)

Posted: Tue Jan 27, 2015 9:46 pm
by 626Pilot
For anyone using Smoothie, have you had any issues with it corrupting config-override when you type M500? (Or M503, whichever one actually saves it.) There was a bug that was "fixed" but I still have the same issue, even after pulling in the fix.

I think the SDfat library they use is crap. I've had the board tell me there's no SD card present via firmware - but it lets me mount it as a USB drive, and I can plainly see the files on it.

Re: Smoothieboard + Dual Extruders. :-)

Posted: Sat Feb 07, 2015 11:09 am
by leodearden
I haven't tried M500 (or M503) but I did have problems with the uSD on my Kickstarter Smoothieboard. I forget the details (it was a while ago) but the behaviour was not what I'd expect with a dodgy card. I heard that many of the Kickstarter cards turned out to be dodgy, changed mine, and Presto! it all just worked. Often cheap uSD cards fail to work in surprising ways. Perhaps try a card that you've used extensively with no problems (eg: in a phone to record and play back a load of video and photos), and see if the problem persists.

Re: Smoothieboard + Dual Extruders. :-)

Posted: Sat Feb 07, 2015 2:44 pm
by jdurand
Some notes on SD cards:

Many knock-off cheap cards use a controller chip that thinks it has a lot more memory than it does. This could be from the chip being salvaged from scrap or the board being a reject for having a bad memory or... anyway, I've found these work if you do not try to reformat them. On reformatting your computer asks the card how big it is and formats it for that size. Bad things follow.

There's been a couple of changes in SD card architecture (they're actually related to the old huge Asain memory cards with the Secure part added for royalties since nobody uses it). This is where you find things like the old controller on my milling machine that requires an OLD date code of a certain brand of card to work at all. That controller is due to be upgraded to a new one.

I've had a couple of dash cameras that won't work reliably with anything over a CLASS 4 card. I think the firmware asks the card how fast it is and if it gets back some blinding number the firmware tries to run that fast as if it was a demand. When I talk to SD cards I do it slowly, works for all cards and I'm normally not in a hurry.

Re: Smoothieboard + Dual Extruders. :-)

Posted: Sat Feb 07, 2015 6:23 pm
by 626Pilot
Since I posted that I got a Smoothieboard 5X with a new SD card (provided by the manufacturer), and config-override is still getting corrupted every time I type M500. But, the depth map my own code saves to the SD card still writes just fine. I'm convinced there is some garbage in the sdfat library that needs to be fixed. Maybe I will look at slowing it down to class 4 speeds.

Re: Smoothieboard + Dual Extruders. :-)

Posted: Tue Feb 10, 2015 10:35 pm
by Gr8Scott
I use a high temp thermal paste called Red Ice 611 HTC. It's pricey and only available from one source, but it does work really well and is rated to 360C. I don't have the screw in thermistor (I have the V5 E3D I think, which doesn't have the threaded thermistor port). That being said, I noticed smallish jagged temp variations in my prints and found that there was too much drive in the PID and it would overshoot it's goal constantly. Reducing the drive amount to something that gives the PID time to read and react to it was key to reducing the temp variations. I got the variation down to roughly +/- 1 degree C at worst, which I think is pretty good overall. It usually stayed around +/- .5 C variation. Of course, this didn't work as well when printing at different temperatures, so you had to increase or reduce the drive a bit to account for the higher or lower temp. It does slow down warm up times pretty badly for the hot end, but it isn't insurmountable. I just make it a point to also turn on the hot end when I start warming up the heated bed.

Re: Smoothieboard + Dual Extruders. :-)

Posted: Wed Feb 11, 2015 11:45 pm
by 626Pilot
I hand-tuned my PID during a print, after I got tired of temperature swings causing jams. I settled on this:

M301 S0 P30.0000 I1.0000 D15.0000 X255.0000 Y255

The E3D is so sensitive to PID values, but if you go slow it's alright. It would be nice if Smoothie had deadtime thermal control, like Repetier. That's easier to tune. You only have power and deadtime variables to tune!

Re: Smoothieboard + Dual Extruders. :-)

Posted: Mon Apr 20, 2015 7:23 am
by 626Pilot
Edit: Got it fixed.

I have one extruder set up normally, and the other uses the same pins and has very low, weak PID values (so it shouldn't "fight" with the first extruder's heat manager).

If anyone needs the config: http://pastebin.com/rib12XYD

Re: Smoothieboard + Dual Extruders. :-)

Posted: Sun May 24, 2015 1:59 am
by shapeshifter
Does anyone know how I would set up smoothie for dual extruders on a single hotend? Do I just not activate hotend 2 temp control module in the config or do I enable it and designate the same pins defined as the first one? Any advice would be great...