Thursday, November 30, 2006


LegoStrap - RepStrapping with Legos!

So... I've given up on creating anything myself, by hand, with any sort of accuracy. Instead, I'm relying on the accuracy and low defect count of the largest tire manufacturer in the world: Lego. (And while they've got a nice large selection of tires, they seem to like to sell them in pairs, instead of fours, which makes producing level carrages a little hard...)

I've already described what has become the Z axis. I took the platform off the top of it (since it's now going to be holding the print head instead of the work surface), and I need to address the wheels not sitting flat on the board, but I haven't done any work on that axis yet.

This is the beginings of the X axis; a 4 wheel drive, no steering, carrage. I'm hopeful that the traction between the wheels and the carpet will be enough to maintain enough accuracy over the duration of a single print job. If not, I may move to the threaded rod driven technique I build into the Z axis. (I haven't secured everything here; I'm waiting to figure out how I'm attaching the Y axis to this before I worry about how much more 'support' I need to put into it. It'll also help to know the correct spacing between either side.)

You can see here where I started to build up the support for the motor; the two towers of black bricks in the center back. The motor will drive the center gear, which will transfer motion to the mid gears, and onto the wheel axels themselves. Everything is symetrical and matches end-to-end, so I'm hopefuly to get solid, flawless 4-wheel drive. I'll be mounting the Y axis above this, but I'm waiting to mount the motor before I work on that. (I've had a bit of trouble glueing legos to metal gear on my steppers, right now I'm trying something called E6000 and I'm giving it the full 72 hour cure time, and I'm only 12 hours into it!) I'm only glueing the grey 1x1 rounded socketed piece to the motor, so I can change not only the gear on it, but also the length of the shaft. I'm currently trying to use a gear the same size as the middle three in the carrage itself.

Here we have the Y axis. You'll notice the familiar 'fighter/spaceship' style flat pieces from the original Lego axis; they're the only decently sized flat pieces I've got! You can also see here the rack for the rack & pinion; I'm going to be using the smallest 1x1 gear I've got for the pinion; I figure I'll be getting enough speed just by moving to rack & pinion, I want to maintain some accuracy so I'll go with the slowest, most accurate rack & pinion I can make. The rack is actually attached to the top half of the axis, so I'll be mounting the motor onto the flat 'wing' in the lower left of the picture.

Here you can see the two halves of the axis seperated. You can see the smooth-flat pieces in the center of the bottom that I used to allow the smooth movement; I didn't have enough for full coverage, so I spaced out pieces along the outer edges (it's a 4x14 area) to distribure the weight as best I could. The 'floating flat 2x16' in the upper left of the picture is used to hold the top half of the axis down; riding on another line of 1x smooth-flat pieces.

