Jump to content
Ultimaker Community of 3D Printing Experts
zoev89

Chocolate printing

Recommended Posts

Hi All,

In light of the recent ultimaker event I create this topic so we can combine our experiences with chocolate printing. My current status is that I have not yet printed chocolate but am in the process of preparing.

It started with printing the parts which can be found here

https://www.youmagine.com/designs/ultimaker-syringe-extruder-ii

Since I have a 60ml syringe (100ml is hard to get) I printed the middel file. Actually I updated the sketchup file to repair the bottom part so it can print without repairing the bottom in Cura. In this case you will have clean holes through the bottom layer.

You only need 3 parts all the other parts are not needed or do not fit the current ultimakers. The configuration looks like this:

 

Chocolate extruder

For testing Joris proposed to use some other paste then chocolate. I made some past from a mix of flower and heated water. Note before putting the paste in let it cool a bit since my syringe got smaller when hot so I could not put it together.

I have reused my bowdentube and used a small part for the syringe.

For the configuration to work you would need to pull the filament. Joris mentions that you need to replace the 'E' with 'E-' to get negative extrusion. I just set the flow to -100% and that does the trick. You need to change the start code and add

M302 ; run extruder when cold

and change

G1 F200 E3 ;extrude 3mm of feed stock

into

G1 F200 E-3 ;extrude 3mm of feed stock

My syringe has a diameter of 29mm so I set the filament diameter to 14.5 there is a factor 2 due to the way the filament is pulled.

If you generate your gcode you would need to remove the start of the gcode where it is heating up the nozzle and the bed. In my case remove the top part until you see the start code like this:

M140 S20.000000

M109 T0 S20.000000

T0

M190 S20.000000

;Sliced at: Mon 04-08-2014 10:18:24

;Basic settings: Layer height: 0.5 Walls: 2 Fill: 100

;Print time: #P_TIME#

 

To this:

;Sliced at: Mon 04-08-2014 10:18:24

;Basic settings: Layer height: 0.5 Walls: 2 Fill: 100

;Print time: #P_TIME#

The M and the T command are removed from the top.

I also added one of the spacers to operate the Z switch earlier and I just moved the syringe down so it touches the build plate when homed. Makes experimenting for a couple of runs easy.

I have been able to print some cylinders with my flower paste so far. I do notice that you quite quickly get filament grinding.

What are the experiences from the other people what were at the meeting. Did anybody experiment?

Here is my ini file

[profile]

layer_height = 0.5

wall_thickness = 2

retraction_enable = False

solid_layer_thickness = 0.4

fill_density = 100

nozzle_size = 2

print_speed = 20

print_temperature = 28

print_temperature2 = 0

print_temperature3 = 0

print_temperature4 = 0

print_bed_temperature = 24

support = None

platform_adhesion = None

support_dual_extrusion = Both

wipe_tower = False

wipe_tower_volume = 15

ooze_shield = False

filament_diameter = 14.5

filament_diameter2 = 0

filament_diameter3 = 0

filament_diameter4 = 0

filament_flow = -100.0

retraction_speed = 40.0

retraction_amount = 4.5

retraction_dual_amount = 16.5

retraction_min_travel = 1.5

retraction_combing = True

retraction_minimal_extrusion = 0.02

retraction_hop = 0.0

bottom_thickness = 0.3

layer0_width_factor = 100

object_sink = 0.0

overlap_dual = 0.15

travel_speed = 150.0

bottom_layer_speed = 20

infill_speed = 0.0

inset0_speed = 0.0

insetx_speed = 0.0

cool_min_layer_time = 5

fan_enabled = True

skirt_line_count = 1

skirt_gap = 5.0

skirt_minimal_length = 150.0

fan_full_height = 0.5

fan_speed = 100

fan_speed_max = 100

cool_min_feedrate = 10

cool_head_lift = False

solid_top = True

solid_bottom = True

fill_overlap = 15

support_type = Grid

support_angle = 60

support_fill_rate = 15

support_xy_distance = 0.7

support_z_distance = 0.15

spiralize = False

simple_mode = False

brim_line_count = 5

raft_margin = 5

raft_line_spacing = 1.0

raft_base_thickness = 0.3

raft_base_linewidth = 0.7

