Tuesday, December 30, 2008
Plastic Welder
Sunday, November 9, 2008
Vectorizing
It kept bugging me that my Voronoi code didn't return anything but an image to double check, so I figured a way to go ahead and make it output SVG format paths. I also added some routines to help further simplify the paths, though the output still seems a bit rough. And it was a good thing to check my results, because the simple lengthening of segments somehow resulted in gaps in the path, the sort of thing that would ruin a circuit board. For now I just commented that part out and substituted code that checks if a line is trending in a direction, and then double checked against the error (measured as the sum of the distances from the proposed line to the pixels that would be removed).
I suppose that using Haskell for this might seem like an odd choice, but I'm more familiar with it than Python. The SVG image in this post should show up fine in Firefox. If your browser has trouble with it I'm sure you can Google around an get SVGs to display.
Vornoi.hs
Monday, October 27, 2008
Voronoi

It was a bit of a struggle to get PNG images edited in Haskell, but eventually I realized that pixbufGetPixels isn't really returning an array, it's returning an array typed pointer to a pixBuf. This makes sense in a practical memory usage way, but it isn't what I expected from the context.
After that I vectorized the edges, that took quite a bit of thought. First line segments were created between the centers of adjacent black pixels, then segments were created from the center of black pixels to any corner of the black pixel where there was a color change between neighboring pixels, and lastly segments between differing colors. This left a bunch of empty sets, and repeated segments, which were filtered out. That resulted in about 4400 segments for this test image. The next step is to lengthen vectors that are near each other in the same directions. That reduced the number of segments for this test to about 3700, it probably could be much fewer if I hadn't limited the angles (0, 45, 90, and 135) or if the underlying lines were horizontal, vertical, and perfectly diagonal.
For now I can't go much farther without hardware to test on...
Voronoi.hs
Sunday, September 28, 2008
X Axis
I also trimmed some plastic from the bed near the end to make clearance for the motor to be mounted to a threaded rod. There is a small tendency of the carriage to ride up out of it's slot, but when the rod is attached that will act to keep it from riding up. The profile of the rail should not matter much. The same setup should work fine with metal rod, pipe, angle iron, etc. Any profile where you have a straight inner surface, and a straight top surface.
Monday, September 8, 2008
Boxer Fan
I found a fan that looks a lot like a computer fan, but it's 110V and bigger. It was seized, so I removed the center from the bearings by persuading it with a hammer and a set. That released the blades and rotor. I cleaned away all the corrosion with emery paper, and sprayed it well with WD40. The bearings were still fine, so after pressing it back together the blades spun freely. I soldered a power cord to it and it runs OK; it's not too loud. I also rubber banded a 45 Gallon garbage bag to it to get an idea of the airflow, it filled the bag in five or six seconds, so it's probably about 60 cubic feet per minute.
Tuesday, September 2, 2008
Cooking with gas
I melted some more HDPE, this time I did it in the garage on a gasoline burner. I wrapped the plastic in aluminum foil to keep it from sticking to the pan. Then I squashed it flat between two pans and left some heavy chain on it while it cooled. I ended up with a 1/4" x 8" cookie of plastic sheet, it's mostly flat, and the foil is well stuck to it. I'm not sure what I'll use it for. Mostly I've just been cleaning and storing stuff from the pile. My second computer won't boot any more, it sat too long, or it needs a battery, and the power supply was always extra noisy, it locks part way through boot up usually. I wonder if this was related to the ethernet problem I had last month, even though that computer is off most the time. All the time now I guess, maybe I'll get a couple new power supplies, and try one in that. I need another computer for the garage anyways, so I can do the RepRap stuff there.
Tuesday, August 12, 2008
Router Table
Monday, August 4, 2008
Stepper circa 1993
Had a good day shopping at garage sales, there was a community sale where you didn't need to drive very far between stops. I bought a Twain flatbed scanner that has a good 1.8 degree stepper motor, and a base with side rails about 19 1/2 inches (500 mm), the stepper moved a belt that was hooked to the carriage after looping around a geared belt idler. The carriage had a lot of torsional slop though, it only has one horizontal keeper bearing on one side, and the other side has two, forming a triangle, but they are both on leaf springs, so it's free to twist. It'll probably be better to build a carriage than to re-purpose the old one. The stepper has a reducer gear hooked right to the mounting bracket, if I can figure out a way to mount the output gear to a threaded rod it would have very good resolution, there is very little slop in the gears, you can feel the slop a bit by touch, but it isn't visible enough to measure. The scanner also had a power supply that has 5v 2A, 15v 1.5A, +12v 0.3A, -12 0.3A, it's probably good enough to power a few more motors, and it's dead quiet, and slim-lined along the side of the case. This stepper was run from another ULN 2003A Darlington array, though it's a six wire stepper, so it should run from the Stepper Motor Driver 1.1.
Also got a nice shelving unit, so the giant pile of junk in the center of the garage is starting to get a bit smaller as I organize everything, hopefully it will soon all look like I meant it to be that way. It took a while to re-assemble the shelving because of the gravel floor, so it needed attached to the wall despite being a free standing shelf. Plus there was stuff in the way, but now most of that is on the shelves.
And I got a router table, once I get my router hooked to that it'll be a lot easier to build a RepStrap.
And I found some sort of lathe looking thing, If I can figure a way to attach a chuck I'll be able to make the non-printable extruder parts.
Later I salvaged some bearings from a set of inline skates, (14 of them, 2 are bad). The skates are from Goodwill, they had a large pile of skates.
Total cost of RepRap related stuff was $11, though the router table and shelf ran another $20.
Saturday, July 26, 2008
Hard Playdough
This is a glob of hard "Playdough" painted black. It's 1 part cornstarch, and two parts baking soda, 1.5 parts water. Bring to a boil and it polymerizes. I did it in the microwave. At that point it's very rubbery, but you can roll it and treat it like clay, with some difficulty. From there it's just a mater of curing it to be hard. I microwaved it to get it hot about half a dozen times then let it cool in-between. The finished bit is very hard, pie dough colored, with a coat of paint for looks and water protection. It's probably a bit more brittle than wood, but you can form it. This is probably good enough to RepStrap many of the Darwin brackets, though it'd be tough to get enough detail for the gears, and it might not be strong enough for the corner brackets.
Friday, July 25, 2008
Stepper circa 1983 details

