Here's a video of shapeoko + grbl parsing gcode being streamed from my Dell Mini9. (You can download the gcode below.)

Clearly something is not right. However, the job will run identically, which makes me think that it's a simple software tweak as opposed to something more devistating like a hardware problem.

Another positive sign is the fact that the z-axis height seems to be working just fine. This particular g-code calls for a clearance height of 6.25mm and a target depth of -1mm. Both of which seemed to be consistent throughout the job.
helloworld.gcode
File Size: 11 kb
File Type: gcode
Download File

 
 
Here is a short video of ShapeOko drawing a box via grbl and hyperterminal. There is still a lot of work to do before this project is "production" ready. But it's really nice to make some progress every once in a while.

The current setup includes:
CNC Controller: Arduino running grbl
Stepper Controllers: Easy Drivers
Stepper Motors: 65oz/in bipolar
Linear Rails: Salvaged from previous builds
Power Supply: 24v 150W
Frame: Custom Designed Laser Cut 1/4" MDF (from ponoko.com)
Z Axis Mount/Slide: 3D Printed Custom Design (from shapeways.com)

If anyone has an idea as to what is causing the wobble in the y-axis, please let me know. I'm open for suggestions :)
 
 
What a long long night...

grbl is definitely installed on my arduino. That is good news! Actually it's the only good news for the night.

After getting home from work and getting the regular chores done, putting the baby to bed, and spending some time with my wife, I headed to the basement to put the final touches on this fantastic project. Honestly, I thought this was going to be "the" night. I couldn't have been any more wrong.

First: my lab is a disaster, which I had forgotten about because it's been at least 3 weeks since I last stepped foot in there. It seems that I was using it for "temporary" storage during the holiday season, and have since neglected to remove the temporary items. OK, spent 10 minutes moving stuff around enough so I could at least sit down and reach all of the components.

Two: The battery in my D630 laptop is totally gone. If I unplug it for a second, I get a critical beep and then BAM. power off. I should note that I'm using a power strip as an "e-stop". So, forgetting about the battery deal, i plug in my laptop, power up, log in, load the desktop (at least a 7 minute affair) and then decide to throw the power on the strip because I realize my soldering iron is plugged in. BAM, laptop powers off. I proceed to do this not once but TWO more times before i finally get smart an plugin to a dedicated strip.

Three: I hadn't exactly completed breaking out the STEP/DIR pins for each axis. Not a huge deal, but i did have to strip some wire and do a quick bit of soldering. Here's a picture of the proto board fully loaded.
Picture
In retrospect I should have done some color coding for step/dir and especially for the motor harnesses. Chalk that one up under being a rookie I suppose...

OK, so now that everything was setup, I was ready to manually send gcode to the arduino via the serial monitor in the arduino IDE. Laptop is powered up, arduino is connected via USB, XYZ axis' are connected to the arduino. All Set:

I power up the 24v Power supply and everything goes crazy. The X axis is wobbling back and forth, the Y axis is stalling itself out, and the Z axis was making a really creapy humming noise. Power off. Quick.

After trying a few more times, and double checking the pinouts in Simen's config.h file. I couldn't locate the problem. All I know is that if I don't hook up the arduino then everything is fine. The motors will sit there quietly, and everything looks like it's in order. But, the moment I hook up the arduino... bad stuff happens. Here's a video demonstration.

 
So, like I said: That's it for tonight. I'm going to enjoy this delicious Pale Ale from Bell's Brewery and go to bed. Maybe tomorrow will be the day?
 
 
After a busy holiday season, it looks like we're back to work:

eps files have been uploaded to Ponoko, and can be found by searching for "ShapeOko". From there you can order. It wasn't exactly necessary but removes one step of the process for anyone looking to build their own mill. Instead of having to upload the files, you can just add them to your cart, and go. Also, the files are freely available to anyone either through ponoko or through the forum here.

Does anyone have experience releasing something under an open source license of an sort? After giving this some though I'd really like to get an official release method but don't really know where to start. Suggestions are welcome.

Machine progress update:

  • grbl is loaded on my arduino!
  • replicatorG is loaded up and (hopefully) configured correctly on my PC.
