Tuesday, May 26, 2009
The experimental four-dimensional GCode interpreter is now five-dimensional. Four dimensions are so three weeks ago...
It has an extra DDA variable that is the feedrate. This means that if you send it:
G1 X85.3 Y75.8 E18.3 F2495.4
G1 X85.5 Y75.5 E18.7 F2575.9
For the second move it accelerates linearly from 2495.4 mm/minute to 2575.9 mm/minute as it moves from X85.3 Y75.8 E18.3 to X85.5 Y75.5 E18.7. That is to say, it treats the F values in exactly the same way as it treats X, Y, Z, and E. (This is not how GCodes conventionally work, of course, so you can turn this behaviour off by commenting out a line in the firmware that says
Of course you can have the machine move at constant speed as well if you want. You do that simply by setting the feedrate first:
G1 X85.5 Y75.5 E18.7
The latest Java host software in the repository now supports all this (again you can turn it all off by setting Accelerating false in the preferences).
There is one final firmware upgrade needed to finish this work off: buffering the moves in the micro-controller (as Zach and co. are doing with their code). At the moment there is a barely-perceptible pause between moves, which means that accelerating to high speed hits a momentary barrier at the end of the acceleration. As the whole point of all this is to make the machine move much more smoothly, that's got to go.
Accelerations allow the machine to work faster and more accurately at much lower motor currents, or maybe even with smaller cheaper motors. Or maybe even with motors we print ourselves, which Forrest is working towards...
I2C-based Reprap control
In which the control strategy for Tommelise 3.0 begins to emerge ... with implications for mainstream Arduino controllers... Do you want to read more?
Monday, May 18, 2009
Fun Night at MakerBot
Here's the video... you should definitely watch it because it's hilarious:
Friday, May 15, 2009
Small Melt Zones Look Good
The difference in operation of the no-lathe extruder with different barrel lengths and a heatsink leads me to suspect that the main factor in reducing friction is to reduce the size of the zone where the plastic is actually melting.
As you can see in the photos I've chopped an old CPU heatsink (easily salvaged or made from copper/aluminium stock) into 10mm slices, and clamped a pair around the barrel. There is a recess in the middle of the two halves made with a drill 0.5mm smaller than the barrel's external diameter. I have experimented with moving it up and down the barrel. The barrel above the heatsink does nothing useful in this setup, but might be useful for guiding the filament later.
The heatsink stops the plastic melting on entry, keeping the top part of the barrel under 60C. I've rewound the heater to start the coil as close as possible to the nozzle, and to keep the windings close together. Kapton tape is great for this!
Best results definitely seem to be had with a small, powerful heater ([email protected] max, running at about 60%) and the heatsink placed as close as possible to the heater windings. This is much more successful than my earlier experiments with heatsinks.
The extruder works continuously, or in bursts, and I checked that it will restart after cooling. It still needs no lathe!
Some notes on the way to an easy-to-make pinchwheel extruder
In which your narrator experiments with ways to make Nophead's GM-17/tin can stepper hack pinchwheel extruder without a lathe... do you want to read more?
Thursday, May 14, 2009
No-Lathe Extruder Pops Out
This combined with the extra material called for in the form of silicone tube is bringing me back closer to Forrest's and Nophead's extruder designs with long, thin-walled barrels and some form of heat-sink near the inlet.
Wednesday, May 13, 2009
Sourceforge Award Nomination
Monday, May 11, 2009
The No-Lathe Barrel & Nozzle
I Started by dismantling the telescopic aerial, removing the base and very tip so I could slide all the bits apart. Find the tube that is a snug fit on an M3 or M4 posidrive machine screw. Note that one of the ends of the tube has a shoulder turned over on the end of it that stops the other bits of aerial slipping through – this will be the nozzle end. Chop off 50mm of tube and smooth the cut end.
Economic note: More tubes with shoulders can be made by cutting lengths with a a pipe-cutter and gently hammering the cut end over, allowing one to make several barrels from one aerial.
Anchor the posidrive screw in a bit of wood with a nut to make it easier to clamp or handle. Using the dimple in the top, drill 5mm into the screw. Make a 1mmm one first and try finer ones when you get the hang of it. Lubricate with thin oil or WD40 and keep the swarf clear. When you're done, clamp the screw in a vice, file of the head and make it a bit pointy so you're left with something that looks a lot like the one below (it's standing in a nut so I could take a decent picture):
So wrap the little beast with PTFE tape and pop it down the barrel that you cut off the aerial pointy end first. It should wedge itself in the shoulder at the other end. If you push too hard you'll deform the barrel and pop the thing out the other end. Bad move.
Insulate with kapton tape, add 6-7 ohms of nichrome wire near the nozzle, insulate again. That's your heater.
Slip 10mm of a 25mm length of 3mm ID silicone tube over the open end of the barrel and clamp it all in MDF. I found it necessary to add an MDF slip over the top part of the silicone tube later on to stop the soft plastic bulging within the tube. I used bolts to connect up the power to the nichrome and kapton-taped a thermistor probe to the side. The combination works well up to about 180C with PLA and is stable at temperatures of up to 300C by which time the PLA starts coming out as smoke rings. Surprisingly, the silicone stops the MDF from burning.
So there you have it. Easy to get bits, easy to make, no lathing.
Thursday, May 07, 2009
The fact that it was printed in four dimensions, that's what. I've upgraded the Java host software and the Arduino/Sanguino G-code firmware so that the system treats the filament length to be extruded in each movement as another independent movement variable, like X, Y, and Z (as proposed here; you've got to have a stepper-driven extruder - like the pinch-wheel extruder - for this to work).
That is to say, the DDA in the firmware, which previously generated straight lines in (X, Y, Z) space, now generates straight lines in (X, Y, Z, E) space, where E is the growing length of extrudate needed.
From the outside, this means that everything works exactly as before. So why bother? The reason is that it makes it a lot easier to do tricks like accelerating and decelerating the extrude head as it moves, which means that it can both go faster and run on less current. This will be the next thing that I do.
I've done a new release of the host software in the repository available here, and written an upgrade to the Arduino/Sanguino firmware called FourD_GCode_Interpreter available here. To turn on 4-dimensional behaviour, simply set the flag FourD=true in the reprap.preferences file. Set it false to make the machine work as it did before.
Perhaps surprisingly, the firmware doesn't need to know if it is being driven in 4D mode or 3D mode. Lines in the G-code now look like:
G1 X23.9 Y39.0 Z0.2526 E66.5 F3000.0 ;print segment
G1 X23.9 Y39.7 Z0.2526 E67.2 F3000.0 ;print segment
So, for example, the second line is saying move 0.7mm in Y from where you last were and extrude 0.7mm of filament while doing so, all at 3000 mm/minute. But if you leave the Es out and turn the extruder on and off separately, everything works just as before (so old G-code files will still work). You can still control the extrude rate separately too - just set the extruder to go at a different speed to the carriage, and everything comes out right automatically.
Unsurprisingly in retrospect, this taught me something about the control of the stepper which drives a pinch-wheel extruder: you don't want to turn the current off between plotted segments. If you do, the stored spring energy in the compressed filament and the pressure in the melt chamber cause the stepper to slip back (as no current is flowing to hold it) at the end of one line segment and before the start of the next, resulting in a poor-quality build. The new firmware turns the current on when the extruder is first used, and leaves it on until the temperature is set to cool. The latter is a bit of a hack (and we could easily add a "current off" M-code instead), but in practice it works very well. The resulting build quality is excellent.
One final thing: I have only tried the firmware in the Sanguino, and not the Arduino. I can see no reason why the latter shouldn't work, though. Let me know...
Tuesday, May 05, 2009
Taking the Gm-17 out of Nophead's GM-17/tin can stepper hack
Reducing the vitamin content of the Mk I Nutjob extruder... do you want to read more?
Sunday, May 03, 2009
Stovetop recycling of HDPE swarf
In which your narrator solves the problem of recycling plastic scrap, for milling... do you want to read more?
Documenting the Mk I Nutjob
Nophead: This looks really promising, but I am having trouble understanding the physical arrangement from the photos. Any chance of a view from underneath, or a diagram?
Forrest: Absolutely... do you want to see more?