Unfortunately it looks like the stepper I found can't be wired as a bipolar, it has five wires, four of them go to one end of the four coils, and the other one ties all the coils together. It was being driven from the transformer, then controlled through a Darlington array. This is a simple way to drive a stepper as long as you don't want to half-step, or micro-step. The Darlington was a ULN 2003A, which is rated to 500 mA, so the motor must be 500 mA or less per coil. Since you can't wire the motor bipolar, the Stepper Motor Driver 1.1 won't work to drive this stepper. Need to find or design a unipolar stepper driver I suppose. There's newer quad Darlington arrays available that can put out 1.5 A per channel for about $2, or you could run the common wire to ground I suppose. Maybe there's a way to get the motor casing open and re-wire it, though it looks spot welded.
Thursday, July 24, 2008
Stepper circa 1983
Saturday, July 19, 2008
Backyard Achaeology
Wednesday, July 9, 2008
Workbench
Wednesday, July 2, 2008
HDPE Star

I melted some HDPE (2) from a laundry softener bottle into an aluminum star shaped mold meant for foodstuffs. It has a low glass transition, it was rubbery feeling when hot, even when very hot. (500 F) When I kicked it up to 500 it started to brown a bit, but it never flowed freely. From browsing the web I found that HDPE doesn't have benzine attached to the polymers like in PS, that is a big positive, the HDPE didn't smell at all, unlike PS. The result seems very strong and not at all brittle like PS as well. It never smoked. To mold this by hand you'd need to place the plastic under some amount of pressure, it seems to have a bit of memory to overcome. Pieces added to melt would stick, and then shrink and get thicker. It stuck well to the aluminum.
Thursday, June 26, 2008
Escher "Cubic Space"

// a line of object starting at a location and repeating at an interval
#macro LineOf(Obj StartPos IncPos Num)
#local _COUNT = 0;
#local _CPOS = StartPos;
#while (_COUNT < Num)
object {Obj translate _CPOS}
#local _CPOS = _CPOS + IncPos;
#local _COUNT = _COUNT + 1;
#end
#end
// a ring of objects starting at a location and orbiting the origin by IncRot
#macro RingOf(Obj StartPos IncRot Num)
#local _COUNT = 0;
#local _ROT = <0,0,0>;
#while (_COUNT < Num)
object {Obj translate StartPos
rotate <_rot.x,0,0>
rotate <0,_rot.y,0>
rotate <0,0,_rot.z>}
#local _ROT = _ROT + IncRot;
#local _COUNT = _COUNT + 1;
#end
#end
// helix
#macro HelixOf(Obj StartPos IncRot IncPos Num)
#local _COUNT = 0;
#local _CPOS = StartPos;
#local _ROT = <0,0,0>;
#while (_COUNT < Num)
object {Obj
rotate <_rot.x,0,0>
rotate <0,_rot.y,0>
rotate <0,0,_rot.z>
translate _CPOS}
#local _ROT = _ROT + IncRot;
#local _CPOS = _CPOS + IncPos;
#local _COUNT = _COUNT + 1;
#end
#end
// a grid of object starting at a location and repeating at IncPos and IncPos2
#macro GridOf(Obj StartPos IncPos IncPos2 Num Num2)
#local _COUNT2 = 0;
#local _CPOS2 = StartPos;
#while (_COUNT2 < Num2)
#local _COUNT = 0;
#local _CPOS = _CPOS2;
#while (_COUNT < Num)
object {Obj translate _CPOS}
#local _CPOS = _CPOS + IncPos;
#local _COUNT = _COUNT + 1;
#end
#local _CPOS2 = _CPOS2 + IncPos2;
#local _COUNT2 = _COUNT2 + 1;
#end
#end
Thursday, June 19, 2008
Recycling Plastic

