PET Bottles to Filament Machine (WIP)
by Combustion Powered Chicken in Workshop > 3D Printing
14912 Views, 19 Favorites, 0 Comments
PET Bottles to Filament Machine (WIP)
disclaimer: I could NOT get my bowden printer to reliably extrude this filament. I imagine a week or two of tinkering and/or direct drive extruder would correct this, but I had a deadline to meet for this prototype. If you make this, take note of my shortfalls and do not repeat my mistakes! I will update this page if I make any changes towards success, but for now this one is on the back-burner.
I have always been interested in turning waste into a worthy product, and with 3d printer filament becoming less available and more expensive, I look to my garbage can to find a free source of plastic. PET is very similar to the PETG used in filament- the only difference is lack of Glycol modifier to increase temperature crystallization occurs (at which it will jam your hotend). Turning bottles to filament isn't far-fetched as you'd think- take to youtube and you find that plenty of others have already done so. I used their inspiration and my cheapness to try and build such a machine with minimal parts purchasing. I took this as an opportunity to learn arduino IDE, as I had a knowledgeable teacher to lean on.
inspirations, sources (used ideas and/or code excerpts from these A+ sources)(they did not endorse my project):
- my first encounter to recycling PET bottles in similar fashion: https://youtu.be/GSBh77bjz_Q
- my first encounter to making it into filament this way: https://www.youtube.com/watch?v=N06FWr06iOI
- many ideas, including idea to pull manually and not use a gutted 3d printer as the "brain" of the machine. Captions at timestamp reveals some critical information regarding temperatures: https://youtu.be/Eecbdb0bQWQ?t=258
- my first encounter with idea to inflate+heat bottles for smoothing, and bearings as cutting tool: https://youtu.be/1_BWXhT5Y-I
- very much nicer build I regret not finding until I was already committed! https://www.youtube.com/watch?v=2xjRsxx77Us
- gears: https://github.com/chrisspen/gears (english translation of https://www.thingiverse.com/thing:1604369)
- thermistor code, concept: https://www.circuitbasics.com/arduino-thermistor-temperature-sensor-tutorial/
- thermistor table values: https://www.makeralot.com/download/Reprap-Hotend-Thermistor-NTC-3950-100K.pdf
- thermistor calculator: https://www.thinksrs.com/downloads/programs/therm%20calc/ntccalibrator/ntccalculator.html
- a4988 driver stuff: https://www.youtube.com/watch?v=0qwrnUeSpYQ
- arduino potentiometer stuff: https://docs.arduino.cc/learn/electronics/potentiometer-basics
Supplies
Tools used:
- Soldering iron
- Hot air gun (1500W)
- screwdrivers
- drill
- phillips bit
- #52 twist drill
- 90 degree spot drill/chamfer tool
- wrenches, sockets
- flush-cuts
- pliers
- Laptop w/ arduino IDE, cura, openSCAD, and cad package of choice
- 3d printer
- lathe (might be able to get away with hand-files and drill)
- air compressor
- caulk gun
- m6 nut (used to hold nozzle in lathe, not consumed)
- gloves, safety glasses, ear pro
Materials used:
- arduino nano
- 5vdc relay (load side up to 250vac, but signal side required to be 5vdc as arduino runs on 5vdc)
- ntc 3950 100k thermistor (absolute match)
- 130k resistor (try to get near 100k & adjust code if substituting)
- trim potentiometer
- 115vac to 12vdc 3A power supply
- a4988 stepper driver module
- jumper wires (aka dupont connectors)
- 12v 35w 3d printer heater cartridge
- matching 3d printer heater block
- matching 3d printer brass nozzle (any orifice size)
- nema-17 stepper
- 47 microfarad capacitor
- wooden plank for base
- 3d printer filament to make parts- PLA will do
- 4* 608zz bearings
- 10-12 wood screws
- 5/16" * 5.25" hex-heat bolts *2 (all-thread)
- 5/16" nylon lock nut * 6
- 5/16" flat washer * 6
- 5/16" * 1.25" hex-head bolt *1
- 12"+ long steel rod * 1
- 6-32 machine screw+nuts * 2
- #8 * 1" machine screw *6
- #8 * 1.25" machine screw * 2
- #8 nuts * 4
- corner brackets (STEEL) * 2
- flat bracket (STEEL) * 1
- steel craft wire or weld wire * 12 inches
- heat shrink tubing assortment * 1
- shrader valve * (as many types of bottle you want to recycle)
- silicone caulk
- a lot of clean, empty bottles
- spent 3d printer spool
Wiring, Coding
Do this first, and not all at once! Add one system at a time and troubleshoot it before going to next system. If you add everything at once and try to figure out why it doesn't work, you will fail as there are too many variables to chase down! Doing this before all the components are nailed down makes wiring and re-wiring so much easier.
I started with the blink.ino example included in arduino IDE. Gave me a good idea of how arduino works:
- the variable declarations. At top of code below the comment/title block, variables can be declared
- setup: declare pins as input/output, assign variables to them, or any other code to run only once upon power-on
- loop: arduino will read this section line by line, over and over, until powered off. All code executes in order and only one at a time.
Blink was a good jumping off point as it also sends signal to pin d13 on the nano. A relay requires such a signal to trigger a change in its state. Do not be like me and try to run a 12vdc relay off a 5vdc arduino. An entire week was lost to that mistake, and once I had the right hardware I could see blink triggering the relay when fed high signal from d13.
With blink and relay figured out I ran, next to figure out how to read thermistor which is a resistor whose resistance value changes depending on its temperature. Arduino can best read this by seeing how much of a voltage drop occurs across a short-circuit from V+ to thermistor to GND, but another resistor must be in the path to avoid allowing too much current through. I also took the advice of the circuitbasics tutorial and used 3.3V+ as my source for this measurement, which required connecting 3.3V+ to the "aref" pin and using command "analogReference(External);" in the setup. This tells the arduino that the voltage its analog pins is reading has a max value of 3.3V+. An analogRead on an analog pin returns a value between 0 and 1023 where 1023 is the full aref voltage and 0 is GND. There is a complicated little bit of math lifted from the circuitbasics tutorial which converts the voltage at the thermistor pin into a temperature in degrees C. Thanks circuitbasics!
Using this temperature I created an If logic which turns on the relay if temp is below user setpoint, and turns it off if temp is above the setpoint or reads negative (something has gone wrong in that case). This heater control is known as bang-bang and is the worst control scheme for heaters. It can barely stay within a 15C window as it overshoots. I only used bang-bang as I knew no better and I already had the components. I read into PID after I had already committed too much time to the project, and hearing electrical engineers bring it up at work. It's all over the place in industry! If you are to build this or any heating machine, use a mosfet or bipolar junction transistor as your "relay" and PID logic to control it. PID stands for proportional, integral, derivative. It uses these 3 values to "ease" into the setpoint without overshooting, and then hold that value. PID is what your 3d printer uses.
Then I tried stepper, with the backup of a DC motor ready if I failed. Stepper was choice as I have a lot of orphaned nema 17's and 34's, and steppers tend to have more torque at low speed than a DC motor. This allows for less gear ratio in the transmission. I hook up the a4988 module leftover from past 3d printers and code it up to do a step then a delay. Varying this delay increases the time between steps, approximating a speed control. Hooking up a potentiometer allows user-control of this delay, and replacing the delay in stepper code with the thermistor sampling loop (and using the pot value as the delay between samples) allows for minimal skipping as the motor steps. Ideally, you would use a loop utilizing "millis" instead of delay and that would dramatically reduce the vibration seen in my prototype and make a consistent temperature read code. Yet another tool I discovered only after commitment to this design. Finally, a filter capacitor is attached between the 12V rails to help smooth out the voltage dips & bumps caused by stepper.
Next was speed control. At first I attempted a rotary encoder but it was very much simpler to use a trim-potentiometer which I just happened to have spare. Pot is as simple as GND, signal to analog input pin, and +3.3V (because we set aref to 3.3v earlier, and only one aref pin available). Turning the pot varies the signal between 0 and 1023. Dividing this by 100 allows a range of 1-10x stepper speed. Adding 1 prevents a value of 0 from slipping into the delay, which is necessary to allow for time between the thermistor samples and get a more accurate thermistor read. This extra 1 means the stepper will never completely stop turning which is annoying for starting a pull. Again, millis would have been a better tool for time-keeping.
Finally, I use serial monitor to read the potentiometer value (stand-in for stepper speed) and the measured temperature. If you went further with this design you might incorporate an LCD to display at least the temperature. Well beyond my current skill! Changing temperature set-point is not necessary so other interfaces not needed.
3d Printed Parts
I quickly designed some parts that were to hold up a repurposed 3d printer filament spool, allow it to spin freely, and drive it ~1 to ~10 rpm. My counting of the revolutions of my stepper yielded a reasonable 12:100 gear ratio to accomplish this, and I chose to use an openSCAD gear generator which you should definitely try out. Very talented people made it! I chose to generate a herringbone gear set as the axial thrust is zero, except when the gears are out of axial alignment in which case it "walks" back to alignment. Also it provides more contact area between gears. Since I am using 3d printed gears I do not need to worry about cutting the complicated geometry of herringbone gears!
I had one change of heart after printing and that was the 5/16" bolts which seat the stepper's gear against the spool gear. They were too hard to turn in the tight space after assembly, so I melted in some 6-32 machine screws+nuts in their place. You can leave the 5/16" in place if you don't plan on disassembly and re-assembly many times as I did.
I used all IC3D-branded PLA on a voron v2.1 to make these as it prints very fast and is suitable to indoor, low-temperature applications seen by these parts. Also one of the stiffest filaments I have. IC3D is made in USA, support your quality local businesses!
Slicer, Base Board, Rod
Slicing is the downfall of my entire project. My slicer jams a lot and does not always cut a consistent strip. This inconsistent strip causes great friction in bowden tube and leads to inconsistent extrusion or jams. I tried to mimic what I saw in others' filament projects as it looked nice, but really I should have stuck to the basic tool invented by youtuber "Advoko Makes". If I make changes to this project posting anytime soon it will be this component. DO NOT do what I did.
What I did was to take 2x 608zz bearings and shave the outer housing down in the axial direction, using a lathe. I only took off enough to leave a sharp edge. The rubber seals did not take well to the lathe bit so these bearings now accept the risks of a balls-out configuration. Any dust from the mechanism or environment will get into here and risk problems. However, I have a 25lbs bucket of salvaged 608zz bearings awaiting a second life, they really are cheap and ubiquitous!
If you do this project, do use a different strip cutting mechanism. Even something like Advoko's tool linked in the introduction is miles better than mine. I will not even bother to draw the scrap plastics I used to mount the bearings- they are going to the trash as soon as I am done publishing this page! Welding wire was used to hold the mounting sturdy to the vertical rod which the bottles ride on while being cut. It is a fine substitute for craft wire or mechanic's wire and all are great at bracing your unexpectedly flimsy projects! I find it meshes with the "made of garbage" aesthetic of my machines.
For a base I used whatever wood I had left over from other projects- a 1x8 pine of the most warped quality. Do not go shopping for plywood in USA right now, you will regret it! Wood is a fantastic material as it is was cheap, lightweight, stiff, non-conductive, and easy to work. Also it grows on trees. After seeing the $89/sheet plywood price- an alternative I considered was steel plate as it is stiff enough to withstand the pulling forces of the machine without crumpling.
The rod is also a mystery, approximately 3/8" diameter steel, painted, 3' long. I drilled a 3/8" hole all the way through the base board and secured the rod with hot glue. Its purpose is to act as an axle for the bottles to spin on as they are sliced- and not bend. It needs to be significantly longer than your longest bottle to avoid bottles hopping off mid-slice.
Electronics were attached with either hot-glue or double-stick tape. As I want to reuse them in other projects later.
3d printed parts are secured with wood screws through pre-drilled holes. Whatever reasonably sized screws you got. I think a few of mine were drywall and sheet metal screws, all in the name of reusing scrap parts!
Drilling and Mounting Hotend
Find your most worn-out, clogged, ruined nozzle. Fit it in an M6 nut to protect its threads as you clamp it down in the 3-jaw, then blow it out with a #52 twist drill (approximately 1.63mm- close enough to 1.75mm filament goal). Now spin it around and give it the deepest countersink you ever cut, make it practically a filament funnel! You've got a filament extruder now, and to mount it you're gonna want to use some steel corner brackets, bolts, and wires. I clamped down on it with the corner brackets, then loosened it up to slip in some more steel wire- to minimize surface contact and thus heat transfer to the corner brackets. Be warned, they still get hot enough to burn the fingers even with this measure. Gloves are a must when operating this project.
Bottle Prep
first, you need to drill undersize holes in the caps of your bottles and insert a schrader valve, then silicone seal it. Make sure the valve is held tight mechanically BEFORE adding silicone caulk, which is not an adhesive and will NOT secure the valve under pressure.
Next, add some air to the bottle. Keep it under 60psi. You will get a feel for how much air to add after doing a few.
Now add some heat using a hot air gun as you turn the bottle. Be very careful not to burst it. The labels will shrivel up and peel off so easily at this step, no reason to bother removal earlier Remove the heat once you see the ridges smooth out.
DO NOT FORGET TO RELEASE PRESSURE BEFORE DECAPPING! Using something like a T-handle is quick and easy!
Even skipping the manual removal of labels, each bottle takes me approximately 2 minutes at this stage, cap off to cap off. If each 16oz bottle provides 10g of filament (as measured by my tests) then it takes 3.33 man-hours per kg of filament, at this step ALONE. This absolutely fails my design criteria of 1 man-hour per kg, and no more than 2 hrs/kg. It might make sense with larger bottles but my feedstock is the small 16oz(0.5L) water bottles from landfill-bound trash at rural workplace (no local recycling). As someone who works 40-60 hours per week and attends night school, I think I will be shelving this design for a more automated approach in the future. I do still fancy the concept of trash to filament and have some other ideas to pursue- now armed with arduino.
Pulling Strings
First off, you need to cut the bottom off the bottle.
Next, start with scissors a very tapered strip such that it can fit all the way through the extruder and peek out the other side.
Then place it on the rod, and feed through the slicer mechanism. Pull with pliers and wear gloves, the plastic strip is sharp and is definitely capable of inducing emergency room visits. I learned quickly after cuts and burns on this device. If your slicing mechanism is refined unlike mine, you can skip the manual pulling and let the stepper pull it for you, at the same time as extrusion.
Now, with heater at set-point, push the taper into the extruder and grab it as it first peeks out of the nozzle using pliers. Very hot, don't slip! Now pull until you have enough to insert into one of the filament holes on your reclaimed spool. Tie it in a knot, insert a screw, do whatever makes sense to secure the end to the spool as the stepper starts to tension it. Once everything is pulling smooth, you can turn up the stepper speed. It can go quite fast for such a large extrusion- since it is not melting the plastic only softening it.
String!
Hoorah for string! I was so happy to see this. This was destined for burial in a dump and now it at least resembles something useful!
Tragedy
The inconsistent shape of the string caused jamming in my bowden extruder setup. I imagine more modern direct drive extruder setup would alleviate much of this, but I am stuck on voron 2.1 until I muster the courage to disassemble my daily driver printer for weeks or months-long overhaul.
I bet a better slicer design would alleviate this problem too. If I dedicate any more time to this machine design I will try that first.
After Thoughts
I put this out there as an assignment for a class, but also to share with you what worked or did not work for me. Do NOT replicate the things which did not work! This is my biggest concern about publishing: someone follows the same dead-end paths as I!
Hopefully you can see some component which fits your unrelated project or you improve upon this one. There is a lot of progress made on these machines by a dozen or more youtubers but I saw this site lacking. I like the format and contests here! It's like grabCAD but less focused on modelling.
I'm glad the print failed because I got to keep the remaining filament to admire at my desk. What a neat thing: Value-added trash... well almost.
Big takeaways:
- get to upgrading the voron to 2.4!
- simple is better sometimes (Advoko's functional slicer design vs this fancy one)
- arduino is not as difficult as I thought. Major personal success in learning the basics of this tool, I find it difficult to sleep at times when I am thinking applications to other real-world problems I've encountered.
- This is still an option in the event of filament supply shortage. I doubt there will ever be a discarded bottle supply shortage
Future of this project:
- Implement Advoko's slicer design and slice some bottles into filament- unlikely as the bottle prep step takes unacceptably long in my opinion, new slicer won't solve that. I could buy multiple kg of nicer factory recycled filament if I worked some OT instead.
- Precious plastics style shredder + granule extruder with diameter sensor? Used to seem unreachable for me but now I've access to a CNC plasma table, a scrap pile with some very powerful motors w/ gearboxes, and can kludge my way through arduino. This would eliminate a lot of manual prep (labels float on water, while PET sinks), and open feedstock options up. Might even recycle failed/unwanted prints!
- I want to try some other bottles in it before reclaiming the components- namely HDPE. I know of a large local source of post-consumer HDPE waste and would like to investigate its properties as a recycled filament before committing any time to that pursuit.
- One of you readers improves upon it! Hopefully you have more time than I, and can utilize some more ideal feedstock.