raft_interface_thickness = 0.2

raft_interface_linewidth = 0.2

raft_airgap = 0.22

raft_surface_layers = 2

fix_horrible_union_all_type_a = False

fix_horrible_union_all_type_b = False

fix_horrible_use_open_bits = False

fix_horrible_extensive_stitching = False

plugin_config = (lp1

(dp2

S'params'

p3

(dp4

sS'filename'

p5

S'TweakAtZ.py'

p6

sa.

object_center_x = -1

object_center_y = -1

[alterations]

start.gcode = ;Sliced at: {day} {date} {time}

;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density}

;Print time: {print_time}

;Filament used: {filament_amount}m {filament_weight}g

;Filament cost: {filament_cost}

;M190 S{print_bed_temperature} ;Uncomment to add your own bed temperature line

;M109 S{print_temperature} ;Uncomment to add your own temperature line

M302 ; run extruder when cold

G21 ;metric values

G90 ;absolute positioning

M82 ;set extruder to absolute mode

M107 ;start with the fan off

G28 X0 Y0 ;move X/Y to min endstops

G28 Z0 ;move Z to min endstops

G1 Z15.0 F{travel_speed} ;move the platform down 15mm

G92 E0 ;zero the extruded length

G1 F200 E-3 ;extrude 3mm of feed stock

G92 E0 ;zero the extruded length again

G1 F{travel_speed}

;Put printing message on LCD screen

M117 Printing...

end.gcode = ;End GCode

M104 S0 ;extruder heater off

M140 S0 ;heated bed heater off (if you have it)

G91 ;relative positioning

G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure

G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more

G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way

M84 ;steppers off

G90 ;absolute positioning

start2.gcode = ;Sliced at: {day} {date} {time}

;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density}

;Print time: {print_time}

;Filament used: {filament_amount}m {filament_weight}g

;Filament cost: {filament_cost}

;M190 S{print_bed_temperature} ;Uncomment to add your own bed temperature line

;M104 S{print_temperature} ;Uncomment to add your own temperature line

;M109 T1 S{print_temperature2} ;Uncomment to add your own temperature line

;M109 T0 S{print_temperature} ;Uncomment to add your own temperature line

G21 ;metric values

G90 ;absolute positioning

M107 ;start with the fan off

G28 X0 Y0 ;move X/Y to min endstops

G28 Z0 ;move Z to min endstops

G1 Z15.0 F{travel_speed} ;move the platform down 15mm

T1 ;Switch to the 2nd extruder

G92 E0 ;zero the extruded length

G1 F200 E10 ;extrude 10mm of feed stock

G92 E0 ;zero the extruded length again

G1 F200 E-{retraction_dual_amount}

T0 ;Switch to the first extruder

G92 E0 ;zero the extruded length

G1 F200 E10 ;extrude 10mm of feed stock

G92 E0 ;zero the extruded length again

G1 F{travel_speed}

;Put printing message on LCD screen

M117 Printing...

end2.gcode = ;End GCode

M104 T0 S0 ;extruder heater off

M104 T1 S0 ;extruder heater off

M140 S0 ;heated bed heater off (if you have it)

G91 ;relative positioning

G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure

G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more

G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way

M84 ;steppers off

G90 ;absolute positioning

start3.gcode = ;Sliced at: {day} {date} {time}

;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density}

;Print time: {print_time}

;Filament used: {filament_amount}m {filament_weight}g

;Filament cost: {filament_cost}

;M190 S{print_bed_temperature} ;Uncomment to add your own bed temperature line

;M104 S{print_temperature} ;Uncomment to add your own temperature line

;M109 T1 S{print_temperature2} ;Uncomment to add your own temperature line

;M109 T0 S{print_temperature} ;Uncomment to add your own temperature line

G21 ;metric values

G90 ;absolute positioning

M107 ;start with the fan off

G28 X0 Y0 ;move X/Y to min endstops

G28 Z0 ;move Z to min endstops

G1 Z15.0 F{travel_speed} ;move the platform down 15mm

T2 ;Switch to the 2nd extruder

G92 E0 ;zero the extruded length

G1 F200 E10 ;extrude 10mm of feed stock

G92 E0 ;zero the extruded length again

