Felix 3.1 + Discov3ry Integration Wiki & Discussion Thread


#1

This is a wiki post, meaning any user trust level 1 or higher can contribute.

If you are not yet tl1 or have a question/comment/concern, please post below.

#Felix 3.0

http://imgur.com/l0er2nH

In this posting I will be discussing an installation of the Discov3ry extruder with a Felix 3.0 from Felix Robotics. There are 3 critical steps required to get your pastruder up and running properly:

  1. connecting the wiring;
  2. making necessary firmware adjustments.
  3. mounting the extruder tip; and

The instructions shown here are specific to the Felix 3.0, but a very similar procedure will be used for most Discov3ry integrations.

We have also summarized the instructions in this short 3 minute tutorial video.

##WIRING THE DISCOV3RY

The Discov3ry extruder is based off a stepper motor based drive system, thus the Discov3ry extruder can be “plugged into” any stepper motor driver/controller on the microcontroller electronics board. The Felix 3.0 uses their own FELIXprinters electronics based off the open standard arduino and RAMPs electronics.

When we purchased our Felix, we chose the single extruder model as we wanted to be able to add our Discov3ry prototype as a second extruder. Both the single and dual extruder Felix’s use the same electronics, so we knew there would be a free extruder port on the electronics to use.

Access to the electronics will vary from printer to printer, with some allowing easy access and some more difficult. The Felix has a very open design, and access to the electronics just requires removing 4 screws.

NOTE: REMEMBER TO UNPLUG ALL ELECTRICAL CONNECTIONS (USB, POWER, etc) BEFORE OPENING ELECTRONICS.

Connecting the Discov3ry wiring is simple and requires a small eyeglass screwdriver to loosen the electrical connector connector. Here you will need to locate the 2nd extruder port typically labelled E1 (extruder 1 is usually E0) and loosen the 4 screws. Make sure your wires are stripped and twisted to make a clean contact and slide them in in the same color arrangement as the other motors in your printer. If the motor is installed backwards at the moment, don’t worry, this can be fixed easily with a software modification. Tighten the wires and cover the electronics back up.

##FIRMWARE/GCODE UPDATES

###Marlin Firmware Updates
A few simple modifications are needed in the printer’s firmware; which is the software in the 3D printer microcontroller. “Adjusting firmware” sounds like an intimidating process, but really all it involves is making a slight change to a simple text file.

There are a few modifications that will need to be made to the printers firmware, the software in the 3D printer microcontroller. This includes turning off the temperature control for the extruders since the Discov3ry extruder does not have heating capabilities. Some 3D printers may have a temperature failsafe, to prevent cold plastic extrusion, since we are printing cold pastes, we must turn off this setting in the printer.

The Felix electronics we have can run any of the RAMPs compatible firmware including Sprinter, Marlin, and Repetier. We have chosen to use the Repetier firmware as it is the most supported in the Felix community. I will show this specific use case but, again, the process will be very similar for other RAMPs based 3D printers.

The first thing required is to download the firmware and Arduino IDE control software to your computer. The Arduino control software will allow your computer to interface with the electronics board of the 3D printer. The Arduino IDE software can be downloaded from here for Windows, Mac, and Linux. Felix provides their own instances of Marlin and Repetier firmware, and your 3D printer manufacturer should too, download this file as well. If it is not available you can download the generic firmware here: Sprinter, Marlin, and Repetier.

Connect your computer to the USB port on your 3D printer electronics. Next open the Arduino IDE program and select Tools > Board > and Arduino Mega 2560 (or other if your printer is based off another Arduino microcontroller). Next, select Tools > Serial Port > and then choose the option labelled USB TTY. Finally, open the firmware.INO or firmware.PDE from the folder we just downloaded, Repetier.INO in our case.

Now to make the necessary modification in the firmware code. Go to the tab titled configuration.h (same for all firmwares) and find the line of code (use the find and replace tool):

#define MIN_EXTRUDER_TEMP 170