I melted some clear plastic spoons down in the oven. It's in a leftover artichoke jar. I'm not sure what kind of plastic they are, they're not really marked, if you squint it has B-4 on the handles, but it's not HDPE, it's probably some kind of PS, it was stable boiling in water, was a bit sticky at 350 F (176 C), but that might have been uneven heating from the broiler. It started gloppy flowing a bit at 400 F (210 C), so I bumped it up to 450 F (232 C), which made it pool in the bottom, but as the oven got to temperature it started smoking, so I shut it off and left it in the oven to cool slowly, so that the glass wouldn't break. Oh yeah, don't try this if you aren't ready for the jar to break, I expected it to break, I had it in a cast iron pan and it was preheated to even out the temperatures. The result is about 2 cm of hard clear plastic from having the jar full of broken pieces. As the jar cooled the plastic pulled away from the glass, making sounds that were very similar to cracking glass. There is a bit of bubbles in the plastic, but I think that this might be a workable way to cast plastic parts if you had an open faced mold, it was much to sticky to pour through a gate without something like an extruder.
Tuesday, June 17, 2008
Garage
Still there's some leftover parts like a nice flat aluminum rail and some lumber. I've been thinking of building a Replicating Rapid-Prototyper (RepRap) , or some sort of Computer Numerical Control (CNC) mill. I've been unemployed for too many years and hope to at least break even selling something I can produce. The idea of being able to afford some of the equipment that can produce commercial quality output is exciting to me. The technical aspects are well within my grasp.
A little about me, I have a BS in computer science from St. Martin's University and a AS in electronics engineering tech from Pierce College, additionally I spent a year at Central Washington University studying electrical engineering, that was a turbulent time in my early life, I was married for a year, and I'm not sure I've ever really recovered from the divorce, I've been depressed and become an overweight middle aged escapist computer addict that lives with his aging retired mother. (God bless her.) I've got to do something to get out of this rut. On the positive side I've learned to be good with graphics editors, like Wings3d, that can be used to design parts for RepRap, I've also recently been programming in Haskell, a few years back I was doing some Java, before that it was C++. The list of computer languages that I've had contact with is somewhat large. When I was a kid they used to let us into the DOT offices after hours to mess with the computers and watch the payroll checks be printed out.
Tuesday, June 10, 2008
Earlier Idea

This is an earlier idea for a stepper rotor made from easy to find stuff, just a ring of holes to accept cut pieces of wire. You just drill the holes in a flat cylinder of something and then use a lathe to eat away the outer layer until the metal shows. I don't have a lathe and drilling that accurate of holes (100 of them!) would be a problem too.
Sunday, June 1, 2008
Stepper Refinements

I was thinking about it some more, and figured that some small registration tabs might help line up the support to the caps while attaching, does PVC pipe glue work on the various kinds of plastic? While lining up the tabs I realized that the bottom cap is different from the top cap, it's mirrored, it won't line up right just rotating it, so you can't just print two that are the same. So while I was at it I added some mounting brackets. I also enlarged the files to mm scale, as this is the RepRap default.
Cap Top, Cap Base, Support, Rotor, Bearing-Clip
Friday, May 30, 2008
Wire Wound Stepper Motor

I'd like to make my own stepper motors. This should be much cheaper than just buying three motors for every Darwin RepRap that gets made, and matches the replication philosophy. The idea is to wind the rotor with with 17 gauge steel fencing wire, the kind that can be purchased in 1/4 mile spools, this would be instead of using a cast iron rotor.
I'm not set up to run an iron foundry, and I suspect that most people involved with rapid prototyping aren't set up to cast iron. In my browsing the internet it does seem to be possible for people to advance from aluminum casting to iron casting, but it involves several levels of difficulty beyond what the average back yard tinkerer would be capable of. There are a few folks who might be able to machine suitable rotors from bar stock, but in order to get 0.9 degree steps the rotor needs 100 grooves (0.9*4 = 3.6, 360/3.6 = 100). That would be fairly fine control of a manual lathe/mill to get even grooves every 3.6 degrees.
Of course, since I don't have a working Darwin I can't really test this concept out yet, I suspect there are weaknesses in the design that will become more apparent as the first prototype is put together. Here's a few I would look for.
- Bending of the wound steel wires at higher speeds.
- Difficulty winding the steel around the plastic without cracking the plastic.
- Securing the loose ends of the steel wire.
- Alignment of the bearing clips while gluing them to the rotor.
- Alignment of the caps to the magnet support, the rotor must not rub, but the bearings rest against the caps.
- Clearance to wind the copper around the steel core wires. I was envisioning the magnet core wires as being wound figure eight, but it's hard to tell if there will be enough clearance.
- The opposite magnets should be wound to have opposite NS alignment, but since the wires will be connected after securing the cap it might be easy to reverse them to be fighting each other.
- The linear actuator bearings need to be somewhat larger to fit over the cylinder and still have the lead rod clear, I've yet to price the bearings, there needs to be two, one for the top cap and one for the bottom cap, they might be more costly than skate bearings.
- Heating might be an issue, or warping, it's plastic after all. I did put some vents in the caps though.