Tag Archives: featured

Designing for 3D Printing – Making useful things – Part 1

I’m starting a series of articles and accompanying videos on designing for 3D printing, using 123D Design as a starting point.  As I learn more about other software such as Solidworks, I’ll try to pass that info along.

Disclaimer:  I’m not an expert, I just figure things out and make notes here on my blog.  If those notes help you that’s great!  If I make mistakes or you know of shortcuts that I could benefit from, please leave me a comment!

This first article will discuss how to make a small simple part for a 3D printer project: A nut!  Yep, a simple nut, but this nut is for aluminum extrusion!


A good 3D printer design emphasizes a solid frame as its foundation.  Some good inexpensive material for this is called Aluminum Extrusion.  A really good supplier for this material and many accessories is http://www.misumiusa.com. Another fine distributor is 80/20, Inc. http://www.8020.net



As you can see in the above image there are slots on all four edges.  Special nuts are made to fit inside these slots.  But sometimes you need a few extra, or just want to do some quick and dirty prototyping.

In this article, I’m going to show you how to make a nut that will fit inside this profile.  Some extrusion profiles are small enough that you can just use a regular metric or SAE nut and slide it in and tighten it.  However, with the larger extrusions, the slot is too big and the nut won’t seat properly or you will have to use a really big bolt.  The nut we’re going to make is called a pre-assembly nut:



On Misumi’s website, they provide a great amount of details and dimensions to help us decide which part to pick.dimensions

It’s difficult to know which way is up with these things and our dimensions can get confusing.  The way the nut fits into the extrusion should help us:


I’m going to call 6.3 the width, 15 the length, and 14 the height, because that is basically how it will load into 123D Design.

In the above image you can see the dimensions for our part.  I will note these here for reference later:

Width:  6.3 mm
Length: 15 mm
Height: 14 mm

You can use the product configuration tool to order parts and download 2D/3D cad drawings of certain parts.  However, for the nuts you can only download the 2D profiles.

Misumi Part Config Tool


Now that I’ve made my choices, I’m going to download the 2D cad file.  Here is the file that I downloaded if you want to follow along. Here is the part profile that I downloaded. It is for the HFS6 30×30 extrusion profile.

Inside the zip file are three .DXF files.  Each has a different profile design and I’m going to use the one that gives me enough room to insert a standard M4 nut into the back of the 3D printed part so that I can tighten the screw appropriately.  The three choices for this part are:






I picked HNTT6 because of the wider bottom (which is pointing right).  This gives me room to create a nut capture hole for the M4 nut.

Opening the .DXF files in Inkscape allows me to edit them and remove all the stuff I do not need, so that I can save it as an SVG file.

Here is what it looks like after I cleaned it up:



I’ve selected all the parts (Control-A Windows). Then we have to click on Path, Stroke to Path then Object, Combine so that when we load it into 123D design we do not get an error message stating it could not find any valid paths.

Save the file as an .SVG on your desktop.

Now we’re ready to import it into 123D design.  Open 123D Design, the click the 123D Menu drop down to open the menu, and select Import SVG, then As Solid.


Here is what it looks like after the import:



Looks great!  However, you need to inspect this closely.  The file I have imported seems to have two faces.  So when I click on the top of the solid body, and move it over, this is what I see:


You can see there is an outer shell.  So I drag the solid to the left to reveal the entire shell, then I select all of it except the solid and hit delete.  This is easier done from the TOP view:




Now we’re going to do some measuring.  We want to measure the length, width, and height, and we’ll need to put these somewhere so we can recall them.  I use Google Docs/Spreadsheets for this so I can do the math there as well.


2015-06-13_17-05-22 2015-06-13_17-05-51 2015-06-13_17-04-43

Use the measuring tool and measure from one edge to the other being careful to select just the edge and not the face.  Make sure you select furthest parallel edges to get the overall size.

As you can tell, it is wayyy too big.    So we need to scale it.  But as far as I know, 123D is not a “Parametric” design tool like Solid works.  So I haven’t really figured out the easiest way to re-size something to specific dimensions, so I’ll show you “my way”

I measured all the dimensions, and put them into Google Sheets.

I then added a formula column to show me the scale factor.  This is determined by dividing my desired dimension with the measured dimension:



Now, I can go back to 123D Design and select my object, then select Scale, Non-Uniform, then enter the values above.  However, 123D Design only allows 3 digits to the right of the decimal, so we have to round to 3 decimals, so I added that to the sheet:


Now we can scale it properly.  Sometimes it’s hard to know where the X, Y and Z are relating to our dimensions, so just change one and observe how it shrinks, then you’ll know.