Here you can see the top half of the axis taken apart. To the right, the flat platform that will eventually hold the work surface. On the left sits the carrage that handles the movement. You can see the rack on one side (for the rack & pinion), and the smooth-flat pieces on the other side (for the 'floating flat 2x16' to ride on). (The 2x2 smooth-flat pieces are not 'critical', I simply ran out of 1x2's and had to improvise...)

One trick here, I've got four 1x pieces side by side, all connected; but no 2x pieces in any of it (excluding the non-important 2x2 smooth-flat pieces). The secret is in the foundation; four technic 1x pieces, side by side, attached with the small 1x2 round pieces... (not the straight up + axis, but the round pieces that 'plug' into the technic hole). I've got two of the round connectors connecting each pair; 5th hole in from either end on the outer pairs, 6th hole in from either end on the inner pair. I found those to be a lot more secure & true than relying on 2x's or flat pieces, and being internal, they didn't effect the 'footprint' of the part they were strengthening.

The bottom consists of the 'frame' (two 1x16 pieces on the outside), the smooth-flat pieces for the carrage (I would have liked to have more in there, but I don't think you want to cover the entire surface; it's the old friction vs stability game...) and the 'floating flat 2x16'.

Here you can see the carrage inside the bottom of the axis. I actually got this 'action shot' backwards; if the carrage ever goes that far in that direction, it'll have driven off the end of the pinion gear! I'm placing the motor off to one side, rather than the center, for weight/stability reasions, though I'm not sure yet how far off to the side it will be.

I'll either have 1 motor ready to play with this weekend, or it'll be back to the drawing board for attaching the axis to the motor! If the E6000 does work, I'll set a second motor up to cure, and start attaching the first to one of the axis (haven't decided which yet, and I've got to restrain myself from getting sidetracked and making some sort of 4 wheel drive mobile launch platform out of it...)

Wednesday, November 29, 2006


Closing the loops...

After several false starts I built up a shaft encoder lashup for the x-axis.

It tested out fine. You can see the die that I use to make gearmotor couplings on top of the x-axis doing double duty with a magnet on its end for stimulating the AS5035 chip. I've started using a bit of PCB to mount things like resistors and capacitors rather than just sticking them on the mounting boards any old way. I'm doing this because I've started using two pole connectors to connect power and ground in and signal out in a more orderly way.

Here is the older y-axis encoder lashup by way of comparison.

I am beginning to get power and signals lines draping all over Tommelise. One of the first orders of business after it's operational will be bringing some order to its electrical supply and signals harness.

Now that I have encoders on both x and y axes I can do some serious controls programming for the 16F877A and start using encoder pulses rather than timing to inform the controller about the position of the xy extrusion table.


more Mothra updates

Finally back from the job long enough to get some work done. (4 day weekends are great for this)


Whoever came up with the drawer slide idea for bearings was a genius.
The Z axis was always a bit flimsy, so I tried replacing it with a slide. Not perfect, but it's much better than it was before. I'll probably end up replacing everything before long.

Electronics/Software: Played around with some PIC's over the weekend, and ended up soldering 2 little circuits to translate KCAD-4 motor outputs to stepper commands. Was good practice, and now it can run g-code with a pen or dremel tool. No plastic reprap yet, but on the right track. I'm thinking about writing a translator to run custom or cnc-style control boards with the regular reprap software.

Extruder progress:

Rather than go with making things from scratch, I started hacking a regular hot-glue gun. The tip had a 1/8" thread that fit into some plumbing parts.

The GM motor on the bottom will act like a recipricating pump, and a second motor on top will control a valve near the end to turn the extruder on/off.

The tip is a metal pencil tip soldered to a pipe coupling. ~1mm extrusion, to be upgraded later.

I figure it's easier to test with hot-glue, since it would still be able to print out simple rubbery parts and that I can get 8 sticks for 2.50 at the hardware store.

Tuesday, November 28, 2006


Stepper Motor Improvements

The stubborn stepper motor has been conquered. Borrowing a 12V supply let me find a stepper sequence that doesn't skip. It's made out of discrete logic chips and Darlington transistors since that's all I had handy -- you can make interesting stuff out of a 7474, 7404, and 7400. Speeds shown are 1 step per second, 10 steps per second, and 100 steps per second. Next, half/double-stepping...

Monday, November 27, 2006


Tommelise xy positioning stage...

My interpretation of Reiyuki's CNC gantry design appears to be very robust. I've been hammering the xy positioning stages at full speeds for a full 8 hours now and nothing has shaken loose. Given what a lashup much of the GM8/9 motor mounts are that is nothing short of a miracle. The GM8/9's are staying cool and their sound is staying the same. The control board is staying cool as well.

I'm beginning to thing that I'm going to be able to extrude some stuff with this thing. I wasn't so sure before.

Sunday, November 26, 2006


Coordinated xy-axis traverses...

After I finished the new Hamamatsu limits detector probe I tested it on the y-axis. It would appear from the voltages that I could use it on an input port pin. I've already got the software working on analog to digital pins for now, though, so I'm not going to take advantage of that. I may build an extra one and replace the old lashup I did.

Here you can see the new probe with it's tiny piece of circuit board to accomodate screw terminals for power input and signal output.

Here you can see both operational limits detectors while the x and y axes are doing traverses. I've been running pencil tests on the axes open in open loop mode.

Ha! Here's another little bit of know-how that I used to run into with discrete analog to digital chips which I'd forgotten about and which turns out still to be true for analog to digital channels on the 16F877A.

I'd put in a two pole connector which sits on the AN0 and AN2 pins. When I did the firmware programming I forgot that the connector skips a pin and programmed the x-axis for AN0 and the y-axis for AN1 instead of AN2. I connected the limits sensors up to the two poles. The x-axis sensor worked perfectly and the y-axis sensor would respond properly to its limits detector. After I watched it for a while I noticed that the y-axis was changing direction both when its own sensor told it to and when the x-axis sensor signaled a change in direction.

What was going on was that the AN1 channel, which the firmware was reading was getting voltage bleed from both the AN0 and AN2 pins and responding accordingly. This tendency for an open analog channel to get "bleed" from adjacent channels if it hasn't an input of its own is quite usual. Unless you know of this bleeding effect you can get some very bizarre "bugs" in your firmware.


Biollante Regenerates

I'm not dead!

Sorry for my lack of posting lately. It's not that I haven't been working. I've just made very little progress. Nonetheless, little progress is still progress. Here we go:

I've rebuilt my Stewart platform with more careful measurements. It's the same thing, but level-er.

Beyond that, I've been trying to get a syringe drive working. The plastic plunger has been replaced with a square metal one with a hole bored down the middle -- square so that it can fit through a square hole, preventing it from turning. Matching the square hole to the syringe has been a problem. I'd tried making that part out of polymorph, but it doesn't stay soft long enough for me to do a good job, so I made it out of plasticine and cast a mold of it. This was an adventure in of itself -- I first tried making a wax version then casting a mold of it, which accomplished nothing more than the destruction of both the original and the mold. But finally I managed to cast the part itself. It works.

I've tried to build a rough stepper controller for the stepper motor in pure digital logic with no luck. It continues to resist my attempts to decipher it's sequence -- I have one that sort of works, only sort of, it often jams, stalls, or reverses direction(!!) That's not right! I'd build it in a pic, but I've since realized my PIC programmer is about 14 years too old to program the pics used on I'd order a newer PicStart+ but microchip's site demands Internet Explorer, which I do not have and cannot have on my operating system of choice. I'd complain to Microchip about their awful site but their (not an) e-mail complaint support also requires IE! Someone should fire their webmaster. Out of a cannon.

Saturday, November 25, 2006


Z-axis operational...

I got the GM8 moving the Z-axis positioning stage. You can see the video here.

Friday, November 24, 2006


Odd bits of know-how picked up along the way...

I'm getting ready to mount a second 754410 onto my 16F877A motherboard in order to try to accomodate the z-axis pseudostepper motor and the Mk II extruder polymer pump. Before buckling down to do that, though, I just swapped over the circuitry for the x-axis to test the motor mount for the z-axis.

I finally got around to mounting those guide tabs after mounting the GM8 gearmotor. They smoothed out the movement of the x-axis rather dramatically. Feeling ambitious I decided to see if I could get a thrust collar built for the z-axis positioning stage as well. The threaded drive rod for the z-axis is quite short. As a result I decided to see if I could get by without the sliding joint that have proved necessary in the y and x-axes.

While I had a coupling bolt I thought it might be nice to see if I could make a thrust collar out of something else. I first thought to simply make one out of a blob of CAPA in the manner of Vik. After a while, however, I realised that I had a drill and tap for 3/8-24 studding, so I decided to see if I could make one out of poplar.

In fact, I could. The poplar thrust collar was quite a nice fit and had no backlash whatsoever. I then began working out the excess friction out of the collar with the GM8.

While the GM8 had sufficient torque for the task the torque loading of the rather small drive shaft on the coupling between the GM8 and the threaded drive rod generated a considerable amount of shear stress in the CAPA liner of the coupling. The stepping action of the GM8 induced what amounted to hysteresis in the CAPA which resulted in heating of the liner.

Eventually the liner melted. Given that the GM8 only generates about 3200 gramme-centimeters of torque, that this could happen is a worrying prospect for the use of CAPA to make parts for drive trains such as couplings and gears. The GM8's torque output is about the same as one encounters with a bipolar NEMA 17 running at slow stepping rates.

It would seem that we can look forward to using extremely conservative design parameters in gear trains made of CAPA.


First open-loop coordinated XY-axes pencil tests...

This morning I reprogrammed the 16F877A to run both x and y-axes simultaneously so that I could get an idea of what problems I had remaining to solve in the mechanical design. The gearmotors were run in pseudostepper mode but with open loop speed control, that is, there was no feedback from the encoder chips to stabilise the gearmotor performance.

The tests were done with a 0.5 mm mechanical pencil on paper taped to the glass work surface. The paper was then removed and scanned in black and white at very high resolution so that it would be easier to see non-linearities in the drawn lines that my eyesight might miss looking at the paper in its original state.

When studying the output keep a few things in mind. First, the 0.5 mm mechanical pencil was not rigidly connected to the Mk II. Part of the nonlinearity that you see at the turns is due to that. It also accounts for the break in the path of the upper left hand direction change on the picture.

As well, some of the direction changes were done with mechanical switches rather than software and are marked as such.

As best as I can see there is a little bit of stepping non-linearity, a little bit of non-linearity caused by burrs and unevenness on the poplar guide boards for the x-axis and probably some other non-linearities whose causes I haven't begun to understand.

The next step will be to sand off the x-axis guide boards a bit more carefully and install the x-axis limits switch and the x-axis shaft encoder.

Tuesday, November 21, 2006


Y-axis and x-axis pencil tests...

Now that I have my z-axis positioning stage installed and the Mk II clamped to it I strapped a 0.5 mm mechanical pencil to the Mk II extruder and tested the y-axis traverse for stability.

I had been worried that the xz sliding joint might not be absorbing all of the uneveness of the y-axis threaded drive rod.

A 0.5 mm lead makes a rather light mark for a digital flash camera to see. I pulled out a segment of the pic and adjusted the contract, however, so that you can see the line the traverse drew. The stray marks are from my taping the pencil onto the Mk II and the darker part of the line just to the upper right of the pencil tip is where I tried to adjust the pencil pressure with my finger.

I traversed the y-axis eight times and there was not only no wobble but the line was repeated quite faithfully. I used the thin rule out of my caliper/micrometer set and the traverse line is straight as well.

I then ran a similar test for the x-axis traverse. I got a straight line except for a little jump caused by a shift from moving in the positive to the negative directions. In that I still haven't installed the brace tabs the performance was still quite good.


Z-axis positioning stage mounted...

I finally decided to make the z-axis positioning stage like an inverse drawer, that is to say that it slides on the outside of and surrounds the axis rather than the other way around.

It seems to work rather well so far. I made it a little large so that the wood could swell slightly when the rainy season starts. I've got some adjustable clamps planned to get rid of the small amount of play that that makes.

I've clamped the Mk II where it will ultimately be mounted on the stage for scale.

I did a few x-axis traverses with the z-axis stage on-board. The weight of it doesn't slow anything down or seem to put any undue torque requirements on the gearmotors. It does, otoh, smooth out the movement quite nicely, however.

I've been thinking about mounting a Hamamatsu P5587 limits detector next to the extruder tip at a measured distance to one side to act as a IR altimeter. :-)

Monday, November 20, 2006


Wire gauge drill bits...

One of the most finicky bits of making a reprap in the States is drilling the extruder barrel orifice. About the finest gauge drill bit that you can get in most hardware stores is a wire gauge #60 which is just a shade over 1 mm in diameter. I've been gritting my teeth about buying one over the internet because it will cost about $3 and cost maybe $6-7 to ship. That sort of thing claws a big bloody hole in my stingy Scotts-Irish soul.

Tonight, though I was down at Orchards Supply and there was an old guy there who really knew his tools. He showed me a set of #60-#80 wire gauge drill bits for $30. A #80 is .343 mm in diameter. I snapped it right up.

If anybody else needs such a set you can get it over the web directly from the manufacturer who is in the Lower Hudson River Valley.

They work in my Dremel. Now to see if I can hold my hand steady enough to avoid breaking them. It will be interesting to see if 0.5 mm is really the smallest extruder orifice. :-)

