Thursday, December 25, 2008

Extruder Design

After successful lashups, I've completed design for a "prototype" version. I have the materials, just need to construct.

In addition to minor fixes from the lashup, the main difference is use of an aluminum housing instead of the cement board. The hope is that the housing will dissipate the heat by operating as a large heatsink.

This extruder design aims to work towards eliminating the PTFE part. This version still uses the PTFE, but not as a structural element. Later, I hope to cool the inlet and avoid the PTFE.

Sunday, September 28, 2008

SVG SLices to avoid STL

An initial ( and promising ) version of my SolidWorks slicing macro is complete--
the macro slices the part and creates loops ( hopefully that coudld be imported into skeinforge directly), avoiding STL-hole hell.

Here was the test part:

The SVG that was created is machine-friendly, and is here:


(You will need Firefox, Opera, or an SVG viewer to view the file )

The SVG links in a sytlesheet and some javascript to render a layer paging control.

SVG is smart enough to understand how to fill loops, so it works quite nicely as a display format as well as a way to communicate path information.

Unfortunately after trying my scripts out on a couple of other parts, I found that there is a bug in Solidworks that has problems cutting solids through circular faces, which is very disappointing. I am working through that now.

In the meantime, perhaps this is a good start for folks interested to use for their efforts...

My code is released under a "do whatever you want with it" license-- enjoy!

Saturday, August 23, 2008

Filament Guide Rollers

Originally uploaded by thebluedirt

I had noted that nophead and others were lubricating the filament to keep friction down on the filament during feeding, and for my design wanted to come up with a better way.

These rollers are skate bearings with an aluminum ring pressed around them. The rings only took a few minutes to make from a piece of aluminum tubing on the lathe.

The rollers are mounted on a small stud of drill rod with an eccentric hole, so that they are adjustable by twisting the mounting stud and tightening the screw.

I tried designs that had 3 rollers and that had only 1. Based on some basic calculations, i'd computed that i'd need about 6-8 threads to engage to make ensure that the filament would buckle coming out before the threads would strip the ABS, so I was unlikley that 1 roller would work. That turned out to be the case-- 1 roller does not force enough thread contact to feed under worst case conditions. 3 was overkill, so 2 is what i ended up with.

This version is just a lashup, the rollers are too far from the exit at this point, but still the concept works very well.

I believe that the adapter rings could be rep-rapped also, and perhaps a semi circular profile could be used in that case. I did a v-groove because I could use a 90 degree lathe tool i already had and didnt want to grind a semi-circular profile tool...

Extruder Lashup

Originally uploaded by thebluedirt
This extruder is designed for higher-temperature operation than the RepRap design. It uses a 1/4" dia, 2" long cartridge heater for heat.

The holding block has a hole for the catridget heater, and holds the barrel via a clamping arrangement with the bolts at the top.

I wanted to operate at temperatures above what PTFE could handle, so I used a three-part extruder barrel:

The lower barel is brass, threaded on both ends to accept the acorn nozzle and the adapter.

The adapter is aluminum, with fins cut into it to maximize cooling

The entry end is stainless steel, and threads into the adapter.

The result is that the heat gradient over the entire barrel is enough to keep the entry point cool, while the brass part melts the plastic.

Friday, August 22, 2008

Extruder Control works..

Originally uploaded by thebluedirt
Though a very lazy way to take a screenshot, i've got th extruder control portion of the project working.

there's a pretty simple python hal user space driver installed communicating on the serial port, and a pyVCP plugin reading the temperature. I can also disable enable and set the temperature manually until i get the M-apps working.

One bonus goodie is that the board also has an IO pin ( parallel port ) for fault output-- if the extruder is not enabled, EMC will see a limit error and the lights that are green will be red...

Thursday, August 21, 2008

AS5040 Encoder

Originally uploaded by thebluedirt
Here's a Closeup of the AS5040 encoder on the motor.

The adapter to hold the magnet is nylon. This encoder is really overkill-- its 2000 count resolution per turn, and the motor is geared down 40:1, turning the feed screw with 18:1 lead.

