Sunday, January 31, 2010
"Ola" with two arms..
This effort resulted in this simple board; one LED, two photo-transistors.
Today, I went further, since the test board could detect a white/black edge printed on my inkjet. I made a 6 photo-transistor device using ordinary stripboard; still one LED, as these things produce a LOT of light. The reason for so many photo-transistors : the tranistors create pairs of voltages that a comparator will use to decide which one is looking at blackness, and which looking at white. Using two in this way reduces the effects of ambient lighting, ink reflectivity variations. Two pairs will provide Quadruture encoding, and the third pair will decode digitally printed absolute position markers.
Here's a more wide-angle shot to give an idea on the size of these components. The 6 transistor board is a bit longer than I wanted, but I still think it will work, and doing it this way allows a larger margin of error when I print the encoder wheels.
On the mechanics front, I finally got the 1.2 motherboard to drive the stepper motors. I found programming it much less intuitive compared to the Mega; you have to manually reset the board and get the timing just right in order to upload new firmware; it does appear there is an 'auto-reset' jumper, but the pre-assembled electronics does not include the jumper pins. I may eventually add a switch here to ease programming. Oh, and it took me an hour to figure out why the firmware did not download to the board. After I got a successful firmware download, I went searching for pin numbers so I could create a simple motor test, and eventually (after 3 hours) cobbled something together that worked. When I looked at the firmware source, I originally missed the #if guards, and mistakenly copied in the pin numbers for the 1.0 motherboard; needless to say, this worked for the X-Axis, but Y gave me a silent treatment, whereas and Z screamed painfully in a high pitch voice. There went another 2 hours testing cables and boards and trying this and than thinking I did something wrong when setting the signals in firmware.
I've uploaded a video of both axis turning; one continuously in one direction, and the radial arm reversing back and forth. Note that I turned the speed way down on this test; I had done this as part of diagnosing the problems I experienced when using the wrong pin numbers; I left it slower under the false impression that they would skip less -- unfortunately, they still skip a little at this slower speed when reversing. I intend on getting cubic splines up as quickly as possible, since these will integrate accelleration directly into the stepper logic.
Saturday, January 23, 2010
Ola learning to dance
Anyway, I took a short video clip showing the somewhat boring radial motion of the build platform. The motion appears very smooth. It is not exceedingly strong, I can stop and cause the stepper to begin stepping skips by grabbing the platform, but I don't think that will create any issues for RepRap printing.
My next step will be to get radial motion on the radial arm platform too, and then create some tests to see if I can calibrate and draw 2D shapes accurately with a mounted pencil.
I apologize for the audio quality; it's my first attempt to upload video/audio.
Update: I got the second motor mounted and working, sort of; Ran into a few issues: 1) The radial circle was quite a bit off, more than 1/2 cm; so I had my son spin it while I held a pencil steady to get a new better circle, and cut it out on the scroll saw (My friend says I should use a router and a jig; probably if I need to make another repolarepstrap, I may try that out), 2) so, now the belt for the radial arm platform is too long; ideally, it would be 2 inches (5 cm) shorter; as it is, I sanded out part of the side support to prevent the pulley from rubbing. That brings up 3) the pulleys are slipping around the stepper axle. I either need to add a flat so the screw pins can hold onto the axle better, or use epoxy or something and just permenantly fasten the pulleys -- which I want to wait on because 4) I may need to get another pulley as I sort of stripped one of them trying to drill it out to fit the axle; it is very rough and skips belt teeth.
Friday, January 22, 2010
Geared Nema 17 Extruder
I didn't have a lot of luck with the standard Mendel direct drive pinch wheel extruders, most likely because the steppers I had were not strong enough. I ordered in some 5 kg*cm Nema 17's, but unlike the datasheet, they had substantial flats on the shafts, which made building a direct drive extruder problematic. So, I thought I'd try building a geared extruder, using printed gears.
Sunday, January 17, 2010
RepolaRap Motor Mounted
The side pieces made out of poplar or birch -- I had it laying around in the garage. The two pieces are mounted to the upper radial platform using 3 cross dowel nuts. The motor plate is attached to it using 2 cross dowel nuts; my original vision was to use three but I didn't quite line it up right, and besides, with the bolts tightened, I think it will be okay. Even if it is not, a simple screw in the corner should secure it.
I'm going to try to wire up a single stepper driver, and see how effective it is at turning the table before I work on the other mount.
Thursday, January 14, 2010
RepolaRap Calibration thoughts
I've received a few ideas from others now, for how I might calibrate a RepolaRap XY axis. I may need to leverage some of these ideas eventually, but I wanted to describe my thoughts for how I might do this. The RepolaRap XY has intrinsically soft, round curves, and normally, we want it to do hard angles or straight lines. I'm still working out the math itself, but I think all the variables can be accounted for using the following procedure:
- Backlash can be ignored, or measured using the encoder wheels and compensated adequately when reversing motor directions.
- My 13cm radius encoder wheel can achieve minimum 2500 steps per revolution at 75 LPI (30 lines per cm) Sebastian pointed out a reflective encoder that appears to be able to get 3x this resolution, so I'll start off with worst case on the lowest resolution model.
- I can get my ink jet computer to print out the encoder wheel with good accuracy on a material that works with the LED/photo-transistors.
The encoders should let me accurately measure platform angle from an arbitrary home position on both platforms. The build platform angle is truely arbitrary. It's only affect is to build a rotated model, and who cares, since we can just rotate it around and viola! The radial arm home angle, however, is very important. Get it wrong, and straight lines turn into weird curves, and extrusion material volumn doesn't match print speed.
There are also two slight unknowns that should also be measured: the planer radius between the base / radial arm pivot and the extruder tip, and the limit circle diameter of the model space (I.E, the maximum radius of the largest circle you could print.)
My approach would be to manually rotate the table so the extruder was relatively near the center. This allows me to pretty accurately model the extrusion rates relative to platform rotations. Then, execute the following program to create a calibration thread that can be measured directly:
- Rotate Radial Arm 180 degrees
- Rotate Build Platform -90 degrees
- Rotate Radial Arm 60 degrees
- Rotate Build Platform -90 degrees
- Rotate Radial Arm -120 degrees
- Rotate Build Platform 60 degrees
This diagram shows where the measurements need to be made:
Hopefully, I'll be able to test this out within a week or two.
added streaming to gcode visualization tool
i was tinkering with the gcode visualization tool, and it now streams the transparency by gcode index instead of layer. this gives a neat effect, and looks like you're watching the part build on an actual machine. i hope you like it!
Tuesday, January 12, 2010
Meet Ola, the RepolaRap (At least, her first parts)
I figured there must be an easier way to DIY, and decided to try an idea I posted on this blog about 3 years ago. I discarded other ideas because, well, frankly, I think a polar bot would look really cool, and has some intriguing possibilities -- being able to print an 28cm / 11" diameter timing belt gear pulley to replace the MDF, for example, assuming I can avoid warp, so I can give friends mostly non-MDF Repolarap parts of their very own, maybe even more quickly than I could print out the parts for a mendel for them (maybe? Okay, maybe not.. that would be a really big part and very liable to have accidents partway thru; and thats not even thinking about the 42cm / 16" gear needed by the radial arm.)
So, I created a design in blender, tweaked it a bit (Okay, a lot), and posted in the forums to see if anyone had tried anything similar or had any suggestions or comments. After becoming more confident that something like this might work after creating a bearingless "mockup" in MDF (the wheels two wheels and an unusable upper radial arm that I did not take a picture of), I decided to take it further and ordered some 5mm steel balls to use in the bearing races, timing belts, and pulleys for the steppers sitting idly in the "here are my Mendel parts" bin. Unfortunately, I separated the orders by a few days -- I bought the steel balls thinking I wouldn't be ready to attach motors for another few weeks. Looks like I underestimated my woodworking skills, or overestimated the difficulty in building the XY stage prototype, or both. Anyway, the steel balls arrived today.
The build platform (medium circle), bearing races (the two smallel dark circles, steel balls already inserted), upper radial arm platform (the funny shape one with one of the bearing races on it), lower radial arm (BIG circle), and the base (the square with a bearing race on it). You probably don't need to, but can refer to the draft WIKI page on this design for a render I put up while working thru the design in blender.
I anchored the build platform to the upper radial arm platform, with intervening bearings to make it turn easily and smoothly. I'll still need to figure out how to put something on top of this to get plastic to adhere. The 4 machine screws visible are just there because I was too lazy to take them out when I disassembled the structure to take pictures.
Then, I anchored the lower radial arm anchored to the base, with intervening bearings to make it turn easily and smoothly. You have to proceed in this order because the nut (or bolt head) to lock down the pivot points become entirely inaccessible between the upper and lower platform. The hole you see here provides access for the bottom bit on the build platform pivot. Theoretically, I could drill out windows to get access to these, and still might because I may like to adjust platform bearing compression without having to take everything apart.
Finally, I screwed down the 4 machine screws into captured nuts I had already installed on the lower radial arm platform to firmly attach the radial arm parts together.
If I were to do it over again, I'd change the machine screws with inverted bolts up, glued or epoxied to prevent them from rotating, and ensuring enough recess space to allow the lower platform to rotate.
It'll be a few more days before I can actually see if the motors are going to move this. The wheels spin freely, have very little play in any except their intended degrees of freedom, but are a bit heavy. It might take a while to visuallize the motions. Think sort of like "Spirograph (tm) on steroids" and you get a feeling for how it works -- Radial motion on the build platform makes concentric circles around the build platform pivot. Radial motion on the radial arm makes circles half the size and touching the rim of the build platform. If you move each axis at a constant angular velocity, it draws big Rose Curves. Oh, the extruder stays stationary relative to the two platforms -- it will move only up or down relative to someone watching the machine.
Anyway, I plan to build motor mounts with a simple box in the corner on the upper bearing arm platform, and on the base. A 10 tooth pulley will drive a belt that wraps entirely around the appropriate circular platform. At 200 steps or 400 half-steps per rev, that should give near about .1mm accuracy everywhere the toolhead can reach. The belt doesn't seem to move up and down vertically when interfaced to the rim on the MDF, but I may need to put some guides nearby to keep it on the straight and narrow.
The wheels are a little wobbly (1-3mm wobble or so). I made the mistake of cutting out the circles prior to drilling out the center. Oops. If I were to do it over, I'd trace the template on a square with the hole drilled in, and be a bit more careful when cutting that out. I can always remake these, in any case; with a scroll saw, it takes about 10 minutes.
Saturday, January 02, 2010
Hacking on the code...?
Anyway, I've never really been able to publish anything worthwhile as it's either specific to my junk-strap, or it's so small it's pointless setting up a site, repository, whatever, and as a result I've not been able to "prove myself" worthy of the blessing that would be SVN access. ( wouldn't that be handy, hint, hint).
I constantly see requests in the forums for people saying "it'd be nice if..." or "can the firmware do X" and thinking to myself "I've written that, but how do properly *share* that: Sending a tarball of my firmware is bound to end in tears, as it's based the main firmware, but hacked up for my non-standard setup ( mega, gen2 electronics, DC extruder, graycode stepper drivers, etc )
So anyway, As my firmware has been getting further and further from the one-true-way, and it didn't support 5D ( a killer feature AFAIAC ) , I'm integrating the two, and sharing it all!
here it is, my integrated, feature-ful, experimental, probably-busted firmware code:
( a work-in-progress)
My added features:
- DC motor and encoder wheel support in the 5D firmware
- quadrature/graycode stepper control ( in addition to the step/direction controls)
- open-loop DC motor control of the Z axis ( well any axis really, but it's only slightly useful on a Z)
- support optional firmware "features" with #defs define which "features" apply to which motherboard/reprap types. include reasonable defaults for 4 different reprap types.
- mega support. ( not entirely by me )
- auto-shutdown on idle ( not by me )
- useful comments in the DDA code to un-confuse users. ( this code is unintuitive and complicated for the new user )
- I merged in recent mendel work too..
- removed assumptions about RS485 always being wanted, it's an optional "feature" now.
- and the added bugs of course!
Once "stable" (ie bugs removed) this firmware is aiming to be as close to a "universal" firmware as I've seen. ( ie it should support darwin,mendel,makerbot, custom, etc with a little extra effort).
Buzz.happy hacking 2010.
( patches encouraged/welcome)