Sunday, November 19, 2006


Z-axis takes shape...

I finally came up with an idea about how to make a stable z-axis for Tommelise.

Here you see some of the bits come together in situ on the x-axis platform. I'll probably have to rebuild it again after I get this try at it put together. I was originally going to use 1/4" steel guide rods like Cat did, but changed my mind after I got acquainted with how easy that arrangement jams if it is the slightest bit out of alignment.

Here is the full z-axis stage without the carriage for the extruders in place. As designed this one can accomodate two Mk II sized extruders grouped in towards the threaded thrust rod in the centre with their electronics cards mounted near the outer edge. This ensemble looks big and bulky. It is bulky, to be certain, but surprisingly light at about 750 grammes. It is also quite stable.

I haven't mounted all of the guide tabs and it tends to try to rotate about the y-axis about half a degree while doing an x-axis traverse. The guide tabs should cure that. I was able to stabilise it by putting one fingertip where one of the tabs will go.

Here is a video of the z-axis stage doing an x-axis traverse.

I'm thinking that it might be nice to have a separate z-axis for each extruder so that we don't have to confront the problem of having the tip of one dragging over the work of another one.

BTW, the effective working volume for Tommelise is now 250x250x90 mm

Saturday, November 18, 2006


Doing the x-axis...

I got the x-axis sliding joint working. It will be a lot less sloppy than the one on the y-axis. Here it is c-clamped to a fare-thee-well waiting for the wood glue to dry. I got a really close tolerance fit on this beast, though. I suspect that if I want I can hang two extruders off of each side of the x-axis gantry.

