Monday, March 24, 2014

Start the print using Pronterface

This post is the culmination of my 6-month effort to build a Prusa mendel 3D printer from a kit I purchased from nwreprap.com.

I've gone through the build videos.

I've performed these set-up and calibration steps.

I'm actually going to be printing a small cylinder instead of a 20 mm cube as I had intended.  The cylinder is smaller than the 20 mm cube and will print faster.

Launch pronterface


Check port, connection data rate and click on "Connect"

Click on "Load File"

Choose your .gcode file

Now click "Print"


 
This video shows the start of the printing process.  You'll see how the heat bed and hot end heat up and the printing starts.  The object begins to form.


This video captures the completion of the print.
 
 
When it's done, click "Off".

The heat of the heat bed is what causes the object to adhere to the heat bed.  Once the heat bed has cooled down to room temperature, it should be easy to lift the printed object off the heat bed.  To accelerate the process, I blow compressed air from a can onto the printed object.




That's it!

Prepare a g-code file for printing using Slic3r

I covered downloading all necessary software in this post and presented an overview of the steps to be completed before the first print in this post.

An overview of the process of going from a 3-D design to a printed object is available in this post.

Preparing a .gcode file for printing on a Prusa Mendel 3-D printer is fairly easy with Slic3r. 

You'll need your digital calipers to measure the diameter of the filament that you're planning to use.

To start, you need an .stl file.  In my overview post, I indicated that an .stl file can be created with Sketchup and exported using su2stl plug-in, but for this example I'm going to keep things simple and work with an existing .stl file of a 20 mm cube called 20mm_cube.stl which was created by engineglue and uploaded to Thingiverse.  Directions for downloading it are here.

The .stl file contains the design of the object that you are going to print.  When you create a .gcode file with Slic3r, you convert the .stl design into a set of instructions for the Sprinter firmware on the Arduino controller to carry out.  There are instructions for moving each of the axes, turning on the extruder, turning on the hot end and the heat bed.

Here are the steps:

First, click on the Slic3r icon to launch it.

 The Slic3r user interface appears.
Drag the .stl file from the desktop into Slic3r workspace

The 20 mm cube has been added to the layout

Check the Print Settings Layers and Perimeters.  Make sure that layer height is set to 0.3 mm

Check the Print Settings Infill

Check the Print Settings Speed

Check the Print Settings Skirt and Brim

Check the Print Settings Support Material

Check the Filament settings.  Measure the diameter of your filament with your digital calipers and enter it.
Also it's very important to enter the Extruder and the heat bed temperatures.  These values work well for PLA.

Check the Cooling settings.  If you installed the fan that comes with the nwreprap Prusa kit, enable it.

Check the printer settings.  If you've downloaded Sprinter firmware, make sure that the G-code is set accordingly. 

In Extruder settings, double-check the nozzle diameter.  My nwreprap.com Prusa kit has a .5 mm nozzle.

Go back to the Plater Tab and export the G-code file. 
Now you should have a .gcode file ready to be uploaded to your Prusa Mendel.

Overview: Going from 3-D design to printed object

Recap: I've assembled a Prusa Mendel 3-D printer from a kit I purchased on nwreprap.com.  I've calibrated (post1, post2, post3) it, downloaded all of the necessary software and installed the driver and uploaded the firmware.  I also checked all of the functions using Pronterface.

Now I am ready to design an object and print it, but before I get to that, I'd like to present an overview of the process of going from a 3-D design to the printed object.

I want to emphasize that the process I'm going to present is just one of the many that are out there.  This is a simple process that works for me and is easy to get started with.

Step 1: Design your object with Sketchup
Step 2: Export your design from Sketchup to an .stl file using the su2stl plug-in
Step 3: Use Slic3r to convert the .stl file into a set of instructions to be uploaded to your printer.  This set of instructions is stored in a .gcode file.
Step 4: Use Pronterface to upload the instructions contained within the .gcode file to your printer.