This command tells the 3D printer not to operate unless the extruder has reached at least 170 degrees, which would disable any room temperature printing of pastes. We need to change 170 to 0.

#define MIN_EXTRUDER_TEMP 0

In repetier there is also a user interface minimum that can be changed but not necessary:

#define UI_SET_MIN_EXTRUDER_TEMP   0

These are the only changes to the firmware necessary to get the Discov3ry and 3D printer to work together. If you are using a RepRap or other printer using the generic firmwares (i.e. you did not download from your manufacturer) then it may require other printer specific modifications. This is why it is recommended to use the firmware that comes with your printer to start with. Now click the Verify/Compile button and if it is successful, then click the Upload button. Save the INO file on your computer as backup and future reference.

The printer electronics are now ready to extrude paste.

###Slic3r

M302 and M92 E10000 are added to the GCODE to disable heating alarms and increase the extruder steps per mm (amount extruded per mm of print).

Example Slic3r configs we use for printing single perimeters of 3D designs. Great for printing logos and letters on cookies, cakes, pancakes, etc. (Icing Outline.ini (3.3 KB) )

# generated by Slic3r 1.2.9 on Thu Aug 27 10:22:46 2015
avoid_crossing_perimeters = 0
bed_shape = 0x0,250x0,250x250,0x250
bed_temperature = 0
before_layer_gcode = 
bottom_solid_layers = 0
bridge_acceleration = 0
bridge_fan_speed = 100
bridge_flow_ratio = 1
bridge_speed = 10
brim_width = 0
complete_objects = 0
cooling = 0
default_acceleration = 0
disable_fan_first_layers = 1
dont_support_bridges = 1
duplicate_distance = 6
end_gcode = M104 S0 ; turn off temperature\nG28 X0  ; home X axis\nM84     ; disable motors\n
external_fill_pattern = rectilinear
external_perimeter_extrusion_width = 0
external_perimeter_speed = 30
external_perimeters_first = 1
extra_perimeters = 1
extruder_clearance_height = 20
extruder_clearance_radius = 20
extruder_offset = 0x0
extrusion_axis = E
extrusion_multiplier = 1
extrusion_width = 0
fan_always_on = 0
fan_below_layer_time = 60
filament_colour = #FFFFFF
filament_diameter = 3.125
fill_angle = 45
fill_density = 0%
fill_pattern = rectilinear
first_layer_acceleration = 0
first_layer_bed_temperature = 0
first_layer_extrusion_width = 100%
first_layer_height = 100%
first_layer_speed = 100%
first_layer_temperature = 0
gap_fill_speed = 10
gcode_arcs = 0
gcode_comments = 0
gcode_flavor = reprap
infill_acceleration = 0
infill_every_layers = 1
infill_extruder = 1
infill_extrusion_width = 0
infill_first = 0
infill_only_where_needed = 0
infill_overlap = 15%
infill_speed = 10
interface_shells = 0
layer_gcode = 
layer_height = 0.8
max_fan_speed = 100
max_print_speed = 80
max_volumetric_speed = 0
min_fan_speed = 35
min_print_speed = 10
min_skirt_length = 0
notes = 
nozzle_diameter = 0.84
octoprint_apikey = 
octoprint_host = 
only_retract_when_crossing_perimeters = 0
ooze_prevention = 0
output_filename_format = [input_filename_base].gcode
overhangs = 1
perimeter_acceleration = 0
perimeter_extruder = 1
perimeter_extrusion_width = 0
perimeter_speed = 30
perimeters = 1
post_process = 
pressure_advance = 0
raft_layers = 0
resolution = 0
retract_before_travel = 2
retract_layer_change = 1
retract_length = 1
retract_length_toolchange = 10
retract_lift = 0
retract_restart_extra = 0
retract_restart_extra_toolchange = 0
retract_speed = 30
seam_position = random
skirt_distance = 6
skirt_height = 1
skirts = 0
slowdown_below_layer_time = 30
small_perimeter_speed = 30
solid_infill_below_area = 70
solid_infill_every_layers = 0
solid_infill_extruder = 1
solid_infill_extrusion_width = 0
solid_infill_speed = 10
spiral_vase = 0
standby_temperature_delta = -5
start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\nM302\nM92 E8000\n
support_material = 0
support_material_angle = 0
support_material_contact_distance = 0.2
support_material_enforce_layers = 0
support_material_extruder = 1
support_material_extrusion_width = 0
support_material_interface_extruder = 1
support_material_interface_layers = 3
support_material_interface_spacing = 0
support_material_interface_speed = 100%
support_material_pattern = pillars
support_material_spacing = 2.5
support_material_speed = 7
support_material_threshold = 0
temperature = 0
thin_walls = 1
threads = 2
toolchange_gcode = 
top_infill_extrusion_width = 0
top_solid_infill_speed = 10
top_solid_layers = 0
travel_speed = 150
use_firmware_retraction = 0
use_relative_e_distances = 0
use_volumetric_e = 0
vibration_limit = 0
wipe = 0
xy_size_compensation = 0
z_offset = 0

