X-Carve mod pack 2

This is a follow up of pack 1.

  • GT3 belt and pulleys on Z

  • 4 axles instead of 8 stub screws to hold the X carriage V wheels (I know, I know…gotta do some cleaning before the next job)

  • Higher torque NEMA 23 on the X (was originally 140oz.in) to match the 2x 140oz.in on the Y. I settled with a 345oz.in one which is still within the X-Controllers range (3.0A).

  • Added a ground and a 5V DC port on the X-Controller

the former to ground the motor cable shielding (which is not so useful otherwise)

the latter

to power

  • the hall effect limit switches that replaced the mechanical ones

  • Hooked up an old playstation gamepad. So far I have assigned buttons for jogging, jogging pace (x10, /10), homing, probing.


I forgot to mention one more.

  • Updated the stock X-Controller’s fan with a quieter one. The original was loud enough to have me keep my ear protection on all the time, even when the router and shop vac were not functioning. After a couple hours my ears would get hot and start hurting. Not any more.


nice. :slight_smile:

1 Like

So pins 6 & 2 will give you 5 volts?

1 Like


Credit goes to @KenPeluso for being curious about it.

I just confirmed

tested and added the dupont connector to panel-mount jack to finish it up.


How does the PS controller connect to the X controller?

1 Like

The gamepad setup needs to address the following areas.

Since I already had the particular gamepad I used a playstation 2 to USB converter. Alternatevely I would get a generic USB gamepad. You get plenty of results if you look for either on google/amazon/ebay. The gamepad connects to an RPi’s USB port which in turn connects to X-Controller’s USB port.

g-code sender
I run bCNC on the RPi. This g-code sender apart from being the best performer as tested by Sonny, it’s packed with features some of which are unique (e.g. the only GRBL gcode sender with multiple policies for handling M6). In the gamepad scenario I take advantage of its ability to handle shortcuts, custom shortcuts and custom macros.

key mapping
I use the following libraries

sudo apt-get install joystick
sudo apt-get install python-xlib python-pygame

Key identification is done via (your actual device name may vary)

jstest /dev/input/js0

Then once you know your button IDs, the actual key mapping is handled by jkeys , a free python script.

You create your custom mapping “joy” file and then run

jkeys bCNC.joy /path/to/bCNC

My bCNC.joy so far looks like

    <joystick id="0">
        <button number="0" key="Up" />
        <button number="1" key="Right" />
        <button number="2" key="Down" />
        <button number="3" key="Left" />
        <button number="4" key="KP_Multiply" />
        <button number="5" key="Prior" />
        <button number="6" key="slash" />
        <button number="7" key="Next" />
        <button number="8" key="F7" />
        <button number="9" key="F1" />

The human friendly version of the above would be:

when I press the:

  • triangle button send <Up> , which is bCNC standard shortcut for +Y
  • circle button send <Right>, which is bCNC standard shortcut for +X
  • X button send <Down>, which is bCNC standard shortcut for -Y
  • square button send Left>, which is bCNC standard shortcut for -X
  • left side front top send <*>, which is bCNC standard shortcut for x10 step
  • right side front top send <PgUp>, which is bCNC standard shortcut for +Z
  • left side front bottom send </>, which is bCNC standard shortcut for /10 step
  • right side front bottom send <PgDn>, which is bCNC standard shortcut for -Z
  • select button send <F7>, which is a bCNC custom shortcut I made for probe
  • start button send <F1>, which is a bCNC custom shortcut I made for home
f1 = HOME
f7 = M5
     G38.2 Z-30 F30
     G0 Z5

It may sound overwhelming, but if you get a grasp of the idea (identify your buttons, then map them to known or custom shortcuts), the specifics can be worked out.

When I find some time I will try to take a small video to demo.

Oh, one more thing…

Apart from buttons, jkeys can handle axes.

    <joystick id="0">
        <axis number="0" low="Left" high="Right" />
        <axis number="1" low="Up" high="Down" />

This was an intuitive (and tempting) thing to try in the beginning in order to achieve X/Y jogging on a single joystick. However I did NOT go that way for two reasons.

(a) I could not get a clear horizontal only or vertical only press. My best horizontal move would always have some vertical “noise” and the other way round. I tried a small hack which filtered this “noise” by setting thresholds in the jkeys scrpit, but was still not willing to use it for the following reason.

(b) Jogging moves are buffered. I prefer the tactile feeling of pressing and releasing a button and knowing that one jog move will be executed. A longer axis press might accidentally send more than one jog move and this could potentially cause crashes. I am referring to crashes against workpieces or clamps or probe plates (i.e. where there is no protection from soft/hard limits).

Where did you find the parts for the GT3 pully upgrade? Particularly the front pully and the belt?

Here’s the full list to upgrade your Z to GT3.

PS. The SDP-SI site says GT2, but what you are interested in is the 3mm pitch GT2 (aka GT3). The link takes you directly there.

1 Like

Maybe. Openbuilds uses both notations (GT3 and 3GT) for the same product as well.

Whatever the name, the 3 parts mentioned above share the same profile and are interoperable. What is of interest in this particular upgrade is that this profile provides 233% the tooth engagement of (the same width) 2mm pitch GT2 …or 2GT or whatever it’s called :slight_smile:

Corrected 250% to 233%. It’s the ratio of

(piR3^2)/2 + 2R3*(h-R3) + 2*(R1^2-(pi*R1^2)/4)

once with the 2GT values of R1,R3,h once for the 3GT ones

1 Like

Sticker paper.





I love that axle mod! Do you notice a difference in the rigidity of the carriage?

Yes, it’s subtle but it’s noticeable. The X axis V wheels flex a bit less. It’s hard to quantify this “bit”, I did not think to take any kind of measurement.

got a link to the fan you bought? I’ve been meaning to change mine as well.

Sure, look for FD244010HB . Btw, the connector is different, I used the old one.


does this match?

1 Like

Yes, that’s the one.

How long m5 hex screws for the axle mod? 100mm ?

It must be a little less, I will check tonight and let you know.

…or we can reverse engineer it.

x carriage=65.15mm
DIN982 locknut=6.3mm (max)
eccentric spacer=6.35mm

top axle=65.15+6.3=71.45mm
bottom axle=65.15+6.3+2*6.35=84.15mm

So, get 80mm for the top axles and 90mm for the bottom ones.



Long M5 bolts just arrived. Working on the axle mod now. Cheers!