Here it is visually:


For information on downloading Slicer and Pronterface, see this post.

I haven't covered Sketchup or the su2stl plug-in yet, but I hope to in a future post.

Sunday, March 2, 2014

Priming The Hot End

Recap: I've built a Prusa Mendel 3-D printer from a kit I purchased from nwreprap.com.  I'm in the process of calibrating the printer in preparation for the first print.

When a print starts, the filament needs to be positioned inside the hot end in such a way that when the extruder is instructed to feed the filament, the molten filament exits the hot end right away.  If the molten filament does exit the hot end right when the extruder is activated, what tends to happen is that by time it actually exits, the hot end might be several layers above the surface of the heat bed.  When the distance between the hot end and the surface below it exceeds a certain amount, instead of adhering to the surface of the heat bed, the molten filament will curl into a messy blob.

So we need to advance the filament into position and actually feed some filament through the hot end.  For this we'll use Pronterface.  You'll also need a pair of pliers or tweezers to remove the excess filament at the end of this step. This step assumes you've downloaded all of the software, installed the Arduino driver, uploaded the firmware and have a good understanding of Pronterface.


  • Pull the idler with your thumb, you should see the hobbed bolt.  Insert the filament into the opening so that it passes the hobbed bolt.  

  • Start Pronterface

  • Check the port, set connection speed to 250000 bps and press "Connect" to connect to the Printer

  • Raise the hot end at least 25 mm above the heat bed

  • Turn on the hot end
  • Wait for the hot end to heat up to full temperature
  • Activate the extruder to feed the filament until you see the molten filament exit the hot end.
  • Turn off the hot end - click the "Off" button next to "Heat:"
  • remove the excess filament with pliers or tweezers.





Now your filament is positioned for printing.  If you saw the filament feed in but nothing came out, it's possible that the hot end did not get hot enough to melt the filament.  Unfortunately what can happen is the hobbed bolt will grind away at a small section of the filament and it will no longer feed the filament.  Try pulling the filament out by hand and starting over.



Friday, February 28, 2014

Positioning the Z limit switch and Calibrating Heat Bed Height

Recap: I've built a Prusa Mendel 3-D printer from a kit I purchased from nwreprap.com.  I am performing some calibration steps before I attempt the first print.

One of the things we haven't done yet is determine the final position of the Z limit switch and adjust the height of the heat bed at each corner.

In order to complete this step, you must have downloaded the software, installed the Arduino drivers , uploaded the firmware and you must be able to operate Pronterface.  You'll also need a couple pieces of regular white paper - the kind that goes into a laser or inkjet printer and a good quality ruler.

Before you get started with the calibration, an initial check to ensure that your piece of glass is flat is advised.

Detecting a Warped Piece of Glass Before Installation

Lay the glass on a flat surface.  Tear off a piece of paper.  Lay the edge of the ruler on the glass.  Now try to wedge the piece of paper between the ruler and the glass at the edges of the glass and in the center.  If there is space between the ruler and the glass, then paper will fit between the ruler and the glass.  This means that either the glass or the edge of the ruler is warped.  Try using flipping the ruler and using the other edge of the ruler.  If the results are the same, then the glass is likely warped.  If the first test succeeds, turn the glass 90 degrees and repeat it in the other direction.

Test for warped glass by sliding a scrap of paper between the ruler and edge of glass

Test for warped glass by sliding a scrap of paper between the ruler and the center of the glass
So you're going to run 4 tests:

  • Direction A at the edges
  • Direction A in the center  
  • Direction B at the edges
  • Direction B in the center 
To be really sure, you should flip the glass over and trying these tests on the other side.

Mounting the Glass on The Heat Bed

Make sure that the glass has been attached to the heat bed using bulldog clips.  It's important that the heat bed maintain contact with the glass throughout the entire surface to ensure that the glass's temperature is even.