The result is a very crazy 14.4 M counts per inch! The pic 18F4331 interrupt handler very happily keeps up with them all though

Controller board, v2

The second version of the controller board for cncFDM is complete. I already have a list of fixes that are required for version 3, but I limped this one along. (Yes, you can guess, the first version didn't go so well ).

I use one-sided boards so i can mill and drill them in one shot on the mill. Here's the eagle file:


And the resulting populated and connected board:


The firmware is written in C using a demo version of mikroC ( ) Quite a nice compiler.

I almost ran out of memory on the PIC18F4331, bit after some extensive optimization i finally fit it all in.

More on the firmware later

Basic Architecture

Another retro-active post, this one describes the overall system architecture I'm going with for the initial version of cncFDM:

Existing 3-axis mill, home-built.

machine controller, EMC2
--> stepper control for x,y,z axes
--> axis GUI, with pyVCP plugin for extruder monitoring and control
--> python hal user space driver to monitor and communicate with extruder

cncFDM toolhead
--> step/direction input so that motor motion is controlled like an axis (A) instead of spindle
--> serial interface for setting temperature,gains, and other parameters
--> PID control for temperature and motor position/speed/acceleration
--> extruder enable/fault bits for hardware communication with EMC
--> off-the-shelf cartridge heater for improved reliability
--> thermocouple for temperature feedback
--> Single board design ( if possible ) to keep things simple.

Toolhead firmware:

The toolhead firmware will be based on the following chips/solutions:
  • PIC 18F4331 . This version includes motor encoder feedback and PWM for driving the extruder head motor
  • MOC3031. Triac driver to control heater duty cycle
  • AS5040. Magnetic encoder for motor encoder board
  • MAX 6675. SPI-enabled thermocouple reading chip
  • LMD18200. 3A H-bridge driver. Bi-direcitonal control is important to allow the motor to reverse.
  • MAX3232. Serial Line Driver
  • 7805 and other supporting passives and misc.

Wednesday, August 20, 2008

Welcome to cncFDM!

My goal is to make an FDM (Fused Deposition Modeling ) toolhead that can be bolted onto a typical 3-axis cnc milling machine, and used to make rapid prototyped parts.

cncFDM Goal:

Build an FDM toolhead for a cnc machine, which:
  1. Allows interchanging a cncFDM toolhead with a traditional spindle on the same (3 or more axis ) cnc machine without mechanical rework ( reconfiguration of software is ok ).
  2. Uses standard 1/8" diameter ABS welding rod as input material.
  3. Keeps construction cost inexpensive
  4. Has good reliability. The heater shouldn't need rebuilding/replacing every 20 hours of runtime, for example. I'm willing to sacrifice more difficult construction to achive this goal.
  5. Leverages Gcode and other common cnc tools to save work. No need to re-write motion algorithms, acceleration profiles,etc etc, they are already available.
  6. Has accuracy deviating by no more than 0.010" on x and y axes, and 0.020" on z axis. This will require melt flow compensation and other techniques used by commercial vendors.

Assumptions and goals that contrast RepRap ( and are one of the main reasons I started this blog ):

  1. Line level power is ok, since cnc machines already have it available.
  2. ABS plastic is the main material, other materials that are more environmentally friendly can be accomodated but are not the focus
  3. Use existing tools that are commonly available, even if they are not GPL/free. For example, I do not care which solid modelling package is used to create the STL, as long as it works.
  4. It is ok to have parts that require a lathe or a mill to make. Of course, avoiding work is good, but "assemble with hand tools" is not all that important.

One other point I'll mention is that this is a problem that has been solved by many commerical vendors, most notably Stratsys. Their patent literature describes in some detail the many challenges ( and solutions, woo hoo! ) one might encounter along this journey.

Since I'm not intending to sell or in any way profit from this project, ( at best others may follow this path and construct one themself ), I do not have any problem learning from and employing the patented techniques that commercial vendors use.

Of course, the RepRap project is the best source of inspirational ideas :)

More later.