I've gone off the deep end: working on a filament winder

The Rocketry Forum

Help Support The Rocketry Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.

Scrapmaster87

Well-Known Member
Joined
May 7, 2019
Messages
221
Reaction score
301
Location
Southeast PA
Since a small challenge is never enough for me, I've decided to slap a pile of old and spare parts together into this proof of concept:



I'm simply using the latest open source marlin firmware on a Arduino 2560 mega with an old ramps 1.4 board off my 3D printer to run the g-code. The g-code itself is calculated in a google sheets spreadsheet. I just have to copy and paste the code column into notepad and save as .g-code.

This is first bit of code that was running correctly. The tube it's making is a 29mm mandrel wound with 0.24" wide filament at about a 70 degree wind angle. I have more features to add yet, but seeing this run has been truly satisfying.
 
Last edited:
Very cool! I would be interested to learn more about how you built it. What do you plan on doing with it, once running?
 
I have a 18mm tube just about right to use as a mandrel on this. I'm figuring on continuing to build this out to a working prototype vs. the testbed it is now.

First winds will be with spools of thread to show that my math's right. Next up would be fiberglass tow.

Ultimately I'll scale this up to replace my 1hp layup lathe built on a 2x12. That design is shaping up to be able to do 16" x 5ft right now.

IMG_20200611_212042.jpg
 
Update: Got some test winds in today!

I'm using regular thread here, which if you look closely you can some some of the defects I'm trying to resolve. I'm thinking part of the problem is stemming from using round thread instead of a flat ribbon (like how filament would be).

I'm not using arcs at the end of my travels, doing so would probably speed up the wind a little more and smooth out the wind spacing a little more. I'm hoping what I have here turns out to be good enough.

 
Last edited:
We program our winder to put an bit more wrap at the ends before it changes direction.
Builds up a bit of a "Dog Bone" shape, but yields more consistent wind angles.

Very useful devices, but be advised, lots of tweaking ahead for you. Hope you enjoy that. Good Luck.
 
We program our winder to put an bit more wrap at the ends before it changes direction.
Builds up a bit of a "Dog Bone" shape, but yields more consistent wind angles.

Very useful devices, but be advised, lots of tweaking ahead for you. Hope you enjoy that. Good Luck.
Fred, did you build your winder from scratch or, purchase an X-winder/similar kit?
 
Scrapmaster87

Ever think of wrapping your mandrel with masking tape, sticky side out, so it would grab the thread and help hold it in place?

Just a thought.

Roy
No I didn't think of that! I bet that would be a great fix for dry winding. My plans are however are to wind wet, so I don't think epoxy soaked filament will stick very well to tape. I have seen combs that are attached to the mandrel to hold the filament in place. I could 3d print some, but my guide loop will be farther away. If I can fix my issue in code, then I'm that much closer to a dial-a-tube setup.

Right now my improvement plans are:
1). Add circular interpolation (g2/g3) to smooth out direction changes.
2). Allow more that 100 circuits per layer pair so I can test the higher wind angles.
3). Go to another wind pattern. I'm using a 180/180-1n now, perhaps 240/240/240-1n.
 
We picked up one of the early X-winder kits. Not mine, one of my team-mates.
Then added a few options and some re-designed parts.
 
Wow, using G2/G3 codes for filament winding seems like a complicated way of coding it - not saying it's wrong, but just seems (to me) like it's doing it the hard way.

Scrap that, I now realise it was only for the ends coding. Interesting method though that I never really would have considered.

Troy
 
Last edited:
Wow, using G2/G3 codes for filament winding seems like a complicated way of coding it - not saying it's wrong, but just seems (to me) like it's doing it the hard way.

Scrap that, I now realise it was only for the ends coding. Interesting method though that I never really would have considered.

Troy
What other ways would there be to do it? In the firmware I basically have the mandrel set up as a linear y-axis. I just reset my position to zero at the end of every circuit.
 
What other ways would there be to do it? In the firmware I basically have the mandrel set up as a linear y-axis. I just reset my position to zero at the end of every circuit.

The way I was imagining was to just drive the linear X axis head back and forward along the mandrel with standard G1 type commands. Both its position and the angular position of the mandrel are obviously indexed. You have a “usable” area of the mandrel (1 G1 command) and a “to be discarded” region (2-4 G1 commands) at either end to both change directions and to use for indexing the layup position for the return pass. These discarded areas can be smaller diameter or whatever geometry to reduce tow wastage and to also assist mandrel adhesion for tensioning on the “usable” section.

These are my ideas coming from a complete novice to filament winding so I’m very interested to learn more from this thread.

Troy
 
The way I was imagining was to just drive the linear X axis head back and forward along the mandrel with standard G1 type commands. Both its position and the angular position of the mandrel are obviously indexed. You have a “usable” area of the mandrel (1 G1 command) and a “to be discarded” region (2-4 G1 commands) at either end to both change directions and to use for indexing the layup position for the return pass. These discarded areas can be smaller diameter or whatever geometry to reduce tow wastage and to also assist mandrel adhesion for tensioning on the “usable” section.