After we’ve scaled it, we can re-measure each dimension to see how close we got.


My end results were 6.322, 15.008 and 14.00.  These are totally acceptable!

Now we need to make a hole for our screw and a nut socket.

You should use some inexpensive digital calipers to do your measuring.  Here I am measuring the diameter of the nut.

PLEASE NOTE:  I didn’t have any M4 Nuts!!!  Argh, so I had to use an SAE nut that was approximately the same size.  The dimensions below should work as well for M4.


We’ll need a cylinder about 4.2 mm in diameter for our M4 screw, so we’ll enter 2.1mm for the radius.  Note, we’re making the hole for the screw, not the nut.  Drag the cylinder around until it “snaps” to the center, and enter your dimension of 2.1 for the radius and 20 for the height:


Next we need to position to make the face of our cylinder and the face of our shape to be flush:


Now at this point we could “cut” the cylinder from the shape leaving a hole, but let’s add our polygon first.  Use the Draw Polygon tool:


We want to “snap” the polygon to the center of the cylinder:


The diameter of an M4 nut is 9.45 mm, so we need to divide that by 2 and give it a little extra, so we’ll go with 4.75 which will come out to 9.5mm.  We need 6 sides for our polygon.

Now let’s extrude our polygon into the object and that will create a 6 sided hole:



The nut is 3.2 mm thick so we’ll enter that as our depth:


Now we can delete the sketch that was left behind:


And lastly, we can cut the cylinder from our shape and we’re done!



Now let’s print it, and see how it fits!





In my next post, I’ll show you how to take an STL file, and convert it to a 123D Design object that you can edit!  Stay tuned!



Finally getting some decent prints

After what seemed like endless hours of fine tuning, I’m finally getting decent prints.  I still have work to do, and learning to learn, but I’m happy with the results so far.

Here is a vase printed at .2mm layer.  That’s like a “medium” setting, and is my standard setting.  The nozzle in my printer is .4 mm.  This red plastic is called High Impact Poly Styrene.  It doesn’t warp like ABS and so far has been a real gem to print with.  It’s also harder than ABS.


Here is a thing that someone tossed out as a challenge for RepRap machine owners.  mine printed it fairly.  I mean, it printed it.  Without failing.  But I wouldn’t call it amazing… yet.



I decided to load up the PET+ that I bought a week ago at MicroCenter here in Dallas.  I had been reserved about printing this in my cheapo Jhead hot end because it has a PTFE liner inside.  If you run that hotend too hot, it will melt that liner.  Well, PET+ needs 250-260 degrees C to work properly.  Well, it printed nicely!  I’m so stoked by the results.  I’m quite amazed that this machine that I built out of random bits, fine tuned over about 150 hours of work is producing these results.  I’m not giving up on fine tuning because I’m sure there is more to do, but for now I’m a happy printer owner!


2 inches tall by 3 inches across the top.

Madesolid Sapphire PET+ 1.75mm diameter

Printed in sprial mode, .2mm layer, 250-260 degrees hotend, 90 bed, probably around 40mm/s

Koch Tealight Vase on Thingiverse

Here is a sample of the layering consistency I’m getting at the moment.


Hardening your Prusa i3 3D printer

I believe the current and original design of the Prusa i3 3D printer has a lot of areas that need improvement.  It seems the printer serves a great purpose of teaching you about Fluid Deposition Modelling (FDM) printers, but as a printer in itself, it leaves a lot to be desired.  They should have called it “The Trial and Error Printer.”

If you make the mistake, as I did, of building your printer out of lexan or acrylic, you’re going to have a lot of problems.  Additionally, if you buy some random set of printed parts off ebay for your printer’s structural members, you’re going to have even more problems.

All in all, it is a wonderful  stepping stone to the next printer project, but in itself, I would not call it a production class machine that you can rely on day in and day out.  No, sadly, those cost a few more bennies.

Here are some pictures of what I have done to harden my machine so it prints more precisely.  Note, I’m not calling it reliable, or precise, but “more precise” than a vanilla kit machine.

My first priority was to stabilize the platform and frame.  I made a bad choice in using the 6mm acrylic frame.  But I’m stuck with it for now.  So I am doing the best I can with it.

I dug out a piece of 18×24 MDF for the base.  I set the printer about in the middle and marked the places where the frame had zip tie holes and drilled through the board.  I ended up using zip ties for the time being, but reality is, a screw and nut will be a more permanent solution.








Next on my list was the X axis carriage.  I reduced the bearing count from four to three, and re-arranged it so the two bearings are oriented on the top where the two belt ends connect to the carriage.  Though not scientific at all, my theory was that this was a better arrangement to control wobble on the X axis carriage.