Slic3r Config for printing with RTV Silicone (SiliconeRTV.ini (3.3 KB) )

# generated by Slic3r 1.2.9 on Thu Aug 27 10:23:45 2015
avoid_crossing_perimeters = 0
bed_shape = 0x0,250x0,250x250,0x250
bed_temperature = 0
before_layer_gcode = 
bottom_solid_layers = 3
bridge_acceleration = 0
bridge_fan_speed = 100
bridge_flow_ratio = 1
bridge_speed = 10
brim_width = 0
complete_objects = 0
cooling = 0
default_acceleration = 0
disable_fan_first_layers = 1
dont_support_bridges = 1
duplicate_distance = 6
end_gcode = M104 S0 ; turn off temperature\nG28 X0  ; home X axis\nM84     ; disable motors\n
external_fill_pattern = rectilinear
external_perimeter_extrusion_width = 0
external_perimeter_speed = 70%
external_perimeters_first = 0
extra_perimeters = 1
extruder_clearance_height = 20
extruder_clearance_radius = 20
extruder_offset = 0x0
extrusion_axis = E
extrusion_multiplier = 1
extrusion_width = 0
fan_always_on = 0
fan_below_layer_time = 60
filament_colour = #FFFFFF
filament_diameter = 3.125
fill_angle = 45
fill_density = 100%
fill_pattern = rectilinear
first_layer_acceleration = 0
first_layer_bed_temperature = 0
first_layer_extrusion_width = 200%
first_layer_height = 100%
first_layer_speed = 70%
first_layer_temperature = 0
gap_fill_speed = 10
gcode_arcs = 0
gcode_comments = 0
gcode_flavor = reprap
infill_acceleration = 0
infill_every_layers = 1
infill_extruder = 1
infill_extrusion_width = 0
infill_first = 0
infill_only_where_needed = 0
infill_overlap = 15%
infill_speed = 10
interface_shells = 0
layer_gcode = 
layer_height = 0.3
max_fan_speed = 100
max_print_speed = 80
max_volumetric_speed = 0
min_fan_speed = 35
min_print_speed = 10
min_skirt_length = 0
notes = 
nozzle_diameter = 0.84
octoprint_apikey = 
octoprint_host = 
only_retract_when_crossing_perimeters = 1
ooze_prevention = 0
output_filename_format = [input_filename_base].gcode
overhangs = 1
perimeter_acceleration = 0
perimeter_extruder = 1
perimeter_extrusion_width = 0
perimeter_speed = 10
perimeters = 2
post_process = 
pressure_advance = 0
raft_layers = 0
resolution = 0
retract_before_travel = 2
retract_layer_change = 1
retract_length = 1
retract_length_toolchange = 10
retract_lift = 0
retract_restart_extra = 0
retract_restart_extra_toolchange = 0
retract_speed = 30
seam_position = random
skirt_distance = 6
skirt_height = 0
skirts = 2
slowdown_below_layer_time = 30
small_perimeter_speed = 10
solid_infill_below_area = 70
solid_infill_every_layers = 0
solid_infill_extruder = 1
solid_infill_extrusion_width = 0
solid_infill_speed = 10
spiral_vase = 0
standby_temperature_delta = -5
start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\nM302\nM92 E8000\n
support_material = 0
support_material_angle = 0
support_material_contact_distance = 0.2
support_material_enforce_layers = 0
support_material_extruder = 1
support_material_extrusion_width = 0
support_material_interface_extruder = 1
support_material_interface_layers = 3
support_material_interface_spacing = 0
support_material_interface_speed = 100%
support_material_pattern = pillars
support_material_spacing = 2.5
support_material_speed = 10
support_material_threshold = 0
temperature = 0
thin_walls = 1
threads = 1
toolchange_gcode = 
top_infill_extrusion_width = 0
top_solid_infill_speed = 10
top_solid_layers = 3
travel_speed = 130
use_firmware_retraction = 0
use_relative_e_distances = 0
use_volumetric_e = 0
vibration_limit = 0
wipe = 0
xy_size_compensation = 0
z_offset = 0