G1 F200 E-{retraction_dual_amount}

T1 ;Switch to the 2nd extruder

G92 E0 ;zero the extruded length

G1 F200 E10 ;extrude 10mm of feed stock

G92 E0 ;zero the extruded length again

G1 F200 E-{retraction_dual_amount}

T0 ;Switch to the first extruder

G92 E0 ;zero the extruded length

G1 F200 E10 ;extrude 10mm of feed stock

G92 E0 ;zero the extruded length again

G1 F{travel_speed}

;Put printing message on LCD screen

M117 Printing...

end3.gcode = ;End GCode

M104 T0 S0 ;extruder heater off

M104 T1 S0 ;extruder heater off

M104 T2 S0 ;extruder heater off

M140 S0 ;heated bed heater off (if you have it)

G91 ;relative positioning

G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure

G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more

G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way

M84 ;steppers off

G90 ;absolute positioning

;{profile_string}

start4.gcode = ;Sliced at: {day} {date} {time}

;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density}

;Print time: {print_time}

;Filament used: {filament_amount}m {filament_weight}g

;Filament cost: {filament_cost}

;M190 S{print_bed_temperature} ;Uncomment to add your own bed temperature line

;M104 S{print_temperature} ;Uncomment to add your own temperature line

;M109 T2 S{print_temperature2} ;Uncomment to add your own temperature line

;M109 T1 S{print_temperature2} ;Uncomment to add your own temperature line

;M109 T0 S{print_temperature} ;Uncomment to add your own temperature line

G21 ;metric values

G90 ;absolute positioning

M107 ;start with the fan off

G28 X0 Y0 ;move X/Y to min endstops

G28 Z0 ;move Z to min endstops

G1 Z15.0 F{travel_speed} ;move the platform down 15mm

T3 ;Switch to the 4th extruder

G92 E0 ;zero the extruded length

G1 F200 E10 ;extrude 10mm of feed stock

G92 E0 ;zero the extruded length again

G1 F200 E-{retraction_dual_amount}

T2 ;Switch to the 3th extruder

G92 E0 ;zero the extruded length

G1 F200 E10 ;extrude 10mm of feed stock

G92 E0 ;zero the extruded length again

G1 F200 E-{retraction_dual_amount}

T1 ;Switch to the 2nd extruder

G92 E0 ;zero the extruded length

G1 F200 E10 ;extrude 10mm of feed stock

G92 E0 ;zero the extruded length again

G1 F200 E-{retraction_dual_amount}

T0 ;Switch to the first extruder

G92 E0 ;zero the extruded length

G1 F200 E10 ;extrude 10mm of feed stock

G92 E0 ;zero the extruded length again

G1 F{travel_speed}

;Put printing message on LCD screen

M117 Printing...

end4.gcode = ;End GCode

M104 T0 S0 ;extruder heater off

M104 T1 S0 ;extruder heater off

M104 T2 S0 ;extruder heater off

M104 T3 S0 ;extruder heater off

M140 S0 ;heated bed heater off (if you have it)

G91 ;relative positioning

G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure

G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more

G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way

M84 ;steppers off

G90 ;absolute positioning

;{profile_string}

support_start.gcode =

support_end.gcode =

cool_start.gcode =

cool_end.gcode =

replace.csv =

preswitchextruder.gcode = ;Switch between the current extruder and the next extruder, when printing with multiple extruders.

;This code is added before the T(n)

postswitchextruder.gcode = ;Switch between the current extruder and the next extruder, when printing with multiple extruders.

;This code is added after the T(n)

 

 

Share this post


Link to post
Share on other sites

I am, slowly, trying to change the setup to a push construction, instaed of the pull concept, because there is so much friction in the short curve at the bottom. The grinding will be related to that I guess..

Or you could replace the pla at that point by thin steel cable or so.