The next big area of improvement, especially when using printed bushings, is to constrain the bearing sleeves on the X axis.  The combination of ABS and HIPS here causes too much slip.  So I used M3x6 screws as a set screw.  I drilled a hole in the side of the X Motor carriage bearing sleeve using a 2.78 mm (7/64) drill bit.20150530_103421I then followed suit on the right side X Axis Idler.  Additionally, pictured above and below you can see a set screw that holds the Z axis nuts in place.  These are important because these nuts come unseated easily.



Next thing I wanted to do, but didn’t get around to it until now, is to get rid of the silly zip ties on the bed that hold the bearings in place.  I finally got these half printed before something happened and oh well I used them anyway.  These greatly minimize the wobble of the bed that is caused by the zip bearings rotating in their seat.  The zip ties do not constrain it enough.


Lastly, I used dry lube that you can get at a quality bike shop.  This is the lube we use on chains to keep dust from collecting on the chain.  Apply a thin coat with a foam brush to all your rods and move your axis all the way from one end to the other several times.

20150530_105020Now you should have a fairly stable and solid Prusa i3 printer.  There are still yet more tweaks to be done to this project-disguised-as-a-printer.


High resolution closeup of 3D Printer quality

Here are some high res photos of things I’ve printed, or attempted to print.

These were printed at .2mm layer height, green is ABS, red is HIPS.

Some of these are duds.  They either didn’t finish or didn’t make the cut.

This is a set of bushings I was printing.  These are duds because I had the wrong infill setting and you can see the dimples on the middle one’s side…


Some more bushings that didn’t survive.  Not the printer’s fault, I just had to tweak yet another setting…


This dragon was printing very nicely, albeit a few holes that I haven’t quite figured out, but then in the end, this green filament is very blobby and caused the print to fail. I’ve given up on this filament because of this issue.  It was Shaxon from Fry’s Electronics.



Here is a hollow block I printed by accident.  I had left the infill set to zero for a previous print, and this is what I came out with.

The interesting part is the excellent bridging.  Look into the hollow block and you can see the bottom of the top, where it bridged. Also, you can see the layering on the sides and how nice and even they were.  I don’t see any banding either…






20150530_014500 20150530_014527

3D Printing Aria the Dragon

My most challenging print so far.

Up to now I’ve been printing parts for additional printers.  Thought I would tackle something majestic.

I love dragons.  Here is Aria The Dragon from thingiverse.com

But So far she doesn’t look that great.

dragon1dragon2I’m trying to figure out the right settings for her.  I’d like to print at .1 or .2 mm layer height.

The above was printed with Repetier Host using Cura slicing.

So, I figured out why it was so bad… Printing too fast.

Rectangular infill, 50% speed, .3mm layer.

Retraction enabled, 2mm
1.6mm shell (4 shells @.4mm nozzle size)
.8 top/bottom
15 % infill – grid

I cancelled the print because something snagged and the Y axis skipped.

After several attempts, I decided to slow the print way down using the Feedrate setting in Repetier host.  I set this down to 25% in a desperate attempt to get a quality print out.  I was pleasantly amazed when I woke up this morning to find this on my printer….


While not perfect, it is definitely getting close!

Settings so far:

.3mm layer
No raft or brim
Shell thickness: 1.6mm (4 shells @ .4 mm nozzle)
Top/Bottom thickness:  .8mm
Infill overlap: 5%
Infill type: Concentric lines
Solid Top/Bottom
Retraction @ 40mm/s 2mm distance
Temps: 230/90
Material: Bright green ABS

The interesting thing about this ABS, I had terrible luck with it before. It would warp and banana like crazy, and I pretty much labelled it “junk.”

But after I modified my el-cheapo Jhead hot end, everything I print now prints great!

3D Printer build – it’s a lot harder than you think…

Anyone thinking about building a 3D printer from scratch should come to their senses quickly and just buy a ready-built printer or a high-quality kit. The prices are falling like a heavy rain and you can get a high quality printer for the same money, and less frustration, than building one will accomplish.

The problem is in the general design of the current crop of “open source” 3D printers.  There are just too many nuts, bolts, wires, haphazard software settings, firmware settings, mix-matched hardware and electronics issues to make it a user friendly experience.

First off, the motors.  Most people wanting to build a printer will rush to Ebay and buy the cheapest lot of 5 NEMA 17 sized motors.  These are the same people who don’t even know what NEMA 17 means.  Here’s a hint:  It is a form factor, not an electrical specification.  This means that NEMA 17 specifies the physical form of the motor’s case.  It does not dictate anything about the electrical current requirements, stepping angle, steps per revolution, etc.  All of these are “parameters” that affect the overall system, and they must be “plugged into” the software that runs on the controller board (aka firmware).