I had to go down and get some light spackling compound and a few sheets of sandpaper to clean up the x-axis floating joint.

It seated with less trouble than I had expected.

Here is a little video of the joint traversing the x-axis. It's awfully smooth considering there are no guide bars save the poplar boards on the top and botton to keep it straight.

It will be really nice being able to make nasty parts like this on a reprap machine instead of going through the whole glue and woodworking gambit.


Support material extruder...

Some time ago Adrian noted that we would be using a syringe type extruder for support material for the near to midterm since there had been some problems with his peristalic pump approach. His system uses a putty sold in the UK and parts of the old British Empire called Pollyfilla. It's basically a mix of gypsum plaster (if I recall correctly) and cellulose fibre. I used tons of it to repair cracks in the plaster of my home in South Africa and can attest to it's excellence. It doesn't shrink at all.

Pollyfilla is difficult to come by in the US which is a shame. The generic term for Pollyfilla here is "spackling compound". You can get it in a variety of formulations. I'm looking at the water-based, vinyl/plaster compounds. It costs about $1/lb in gallon cans.

That gets us down to how we can bootstrap a spackling compound syringe extruder without having Adrian having to make one for us. Here's my suggestion. Head on down to your nearest feed store and head over to the veterinary supplies counter and get yourself a syringe and hypodermic needle. I'd suggest getting a sack full since they're not very expensive and gasoline for the ride is still pretty pricey.