The 100 ml syringe (http://www.polyservice.nl/Injectiespuit-p-16476.html) feels easier to push, but has more material to displace, have to test that.

If it works to push the material, maybe it could work in combination with the Doodle3D box….

 

Share this post


Link to post
Share on other sites

Also my syringe takes a lot of fraction to operate. That could also be a cause of the grinding. I am more thinking using air pressure to operate it so it will not effect the filament at all. Air pressure I have for my airbrush. There are quite some examples to be found. In order to do this I need to find the right parts....

 

Share this post


Link to post
Share on other sites

This is what finally worked; a combination of different ideas and some of my own.

http://www.thingiverse.com/thing:14421

- parts from Joris, some files are old and don't fit any more. The printhead layout changed a lot.

http://www.thingiverse.com/thing:21302/

- from mechadense. But with this setup the winding part broke (lots of force here). But this idea works because the use of spectra line through a bicycle/motorcycle brake tubes instead of thick filament.

I also had to replace the cap of the syringe part by a wooden layered part; the printed one in XT broke...

chocolate paste extrusion

pull

paste extruder setup

Chocolate paste on a biscuit

 

Share this post


Link to post
Share on other sites

and of course made some spacers for the limit switches X ,Y and Z to prevent collision. Especially for the Z height to compensate for cookies or so.

z-limit switch add-on

when placing an object in Cura, mind that the object will not be printed in the center but more to the right and back. This could probably be edited in the gcode as well.

Here is the gcode, for a chocolate star with cold extrusion:

;Sliced ?filename? at: Sun 24-08-2014 13:38:22

;Basic settings: Layer height: 0.3 Walls: 14 Fill: 0

;Print time: #P_TIME#

;Filament used: #F_AMNT#m #F_WGHT#g

;Filament cost: #F_COST#

M302

G21 ;metric values

G90 ;absolute positioning

M107 ;start with the fan off

G28 X0 Y0 ;move X/Y to min endstops

G28 Z0 ;move Z to min endstops

G92 X0 Y0 Z0 E0 ;reset software position to front/left/z=0.0

G1 Z15.0 F?max_z_speed? ;move the platform down 15mm

G92 E0 ;zero the extruded length

G1 F200 E3 ;extrude 3mm of feed stock

G92 E0 ;zero the extruded length again

;go to the middle of the platform (disabled, as there is no need to go to the center)

;G1 X?machine_center_x? Y?machine_center_y? F9000

G1 F9000

 

;Layer count: 1

;LAYER:0

M107

G0 F9000 X98.55 Y60.53 Z0.30

;TYPE:WALL-INNER

G1 F600 X100.79 Y60.54 E0.01190

G1 X101.91 Y58.60 E0.02380

G1 X103.02 Y60.54 E0.03569

G1 X105.26 Y60.53 E0.04758

G1 X104.14 Y62.47 E0.05947

G1 X105.26 Y64.41 E0.07137

G1 X103.02 Y64.41 E0.08327

G1 X101.90 Y66.35 E0.09516

G1 X100.79 Y64.41 E0.10705

G1 X98.55 Y64.41 E0.11895

G1 X99.67 Y62.47 E0.13084

G1 X98.55 Y60.53 E0.14273

G0 F9000 X99.63 Y58.54

G1 F600 X101.91 Y54.58 E0.16696

G1 X104.18 Y58.54 E0.19118

G1 X108.74 Y58.52 E0.21540

G1 X106.45 Y62.47 E0.23962

G1 X108.74 Y66.42 E0.26385

G1 X104.18 Y66.41 E0.28807

G1 X101.91 Y70.37 E0.31230

G1 X99.63 Y66.41 E0.33652

G1 X95.07 Y66.42 E0.36074

G1 X97.36 Y62.47 E0.38496

G1 X95.07 Y58.52 E0.40919

G1 X99.63 Y58.54 E0.43342

G0 F9000 X98.48 Y56.53

G1 F600 X101.91 Y50.56 E0.46997

G1 X105.33 Y56.53 E0.50652

G1 X112.22 Y56.52 E0.54307

G1 X108.76 Y62.47 E0.57962

G1 X112.22 Y68.43 E0.61618

G1 X105.33 Y68.41 E0.65273

G1 X101.91 Y74.39 E0.68928

G1 X98.48 Y68.41 E0.72583

G1 X91.59 Y68.43 E0.76239

G1 X95.05 Y62.47 E0.79894

G1 X91.59 Y56.52 E0.83549

G1 X98.48 Y56.53 E0.87204

G0 F9000 X97.32 Y54.53

G1 F600 X101.91 Y46.54 E0.92092

G1 X106.49 Y54.53 E0.96981

G1 X115.70 Y54.51 E1.01869

G1 X111.08 Y62.47 E1.06757

G1 X115.70 Y70.44 E1.11645

G1 X106.49 Y70.42 E1.16533

G1 X101.91 Y78.41 E1.21421

G1 X97.32 Y70.42 E1.26309

G1 X88.11 Y70.44 E1.31197

G1 X92.73 Y62.47 E1.36085

G1 X88.11 Y54.51 E1.40973

G1 X97.32 Y54.53 E1.45861

G0 F9000 X96.16 Y52.53

G1 F600 X101.91 Y42.52 E1.51982

G1 X107.65 Y52.53 E1.58102

G1 X119.18 Y52.50 E1.64224

G1 X113.39 Y62.47 E1.70344

G1 X119.18 Y72.45 E1.76465

G1 X107.65 Y72.42 E1.82586

G1 X101.91 Y82.42 E1.88706

G1 X96.16 Y72.42 E1.94827

G1 X84.63 Y72.45 E2.00948

G1 X90.42 Y62.47 E2.07069

G1 X84.63 Y52.50 E2.13189

G1 X96.16 Y52.53 E2.19310

G0 F9000 X95.01 Y50.52

G1 F600 X101.91 Y38.50 E2.26664

G1 X108.80 Y50.52 E2.34018

G1 X122.67 Y50.49 E2.41372

G1 X115.70 Y62.47 E2.48726

G1 X122.67 Y74.46 E2.56080

G1 X108.80 Y74.42 E2.63434

G1 X101.91 Y86.44 E2.70788

G1 X95.01 Y74.42 E2.78142

G1 X81.14 Y74.46 E2.85497

G1 X88.11 Y62.47 E2.92850

G1 X81.14 Y50.49 E3.00204

G1 X95.01 Y50.52 E3.07558

G0 F9000 X93.85 Y49.62

G0 X93.85 Y48.52

;TYPE:WALL-OUTER

G1 F600 X101.91 Y34.48 E3.16146

G1 X109.96 Y48.52 E3.24733

G1 X126.14 Y48.48 E3.33319

G1 X118.02 Y62.47 E3.41906

G1 X126.14 Y76.47 E3.50492

G1 X109.96 Y76.42 E3.59079

G1 X101.91 Y90.46 E3.67666

G1 X93.85 Y76.42 E3.76253

G1 X77.67 Y76.47 E3.84839

G1 X85.80 Y62.47 E3.93426

G1 X77.67 Y48.48 E4.02012

G1 X93.85 Y48.52 E4.10599

G0 F9000 X93.85 Y49.62

G0 X93.84 Y53.52

G0 X93.84 Y53.52 Z5.30

;End GCode

M104 S0 ;extruder heater off

M140 S0 ;heated bed heater off (if you have it)

G91 ;relative positioning

G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure

G1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more

G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way

M84 ;steppers off

G90 ;absolute positioning

 

Share this post


Link to post
Share on other sites

Nice that you posted your wonderfull solution. For the parts that did not fit anymore I just cutout the corner with a saw. But your parts will be more sturdy. Also note that you are using a 100ml syringe.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Our picks

    • Introducing Ultimaker Cura 3.6 | Beta
      Ultimaker Cura 3.6 | Beta is available. It comes with new features, bug fixes, and UX improvements. We would really like to have your feedback on it to make our stable release as good as it can be. As always, you can download the beta for free from our website, for Windows, MacOS, and Linux.
        • Like
      • 95 replies
    • Print Core CC | Red for Ruby
      Q: For some users, abrasive materials may be a new subject matter. Can you explain what it is that makes a material abrasive when you are not sure which print core to use?
      A: Materials which are hard in a solid piece (like metals, ceramics and carbon fibers) will generally also wear down the nozzle. In general one should assume...
        • Like
      • 30 replies
    • "Back To The Future" using Generative Design & Investment Casting
      Designing for light-weight parts is becoming more important, and I’m a firm believer in the need to produce lighter weight, less over-engineered parts for the future. This is for sustainability reasons because we need to be using less raw materials and, in things like transportation, it impacts the energy usage of the product during it’s service life.
        • Like
      • 12 replies
×

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!