I initially used the 4 bulldog clips that came with my kit.  I was able to wedge a piece of paper between the heat bed and the glass, so I determined that the heat bed sagged in the middle a bit.  So I added 4 more bulldog clips.

Positioning the bulldog clips
Z Axis Limit Switch and Heat Bed Calibration

You need a piece of scrap paper for this step.

Recall that we installed the heat bed on springs.  The height of the heat bed can be adjusted by turning the locknuts at each corner of the heat bed.
One of the four corners of the heat bed with a locknut and spring on an M3 bolt.
The idea here is to adjust the position of the Z axis limit switch and the height of each corner of the glass so that the Z axis limit switch clicks when the distance between the hot end nozzle and the glass is approximately the same as the thickness of a piece of paper.

From my experience this takes some of trial and error.

In my experience, the best way to achieve this is the following:

1. Lower the heat bed by turning the locknuts clockwise to compress the springs until maybe 1/8 inch of each M3 bolt is exposed at the top.
2. Position the heat bed so that the hot end is as close as possible to one of the corners.
3. Set the Z axis limit switch to some height where you think it will activate when the hot end is lowered within 1/8" of the glass.  Tighten the two bolts on the Z axis limit switch.  This step requires trial and error.
Positioning the Z limit switch
4. Use Pronterface to lower the hot end until the Z axis limit switch is activated.
5. If the hot end is less than 1/8 inch above the heat bed, proceed to step 6, otherwise go back to step 3.
6. Slowly turn the locknut counterclockwise to raise the heat bed.  At regular intervals test the distance between the hot end and the glass by sliding a piece of paper between the hot end and the glass.  When the paper starts to "grab" then stop.
7. Repeat for the other 3 corners - this means complete steps 2 and 6 for the other corners.

Making Sure The Glass Is Still Flat Upon Completion

Once you've adjusted the 4 corners of the heat bed, you can perform another test to determine if your glass is still perfectly flat, even after having been mounted on the heat bed.  A flat piece of glass is necessary to ensure that your parts are printed consistently regardless of the placement on the glass.  You'll need a piece of scrap paper for this step.

1. Use Pronterface to raise the hot end a couple mm.
2. Move the hot end to the center of the glass using Pronterface.
3. Use Pronterface to lower the hot end until the Z axis limit switch activates
4. Try to insert a piece of scrap paper between the hot end and the glass.  If the glass is still perfectly flat, then the piece of paper should "grab" just a little between the hot end and the glass.

Test for warped glass by sliding a scrap of paper between the hot end and the center of the glass after calibrating the height of the corners of the glass.

Monday, February 24, 2014

Level The X Carriage

Recap: I've assembled a Prusa Mendel 3-D printer from a kit purchased from nwreprap.kit.  I'm going through a set of calibration steps before I attempt the first print.

The extruder rides left and right on the X carriage which in turn rides up and down on two Z Axis lead screws which are controlled by the two Z axis stepper motors.  The X carriage must be leveled to ensure that your prints are square.  You'll need your digital calipers to complete this step.

This step is pretty simple: manually rotate either of the Z lead screws until the distance from the left Z stepper motor to the X idler and the distance from the right Z stepper motor to the X motor mount is the same.


Leveling the X carriage.  Red lines indicate distances that must be the same.  Orange lines indicate direction of travel

Wednesday, February 19, 2014

Calibrating X, Y, Z and Extruder Axis Steps Per Unit

Recap: I've built a Prusa Mendel 3-d printer from a kit that I purchased at nwreprap.com.  Before I can print, I need to go through a series of calibration steps which are outlined here.

This post will explain how to calibrate the _AXIS_PER_STEP_UNIT constant in the Sprinter software's Configuration.h file that I briefly touched on in a previous post.  Completing the steps in this post requires you to have downloaded all of the software, installed the Arduino driver, uploaded the firmware and gotten familiar with using Pronterface.  You'll also need digital calipers and a ruler to make measurements.

Infact, all we're going to be doing for this step is changing some values in the Configuration.h file that lives inside the firmware and uploading it.