I got some 12 cc syringes and some 1" #20 hypodermic needles. Actually, I made this purchase some years ago when I was trying to get my head around the ins and outs of blowing bubbles in molten HDPE. Carefully cutting the sharp end off of the needle and rounding it off with the grinder wheel on my little Dremel tool left me with a 0.635 mm orifice which is just about perfect for what I need. Mind, you can get just about any orifice size that you want by selecting your needle gauge. I used the #20's simply because I didn't want to make another rather long trip to a proper feed store from this rather overgentrified area that I live in.

A few words of caution. Whatever you do, don't ask your doctor for a syringe and needle and for sure don't try to buy them at the pharmacy. There are apparently federal laws about such places selling you such things and if you make them too nervous they could call the police down on you. In the merciful if sometimes schizoid manner in which American law works, however, feed stores are able to supply your needs in this area, or at least the ones in my neck of the woods can. Don't make trouble for yourself.

Also, the business ends of fresh hypodermic needles are sharper than broken glass. Be very careful when you try to saw the end off of one. I wasn't and have a plaster on the end of my middle finger for my troubles.

I acquired a quart (946 ml) of Ace Lightweight Spackling compound for $4.49 retail. It weighs in, container and all, at 280 grammes, which gives it a density of 0.3, which means that it is mostly air.

It doesn't expand much, if any, when it leaves the syringe.

Extruding it from the syringe it behaves very much like whipped cream. You have to take care not to apply too much pressure to the plunger if you want to get a steady thread. I expect that using a pseudostepper that should be no big problem. It doesn't seem to jam. You can apply a thread on top of a wet thread immediately and get no sagging. Further, because of their extremely low density they can be teased into modest three dimentional paths without a lot of effort.

There is a little bit of polymer in this mix, so when the thread dries and hardens after a few minutes it has a bit of tensile strength.

This material looks rather hopeful as a support material.



I wanted to come up with a descriptive name for my repstrap, but I couldn't come up with anything catchy, so I ended up calling it ±... (I couldn't find a + over a . and none of my fonts are 3D, so I settled for + over -) The basic premise of the ± is simplicity. There's no real set design pattern for the ±, other than the basic ± shape. I'm currently mixing Lego technology (in the - axis) with some 1x2 repstrapping technology (in the + axises), but I've got plans to upgrade all of it, both to prototyped material in the reprap sense, and with feature enhancements such as moving from threaded rod to rack & pinion. Everything was built imperfect, with a fair amount of human error, with the expectation that I'll be able to find ways to compensate for that as I have ± prototype replacement parts, with more accuracy than its own.

Here we have what passes for the brains of the operation. I'm pulling in a 12v feed off a pc power supply (it's designed to plug into the inside of the computer running it, but with as many times as I've had to turn it off/on to work on it, it's got its own power supply for the time being), and then reducing it to 5v on the board itself. I wanted to keep it to just 12v in case I decide I want to plug some other 12v supply into it.

