General 3D Printing Thread


Bryan Mayland

TVWBB Hall of Fame
The 3D Printed Case thread has gone off the rails and into generalized discussion about 3D Printing in general so I've started a new thread to try to get that one back on track. I'm still getting my Prusa i3 set up to make a good print and here's the progression of how things can go wrong along when trying to print a bog-standard cube:

From left to right we have:
-- No bed adhesion
-- Way shifting X axis, which I think was caused by either the belt being too loose or the pulley set screw not being tight enough
-- Head just smooshing plastic all over the place
-- Not enough current to the X motor making it not place properly
-- Getting closer!

Just some posts from other last thread I found useful:
Optimal Layer Heights for your Z axis
Setting up your 3D printer
Ballpark do-it-yourself parts list
Matt's Slic3r settings

1. What filament are you using?

2. What is your build platform?

3. Have you checked your stepper driver ref voltages?

Also, please post your slic3r settings. I'll post some of my settings when I get home tonight.
1. White ABS 3mm filament from MakerFarm at 210C hotend
2. A piece of glass from a picture frame covered in Kapon tape. This will be replaced tonight.
3. I have not yet but I'm not sure how much current my motors need. I thought the easy way was to turn down the current until they don't move, then turn them up until they do?

All my slic3r settings are the default. I had changed them but I went back to default until I can get my axis problem worked out. I did notice that when I load an STL in pronterface and it kicks off slic3r, the gcode it spits out is significantly different than what I get if I slice it from Slic3r manually. For one tiny test, the pronterface version starts at Z 0.035 and the Slic3r version starts at the proper Z 0.040. One uses 68.7mm of filament vs 75.4mm in the other.

EDIT: Well that's handy. Looks like if pronterface launches Slic3r it gets the default configuration, which is different than the default configuration it creates when you run Slic3r yourself.
Last edited:
I wouldn't load .stl files directly into pronterface for a couple of reasons. 1. It's slow, 2. you can't easily select the config file, 3. you will recalc your gcode file every time. If you open slic3r and do a quick slice and save as, you can do it once and then load that same gcode file into pronterface every time. Furthermore, in slic3r, you have the ability to add multiple objects using the plater tab and can then export the combined gcode file.

Depending on what drivers you have, there will be a recommended vref potential that you can calculate and then set your drivers to based upon your motor current rating. You can also do the turn down then up method too, but you may be underpowering your motor and missing steps occasionally.

You need to make sure that slic3r has the correct values for your nozzle and filament diameter. Don't just go by the reported filament diameter. Measure with calipers in several places and then input the average. You will also have to play with retraction settings after you get some of other things worked out.

BTW, 210 C seems a little low to me.
Last edited:
Yup you're right I just found the same thing out. Glad it isn't just me that pronterface's slicing stinks for. I'm definitely going to hook up a rPi to this thing and install octoprint because it is just seriously cool.

There are plenty of things to futz with and like you've said it is hypnotic to watch it print so I'll play with it more tonight.
Try a hotend temp of 230C

Definitely check your Vref's if you can

You're using RAMPS 1.4?

Load this gcode into your machine.

It will put the machine through it's paces and allow you to adjust the Vref to get nice, smooth motion.

Give us a screenshot of your slic3r settings. :) There's magic in them thar' numbers!

//EDIT: Sorry, forgot to make it public! Damn you Google! You already give all my stuff to the NSA! ;)
Last edited:
Other useful links:'s_Calibration_Guide

Also, you should auto-tune your hotend for optimal performance. M303 in the command line. Make sure you do it from a cold start (you want the hotend to be room-temp). Also, did you just plunk the thermistor into the hotend? Increasing the contact area by wrapping a tiny bit of tinfoil around the thermistor's glass bead then inserting into the recess will help get you better temps. Another thing to do is to insulate the brass with some ceramic tape and secure it with some kapton.

Here's a wrapped Prusa Nozzle. Helps to maintain temp and radiates a lot less heat.
Of course I just plunked my thermistor in the hotend then wrapped it with tape! Isn't that what everyone does?
While building this thing it made me wonder how much of the what is done is because someone did it once because it was all they had available, the results were ok, now everyone does it. Sticking a power resistor into a chunk of metal then taping a thermistor to it? C'mahn!

