Cat's ShapeOko (#709)

Posts: 4442
Joined: Thu Jul 19, 2012 6:50 pm
Location: Camberley, UK

Cat's ShapeOko (#709)

Post by cvoinescu » Tue Sep 11, 2012 6:07 pm

I got my ShapeOko kit last week (Inventables batch #3), but it had to wait until I returned home.

I am building the ShapeOko following the instructions, with these exceptions:
  • Longer Y rails (495mm);
  • Dual Y drive (two motors);
  • Modified Z drive (more on that below);
  • Yet another zip tie method of belt attachment.
Prep work

Cutting the Makerslide. I cut I cut 1m of Makerslide in half. Getting two pieces of the same length with a clean, straight cut proved a little more difficult than I would have guessed. My chop saw, even though it's perfectly adequate for wood, flexes a little too much when cutting aluminum, so the cuts aren't perfectly straight and flat. I got decent cuts in the end, and I wasted only about 3mm of Makerslide.

Enlarging the holes. As with everyone's Makerslide, mine did not fit the plates. The entire profile was slightly misshapen, with the smaller edges not quite parallel, but that didn't matter: the only real problem was the hole in the core with the three inner walls, which had migrated about 0.5mm diagonally, toward where the fourth wall would have been -- so it wasn't only too close to the other hole, but also further away from the plane of the V-rails. To work around that, I drilled the two top holes in the motor plates to 5.5mm. While at it, I also enlarged the motor mounting holes to 3.3mm. Then I tried to use the same 5.5mm drill bit to enlarge the oval holes in the end plates. That worked, to an extent, but I ruined my drill bit and I would not recommend this approach to anyone (too dangerous). I got jagged edges, which I cleaned up as well as I could with the Dremel.

Removing the nubs. My motor plates had nubs (little molten metal droplets) on the lips of every single hole, and they did get in the way: the eccentric spacers didn't fit on the side with the nubs, and it looked like the washers and screws were not going to sit straight. So I removed all the nubs with my Dremel, even those in holes I wasn't going to use.

Tapping the Makerslide. I tried to use mineral oil -- of the kind you buy at the pharmacy (as a laxative, in the US), or at Ikea to oil wooden cutting boards. It wasn't very good, because it helped the chips stick together and create a mass clogging the flutes. I tried WD40 (the only other oily thing I had), and it was better but not by much. By the time I finished experimenting and decided that neither the laxative mineral oil nor WD40 were good cutting fluids, I had finished tapping all the holes. I tapped them all to the length of my tap; about half the holes went all the way in one go (backing up half a turn every two or three turns), for the other half I had to back out midway, clean the tap, and resume.


Second Y motor plate. I ignored the idler Y plate instructions and built a mirror copy of the motor Y plate instead. I had bought two idlers and one MXL pulley from, extra M5x30 and M3x8 bolts from Boltmax, and a belt on eBay.

Motor mounting. I used M3 washers as spacers on the motor attachment screws. Four washers on each screw were almost enough, so I used five of them (for a grand total of 60 extra M3 washers).

MXL pulleys. I had the unpleasant surprise that one of the MXL pulleys had a bore that narrowed toward one end, so it wouldn't fit on the motor shaft. I drilled it out carefully, from the side that did fit, using a new 5mm bit and holding it with locking pliers. After that, it fit snugly (the other one was fairly loose). The grub screw on the pulleys from Inventables takes a 1/64" Allen key, not 1.5mm as advertised, and they are of worse quality than the one I had bought from (slightly eccentric, coarser finish, some mold flash). The grub screw of the pulley takes a 1.5mm Allen key.

Flipped X rail. I installed the X rail with the Vs to the front, and I reversed the order of everything on the M5x55 bolts holding the X motor plate and the carriage plate together.

Threaded rod and Delrin lead nut. The threaded rod looked rather nasty -- a little rust and lots of debris in the threads. I wasn't going to put it into my precious Delrin lead nut looking like that. I put the grubbier end in my battery-powered drill, grabbed an M8 nylon insert nut ("Nyloc"), held it with locking pliers, and ran it up and down the threaded rod several times. Lots of icky stuff accumulated on the nut. I got a new nut and ran it again up and down the threaded rod; it collected much less dirt this time. I then ran it through the Delrin lead nut, which collected yet more debris. It was easier to turn than the nylon insert nut, but not by much. Running it up and down several times loosened it somewhat, but not enough, in my opinion. I lubricated the threaded rod with Boeshield T-9, but that helped only a little. Seeing that this wasn't going anywhere, I said to heck with it, and took my M8 tap and re-tapped the lead nut. I was afraid to back out the tap, in case it made the thread too loose, so I threaded the tap all the way in and through the nut, only once. This created only a little very fine Delrin swarf, but the nut was just right, or maybe even a little too loose.

Original Z drive. The kit included a Delrin Z motor plate, and the bearing was a very, very tight fit, so I decided that the bearing could take the weight of the spindle and other forces on the Z axis and not slide out of the Z plate. In a ShapeOko assembled according to the instructions, the weight of the Z axis does not get transferred to the bearing, because the bearing is free to move down the threaded rod; instead, it is trasnferred to the Z motor, through its bearings to its shaft, to the flexible coupler, and finally through the threaded rod to the lead nut. Even if the shaft and the threaded rod touch, which is what Edward recommends, the weight is still supported by the motor's bearings. When subjected to an upward force, such as when plunging into a cut, the Z axis lifts and the flexible coupler expands until the bottom nut rests again on the bearing.

Modified Z drive. I've always thought that the Z drive design was a weird oversight, so I assembled my Z as follows:
Alternate Z leadscrew assembly. Inset: notch in Z rail
Z_drive.jpg (245.42 KiB) Viewed 6340 times
  1. Insert the bearing into the Z plate, making sure it is flush with one side of the plate. It is important that the bearing lines up and sits horizontally. The side that's flush is the bottom, the side where the bearing sits proud of the plate is the top.
  2. Find the cleaner end of the threaded rod. Thread a nut on the other end. Thread it until 19-20mm of rod sticks out.
  3. Slip the bearing, with the Z plate, on the short end of the threaded rod, bottom (flush) side toward the nut. If it's not a tight fit, take it off and put some tape on the rod until the bearing fits snugly. Aluminum tape works very well (I needed two turns of that); plumber's PTFE tape is good too. Tape only the 7mm of rod that goes into the bearing. Work the tape in with your fingers, then try the bearing again. The tape helps keep the rod centered in the bearing during assembly.
  4. Thread another nut on the end of the rod. Tighten the two nuts firmly, trapping the bearing between them. You should have 8-9mm of rod sticking out of this last nut.
  5. Slip the flexible coupler on to the end of the threaded rod. If it's not a snug fit, again, tape the end of the rod. Do not tighten the coupler grub screw(s) yet.
  6. Mount the Z motor to the Z plate.
  7. Thread the Delrin lead nut about three quarters of the way on to the threaded rod.
  8. Bring the Z plate and the Z rail together. You'll see that the bottom nut touches the Makerslide. Using a file, notch the inside top end of the Z Makerslide enough that the nut can rotate freely, even with the rail in the closest position to the threaded rod. You need a notch about 12mm wide and 4mm tall, and it's not a problem if you remove a little more material than that.
  9. Attach the Z rail to the Z plate, but do not tighten the screws all the way yet.
  10. Mount the four Z V-wheels on the standard carriage plate, put the Z axis assembly in, and adjust the eccentric spacers.
  11. Line up the lead nut with the respective holes in the carriage plate, and screw it in. Temporarily tighten the screws.
  12. Looking from the side of the assembly, find the position for the Z rail on the Z plate that makes the threaded rod run parallel to the Z rail. This is easiest if you look from the angle where the edges of the Vs on the rail seem to overlap. The small space between that edge and the threaded rod should be the same at the top and at the bottom of the assembly. Tighten the Z rail screws.
  13. Loosen the lead nut, then tighten it back again.
  14. Tighten the grub screws on the flexible coupler.
  15. Continue with the assembly of the X carriage as in the original instructions.
This configuration has the advantage that up and down forces on the Z axis are both applied to the Z bearing. The flexible coupler does only its intended work, that of compensating misalignment of the end of the rod and the motor shaft; it doesn't have to support the weight of the entire Z axis. Potential problems are a threaded rod that's not straight, and M8 nuts that are not quite perpendicular to the rod. Unfortunately, the latter is a frequent occurrence, but it seems that most of the wobble gets taken by the flexible coupler, and the Z axis itself is steady.

Belt attachment. Finally, everything else assembled with no further surprises, the time came to attach the belts to the belt anchors. I did it as in the image.
Zip tie belt attachment and tightening
Zip_tie_belt_attachment.jpg (34.06 KiB) Viewed 6340 times
I am less than thrilled with the belt anchors themselves: I can't get the belt very tight because they tend to bend. I got it as tight as the anchors themselves permitted. I had to add a second zip tie head on the end of the zip tie that goes through the hole, because one of them had begun to slip back. These zip ties aren't the best around; good zip ties should hold. The same method works even better if you have holes or slots that line up with where you want the belt to be (for example, Edward's new X plates), because the zip tie attached to the belt does not have to bend around. Just poke it through the hole and slip two zip tie heads on it -- done.

Space Shuttle

Landing the space shuttle on top of the Z motor. An absolutely necessary step.
Landing the Space Shuttle on top of the Z axis
Space_shuttle_Z_axis.jpg (97.25 KiB) Viewed 6340 times
To be continued...
Proud owner of ShapeOko #709, eShapeOko #0, and of

Posts: 115
Joined: Thu Jun 21, 2012 9:02 pm
Location: Yorkshire, UK

Re: Cat's ShapeOko (#709)

Post by baz » Tue Sep 11, 2012 7:37 pm

That looks great Cat, I have just changed my belt clamps to your design.


ShapeOko #676, eShapeOko #11, Hardened MakerSlide, OpenRail, Steel v's, Misumi Extrusion, Kress 800
MakerSlide Europe Store

Max Metz
Posts: 240
Joined: Sun May 20, 2012 11:55 am

Re: Cat's ShapeOko (#709)

Post by Max Metz » Wed Sep 12, 2012 3:23 pm

Looking really good Cat. :D

As I installed my sensors, I thought about how much you patiently helped me in the planning with the wiring and resistors; great to see we are doing our builds concurrently mate - enjoy the day. :D

Posts: 4442
Joined: Thu Jul 19, 2012 6:50 pm
Location: Camberley, UK

Re: Cat's ShapeOko (#709)

Post by cvoinescu » Sat Sep 15, 2012 12:26 am

On to...


Driver "shield". I soldered pins to three Pololu driver carrier boards (I'm driving the two Y motors from one driver) and stuck them in a half-size breadboard. I added the few passive components needed, and I connected it to the Arduino (Uno R3) using the horribly stinky flexible breadboarding wires that seem to have inundated eBay recently.
Breadboard electronics
shapeoko_breadboard_electronics.jpg (123.19 KiB) Viewed 6222 times
Power supply. I'm using my lab power supply, currently set at 18 volts (it can do up to 36 V at 3 A). I have a Chinese 24 V 10 A power supply, but I could not be bothered to take it out of its box yet. The drivers draw about 650 mA when running; I haven't measured the motor current yet.

Wiring. I got a long 16-wire ribbon cable from my "Misc. Cables" box, and wired it to the motors, using high-tech insulation and retaining devices, namely ordinary adhesive tape. I spliced the ends to more of the stinky flexible breadboarding wires, again employing space-age methods in insulating them (more tape).
Temporary wiring using ribbon cable. Note extremely useful tape dispenser in the background, and extreme mess everywhere
shapeoko_temporary_wiring.jpg (120.39 KiB) Viewed 6222 times
Firmware. GRBL 0.8a from the wiki; I have 1.8 degree steppers, so I had to change $0 and $1.

Hello world

Without dual Y drive. I tried the Hello World without dual Y drive, before I installed the belt on the left side. As I could have guessed by wiggling the carriage about by hand, there is quite some slop, despite the V-wheels on the driven (right) side being as tight as I dared to go.

With the dual Y drive. Now that looks like Helvetica! Much, much better. Here are two runs: single-Y on top, dual-Y in the middle, and overlapped at the bottom (single-Y in red, dual-Y in transparent grey). There are other factors than single/dual drive (pen pressure must have been different; the pen is an ordinary ballpoint and has its own "runout"), but the difference is substantial, especially on the left (nearer the idle Y end). And this is just drawing with a pen, no cutting yet. No serious ShapeOko owner should be without some form of dual Y drive, in my opinion.
Hello World with single-Y (top, and bottom in red) and dual-Y
HelloWorld.jpg (122.76 KiB) Viewed 6222 times
To be continued...
Proud owner of ShapeOko #709, eShapeOko #0, and of

Posts: 84
Joined: Sat Apr 28, 2012 7:42 pm
Location: Pittsburgh, PA, USA

Re: Cat's ShapeOko (#709)

Post by ejs » Mon Oct 22, 2012 6:44 pm


It's lovely to see your Z-axis modifications. I initially did the same method on my build, sandwiching the bearing between the two nuts. When I realized there was contact between the slide and the lower nut, I undid the mod. I never thought to simply cut away material from the slide itself--thanks for that.

Also, the zip tie belt clamp is absolutely inspired. I'll be putting that in place next time I'm in the shop.
Build it better than it was built for you. And give permission for the next guy to do the same. That's how Open Source works.
ShapeOko # 497: producing the Buildlog CNC Stepper Shield

Posts: 4442
Joined: Thu Jul 19, 2012 6:50 pm
Location: Camberley, UK

Re: Cat's ShapeOko (#709)

Post by cvoinescu » Tue Jan 15, 2013 1:19 am

More Electronics: Perf Board RAMPS Clone
eshapeoko_stripboard_electronics.jpg (370.81 KiB) Viewed 5702 times
eshapeoko_stripboard_electronics_detail.jpg (415.86 KiB) Viewed 5702 times
PCB. I moved my electronics from breadboards to perf board. Actually, it's TriPad stripboard, which I find I like a lot, compared both to ordinary stripboard, and to perf board with isolated pads. The thin insulated wire is Kynar wire, and the shiny one is pre-tinned copper wire; both are very handy. Many traces on the bottom of the PCB are joined together with the tinned copper wire, mostly along the direction of the triple pads; perpendicular connections are on the top of the board.

Schematic. The schematic is based on RAMPS, but I did not follow that exactly. I have two Y drivers, connected to separate pins on the Arduino, and I have modified Marlin to drive both at the same time. For ease of connection to an unmodified Marlin, or to Arduino Uno running GRBL, the three wires for the extra Y driver can be parked into a little socket, so that both Y drivers are controlled by one set of pins; the same can be done with the enable inputs of all the drivers, to control them from a single output (GRBL, for instance, does not control them separately). I can easily wire an IDC connector for each scenario, though, including one for parallel port control from a PC, and swap them as needed.

The breadboard has optoisolators for the TTL serial lines of the USB-to-serial adapter (plugged into the breadboard). That eliminates the USB disconnection problems I've been having, each time the fridge compressor turned off. It works perfectly now, even with that fridge plugged into the same circuit, but I do have to move it to a PCB.

If anyone is interested in my schematic, I'm willing to sit down and draw it. Just ask. :)

Power. The power supply is an adjustable bench power supply, set to 24 V, 3.5 A; I have a 24 V, 10 A supply waiting to be wired in, but that's not safe without an enclosure. The small board with a large heatsink is a DC-DC converter that supplies 12 V for the fans. Everything else is 24 V, including the hot end heater resistor and the (future) heated bed. (I forgot to mention it, my eShapeOko is also a 3-D printer.)

As most hobbyists, I have a number of PC power supplies lying around. They have proven useful, for once: the thick wires (e.g. between the board and the connectors for the steppers) come from two dead ATX power supplies.

Connectors. I opted to use the cheap but solid-looking round connectors that can be found on eBay in any number of pins from 2 to 10 (sometimes described as "C146", or "aviation" panel connectors; this and this are examples). I chose 4-pin connectors for the steppers, a 5-pin connector for the heated bed (heater, thermistor), two 7-pin connectors for the limit switches, and 9-pin connectors for the extruders (heater, thermistor, two fans). A 4-pin connector would have been enough for the heated bed, and 7-pin for the extruder, but I chose a different number of pins to distinguish them from the stepper connectors and limit switch connectors, respectively. The limit switches aren't wired yet, there's only one extruder at the moment, and no heated bed for now -- but getting there.

Enclosure. This is next on my list...
Proud owner of ShapeOko #709, eShapeOko #0, and of

Posts: 69
Joined: Tue May 28, 2013 6:47 pm

Re: Cat's ShapeOko (#709)

Post by VT91 » Sun Jun 16, 2013 5:05 am

Beautiful. How did you configure it?
If I replicate it, how would I tell my firmware where is what?

Posts: 4442
Joined: Thu Jul 19, 2012 6:50 pm
Location: Camberley, UK

Re: Cat's ShapeOko (#709)

Post by cvoinescu » Sun Jun 16, 2013 3:22 pm

VT91 wrote:Beautiful.
Thank you. :)
VT91 wrote:How did you configure it?
If I replicate it, how would I tell my firmware where is what?
In Marlin, it's #define MOTHERBOARD 33 (that is, RAMPS with one extruder). I can run the two Y drivers off the same Arduino pins, and then that's the only configuration -- the pinout is the same as RAMPS 1.4 -- or I can run one of the drivers off three new pins, which is how it's actually configured in those pictures, but I had to make a small change to Marlin for that. There's no good reason to do that, normally -- I was exploring the possibility of auto-squaring during homing.

If you want, you can make a configuration that doesn't correspond to an existing board. It's very easy and clean to add it to the list of supported boards. I didn't want to bother, though, so I just used the RAMPS pin assignments.
Proud owner of ShapeOko #709, eShapeOko #0, and of

Posts: 69
Joined: Tue May 28, 2013 6:47 pm

Re: Cat's ShapeOko (#709)

Post by VT91 » Sun Jun 16, 2013 4:15 pm

How did you acquire all this information to know how this program works and even to modify it?

I read a lot of documentation on Atmel microcontrollers, RAMPS, Marlin and GRBL firmwares and it seems to be rather chaotically scattered over the Internet. There is no single textbook to answer my questions.

All those programs are too big for Atmel 328p that I have on my table right now?

Will Winder
Posts: 435
Joined: Fri Apr 20, 2012 2:40 pm
Location: Hudson, MA

Re: Cat's ShapeOko (#709)

Post by Will Winder » Sun Jun 16, 2013 9:29 pm

VT91 wrote:How did you acquire all this information to know how this program works and even to modify it?

I read a lot of documentation on Atmel microcontrollers, RAMPS, Marlin and GRBL firmwares and it seems to be rather chaotically scattered over the Internet. There is no single textbook to answer my questions.

All those programs are too big for Atmel 328p that I have on my table right now?
For the things you're asking about, theres no substitute for reading the source code.

GRBL is very well organized, the developer has made a lot of effort to make sure people can easily read the code and hack it to do new and different things. You can generally tell just by the filename what the file is for. It is the only driver firmware that will run on the Atmel 328p, it will not do 3D printing because it is limited to 3 axes.

Marlin is probably not quite as well organized, but it has many configurations that you can change just by modifying files Configuration.h and pins.h
ShapeOko #367: Dual-Y drive, Belt on outside, 1000mm Y-Axis, DW660 Spindle, Nema-23 X/Y motors.

Primary developer on Universal Gcode Sender.

Post Reply