The coms circuitry is isolated on the board, in the upper right corner, and is connected to the motors with 4wire connectors. It's also got a 5v LED on it so I can stop checking the fan on the power supply to see if my board has power or not! The upper left corner is the Z axis controller; isolated from the rest of the board, it plugs in with the same 4wire connectors found on the coms circuitry, and has a similar 2wire connector for the axis bus (terminated). This was my original controller, so the ULN is soldered in place, but the PIC is socketed. It's also got the 3wire limitor switches, even though the 5v line isn't being used. All the controllers on this board are for unipolar steppers.

The lower half of the circuit board (left and center) is for the X and Y; they're seperated from the rest of the board, but hardwired together. They've got the same 4wire connectors leading in one controller and out the other; the 2wire connector for the axis bus connects to the X axis (left), and is terminated on the Y axis (center). I got smart here (thankfully) and socketed the ULN chips as well (I think one of them is bad, and it may have fried one or two PIC's in the process, thankfuly I didn't have to desolder 18 pins to fix it!)

I've switched over to a simpler limitor switch connector here; I'm using a single 3wire plug to carry the two 'control' wires and the ground, which then split off to the two seperate switches. In all cases, I've got the 220 resistor wired inline with the wires, and not on the circuit board itself; I wanted to share the ground off the board, and I want each switch to have its own resistor, so they're what begin the split.

The lower right corner is reserved for the extruder head circuitry, though I don't expect it to fit on this board; I'm piecing together the plans for a cleaner version of this that I hope will fit the extruder circuitry as well.

Here we have the ± itself (and my messy basement in the background).

Very simply, it's an X and a Z axis, suspended above a Y axis.

You have the Y axis, the -, the Lego axis, sitting on the ground, moving forwards and back. Above it, you have suspended the X and Z axis, the +, the wood/metal axis. I'm using an old pair of speakers (haven't worked in over 5 years, and then the bunny started eating one of them...) to hold up the +, they make a nice level platform being the same height (and they're old enough to actualy be made of wood!) The Y axis is pretty easy, given that it sits on the ground, and I've already described it elsewhere, so I'll concentrate on the +.

It uses a pair of metal rods for supports (salvaged mine from a CD/DVD stand, and they're not that strong or straight, but they're good enough) and a threaded rod for movement (with a drive nut in the center support). This is done both horizontally for the X axis, and vertically for the Z axis, sharing the same center (wooden) piece. The end pieces are all identical, a 1x2 (cherry I believe) cut to size (about 6 inches), with 3 holes drilled through them. I used a little plastic hand held Dowel Jig to drill the holes, and while they were all straight and consistant, they are all, consistantly, a few degrees off perpendicular. This probably would work better had I used a friend's drillpress, but not everyone has a drill press (and I'm not patient enough to wait for people to wake up so I can borrow their power tools!).

The motors (one per axis) are mounted to one end of the axis, attached to the (wooden) support on that end. I used some long screws and two pair of small wooden thread spools to hold it away from the support (to give room for my messy attempt at a connector between the motor and the threaded rod). Using a dremel(ripoff, with authentic dremel cutoff wheels), I shaped one end of the threaded rod to get a better grip with the connection, then used a bunch of electrical tape to tape it to the motor. It's not perfect, and the X axis has been giving me trouble with the tape slipping and the threaded rod 'seperating' from the motor, but it'll get me by for the time being.

