Zachary Liu's Portfolio

Zachary Liu's PortfolioZachary Liu's PortfolioZachary Liu's PortfolioZachary Liu's Portfolio
  • HOME
  • ABOUT ME
  • PROJECTS
    • CNC CFRP Filament Winder
    • Bimotal Elevate Dyno V3
    • Head-Aid Crash Sensor
    • Custom Bicycle Dropouts
    • The Clipclick

Zachary Liu's Portfolio

Zachary Liu's PortfolioZachary Liu's PortfolioZachary Liu's Portfolio
  • HOME
  • ABOUT ME
  • PROJECTS
    • CNC CFRP Filament Winder
    • Bimotal Elevate Dyno V3
    • Head-Aid Crash Sensor
    • Custom Bicycle Dropouts
    • The Clipclick

CNC Carbon Fiber Filament Winder

Controlled and Repeatable CF Tube Manufacturing for Bicycles and more!

What Does It Do?

- Stepper motors controlled by an Arduino and GCODE wrap a single strand of 12k carbon fiber tow around a mandrel.

- Carbon tow goes through a series of rollers to maintain tension and pass through a resin bath.

- After wrapping concludes, wrapped tube can be cured with any conventional CFRP method (heat shrink tape, vacuum bag, external molds, etc.)


Some Notes:

- I was project lead with one other co-lead and managed a team of 6, but I did not design all individual parts myself.

- I was responsible for the organization and CAD management of the top level tube winder assembly.

- All designs shown in detail (ex. detail views, cross sections) in this page were designed by me.

terminology and motion

- Gantry moves along the linear axis, driven by one stepper motor.

- Tow head rotates to ensure a smooth dispense of carbon tow, controlled by a second stepper motor.

- Rotational axis rotates the mandrel, this is where the tow is dispensed on to. Controlled by a third stepper motor

DESIGN

Preliminary Calculations for STepper Motors

Linear Axis

Rough hand calculations to make informed decisions on what stepper motors to purchase for the project. Needed to ensure the purchased stepper motors could meet both the maximum torque specs and RPM requirements.

For the Linear Axis, 12.08N/cm @ 826RPM is required.

Rotational Axis

Similar calculations but for conditions experienced by the rotational axis stepper motor. 

For the Rotational Axis, 18.73N/cm @ 278RPM is required. Between the rotational and linear axes, I chose a different stepper motor due to the difference in required RPM and torque.

design progress

Design started with setting basic dimensions of the frame, as well as determining the maximum size tube that could be manufactured. In the end, the base frame was decided to be 1000mm x 500mm and can wind a mandrel of ~850mm length and 100mm diameter.

A dual-rail linear axis design was decided on early. This design allows for weight to be evenly distributed between the two rails and reduce belt-slip inducing wobble during gantry movement. It also allows for a second stepper motor to be retro-fitted to work in parallel with the original in case of insufficient torque or modifications that increase the mass of the gantry.

Updated gantry assembly in context of base frame and linear axis rails.

Cross-section of the gantry assembly. Carbon fiber tow unwinds from the spool, passes through a series of rollers to tension, through a resin bath to impregnate tow with resin, and finally out of the tow head. Gantry slides on linear axis rails with two V-slot gantry assemblies (purchased). Tow head rotates with a GT2 belt drive and stepper motor.

Resin bath detail. Designed for a disposable 100mL measuring dish to hold resin, meaning that the whole bath does not have to be reprinted with each use. Resin bath "cap" clamps measuring dish in place and has an internal channel for the tow to pass through, scraping off excess resin.

Updated Tube Winder assembly with rotational axis assemblies and all hardware.

Rotational axis motor mount assembly detail. Stepper motor drives a rotating shaft with a 3d printed chuck to hold mandrel via GT2 belt drive. 

Rotational axis motor mount cross-section. A M12 shaft passes through 2 press-fit bearings and whole shaft assembly rotates as one piece, driven by a stepper motor and GT2 belt drive.

completed tube winder assembly in cad

MANUFACTURING AND ASSEMBLY

Most custom-designed parts were designed to be 3D printed. Over the course of two weeks, myself and my co-lead printed all of the parts on our personal printers.

While parts were 3D printing, we calibrated and set up the stepper motors used for the winder. All 3 motors connect to a CNC shield and Arduino UNO running grbl firmware. With this setup, we can send GCODE through a computer program (We used UGS - Universal GCODE Sender) to control the winder.