I am using RAMPS 1.4 with one of the Ultimate LCDs. The factory firmware limits extruder temp to 225C so I thought that was where it started getting dangerous and stayed away from that. I'll look into some methods to get better thermistor contact. Is heatsink compound frowned upon for some reason?

I think my problems are still mechanical at this point though. It may be hard to see but my layers don't line up. They're better than they were the first few prints but the way I left it last night, if I moved the head back and forth a few hundred times it would end up at a slightly different place at the end. I think I need to work out why that is before I can start messing with the slicing. Those calibration guides look great though. I've got lots of time to work on this this weekend so I'll be following your advice.
I use a thermal epoxy to mount one of my thermistors to my aluminum build plate. Bought it on amazon for around $5 and it works like a champ....

I extrude ABS at 230C. Download the latest Marlin firmware, or perhaps makerbot has a preconfigured version for download, and change the max settings to 245 or 250C.
Yeah, change that upper limit to 245 for a J-head. Don't go above 245 for a prolonged period of it will literally melt. Also make sure that thermistor is really in there and well secured. If it falls out you will have a melted J-head for sure. :(

I don't know if thermal grease is rated for that high a temp. 230C is pretty high. Fire cement would do the trick though.
Yeah I was running the latest Marlin but went back to stock when the results were all over the place. I don't think it needs to be any hotter though on account of I'm not seeing any beading. It might be hotter than reported because the thermistor is just poked in a hole.
I'm not sure why I was checking my reference voltages, considering my motors don't have any current rating listed on them, but I can tell you what I'm not doing: printing anything for a week. The via of the X driver was obscured by the little heatsink so I tried to push it slightly aside, it touched a capacitor and now the machine won't turn on with the X driver installed any more. Well hopefully it didn't kill the motor too or anything else like the RAMPS board. We'll pick this back up again in a week or so!
Sorry to hear that, I've done it too. Ramps 1.4 has the ability to control 5 drivers so that you can drive a dual extruder setup. I'm assuming you only have one extruder, but if the ramps board came with all 5 drivers installed, you can just pull the driver from extruder 2 and place it in the X driver position.
Here are my slic3r settings for printing heatermeter cases at normal speed:

avoid_crossing_perimeters = 1
bed_size = 300,250
bed_temperature = 0
bottom_solid_layers = 3
bridge_acceleration = 0
bridge_fan_speed = 100
bridge_flow_ratio = 1
bridge_speed = 80
brim_width = 0
complete_objects = 0
cooling = 0
default_acceleration = 0
disable_fan_first_layers = 1
duplicate = 1
duplicate_distance = 6
duplicate_grid = 1,1
end_gcode = G1 X12.0 F4000 ; home (almost) x - stops extruder crashing into frame if at very top of Z height\nG1 Y170 F4000 ; move the print to the front.\nM104 S0 ; make sure the extuder is turned off.\nM140 S0 ; make sure the bed is turned off.\nM84 ; shut down motors
external_perimeter_speed = 60%
external_perimeters_first = 1
extra_perimeters =
extruder_clearance_height = 20
extruder_clearance_radius = 20
extruder_offset = 0x0
extrusion_axis = E
extrusion_multiplier = 1.0
extrusion_width = 0
fan_always_on = 0
fan_below_layer_time = 60
filament_diameter = 3
fill_angle = 45
fill_density = 0.3
fill_pattern = rectilinear
first_layer_bed_temperature = 0
first_layer_extrusion_width = 0
first_layer_height = 50%
first_layer_speed = 60%
first_layer_temperature = 0
g0 = 0
gap_fill_speed = 20
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_speed = 100
layer_gcode =
layer_height = 0.255
max_fan_speed = 100
min_fan_speed = 35
min_print_speed = 10
min_skirt_length = 0
notes =
nozzle_diameter = 0.4
only_retract_when_crossing_perimeters = 0
output_filename_format = [input_filename_base].gcode
perimeter_acceleration = 0
perimeter_extruder = 1
perimeter_extrusion_width = 0
perimeter_speed = 80
perimeters = 3
post_process =
print_center = 150,125
raft_layers = 0
randomize_start = 1
resolution = 0
retract_before_travel = 2
retract_layer_change = 1
retract_length = 1.6
retract_length_toolchange = 0
retract_lift = 0
retract_restart_extra = 0
retract_restart_extra_toolchange = 0
retract_speed = 40
rotate = 0
scale = 1
skirt_distance = 6
skirt_height = 1
skirts = 3
slowdown_below_layer_time = 15
small_perimeter_speed = 40
solid_fill_pattern = rectilinear
solid_infill_below_area = 70
solid_infill_every_layers = 0
solid_infill_extrusion_width = 0
solid_infill_speed = 100%
start_gcode = G28 ; home all axes
support_material =
support_material_angle = 0
support_material_enforce_layers = 0
support_material_extruder = 1
support_material_extrusion_width = 0
support_material_interface_layers = 0
support_material_interface_spacing = 0
support_material_pattern = rectilinear
support_material_spacing = 4
support_material_speed = 80
support_material_threshold = 0
temperature = 0
threads = 2
toolchange_gcode =
top_infill_extrusion_width = 0
top_solid_infill_speed = 75%
top_solid_layers = 3
travel_speed = 130
use_relative_e_distances = 0
vibration_limit = 0
z_offset = 0