Slic3r Config for Nutella Solid (Nutella.ini (3.3 KB) )

# generated by Slic3r 1.2.9 on Thu Aug 27 10:24:15 2015
avoid_crossing_perimeters = 1
bed_shape = 0x0,250x0,250x250,0x250
bed_temperature = 0
before_layer_gcode = 
bottom_solid_layers = 3
bridge_acceleration = 0
bridge_fan_speed = 100
bridge_flow_ratio = 1
bridge_speed = 35
brim_width = 0
complete_objects = 0
cooling = 0
default_acceleration = 0
disable_fan_first_layers = 1
dont_support_bridges = 1
duplicate_distance = 6
end_gcode = M104 S0 ; turn off temperature\nG28 X0  ; home X axis\nM84     ; disable motors\n
external_fill_pattern = rectilinear
external_perimeter_extrusion_width = 0
external_perimeter_speed = 70%
external_perimeters_first = 1
extra_perimeters = 1
extruder_clearance_height = 20
extruder_clearance_radius = 20
extruder_offset = 0x0
extrusion_axis = E
extrusion_multiplier = 1
extrusion_width = 0
fan_always_on = 0
fan_below_layer_time = 60
filament_colour = #FFFFFF
filament_diameter = 3.125
fill_angle = 45
fill_density = 100%
fill_pattern = rectilinear
first_layer_acceleration = 0
first_layer_bed_temperature = 0
first_layer_extrusion_width = 150%
first_layer_height = 100%
first_layer_speed = 80%
first_layer_temperature = 0
gap_fill_speed = 35
gcode_arcs = 0
gcode_comments = 0
gcode_flavor = reprap
infill_acceleration = 0
infill_every_layers = 1
infill_extruder = 1
infill_extrusion_width = 0
infill_first = 0
infill_only_where_needed = 0
infill_overlap = 15%
infill_speed = 35
interface_shells = 0
layer_gcode = 
layer_height = 0.4
max_fan_speed = 100
max_print_speed = 80
max_volumetric_speed = 0
min_fan_speed = 35
min_print_speed = 10
min_skirt_length = 0
notes = 
nozzle_diameter = 0.84
octoprint_apikey = 
octoprint_host = 
only_retract_when_crossing_perimeters = 1
ooze_prevention = 0
output_filename_format = [input_filename_base].gcode
overhangs = 1
perimeter_acceleration = 0
perimeter_extruder = 1
perimeter_extrusion_width = 0
perimeter_speed = 35
perimeters = 1
post_process = 
pressure_advance = 0
raft_layers = 0
resolution = 0
retract_before_travel = 2
retract_layer_change = 1
retract_length = 1
retract_length_toolchange = 10
retract_lift = 0
retract_restart_extra = 0
retract_restart_extra_toolchange = 0
retract_speed = 30
seam_position = random
skirt_distance = 6
skirt_height = 1
skirts = 0
slowdown_below_layer_time = 30
small_perimeter_speed = 70%
solid_infill_below_area = 70
solid_infill_every_layers = 0
solid_infill_extruder = 1
solid_infill_extrusion_width = 0
solid_infill_speed = 35
spiral_vase = 0
standby_temperature_delta = -5
start_gcode = G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\nM302\nM92 E8000\n
support_material = 0
support_material_angle = 0
support_material_contact_distance = 0.2
support_material_enforce_layers = 0
support_material_extruder = 1
support_material_extrusion_width = 0
support_material_interface_extruder = 1
support_material_interface_layers = 3
support_material_interface_spacing = 0
support_material_interface_speed = 100%
support_material_pattern = pillars
support_material_spacing = 2.5
support_material_speed = 7
support_material_threshold = 0
temperature = 0
thin_walls = 1
threads = 2
toolchange_gcode = 
top_infill_extrusion_width = 0
top_solid_infill_speed = 35
top_solid_layers = 3
travel_speed = 200
use_firmware_retraction = 0
use_relative_e_distances = 0
use_volumetric_e = 0
vibration_limit = 0
wipe = 0
xy_size_compensation = 0
z_offset = 0