The _AXIS_PER_STEP_UNIT setting is an array of 4 values that tell the stepper motors how to translate a "unit" of movement in Prusa to a number of steps to be taken by the stepper motors.  I haven't seen a good description of how much a "unit" is.  Each of the 4 values goes with the corresponding axis: X, Y, Z and Extruder.

When I initially downloaded the Sprinter firmware, this is what the settings looked like:

#define _AXIS_STEP_PER_UNIT {80, 80, 3200/1.25,700}

To calibrate the X, Y and Z axes follow these steps to perform an "iteration" of the calibration process.  Note that more than one iteration per axis is usually necessary.  With each iteration, you'll instruct your Prusa to move a certain distance, measure the resulting distance and apply a correction factor to the values that you initially downloaded.

For each iteration, follow these steps:
  • Pick one or more axes to work on
  • Launch Pronterface and connect to your Prusa Mendel.
  • For the chosen axis, measure the offset from some fixed point and zero out the digital caliper
  • Use Pronterface to cause a 100 mm movement in your chosen direction
  • Measure the actual amount moved
  • Enter the correction factor in Configuration.h as follows: multiply the previous value by the desired movement and divide by the actual movement
  • Exit Pronterface
  • Launch Arduino software and upload the firmware
  • Repeat until the actual movement matches the desired movement very closely

So let's say you start by calibrating the X axis.

On the first iteration, you instruct the Prusa Mendel to move 100 mm and it actually moved 81 mm.  So now you have the following that should be uploaded in the firmware (note the numbers in bold have been added):

#define _AXIS_STEP_PER_UNIT {80 * 100 / 81, 80, 3200/1.25,700}

On the second iteration, you instruct the Prusa Mendel to move 100 mm and it actually moved 99 mm.  This is the effect (new numbers added in bold):

#define _AXIS_STEP_PER_UNIT {80 * 100 / 81 * 100 / 99, 80, 3200/1.25,700}

At this point, it's a good idea to simply multiply out 80 * 100 / 81 * 100 / 99 = 99.763... and put that value in the Configuration.h file instead of "80 * 100 / 81 * 100 / 99".