The same situation applies to heating elements, hot ends (the part the hot plastic comes out), temperature sensors, fans, end-stops (the little switches that tell the controller that your motor has moved the carriage into the 0 position).

Each and everyone of these are elements that must be hard coded into the device firmware.  There is no user-friendly machine-mounted menu option for these parameters.  In fact, depending on your other choices, you might not get an LCD screen at all (which is where the machine-mounted menu system is displayed).

I’m building this printer as a means to and end.  I need to experience it the “hard way” sothat I can design the “easy way”..

Here are some of my observations so far:

  • Nuts, Bolts, Screws – there are too many.
  • Settings buried in firmware – they should be easily accessible via software.
  • Wires – need to manage the vast pile of wires.  This means better end to end connectivity.  Perhaps using 4, 6 and 8 wire RJ-45 style connectors would make this a lot nicer to build.
  • There should be a “setup wizard” software that guides you through configuring the firmware for the first time. It should auto-detect that the printer has not been configured and guide the user through the process.  This could be a desktop application or available in the printer’s LCD controller (but not all have LCDs…)



Repairing a damaged surface mount resistor

Well, somehow I managed to damage a resistor that is connected to the ISP header (J5) on the expression’s motherboard.  This led to a confusing error message in AVR Studio when I tried to program the flash on the Atmel chip.

The error message said “Failed to connect to target.  Does the target have power?”

Referring to my previous image on the JTAG interface, I recognized this pin, VTRef, which is pin 2 on the connector:


Just to the right of the connector, off screen in the above image, is a tiny surface mount resistor.

I had carelessly plugged the ISP cable (which goes in the black connector in the bottom right above) into my AVR Dragon programmer’s JTAQ port!!!!  Argh, so this sent voltage back down to pin 2, which fried the resistor.  During inspection of the board when I could no longer program the code, I saw some brown residue next to that resistor.

Using the voltmeter when the machine powered on, I confirmed that I had 5 volts going into the resistor, and zero volts coming out.


Now I had to find a spare board with a similar sized resistor… and use my shaky hands to dismount it and re-solder it onto my machine’s motherboard.

So, once I removed the resistor and replaced with a similarly sized one, I tested the voltage going in and out, seeing that it was both 5v, I reconnected the AVR Dragon’s ISP cable (to the correct port this time!) I successfully read the chip and received no errors…. yayyyy!

FreeExpression Firmware Roadmap

Now that I have the base code working, and all the moving parts moving, I am planning the full firmware roadmap.  The original expression machine is a very capable machine but it is designed to be used with the manufacturer’s cartridges.  My ambition with this project is of course to break that cord and use the machine with open source software (Inkscape) in a user friendly manner.  Previous attempts by other people to use these machines with third party software have either been incredibly tedious, or resulted in litigation (yuck).

My approach is quite different.  I have decided to completely write new software that is installed onto the machine itself, erasing the manufacturer’s software (to avoiding copyright infringement) and implement my own grand design for the machine.


Let’s talk about the user controls on the machine:


There are three dials marked Speed, Size, Pressure.  These are convenient because while the software (Inkscape) can manage these as well through the Export/Plot interface, it seems logical to support this functionality through the dials.


The size dial is an interesting one.  In the original machine’s design,  you load a shape from a cartridge and then you use the size dial to resize it.  In this new paradigm, where you are using Inkscape, you simply would set your design size in Inkscape.  So the Size dial is kind of useless unless I implement some other feature (see below) that could make use of it.


The pressure dial is very useful, as it allows us to set the pressure in one of four (five??) increments.  This would tell the firmware to adjust the voltage going to the solenoid that pushes the knife head down.  This in turn controls how hard the solenoid “presses” on the knife.


Adjusting the speed of a cut can help with thicker materials that require more delicate handling, or with thinner materials that can handle faster cutting.  It makes sense to allow the user to adjust the speed before the cut begins. I’m not sure if it should adjust the speed during the cut….


The keypad has numerous keys that perform a wide range of functions.  Many of these keys are used to select a shape from the cartridge library.  Without the need for cartridges, there is a lot of keypad real estate that is going to be unused.

The main keys, A-B, 0-9, and some basic shapes (from Wingdings library) will allow the user to cut using a standard font (Comic Sans).

Direction keys

These keys allow you to position the cutting head over a specific area of your material

Stop key