##MOUNTING THE DISCOV3RY TIP

This is the last step to get the Discov3ry ready to print soft materials - it is also the most arbitrary - mounting the tip. We think we have made this as simple and universal as possible by keeping the material cartridge remote and requiring only a tube the size of a pencil to be mounted to your printer. This mounting can be as simple as using a zip tie or if you have the skills you could model your own custom 3D printable mount for your printer of choice. Our first mounting implementation can be seen here.

If you are using a dual extruder 3D printer you will need to define the offset between E0 and E1 in the firmware. Follow the steps outlined earlier and add the measurements in tenths of a millimeter (ie. 1219 = 12.19mm). The lines of code that you will need to modify for the offset in X and Y are:

#define EXT1_X_OFFSET -1219
#define EXT1_Y_OFFSET 0

One final note, if your extrusion seems to be working backwards, extruding will cause retraction and vice versa, you will need to change the line:

#define EXT1_INVERSE 1  to  #define EXT1_INVERSE 0 (or 0 to 1)

##TESTING DISCOV3RY

What are the ideal slicer parameters that you have found for a specific material? Layer height, speed, infill, etc. Please share a configuration file that you have successfully utilized, preferably using the slicer that is applicable to your 3D printer.

##FINAL PICTURES

[Img Gallery] Successful prints – test prints or otherwise.
[Img] Printer and Discov3ry integrated together

##LINKS

Felix 3.0 Page
Felix Printers Community Forum


#2

About the Felix category
#4

It looks like the tip mount is the only critical hardware issue. If I can get the following info. I’ll have my tip mount designed,
printed, and ready for mounting by the time I receive my Beta parts.

  1. Diameter of the hole thru which the tip passes.
  2. Is the hole tapered or constant diameter?
  3. Vertical distance from machine’s extruder tip to Discov3ry tip.
  4. Is there an advantage to having vertical adjustment of the tip?
  5. How much space is needed above the tip?

It would be cool to have my design incorporate your logo. Can you post a .step or other Autodesk Inventor compatible file of your logo?

I’ll send you a copy of my mount and accompanying file. I’m very happily printing with a MakerGear M2.


#5

This is awesome! I would love to see your design!

  1. I believe the OD is 3/8 inch but let me confirm
  2. Ours is constant, we actually have a small recess for the female luer connector. It will give some additional lateral support to the tip.
  3. In the video our tip appears below the filament extruder, this is ideal for paste only printing. It may be advantageous to have them at the same height for dual plastic/paste printing.
  4. Yes, there are several advantages to this: various tip lengths, setting first layer height, etc. We have a small adjustable slide with a bolt to fasten.
  5. Not sure if I understand the question perfectly, but enough space to avoid kinking the tubing and stopping flow.

I will share the stl for our logo soon, I can’t wait to see your design. We will definitely share it around.


#6