The center support is where all the 'magic' happens; it's got both drive nuts for the X and Z axises, and it's the most complex piece in the while thing! I basically took a piece of 1x2, cut it longer (8 inches I believe), and drilled extra holes in it. The same three for the X axis (same spacing as the 6" pieces, lined up to one side) , and then an additional three for the Z axis, drilled perpendicular to the first three holes, with the same spacing, but lined up to the other side. (The six holes end up generally evenly spaced, criss crossing in a perpendicular pattern.) I then drilled out a pair of slots (one for each axis) to slip the drive nut in; they're not perfect, but they hold the nut snug enough that there isn't any play and I didn't have to glue them or anything. I slipped an extra 1x2 piece (cut to 6" with the same hole layout as the 6" pieces) over the Z axis ontop of the center piece, and attached it with glue; this gives better stability to the Z axis and helps to compensate for some of the wobble brought about by the oversized holes.

The limitor switches are taped to the four outer (wood) support pieces, and are triggered by the center piece. (I actually taped a yellow flat 2x4 piece to the center piece to help trop the switch on the top of the Z axis.) This whole contraption is mounted to the speakers through the two end pieces of the X axis, with a single screw through each. I've got them sitting ontop of some scrap 1x (from earlier attempts), to give enough clearance for the motor (with a diameter larger than the 1" thickness of the support).

There's a little bit of wobble, but I'm not still not too concerned about it. I've got a lot of imperfections in the system (as per my design), and I plan to start trying to extrude replacement parts before I worry about any of if; The wobble is reduced considerably as the speed is reduced, and if reprapping a more accurate reprap just means spending lots of time at it, that's fine with me... Once I get an extruder head, it'll be attached to the (wooden) support at the bottom of the Z axis. I'm not too worried about the axis being able to support it, it still moves pretty smoothly at 'full speed', and being the Z axis, it won't need that speed during use.

I originally tried cutting down a 1x6 into strips to use as the supports here, but the material was too unstable and too prone to splitting to be of any good. It was also slightly warping on me, giving in to the curvature of the grain. I've also done a lot of work with molding pieces out of polymer clay, but they've all turned out to be too fragile for any reliability.

Friday, November 17, 2006



I've had a lot of troubles getting the Hamamatsu P5587 limits detector chip to operate reliably as a PortB input. In theory the circuit it is wired into is supposed to put out a 0v and 5v signal when it crosses an IR opaque/transparent boundary. A lot of the time it does that rather well. After it warms up, however, you'll often start getting a low voltage of 1.74v and a high at 4.95v. Those don't trigger an interrupt on PortB.

After a week of fooling around trying to make it work the obvious way I finally decided to shift the input from the chip over to one of the the analog pins and measure the voltage during the 1 ms clock cycle interrupt and see if that works better. Sure enough it worked like a champ!

It took about 30 minutes to prove out the A/D code snipped and adapted out of example off of the Oshonsoft site, replace the PortB code with it and test the thing on Tommelise. It's been running on a 50 mm work area boundary to give it a lot of cycles per minute for about 45 minutes not without so much as a single hiccough.

Here is a pic of the test underway...

...and a short video of the y-axis positioning stage making the turn.

What I do with the analog input is simple. If I get over 2.5 volts I figure that it's over an opaque surface. If it is less than that, I figure it is over a transparent surface. Super easy.

Now I can go ahead and wire in the x-axis to the 16F877A board with reasonable confidence that extending the code that I have running the y-axis is going to do the job for the x-axis.

I was counting port pins and I'm pretty sure that I can get all four gearmotors (3 axes plus the extruder) running on this board slaved to the same 1 ms clock cycle. I'm going to build up a little test board around a 16F628A this weekend along with a Tip 120 to get used to running the extruder barrel heater. There's no obstacle to putting that onto the 16F877A board, too, except that I want to test out the code in isolation first.

With a little luck I should be able to do everything I need to run Tommelise off of one 16F877A using a 20 MHz clock crystal. :-)

So far the limits detection firmware has been running constantly for over eight and a hours at a variety of stepping rates with no problems. The y-axis motor is staying very cool as well, right at 42 degrees. The 754410 driver chip is running about 40.

Sunday, November 12, 2006


Chasing bugs...

The weekend was spent working the bugs out of the pseudostepper control of the GM8 using the Timer1 module in interrupt mode on the 16F877A microcontroller. After a very frustrating Saturday I finally discovered that my problems were a result of two factors...

Once I put a one minute warmup wait state on the board and cleaned up the TRISB declaration things began to work smoothly.

That done, I went back to integrating the Hamamatsu limits detector into the control programme. That was a little trickier than I first thought it would be. Once the pseudo stepper blunders into the limits zone and realises that it's there you have to programme a delay into it so that you don't get another interrupt the moment it leaves the limits zone.

For now I define the acceptable area for the positioning stage to operate in with a strip of white electrical tape.

One thing that has come obvious with the Hamamatsu chip is that it is very sensitive to IR radiation. I found that I could cause it to decide that it had hit a limit by taking a photo of it in operation with the flash option enabled. As well, having my work lamp on bright and aimed at that area of Tommelise caused false limits detections, too. I expect that I will have to put some sort of shading skirt around the detector to keep stray light out of it. There is enough 0.9 micron IR in ordinary light sources to trigger it without a lot of trouble. I recall that this was a problem when I developed the test board some months ago.

Saturday, November 11, 2006


Lego Axis Update!

