Jump to content

Chocolate printing


zoev89

Recommended Posts

Posted · Chocolate printing

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)

 

 

  • Link to post
    Share on other sites

    Posted · Chocolate printing

    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….

     

  • Link to post
    Share on other sites

    Posted · Chocolate printing
    I am, slowly, trying to change the setup to a push construction

     

    Seems someone had the same idea. A more generic setup for various liquids.

  • Link to post
    Share on other sites

    Posted · Chocolate printing

    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....

     

  • Link to post
    Share on other sites

    Posted · Chocolate printing

    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

     

  • Link to post
    Share on other sites

    Posted · Chocolate printing

    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

     

  • Link to post
    Share on other sites

    Posted · Chocolate printing

    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.

     

  • 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

      • UltiMaker Cura 5.7 stable released
        Cura 5.7 is here and it brings a handy new workflow improvement when using Thingiverse and Cura together, as well as additional capabilities for Method series printers, and a powerful way of sharing print settings using new printer-agnostic project files! Read on to find out about all of these improvements and more. 
         
          • Like
        • 18 replies
      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
         
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
    ×
    ×
    • Create New...