This key will stop the cutting process completely and basically aborts your project, returning the machine to its home position and ejecting the mat.  There is no way to stop the incoming stream, so the machine will just have to ignore the remaining data and allow the internal buffers to clear out until it receives the final “end of job” HPGL command.

Cut key

There really is no current plan for this key.  Cutting is started at the computer.

Option keys

These keys are just to the right of the display and control things like multi-cut, portrait, mix n match, quantity, auto fill, fit to page and fit to length.  I’m not sure what possible use these can have in the future, but I’ll try to implement some of the options if they make sense.


The display works fine in my current firmware, so I will continue to use it for user input/output.  On the original expression, when a user selects a shape, the machine shows a small image of what they selected.  This will not be possible since the main goal of this project is to allow you to cut whatever you want, the code could not possibly interpret your image completely and display it.  So, the display will just be for menu prompts and confirmations.

Onboard memory

Since the machine has 512k bytes of on board memory storage, I have considered the option to allow the user to save their favorite projects and shapes into the memory, and allow them to easily retrieve them through the keypad or use the speed wheel to browse through the their custom shape library.  If this is implemented, then several of the option keys have meaning again, as well as the size wheel.

SD Card add on


Another interesting possibility is the addition of an SD card port at the cartridge port.  The cartridge port is ideally designed to allow expansion, and in fact the Atmel AVR control pins that are connected to the cartridge port are the very same pins that standard SD card readers use.  The feature would work like this:

User inserts an SD card, and the machine reads the list of files, giving them a menu to browse through them using the speed wheel.  Once a file is selected, they can have the option of storing it, or cutting it.  If they store it, it will be placed into the machine’s on-board permanent memory.  This is useful for those stars, squares, hearts, snowflakes that we use every day 🙂


Reverse engineering a printed circuit board

Reverse engineering things is a fun hobby.  It enables someone like myself who is intensely curious about all things and how they function to understand the design of things.

I started dabbling with electronics when I was in high school.  At the same time, I was learning programming, so I had eventually to choose.  I went the software engineer tract, but never really gave up on my love for electronics.  Unfortunately, I lacked in the math department, so sometimes thing are very difficult for me when it comes to theory.  Nothing can put me to sleep faster than a good book on pulse width modulation theory and math!

Anyway, when it comes to “reverse engineering”, the phrase alone can have all kinds of negative connotations.  Most people will attribute “hacking” and “reverse engineering” as things that evil people do for evil reasons.  Sure, there is that…. But then there is the positive side of it.  By reverse engineering things, you can identify weaknesses, or potential enhancements.  You can even re-purpose hardware, make it better, make it your own.

How do you reverse engineer things?  There are tons of Youtube videos on the subject.  For electronics, a good starting point is a basic understanding of electronic components and their relationship to other components.  You don’t need to be an Electronics Engineer to understand these things.  But you do need to know what a transistor does, or a capacitor, resistor, and how to identify integrated circuits, understand datasheets, and a few more basics that I’m forgetting to mention 🙂

A printed circuit board is basically a bunch of interconnecting lines that move electricity from point A to point B.  Or more accurately, from Part A to Part B.  They may be single sided, double sided (top/bottom) or for very complex systems, multi-layered.  For example, an iPhone 5 board has 16 layers!!

Luckily, the Cricut Expression is only a two sided board.  A minimum toolset will include a digital auto-ranging multimeter.  I use an Extech EX430.

For tracing the connections on a PCB, you need to use what some units call Diode test mode or on my unit it is on the Ohms mode, set the range to “audible”.  Whenever I touch a connection that is a closed circuit (the trace is connected at both ends with nothing in the middle) it will ‘beep’.  Depending on what I’m tracing, I typically start at the connector away from the CPU (in this case an Atmel ATMEGA1281), or I can start at the CPU pins and work outward.

Simple method of tracing the paths on a double layer circuit board involves taking a high resolution picture from a mounted camera at a fixed focal length. This is to ensure that when taking a picture of the top and bottom of the board the dimensions are as close as possible.

Open the two images in Photoshop or Gimp. Set the top image as the top layer and the bottom as the bottom layer. Delete the background layer if any.

In Gimp, you can convert a color to a transparency. I then used an eye dropper tool to pick a portion of the green area that would erase the bulk of the solder mask. I do this only for top layer.

Then set the opacity of your top layer to 50%.

Now, go to Channels and turn off the green channel.

You can size and align the top layer to the bottom layer as needed.PCB1 PCB2

With XRay Vision 🙂


Better contrast:


Now, we can see the traces on both layers of the board.  Using this information with the multimeter techniques, we can identify our traces and build a “reverse schematic” of sorts.  There are probably much more advanced and difficult techniques for this, but this is what worked for me on this project.