These are my ideas coming from a complete novice to filament winding so I’m very interested to learn more from this thread.

Troy
As of right now I'm doing exactly what you just said.

Screenshot_20210321-214902.png
 
Here's a teaser on this week's progress. The arc moves are working, though I have to get the math right so they're tangent to the traverse. I also have a big lookup table for the wind patterns. There's something funky going on with the tow indexing here that needs fixed.

PXL_20210324_042220638.jpg
 
So quick update to what's going on:

* Made some minor adjustments to config sheet to make it more like a setting menu.
* Figured out why my wind patterns are getting goofy: My indexing is not lining back up at the end of the circuit. This is now fixed and auto-calculates how much extra to run out to match the next index!
* Added warnings for when the skip count is too low (conflicts with the arc at the end of traverse).
* Added warnings for when sequential circuits lay adjacent. Broken right now as I'm not factoring in mandrel revolutions on the traverse. I foresee this being helpful for preventing the release paper/layer from getting bunched up.
* Up to 200 circuits per layer!

I still need to make a sequence to get subsequent layers to have their usable tube sections centered over each other. I also need to make the additional layers work, I've only been focusing on making the 1st layer work. Thankfully this is just a copy-paste and update references to fix.

I don't have a background in filament winding (nor programing or electrical engineering) so I'm literally inventing this as I go along. I do at least have a background in mechanical engineering and some machine design. I'm having to make up my own terminology/lingo in order to describe how this thing works.

For reference:
Circuit - Complete out and back sequence
Traverse - Movement of wind carriage
Start - How many circuits before laying an adjacent wind (think of regular screw as a single-start, a 4-start lead screw has 4 threads)
Index - Rotation of mandrel by 1 start times times skip count.
Skip count - How many starts to rotate mandrel by before next traverse (1= traverse back on next start, 2= traverse back on 2nd start)
Positive skip count - Wind leads adjacent wind around mandrel.
Negative skip count - Wind trails adjacent wind around mandrel.

Example: 3/-5 wind pattern: 3 circuits are required before an adjacent wind is made. At the ends of the traverse, the mandrel will index 5 starts before the next traverse. The filament will be laid trailing the adjacent wind in the direction of mandrel travel.

This video has been hugely helpful in reverse-engineering how winding works: .


Annotation 2021-03-30 131222.pngAnnotation 2021-03-30 131308.png
 
I present the first successful wind with the new logic. This is 18mm ID with a 4" usable section. Direction changes are using 5x mandrel radius to control slip. There are 93 circuits on a 3/5 wind pattern...which is actually a trailing pattern, not a leading one... The wind angle here is 44.8 degrees.

Next up is updating the 4 other available layers to the new logic and getting them to auto-center over each other. I may be slapping down some parchment paper and making a tube from Mom mom's old sewing thread before long!

PXL_20210401_005027730.jpgPXL_20210401_005158609.MP.jpgPXL_20210401_005940857.jpg
 
I watched a layup for a Boeing 787 in process and thought 'wow, glad I didn't have to design that' (but I bet it would have been a cool project). While they are doing things differently than you are, I think you're 100% on the right track. I 'feel like' a mandrel that was tapered on each end and ran out near the ends would keep the thread from creeping up, but I could totally be wrong.

I'm not sure how your traversing axis compares mechanically (belt vs. likely a lead-screw), but in my experience, correcting for mechanical feed differences in software is a tail chasing expreience. If you have super precise traverse mechanically, you're likely on your way to awesome, super repeatable product, but if not, you will make a lot of 85% acceptable product. IMO, if you find repeatability an issue, look at the traverse axis accuracy/repeatability, not software. Depending on how you value your time per hour, it might be best to drop the cash on hardware. . .

Love the project, BTW. Very cool to see what looks to be a well thought out machine and I wish you great success.

Sandy.
 
Well this red thread finally gets to retire after half a dozen rewinds. I mixed up 9cc of laminating epoxy and did my first wind! This was easily the least messy tube layup I've ever done. The base layer is a 45 degree wind with a 60 degree over top. The target usable length was set to 2". I blotted the surface with a paper towel to get rid of excess epoxy, I'm not going to waste my shrink tape on this.

1617414903787927743324697738743.jpg
 
Last edited:
I have tow on order and I'm printing parts for the spool payoff. Pictures of that are coming once it's built. It's simple, just a stand with an alignment roller to place by the headstock.

I played with some constant payoff speed designs, but right now it's more important to just make something that functions...

Anyway, I ran a bit of a test sequence tonight on my 1.5" mandrel, which so far so good! This design in theory should let me go up to a 6" x 48" tube.

PXL_20210422_033241592.jpg
 
Back
Top