Mechanical Engineer, Submarine Veteran, UC Berkeley Student

Continuous Fiber Composites with a 3D printer

Problem

The goal of this project was to be able to print continuous composite parts with a modified 3D printer. While this project started as an idea I had for my course on composites, almost all the work was performed during the summer that followed.

Design Overview

The innovation of this system is that it lays up carbon fiber into the matrix material is a novel way. A rotational axis moves around the hot end’s nozzle and directs carbon fiber tow into the molten plastic. As the matrix material solidifies, the carbon fiber tow becomes fixed, allowing more tow to become entrained.

The base of this printer is an Ender 3 V2.

Parts were designed using SolidWorks.

Mechanical System Design

To accommodate a 110mm rotating axis around the nozzle, the entire hot end was lowered, and a new mount was designed to connect all parts. A nema stepper motor was attached to the back and a 3D printed spur gear was epoxied on. An internal gear that meshes with the spur gear is press fit into a bearing, which holds the spool of fiber. The fiber is directed from the spool with a section of PTFE tube that is curved to point the fiber next to the tip of the nozzle.

One driving goal for the mechanical design was to keep the rotational axis as small of a radius as possible. This would minimize the amount of print volume that was lost to accommodate the axis.

Almost all the parts for this were printed on my other 3D printer, except for various metric hardware.

The most challenging part of this build from a mechanical design perspective was the shape of the part cooling ducts. The rotating internal gear forces the fan to be much higher from the print surface than typical. The shape of the duct was driven by two 3D parametric curves.

Software

A series of MATLAB scripts were used to adapt gcode from a regular slicing software to add extra commands. The first of the scripts removed all comments from the gcode and split long printhead movements into linear distances of 5mm. The large movements were split because all positions in a line of gcode are completed at the same time. This would have meant that during a 100mm long movement, the rotational axis would have taken all 100mm to rotate, leaving much of the line to have misaligned fibers, even if it could have fully rotated in only a mm or two.

The next two of the MATLAB scripts function similarly to add commands for the rotational axis and extruder for new lines of gcode previously generated. The two scripts compare the current coordinates and future coordinates to determine its angle from X axis (rotational axis) and the length of the new movement.

Firmware

The stock main board for the printer could not support a new independent stepper motor and was replaced with a Duet 3 Mini 5+. The firmware was configured to include a new axis, with the new stepper motors datasheet specifications, and later had the steps calibrated to convert linear movement into rotational positions. Other firmware configuration changes included reducing the effective print area, modifying the homing function, and adding Wi-Fi settings.

Results

To test the print method, I made dog bones per ASTM D638-14 for tension testing on an Instron and also made cylindrical shells. The dog bones provided information on the breaking strength, dimensional accuracy, and print characteristics. The shells, printed with carbon fiber or copper wire, showed the shortcomings of the method because it was the most difficult shape for it to print.

Here is a (currently unpublished) research paper I wrote on it!