If you are wondering why my layer height seems strange, it is due to the fact that I have 1.5 mm pitch lead screws.
Holy moly! 10mm leadscrews? Thats huge. And M10 smooth rods? 12mm or 16mm would be awesome... Did you design your own X ends?

Also, why so thin on the first layer? I go 200% for 1st and manually adjust the layer height to get a nice "squashed" first layer for better adhesion.

What are you printing on these days? Kapton, pet or abs juice? Any more its abs juice for me.

I'd post my settings but i'm on my way to key west for a week of vacation. :D
They are actually 8 mm lead screws made by misumi. I use linear rails for all 3 axes with custom parts that I designed. I used to do the manual squish thing, but didn't like the fact that you then get distortion of that first layer around orifices. One of the forum members was very interested in getting an extremely smooth surface to put labels on, so I played around with some settings and came up with this. This allows slic3r to appropriately calculate the amount of plastic needed for extrusion so that my first layer comes out pretty smooth without compromising the dimensions of my first layer orifices.

I'm using kapton. I've never had good results with abs juice.

Enjoy Key West, I'm jealous.
I saw somewhere in a youtube video (think it was from MakerFarm) where they were using some sort of hair spray to help adhesion rather than printing on kapton tape? Can't remember if they were printing on glass or directly on the heated bed... Have you guys heard of or tried that?
Yeah it sucks about my motor driver but I did pull the extrusion driver so I could go about leveling the Z axis. I'm just a bit disappointed because I was hoping to have world class prints by the end of the weekend. Instead I'll be doing things like making the wiring pretty and getting octoprint working. Also try hooking up the device to the 5vsb line on my power supply so I can power a rPi and have it turn on and off the power as it needs it. Printing from work!

I bought a can of that garnier fructise mega hold hairspray too and sprayed it on the glass. I does give a little tack to it so I think it is going to work great once I can get printing again.
Hairspray is ok for small prints, but you will likely find that your corners will lift when printing a heatermeter case with it. You could probably try sanding the glass surface in conjunction with the hairspray for better adhesion, but I'm not jacking up my glass to try that.
I.... bought a can of that garnier fructise mega hold hairspray too and sprayed it on the glass.....

That sounds familiar, must have been in a MakerFarm video where I saw that... Let me know how it works for you.

I know it's a bummer to still be working on the electronics and mechanics of your printer rather than making quality prints, but it's better than looking at UPS tracking that says your printer kit will arrive MONDAY....

I must say, I am quite surprised how the software behind the 3D printer seems so primitive. Maybe primitive is not the word, perhaps unrefined? You would think there would be a software suite that had a calibration routine you run to get your printer adjusted and then just load a 3D object into it and hit PRINT and it would do all the slicing behind the scenes automatically. Having to create a table with the layer heights, really? come on... You would think a computer could do this for you? The process just seems a little disjointed to me...