I will have some time tonight to test this out, so everyone please keep your fingers crossed. I'll report back tomorrow.
 
 
I have managed to find some time during the holiday season to work on the mill. Here's a recap:
  • Soldered the EasyDrivers down to a protoboard, and ran the appropriate wires, bringing out the power, step, and dir from each one. I'll get a picture of that up soon.
  • Still working on configuring grbl. I've email Simen again trying to clarify a few things. Hopefully he gets back to me soon.
  • Posted the updated set of drawing files on the forum (including STEP, DXF, PDF, and the EPS nest.
  • Posted link to shapeways
  • Looking at embedding a 3D model using Autodesk's Project Freewheel
  • Used myNesting to product semi-efficient nests. They are in beta now, so all of the nests are free! A very good service if you're looking for a simple nesting solution.
 
 
Because of the fantastic amount of feedback about the mill, I've opened up a forum!

The forum consist of:
- an updated set of drawing files
- the current Arduino code base
- General Discussion forum

I have also been working on an assembly manual and a quick-start guide, which will hopefully be turned into a wiki before the project is complete.

It's a little early, because the project isn't 100% complete, but in the spirit of the season I want to send out a *HUGE* thank you to everyone who has helped me get this far. After 3 years of tinkering I can finally see the end of this project. But, if things go well with the forum and the small community that has formed, I'm hoping this is just the beginning of an entirely new project.

Happy Holidays,
Edward
 
 
There's something wrong with the X axis. Unlike the Y, it's very difficult to move. Well, not very difficult but more difficult than the Y. I think there may be a bit of a design flaw... stupid designer.

From what I can tell, there is some friction between the X-axis-rail-mount-plates (the ones slotted end to end) and the X-axis-cross-plate (the one that the X-axis acme nut mounts to). I'll try taking some sandpaper to it and if that doesn't work, perhaps the dremel? Someone also suggested I use wax.. i don't even know where I'd find wax though. Also, I should have boxed in the X-axis cross plates because there is flex when the nut is being driven.

I'm going to move forward and continue with the current iteration. After the new power supply is delivered and the EasyDrivers are installed, I'll see where we're at. But, I'm afraid I'll have to make some changes to the design and re-order all of the parts from ponoko. It's not the end of the world but I hate the fact that I didn't get it perfect the first time...

Though, I should be used to that by now.

On a different note: When I started this project I was certain that a computer would be running the machine. However, I've been using the arduino to test the motors and when I get the 2 additional EasyDrivers I'm planning to run them through their paces with the arduino as well. I keep thinking how awesome it would be to use the arduino permanently as the controller. Yes, replace a full PC with a tiny arduino! My machine has a very small footprint to begin with, and I keep thinking how cool it would be house *all* of the controls in a tiny matching box! I don't even know if that's possible, but wouldn't it be sweet!

I'm imagining something like this: Obviously, do the CAD/CAM on a workstation but save the G-code to an SD card. Then, insert the SD card into the arduino, turn the arduino on, it would then look for a specific text file. Parse the file and run the machine! I know it's a lot harder than that and I'm doubting there would be enough room on the arduino to store the code to both control the reading of the SD card and parse the file and run the machine.  Either way, a guy can dream right?
 
 
Just one short day after figuring out the Y-axis, the X and Z are both moving!

I decided to stop by Radio Shack and pickup some DB9 connectors (1 male, 3 females) to make switching between motors easier. Although soldering all those pins on (24 total) wasn't much fun, it was totally worth it. In addition to making it easier switching between X,Y,andZ, the connectors also cleaned up a lot of the wiring.

I also soldered headers onto the easy driver so I could actually mount it on the breadboard instead of just setting it there! Worked like a charm.

As for the power supply, i switched from the ATX PS which was pushing 12v, to an old Dell Inspiron 20V 90W power supply. I'm not certain on this, but I'm pretty sure the extra power has really added to how smooth the motors run. I'm not even sure if that's possible, but it seems like it to me.

Here are some video of the other two axis' running. The Z looks especially smooth, which i'll say is from the fact that the acme rod is short which pretty much eliminates the chance of it being bent (as I suspect is the case on the Y axis). The X axis is coming along but there seems to be some friction somewhere along the path which is causing it to hang up and stall the motor (even with the ramp up / ramp down code)

I ordered two more Easy Drivers from Sparkfun yesterday, they should be here early next week. At which time I'll try hacking together something that runs all 3 axis in an indefinite "test" pattern.

Pretty exciting stuff here!
 
 
The Sparkfun forum guys really helped me out. After getting the Y-axis stepper up and running with the Arduino, there were some issues. Mostly it was loosing steps in a bad way. Plus, the vibration threatened to tear my machine apart! OK, that last bit was an exaggeration, but the vibration was pretty bad.

The guys on the forum pointed out that you cant just start a stepper at full speed, you have to "ramp up". Which after thinking about it, makes perfect sense. At this point in time, i've learned enough to know that in most cases, "it's already been done". Meaning, there was no need for me to write new code to "ramp up" the arduino. I mean, there are tons and tons and tons of stepper based arduino projects on the web, surely someone must have written some good code.....

The short answer: Yes, it's out there . But, the really surprising part is, that link is the only one i found where the steppers were "ramped up". Now, don't get me wrong, it WORKED! Check the video for proof of that. The difference with a smooth start is night and day compared to just the standard method. BTW: the standard method is: Start a loop, Pull step pin HIGH, put step pin back to LOW, delay for a set amount of time, loop. Most people just set the delay to something that won't stall their motor. This varies greatly depending on the specs, but for the most part people are between 200 and 400ms. I guess I'm wondering why more people don't start smooth? maybe it's just easier to set the delay and forget it... who knows. Either way, I'm really happy with the progress so far. Things are starting to come along.
 
 
The guys in the Sparkfun forum are really helping me get this thing going! Right now I'm working one axis at a time. Here is my attempt to move the Y-Axis with a 60oz/in stepper and the EasyDriver from Sparkfun.

If you have a listen, it starts out pretty well and then makes this terrible grinding/vibrating noise. I found out that is the motor stalling and/or loosing steps, It's could be from a variety of things, all of which sound pretty managable. I'll try to get it smoother and more consistent.

Although it's not perfect, I'm fully confident this solution is going to work.