@fink, I think we should work this content, which we recently sent to one of our kickstarter backers, into the body of the main post. At the beginning or end of section 2 would make the most sense, perhaps even splitting into 2a and 2b.

If you would rather have a more temporary change and not touch the firmware, you can follow these instructions:

The printer control software, such as Printrun and Repetier​, has a command line G-code editor which allows adjustments to the EEPROM settings in the firmware, without needing to recompile the firmware.

For a complete list of these commands see: http://reprap.org/wiki/G-code#Individual_commands

For our purposes M302 will also allow printing below cold extrusion temperatures. You can reset the min-temp with the command “M302 SXXX” where “XXX” is the hot end temperature needed.​

If you go the non-firmware route, you would just need to make sure you update the failsafe overrides via the gcode editor each time you want to use the Discov3ry extruder (assuming printer power off after each use).


#7

Isn’t Printrun ~ to Pronterface … or one of them part of the other?

As I recall, Pronterface has macro capability that can be assigned to clickable buttons. Or am I confusing them with Slic3r?
Or, am I up too late, not thinking clearly, and we’d all be better off if I was in bed?

M500, M501 & M502 are worth a look.


#8

Should be in great shape hooking this up to ramps1.4, but might need to find a triple extruder capable board.
I would liek to have the paste extruder on a servo mount for use with existing dual extruder setup. that way it moves to position to print runs through layers of plastic, I like printing fast so don’t want it to drag through a blob of hot plastic and plug the pasteruder. guess the clock is ticking now till when it arrives so all i can do is start working on it.


#9

hi,

Can anyone post succesfull settings for extruding with a felix printer? steps/mm and mm/min
I can’t get this to work properly. Also, does the allen key needs to be inserted in the rod end or do you pull it out before starting to print ?

Thanks !


#10

Hey @Stijn_Paridaens the Allen key DOES need to be inserted in the rod end before printing.


#11

hi Disco,

Thanks! Any feedback on the printing and speed settings ?


#12

Hi @Stijn_Paridaens! Welcome to the forum.

For the extrusion and speed it is a bit trial and error. For quality, you can typically get 100-200um at speeds closer to 10-20 mm/s. If you are looking for throughput you can go closer to 30-50 mm/s at 300-600um layers. I find once you tune the extrusion multiplier (or eeprom) it tends to be very similar for most pastes.

For the Ultimaker I have been using M92 E14000 lately. For the felix I would guess it is also somewhere close to 10000. You can also try tuning the extrusion multiplier in the slic3r settings.


#13

@fink could you post some of the slic3r settings you’ve had success with: material, extrusion multiplier, diameter of filament to give us a starting point for dialing in the specs?

Also, are you purging material using a skirt or any other method to build pressure?


#14

@VT3D check out some of the recent updates I have made to the first post of this topic.


#15

Hi,

We purchased the DIY Felix 3.0 and successfully assembled it. We followed all the procedures involved in connecting the wiring and updating the firmware to the board, however, the Discov3ry extruder is not responsive. We’ve wired/re-wired multiple times and updated the firmware many times as well, all with no success. Any recommendations on why there is no communication between the two?


#16

@BanerjeeLab Do you have the Discov3ry set up as Extruder #1 or #2? Do you hear any noises? Are you using Repetier?

Also, make check the small bar at the top of the motor for movement. The linear actuation at low speeds may not be clearly visible.

Any extra info you can provide will be very helpful.


#17

Thanks for sharing it here and it is looking too cool to use. I want to work on it as soon as possible.
I want to something related with it that is What will be the diameter of the hole thru which the tip passes? Is the hole tapered or constant diameter?
Vertical distance from machine’s extruder tip to Discov3ry tip.
Is there an advantage to having vertical adjustment of the tip?
How much space is needed above the tip?

pcb assembly service


#18

For the Ultimaker I have been using M92 E14000 lately. For the felix I would guess it is also somewhere close to 10000. You can also try tuning the extrusion multiplier in the slic3r settings.

printed circuit board assembly