Rollers coming into contact with the carbon tow were covered in teflon tape to minimize tow breakage.

The aluminum extrusion frame and linear axis rails were assembled and fit perfectly! Great effort was taken to ensure that the base frame was square and level. Effort was also spent to ensure that the linear axis rails were parallel so as to not restrict gantry motion.

After a few work sessions in the basement of Hesse Hall, the winder was starting to take shape! Next, out to our garage to perform final assembly and get this thing running.

GCODE generation

In the down time before final assembly in our garage, I created  Google spreadsheet with built in functions to automatically generate GCODE from a few input parameters (Tube length, Tube diameter, wrap angle, and number of layers).


These calculations are based on a calibration of:

1mm travel in GCODE = 1mm travel in the linear axis

1mm travel in GCODE = 1 degree of rotation in rotational and tow head axes

Axes were also chosen to represent each of the three stepper motors:
X axis (in GCODE) chosen to denote linear axis travel

Y axis (in GCODE) chosen to denote rotational axis rotation

Z axis (in GCODE) chosen to denote tow head rotation


These calibrations will be performed in final assembly before the first test run.

Final Assembly and first runs!

One of the first steps was to run a dry tow path to make sure that the tow was routed as intended. 

Motors were then calibrated to the aforementioned parameters:

1mm GCODE travel = 1mm linear axis travel

1mm GCODE travel = 1 degree of rotation for rotational axis & tow head head

X axis (in GCODE) chosen to denote linear axis travel

Y axis (in GCODE) chosen to denote rotational axis rotation

Z axis (in GCODE) chosen to denote tow head rotation

After calibration, the first dry run was ready to go! To avoid wasting expensive carbon tow and resin, we ran the winder (with same GCODE as intended for carbon fiber) with curling ribbon to test it out. We did encounter some issues with ribbon slippage, but the rest of the winding ran incredibly smoothly. This gave us confidence to proceed with our first wet layup as slippage would be minimized with resin binding things together.

The first run went beautifully! The winder performed exactly as intended and laid a thick tow onto the mandrel. There are a few minor issues to resolve, such as slippage of the tow and GCODE errors leading to slightly imperfect wrapping. Nonetheless, these issues are process issues, not hardware issues and I am incredibly pleased by the winders' performance!


For the mandrel, PVC pipe with a layer of parchment paper was used. The parchment forms a barrier against resin and PVC provides structure.

PROCESS DIALED IN!

6 Tubes in 1 Session!

After some more trial and error, our process was finally dialed in. We made these 6 tubes all in one afternoon! The above tubes vary in both fiber wrapping angle and wall thickness. 


The top two tubes are made with a fiber wrapping angle of 60 degrees, and wall thicknesses of 1.6 and 0.8mm respectively. The middle two are at 45 degrees, with the same two wall thicknesses. And finally, the bottom two are at 30 degrees.

Testing

Tension

Using machined end plugs, the tubes were pulled in tension to failure to investigate the relationship between fiber wrapping angle and tensile strength.

Bending

Similarly, the tubes were tested using a custom fixture and 3-point bend test to determine which fiber orientation produced the strongest tubes.

Custom tube geometry and rapid prototyping

With PVC pipes, we were limited to standard circular tubes at pre-defined diameters. However, after experimenting and dialing in a process, we are able to use PVA, a 3D printing material normally meant for dissolvable supports to create mandrels. This allowed us to rapidly prototype non-standard tube geometries that could be easily dissolved out after the composite was cured.

The resulting tubes had an extremely well controlled inner diameter which was perfect for the next phase of this project...

MAKING A BIKE!!!

Using the tube winder and processes we dialed in along the way, we successfully designed and wound tubes for a Bike Builders of Berkeley special: the club's first lugged carbon fiber downhill mountain bike. With learnings about tensile and bending strength from our Instron testing, the frame designers were able to choose wall thicknesses and wrapping angles to optimize their design.

Rear triangle fit check at the club's garage.

A deconstructed bike: filament wound carbon fiber tubes, 3D printed aluminum lugs, and blood/sweat/tears.

Presenting the BBB DH 1.91

Of course, it's Oski approved

Copyright © 2025 Zachary Liu - All Rights Reserved.


Powered by

This website uses cookies.

We use cookies to analyze website traffic and optimize your website experience. By accepting our use of cookies, your data will be aggregated with all other user data.

Accept