I've been looking at a lot of similar projects lately, thinking about doing this exact sort of thing but knowing people way smarter than I am have already figured out the hard parts. This is, by far, the most straight forward, simple, and complete design I've seen. Most of the other machines I've seen only focus on cutting the bottle into strips but not spooling, and not modifying the strips into print-ready filament. I've looked for an update on this project and don't see one, but I wonder if it's possible to add the ability to splice bottles together instead of trying to stop and start a print or add filament when it runs out. PET from recycled bottles makes some of the most interesting prints, I really like the look, and it'd be super keen ta be able to wind a full Kg or two of filament. I've already grabbed your download and look forward to starting this build on my own. At my usual work pace, I'll be done before the next half-decade is done.
No shame in adapting your models to print in multiple pieces, so you can distribute your filament accordingly. The clear filament with a cool infill pattern printed as a flat panel would be really fun to play with. Love how this project turned out!
Drive the motor from an interrupt instead of the normal loop. That way you can do less critical stuff like display update in the loop and still have the motor driven at perfect timing. Does require some care for communication between both parts though ...
I tried this but couldn't get better results, even with an interrupt routine the Arduino still stopped pulsing the motor for periods of time when the display was being updated.
Nice project! If you pre-cut the bottles, you could try splicing/melting the ends together to get a longer filament output, if that would fit through the hot end.
I see some people have had success with splicing the ends of two lengths of filament, I tried this a few times but didn't get a reliable bond. I'll keep working on it though.
only 20-40g of filament will get from one bottle..... for 1kg of filament it needs to be in 30-50 parts ( i.e 30-50 cuts ..... will it affect printing ? )
A beautiful and elegant design!!! Any reason that the reel is so far from the hot end? Is that just for uniform winding? Wondering if the could be closer to make the whole setup more compact.
Yes it is just to reduce the angle that the filament leaves the hotend so that it winds onto the reel correctly. You could make it more compact with a small deflection/guide wheel between them.
There is a video of joining filament before pultrusion by "3d_olympics" but I have my doubts for longevity of the joint after respooling and the inconsistency between filaments. Probably better after pultrusion like you say.@@MichaelKlements
why does it say 'thermistor' does not name a type; did you mean 'register'? when i have the libreary installed and typed it like ir should any help plz am on the edge of a breakdown
Please tell me how do you send the STEP signal to the driver? I assembled the circuit and filled in the program, but when the engine is turned on, it does not move (5 volts are supplied to the dir pin, and a voltage of about 2.4 volts appears on the STEP pin, but I do not see any pulsations? Please help me! I've already spent a lot of time and effort on this project, but I can't get it started.
The step signal is generate by turning a digital pin on and off (HIGH then LOW) with a short delay between them. What are you using to measure the pulses on the STEP pin? You should definitely be able to see 5V pulses on an oscilloscope. If you watch my video on the controller design you'll see the pulses on my oscilloscope when I'm fault finding the motor issues - ua-cam.com/video/43kFDSPJl6w/v-deo.html
@@MichaelKlements When I turn on the board at the arduino output (pin 7, STEP signal), I get a value of 2.5 volts instead of 5 volts and I can't understand why there is such a voltage drop.But there is a frequency change on the oscilloscope. As far as I understand, 2.5 volts corresponds to a logical unit. The direction signal (DIR) is also present (5 volts), but the motor is not moving. I turned on the board without a heater and a thermistor, maybe I'm wrong not to connect them? And that's why the engine is not working. In the first part of the video, you have a heater and a thermistor connected when you check the engine, but in the second part, the engine works without a heater and a thermistor. This leads me to a dead end. What am I doing wrong?
@@MichaelKlements I tried to use the Arduino nano (I changed A2 to A6 in the program, as well as A4 and A5 I took from the board (an additional four-pin pad (D10, D11, A0, A1) next to the Arduino) and the Arduino pro mini, but the situation with the D7 (step) output is the same, I get a 2.5 signal a volt instead of 5 volts.
It depends on what you are using to measure the signal - that is why I asked in my original reply. The step pin is constantly changing between 0V and 5V, multimeters will take the average over a period of time and that's why they will display 2.5V. The direction pin stays at 5V so it is displayed as 5V on a multimeter. You need an oscilloscope to actually see that the pulses are correct. It sounds like your motor driver is not set up or wired correctly.
@@MichaelKlements I checked the STEP signal on the oscilloscope, the values match. Thanks for the advice. But the oscilloscope shows periodic signal skips. As I understand it, this is the problem that you are talking about in the video, related to updating the screen. Perhaps to eliminate it, you need to use two independent timers that do not depend on each other!?
Hi! How fast is the stepper motor? And, how much filament can it produce while in that specific speed? example, for 1 minute, how much filament does it produced? Thank you!
By adjusting the height of the cutting bearings with spacers/washers. A servo adjustment would be great but it has to be very rigid to keep the cut height consistent.
Very good project. Great to see it work. As other commenters have suggested, how can you splice the strip at the cutter end to make longer continuous filament; OR can you make a filament splicer to join short lengths of filament after production?
Yes, I'll definitely be updating them. I've done the adjustments on the cases based on 3D models, I just want to test them out with an actual Pi 5 before making them available.
I think it would need to be very close to the hot end to do this, the filament hardens about 2-3cm from the tip of the nozzle. The main reason the reel is so far is to improve coiling onto it.
Hi Micheal. I have been playing around with some AtTiny85 mcu’s dividing the various components of a PID controller between two AtTinys. I was wondering if you might try off loading the actual timing of the stepping pulses to an AtTiny and all you have to do is send it start/stop and speed data as desired. The motor on/off signal could come from the ardunio to the motor controller. The AtTiny only has 6 gpio pins, but it can do anything an arduino can do. Communication between the Arduino and AtTiny can be software serial, I2C, or SPI. Alternatively, there are number of interrupts on the arduinos that are timer driven. You might try using a timer interrupt to handle the step pulses instead of relying on the loop() function of the sketch(I’m assuming that is what you are doing). That way the stepper gets serviced on time every time and won’t be interrupted by the periodic updating of the display. Interesting project and your engineering of the device is excellent.
Yes, this solution would definitely solve the problem - it just seems like a waste to have two microcontrollers on one board. It might be a job for a microcontroller with two processing cores that supports simultaneous tasks. I tried the Arduino's interrupts in a few different ways but they either resulted in no change to the motor's behaviour or they resulted in the motor running smoothly but the display being corrupted every refresh. I think they both require quite precise timing and are sensitive to changes.
use freertos to make multitreading in you code, if you use an esp32 you have two nucles in the processor, you can atualize the display and control the motor at the same time.
I want to try to build one using an esp32, the design step files are free, where can I get them so I don't start from scratch? Quiero intentar construir uno usando un esp32, los archivos step del diseño son libres, donde los puedo conseguir para no partir de cero
Can I use another drive 17HS4401S-PG27 instead of 17HS15-1684S-PG27. I can alter the 3D model to fit the desired dimensions, I am more interested in parametric characteristics.
I can't find a full datasheet for the drive you've linked but from the information on google it looks like it has slightly higher holding torque (which is good) and a higher gear ratio, so will just turn about 4 times slower ( itmay be a problem to get more pulses from the Arduino to speed it up).
Nice but why not use easily accessible hardware like m3 screws instead of m2.5 and geared stepper instead of easy to source non geared stepper. Lots of people are going to have to order extra hardware that’s going to go unused 🤷🏻♀️
Most of the others I've seen online use an old 3D printer or very common printer parts to build them so I wanted to try make this one more "custom". The geared stepper motor is a must in this design, a non-geared motor won't have enough torque to drive the reel and you'd need a massive pulley to get the equivalent ratio from a belt drive. The other's I've seen all use 3D printed gears, I'm not sure how long these would last but you could give them a go if you don't want to get a geared motor.
I'm in California and a 2 liter bottle is worth 10 cent deposit. Is it even cost effective over say a $10-14 Kg of filament. I'll have to weigh an empty bottle:-)
When recording, the following error appears even though file or directory has been added C:\Users\Juvas\Documents\code\PET2Print\PET2Print.ino:54:1: error: 'thermistor' does not name a type; did you mean 'register'? thermistor therm1(temperaturePin,0); //Connect thermistor on A2 ^~~~~~~~~~ register C:\Users\Juvas\Documents\code\PET2Print\PET2Print.ino: In function 'void setup()': C:\Users\Juvas\Documents\code\PET2Print\PET2Print.ino:82:11: error: 'therm1' was not declared in this scope input = therm1.analog2temp(); //Read and set the initial input value ^~~~~~ C:\Users\Juvas\Documents\code\PET2Print\PET2Print.ino: In function 'void loop()': C:\Users\Juvas\Documents\code\PET2Print\PET2Print.ino:103:11: error: 'therm1' was not declared in this scope input = therm1.analog2temp(); // read temperature ^~~~~~ C:\Users\Juvas\Documents\code\PET2Print\PET2Print.ino: In function 'void runMotor()': C:\Users\Juvas\Documents\code\PET2Print\PET2Print.ino:300:13: error: 'therm1' was not declared in this scope input = therm1.analog2temp(); // read temperature ^~~~~~ exit status 1 Compilation error: 'thermistor' does not name a type; did you mean 'register'?
I've been looking at a lot of similar projects lately, thinking about doing this exact sort of thing but knowing people way smarter than I am have already figured out the hard parts. This is, by far, the most straight forward, simple, and complete design I've seen. Most of the other machines I've seen only focus on cutting the bottle into strips but not spooling, and not modifying the strips into print-ready filament.
I've looked for an update on this project and don't see one, but I wonder if it's possible to add the ability to splice bottles together instead of trying to stop and start a print or add filament when it runs out. PET from recycled bottles makes some of the most interesting prints, I really like the look, and it'd be super keen ta be able to wind a full Kg or two of filament.
I've already grabbed your download and look forward to starting this build on my own. At my usual work pace, I'll be done before the next half-decade is done.
No shame in adapting your models to print in multiple pieces, so you can distribute your filament accordingly. The clear filament with a cool infill pattern printed as a flat panel would be really fun to play with. Love how this project turned out!
i am totally going to build this or a version 2 if it ever comes to fruition.
Drive the motor from an interrupt instead of the normal loop. That way you can do less critical stuff like display update in the loop and still have the motor driven at perfect timing. Does require some care for communication between both parts though ...
I tried this but couldn't get better results, even with an interrupt routine the Arduino still stopped pulsing the motor for periods of time when the display was being updated.
Nice project! If you pre-cut the bottles, you could try splicing/melting the ends together to get a longer filament output, if that would fit through the hot end.
I see some people have had success with splicing the ends of two lengths of filament, I tried this a few times but didn't get a reliable bond. I'll keep working on it though.
only 20-40g of filament will get from one bottle..... for 1kg of filament it needs to be in 30-50 parts ( i.e 30-50 cuts ..... will it affect printing ? )
Hi! what is the width of your PET strips? and what is the thickness of your bottle? Thank you!
A beautiful and elegant design!!! Any reason that the reel is so far from the hot end? Is that just for uniform winding? Wondering if the could be closer to make the whole setup more compact.
Yes it is just to reduce the angle that the filament leaves the hotend so that it winds onto the reel correctly. You could make it more compact with a small deflection/guide wheel between them.
I wonder about joining the strips of pet with a hair straightener and parchment before pulltrusion for larger prints.
You need to join the filament after pulltrusion, the heating and pulling process softens any joint you're able to make and it'll pull apart.
There is a video of joining filament before pultrusion by "3d_olympics" but I have my doubts for longevity of the joint after respooling and the inconsistency between filaments. Probably better after pultrusion like you say.@@MichaelKlements
Hi Michael, were you able to resolve the motor steps issue due to the screen updates? I haven't been able to find a solution yet
why does it say 'thermistor' does not name a type; did you mean 'register'? when i have the libreary installed and typed it like ir should any help plz am on the edge of a breakdown
Please tell me how do you send the STEP signal to the driver? I assembled the circuit and filled in the program, but when the engine is turned on, it does not move (5 volts are supplied to the dir pin, and a voltage of about 2.4 volts appears on the STEP pin, but I do not see any pulsations? Please help me! I've already spent a lot of time and effort on this project, but I can't get it started.
The step signal is generate by turning a digital pin on and off (HIGH then LOW) with a short delay between them. What are you using to measure the pulses on the STEP pin? You should definitely be able to see 5V pulses on an oscilloscope. If you watch my video on the controller design you'll see the pulses on my oscilloscope when I'm fault finding the motor issues - ua-cam.com/video/43kFDSPJl6w/v-deo.html
@@MichaelKlements When I turn on the board at the arduino output (pin 7, STEP signal), I get a value of 2.5 volts instead of 5 volts and I can't understand why there is such a voltage drop.But there is a frequency change on the oscilloscope. As far as I understand, 2.5 volts corresponds to a logical unit. The direction signal (DIR) is also present (5 volts), but the motor is not moving. I turned on the board without a heater and a thermistor, maybe I'm wrong not to connect them? And that's why the engine is not working. In the first part of the video, you have a heater and a thermistor connected when you check the engine, but in the second part, the engine works without a heater and a thermistor. This leads me to a dead end. What am I doing wrong?
@@MichaelKlements I tried to use the Arduino nano (I changed A2 to A6 in the program, as well as A4 and A5 I took from the board (an additional four-pin pad (D10, D11, A0, A1) next to the Arduino) and the Arduino pro mini, but the situation with the D7 (step) output is the same, I get a 2.5 signal a volt instead of 5 volts.
It depends on what you are using to measure the signal - that is why I asked in my original reply. The step pin is constantly changing between 0V and 5V, multimeters will take the average over a period of time and that's why they will display 2.5V. The direction pin stays at 5V so it is displayed as 5V on a multimeter. You need an oscilloscope to actually see that the pulses are correct.
It sounds like your motor driver is not set up or wired correctly.
@@MichaelKlements I checked the STEP signal on the oscilloscope, the values match. Thanks for the advice. But the oscilloscope shows periodic signal skips. As I understand it, this is the problem that you are talking about in the video, related to updating the screen. Perhaps to eliminate it, you need to use two independent timers that do not depend on each other!?
I love the case! Nice machine! STL for the case ava.?
wow amazing effort :)
Hi! How fast is the stepper motor? And, how much filament can it produce while in that specific speed? example, for 1 minute, how much filament does it produced? Thank you!
It is not particuarly fast, it produces about 20-30cm of filament in a minute.
Hi. How do you set the height of the strip? Could be an idea to measure the thikness automatically and let a servo set the cutting height :D
By adjusting the height of the cutting bearings with spacers/washers. A servo adjustment would be great but it has to be very rigid to keep the cut height consistent.
Will it operate at 24 Volts instead of 12 And if not, what parts to change to make it do so.
Very good project. Great to see it work. As other commenters have suggested, how can you splice the strip at the cutter end to make longer continuous filament; OR can you make a filament splicer to join short lengths of filament after production?
Michael, I bought one of your cases a couple years ago. I wanted to know are you going to make the case adjustments for the Pi 5?
Yes, I'll definitely be updating them. I've done the adjustments on the cases based on 3D models, I just want to test them out with an actual Pi 5 before making them available.
how long does it take your hotend to heat up to 220?? thank you!
I haven't measured it, but probably a minute or two
Adding the facility to join lengths of filament as you make it would be handy.
What about getting the reel closer to the hot end? The filament maybe is not cool enough yet and might help keeping the shape of the reel.
I think it would need to be very close to the hot end to do this, the filament hardens about 2-3cm from the tip of the nozzle. The main reason the reel is so far is to improve coiling onto it.
Hi Micheal. I have been playing around with some AtTiny85 mcu’s dividing the various components of a PID controller between two AtTinys. I was wondering if you might try off loading the actual timing of the stepping pulses to an AtTiny and all you have to do is send it start/stop and speed data as desired. The motor on/off signal could come from the ardunio to the motor controller. The AtTiny only has 6 gpio pins, but it can do anything an arduino can do. Communication between the Arduino and AtTiny can be software serial, I2C, or SPI.
Alternatively, there are number of interrupts on the arduinos that are timer driven. You might try using a timer interrupt to handle the step pulses instead of relying on the loop() function of the sketch(I’m assuming that is what you are doing). That way the stepper gets serviced on time every time and won’t be interrupted by the periodic updating of the display. Interesting project and your engineering of the device is excellent.
Yes, this solution would definitely solve the problem - it just seems like a waste to have two microcontrollers on one board. It might be a job for a microcontroller with two processing cores that supports simultaneous tasks.
I tried the Arduino's interrupts in a few different ways but they either resulted in no change to the motor's behaviour or they resulted in the motor running smoothly but the display being corrupted every refresh. I think they both require quite precise timing and are sensitive to changes.
The link to the files don't work to me, there is another way to get the STL files?
My blog was doing updates yesterday so may have been temporarily unavailable. It should be working again today.
use freertos to make multitreading in you code, if you use an esp32 you have two nucles in the processor, you can atualize the display and control the motor at the same time.
I want to try to build one using an esp32, the design step files are free, where can I get them so I don't start from scratch?
Quiero intentar construir uno usando un esp32, los archivos step del diseño son libres, donde los puedo conseguir para no partir de cero
Can I use another drive 17HS4401S-PG27 instead of 17HS15-1684S-PG27. I can alter the 3D model to fit the desired dimensions, I am more interested in parametric characteristics.
I can't find a full datasheet for the drive you've linked but from the information on google it looks like it has slightly higher holding torque (which is good) and a higher gear ratio, so will just turn about 4 times slower ( itmay be a problem to get more pulses from the Arduino to speed it up).
@@MichaelKlements Спасибо за ответ!
@@MichaelKlements Another question. What pitch division did you configure the driver with (1/8/16/32)?
Can i get the pcb source file so i can add features??
is it okay to use 1/4w resistors instead?
I'd be interested in seeing if this can be made to recycle multiple bottles consecutively.
That would be useful
can you weld the pet filament together ???
very nice!
how to buy this filament maker case?
Have you considered a pellet extruder?
I've seen some neat designs, but have never tried building one myself.
... sehr interessantes und schönes Projekt. Aber meine To-Do Liste ist im Moment schon übervoll und mit Ü75 geht es nicht mehr so schnell.
Nice but why not use easily accessible hardware like m3 screws instead of m2.5 and geared stepper instead of easy to source non geared stepper.
Lots of people are going to have to order extra hardware that’s going to go unused 🤷🏻♀️
Most of the others I've seen online use an old 3D printer or very common printer parts to build them so I wanted to try make this one more "custom". The geared stepper motor is a must in this design, a non-geared motor won't have enough torque to drive the reel and you'd need a massive pulley to get the equivalent ratio from a belt drive. The other's I've seen all use 3D printed gears, I'm not sure how long these would last but you could give them a go if you don't want to get a geared motor.
did you get your hands on the pi 5 yet?
Unfortunately not yet, got a preorder in though
Hi, can I use Arduino nano
You'd need to tweak the pin numbers in the code but yes you can.
thnx
I’m shocked the my dew sides weren’t more illuminescent
The 3D printing process makes the plastic more "hazy", the clear plastic is also much more cloudy/white when printed out.
I'm in California and a 2 liter bottle is worth 10 cent deposit. Is it even cost effective over say a $10-14 Kg of filament. I'll have to weigh an empty bottle:-)
comes out to about $4 per kilo equivalent with my local deposits
Yes, as @timonix2 has said, this works out to about $4 a kilo. We also have a 10 cent deposit on bottles in my area.
nice vid
3d print a soda bottle with the recycled soda bottles so that you have another soda bottle to recycle so you can 3d print more soda bottles...
Printception
Very meta
i love you bro you save my time Thnks to you
When recording, the following error appears even though file or directory has been added
C:\Users\Juvas\Documents\code\PET2Print\PET2Print.ino:54:1: error: 'thermistor' does not name a type; did you mean 'register'?
thermistor therm1(temperaturePin,0); //Connect thermistor on A2
^~~~~~~~~~
register
C:\Users\Juvas\Documents\code\PET2Print\PET2Print.ino: In function 'void setup()':
C:\Users\Juvas\Documents\code\PET2Print\PET2Print.ino:82:11: error: 'therm1' was not declared in this scope
input = therm1.analog2temp(); //Read and set the initial input value
^~~~~~
C:\Users\Juvas\Documents\code\PET2Print\PET2Print.ino: In function 'void loop()':
C:\Users\Juvas\Documents\code\PET2Print\PET2Print.ino:103:11: error: 'therm1' was not declared in this scope
input = therm1.analog2temp(); // read temperature
^~~~~~
C:\Users\Juvas\Documents\code\PET2Print\PET2Print.ino: In function 'void runMotor()':
C:\Users\Juvas\Documents\code\PET2Print\PET2Print.ino:300:13: error: 'therm1' was not declared in this scope
input = therm1.analog2temp(); // read temperature
^~~~~~
exit status 1
Compilation error: 'thermistor' does not name a type; did you mean 'register'?
You haven't installed the thermistor library - //github.com/miguel5612/Arduino-ThermistorLibrary