Thursday, August 21, 2008

AS5040 Encoder


IMG_0551
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:

IMG_0561

And the resulting populated and connected board:

IMG_0559

The firmware is written in C using a demo version of mikroC (http://www.mikroe.com/en/compilers/mikroc/pic/ ) 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.