To calibrate the Extruder, I suggest the following which worked for me pretty well:
  • Insert filament into the extruder
  • Feed the filament so that about 50 mm is inside the extruder (if you feed the filament too far with the hot end off, it will have no place to go when it reaches the hot and the extruder will scrape a chunk of it off and the filament will jam in the extruder.  At that point you'll have to pull it out by hand)
  • Stick a piece of tape to mark the position of the filament just where it enters the extruder.  Alternatively, consider marking the position of the filament with a Sharpie.
  • Feed the filament in reverse by 10 mm using Pronterface
  • Stick another piece of tape to mark the position of the filament just where it enters the extruder.
  • Measure the distance that the tape moved with a ruler
  • Apply the effect of this iteration to the Extruder constant
Apply the first piece of tape

Feed the filament and apply the second piece of tape

Measure the distance between the two pieces of tape


For example, if you instructed the extruder to move 10 mm and it moved 10.5 mm, this is what you'd have:


#define _AXIS_STEP_PER_UNIT {80, 80, 3200/1.25,700 * 10 / 10.5}

In the end, my calibration yielded:

#define _AXIS_STEP_PER_UNIT {100, 100, 2561, 700 * 10 / 10.5}

If you're assembling a Prusa Mendel kit from nwreprap.com, I expect those values will work pretty well for you.  The first item to print is a 20 mm cube.  Once printed and measured, this cube will tell you how good your calibration is.

Sunday, February 16, 2014

Basic Control Checks for Prusa Mendel with Pronterface

Recap: I've built a Prusa Mendel 3-D printer from a kit that I purchased from nwreprap.com.  Assembly of the kit is complete.  I'm in the process of calibrating my printer.

Before you power up your Prusa Mendel for the basic control checks, I suggest you move the extruder to the center of the heat bed and make sure it's at least an inch above the heat bed.  This will allow it to move freely in any direction.

Once you've downloaded the software and uploaded the firmware,  it's a good idea to test to make sure that you've wired up your Prusa correctly.  At this point in time you should be able to exercise your printer's functions from your PC.  You can use a piece of software that you've downloaded called Pronterface.  Pronterface is a terrific tool for exercising the various devices on your Prusa, plus it will be used to upload your designs to the Prusa for printing.

Here is a list of items you can check:
  • X axis direction and limit switch.
  • Y axis direction and limit switch
  • Z axis direction for both motors, limit switch
  • Extruder direction
  • heat bed and heat bed thermistor
  • hot end resistor and hot end thermistor
Caution: it should go without saying that touching the hot end or the heat bed during these tests can result in burns because these parts may get activated when you're not expecting because of a wiring mistake.

Note: I found it helpful to have a heat probe available to troubleshoot the temperature functionality.  I use a Fluke 80BK-A probe along with a fluke 179 DVM.

With your Prusa Mendel powered up and connected to your PC, click on the Pronterface icon to get started:



Make sure that the Port is set appropriately for your configuration, set the port bit rate to 250000 bps and
 click "Connect"

Setting the port, bit rate and initiating the connection

Now you should see the text of the "Connect" button has changed to "Disconnect" and the controls change from grayed out to enabled:

Controls are enabled (printer is connected)

Controls are disabled (printer is disconnected)

The controls allow you to move any axis by 0.1, 1, 10 or 100 mm.  I suggest starting out with 1 mm moves for the testing you're about to do.  1 mm is enough to see with your eye, but not too much to cause damage if something goes wrong.

Control to move x axis 1 mm in the negative direction



Control to move y axis 1 mm in the negative direction

Control to move z axis 1 mm in the negative direction

For any given axis, the limit switch represents the minimum value.  This means that clicking on "-x" or "-y" or "-z" buttons should move the extruder closer to the limit switch.  So "-x" should move the extruder to the right, "-y" should move the heat bed toward you and "-z" should move the extruder downward, toward the heat bed.  If you're seeing the opposite, simply pull the connector for the relevant stepper motor, turn it 180 degrees and plug it back in.  During the assembly of my Prusa Mendel, I discovered that I had to do this for my X, Y and Z stepper motors.  Alternatively, there is a setting in the Configuration.h file of the firmware that can accomplish this.

To check a limit switch, simply use the Pronterface controls to move the extruder in the negative direction until it activates the limit switch.  You should hear a click as the limit switch activates.  Further movement in the negative direction should be suppressed.  At this point in time, the Z limit switch has not been precisely positioned/calibrated so you'll have to adjust the Z axis limit switch to some reasonable height where it can be activated.

Clicking on the "Extrude" button should turn the large wheel in a counter-clockwise direction when viewed from the front.

Extruder control
To test the hot end and the hot end thermistor, click on the "Set" button and look for the "Heater" temperature gauge to start rising.  If it doesn't start rising, there are at least two causes: (1) the hot end thermistor is not connected properly or (2) the hot end resistor is not connected.  If you see the "Bed" temperature gauge start rising, then you may have swapped the connections of the two thermistors.  Click the "Off" button hear the "Set" button to turn off the hot end.  Note that the hot end will remain hot for a long time after you turn it off.

"Set" button and Temperature gauge for hot end resistor.

Similarly, to the the heat bed, click the appropriate "Set" button and look for the "Bed" temperature gauge to start rising.  If you soldered the surface mount LEDs and resistor to your heat bed, you should see one of the LEDs light up now.  Click the "Off" button near the "Set" button to turn off the heat bed.  The heat bed will remain warm for some time after you turn it off.

"Set" button and Temperature gauge for heat bed

One thing to note is that I haven't figured out how to test the little fan that cools the extruder using Pronterface.

When finished, click the "Disconnect" button and exit Pronterface.