I've built the (Lego) supports for the Lego Axis, and mounted them to a board. I mounted the motor to the front support with Legos and hot glue, and then attached pair of limiter switches to either end. I used electrical tape to tape down a set of '1x flat' legos to the board, and then just stacked the rest of the bricks ontop of that.

To get enough movement out of it, I had to raise the 'platform' so it would clear the support on the far end. The motor/wires/etc are too much of a liability on the near end, so I built the (grey) limiter stop out on the end; the far side uses the (black) support piece as the limiter stop. The switches are the black plastic pieces on either end (in the top black Technic piece on the near end, the top red Technic piece on the far end) with the 'metal tab' coming out of them. The connectors on the limiter switches are spaced just right to fit perfectly into three technic holes (using the first and third for the ground and 'usualy closed' leads)

Here are pictures of the motor mount, made out of legos. I just extended out from the near support and built up some blocks.

I then hotglued the motor to the legos (didn't feel like trying to drill into my legos, and the hot glue seems to work just fine!)

There's still a little wobble, but it's reduced quite a bit, and the wobble is actually more in the supports/motor than the carrage itself. I also know I'll be able to reduce a lot of that wobble once I get a decent connection between the motor and the threaded rod! (currently just electrical tape that mostly holds in a generally straight manor... hot glue didn't work and I haven't gotten around to getting any CAPA or anything else)

Thursday, November 09, 2006


Hamamatsu wired in and running...

This is a little tiny step. I was able to determine that the Hamamatsu limits detector was working fine with not a lot of trouble. Once I tried to get the motor control programme to detect the signal, however, all sorts of weird and wonderful things happened.

I finally tracked the problem down to the WAITMS (wait millisecond) command in the BASIC compiler. It wasn't written with the notion in being used in really event dense environments. I slowed the pseudostepping down and the code worked fine. You can see the GM8 changing direction when the Hamamatsu chip is brought near an IR opaque surface here.

Here you can see the limits sensor bouncing back and forth between two strips of white electrical tape put down on the work surface.

Oddly enough, when I duct taped the sensor boom to Tommelise's frame rather than using the big iron c-clamp the whole thing started working perfectly. I wonder that all that is about? I've had the positioning stage playing ping pong with the two tape limits for about an hour now with no problems whatsoever.

All this means is that I'm going to have to overtly programme timer2 to do the wait states instead of using the WAITMS command. It's annoying, but no big deal.

BTW, the Hamamatsu chip seems happiest about 3-4 mm above the work surface.

Monday, November 06, 2006


Testing the limits...

Quite some time ago I acquired half a dozen Hamamatsu P5587 reflective IR detector chips. They include both a IR source (~0.9 microns) and detector on the front face of the chip. The detectors look like little red spider eyes.

While you can use the company's PDF to size the resistors and capacitors that the chip needs, Acroname helpfully provides you with a schematic for the chip in their on-line parts catalog.

I built a test board for this chip quite some time ago and found that for the detection speeds we require for a RepRap the Acroname parts sizings works quite acceptably.

To get the chip onto the RepRap y-axis I did a quick lashup onto a thin wafer of poplar and attached it to the z-axis frame with one of my ubiquitous c-clamps.

Currently, the detector floats about 1.5 mm above the work surface edge. I am not sure at this point whether I should just make IR opaque marks on the tempered float glass work surface or glue a strip of paper onto that edge of the glass with something a bit more baroque in terms of a detector scheme. You can see that that remote power board at the bottom of the picture is getting a bit workout.

Here are two detail pictures of the lashup. One side ...

... and the other.

Now the big task will to be to get all the sensors and actuators to work together in the 16F877A. I expect that I will be toying with that job through this weeked. :-D

Tested the circuit. It works. It gives 5v for IR opaque surfaces and 0.1v for transparent ones.


Pseudostepping away!

Okay, I think that I have the firmware concept sorted out. Here you can see the GM8 gearmotor attached to the y-axis.

...and here you can see a rather neater encoder lashup.

This pic also shows you the remote 5v power board that provides regulated power for the shaft encoder and limits chips. It also shows you the situation with the PC power supply fans.

I've got a little videoclip of the GM8 operating in pseudostepper mode with a resolution of about 60 steps/revolution (~0.0175mm resolution) with a half second pause between steps. At the other end of the y-axis you can see another little videoclip of the encoder feeding pulse data back to the 16F877A control board.

This page is powered by Blogger. Isn't yours?

Subscribe to
Posts [Atom]