Wooden Chain

By | 27 November 2016

3d_view

But what is it ?

No it’s not for a bicycle. No it’s not for a tank.

This is made for the proud users of a DIY 3D printer or a CNC.

This is a cable trunking chain; it is meant to hold a couple of cables and move them along with the X,Y or Z axis while keeping them out of the way of the mechanical parts.

r7202773-01

Credits: RS components

All respectable DIY machine should have some of these 🙂

Even if they are not that expensive, they still represent “nice to have” features that will not fit into a tight budget.

This tutorial explains how to build them using a Laser cutter or… a 3D printer, but it will be much slower.

Adjust the dimensions

Using the OpenSCAD model, you’ll have to adjust the dimensions to fit the side of your cable/connector.

The cables must be freely passing through the internal opening of the chain.

  1. Adjust parameter W for the width, and H for the height.
  2. For the laser-cut model
    • set LC to true
    • set also the thickness T of your material, in mm.
  1. For the 3D printed model
    • set LC to false
  1. Press F5 first for an overview. That will generate one inner link, and one outer link; they only differ by their width.
  2. Press F6 to generate the final build.

Laser cut

Cut

File/Export the drawing to a DXF file… or your preferred 2D format.

Feed this file to your laser-cutter, cut as many as you need.

Assemble

You’ll need some kind of glue for this. My preference goes for hot glue, as this is easy and solidifies quickly. However, it is a bit bulckier and generates some glue hairs.

Start with and inner link

OpenSCAD file

// laser cut model ?
LC = false;  // or true

$fn = 36;

// link step
S = 36;

// link width
W = 40;

// thickness
T = 3;

module link()
{
    difference()
    {
        hull()
        {
            translate([ S/2,0]) circle(r=S/3);
            translate([-S/2,0]) circle(r=S/3);
        }
        translate([-S/2,0]) circle(r=S/6);
        // centering marks
        translate([S/2,0])
            for (i=[0:3])
                rotate(90*i) translate([S/6,-1/2]) square(1);
        // assembly slots for spacer
        translate([-S/8,S/3-2*T]) square([S/4,T]);
        translate([-S/8,-S/3+T]) square([S/4,T]);
    }
}

module spacer(L)
{
    translate([-S/8,0]) square([S/4,L]);
    translate([-S/6,T]) square([S/3,L-2*T]);
}

module long_spacer()
{
    spacer(W);
}

module short_spacer()
{
    spacer(W-2*T-T/2);
}

module flat()
{
    link();
    translate([0,S]) link();
    translate([1.5*S,0])    long_spacer();
    translate([2*S,0])    short_spacer();
}

module link_element_3D()
{
    linear_extrude(T) link();
    translate([S/2,0,T]) cylinder(r=S/6,h=T);
}

module big_link_3D()
{
    color([0.7,0.5,0.1])
    {
        translate([0,0,0]) rotate([-90,0,0]) link_element_3D();
        translate([0,W,0]) rotate([90,0,0]) link_element_3D();
    }
    color([0.7,0.6,0.2])
    {
        translate([0,0,-S/3+T  ]) linear_extrude(T) long_spacer();
        translate([0,0, S/3-2*T]) linear_extrude(T) long_spacer();
    }
}

module small_link_3D()
{
    color([0.7,0.6,0.2])
    {
        translate([0,T,0]) rotate([90,0,0]) link_element_3D();
        translate([0,W-2*T-T/2-T,0]) rotate([-90,0,0]) link_element_3D();
    }
    color([0.7,0.5,0.1])
    {
        translate([0,0,-S/3+T  ]) linear_extrude(T) short_spacer();
        translate([0,0, S/3-2*T]) linear_extrude(T) short_spacer();
    }
}

module model_3D(N)
{
    for (i=[0:N-1])
        translate([2*S*i,0,0])
        {
            big_link_3D();
            translate([S,T+T/4,0]) small_link_3D();
        }
}

if (LC)
    model_3D(2);
else
    flat();