It's a remote control car, not as exciting to some, fair enough, it's a reclaimed car though!

 

skip.jpgAt home there's a joiner's company behind the house and regularly they have a skip outside in our property that they fill with a wide variety of junk. This week it was filled with toys. Someone was fed up with their super fun happy gifts and amongst them was the prize, a remote control car.

 

I always wanted one, but it was one of those gifts that the parents never deemed worthy of the cost and so many a Christmas and birthday went by without one, except for whatever the pound or charity shop had on sale at the time.

 

car_0.jpgSkipping back into the house I realised that there were two immediate problems with my new acquisition. The first and most obvious was a lack of remote control. Not the end of the world, I could possibly get a replacement, or as I thought, gut out the innards and use a motor controller attached to a BeagleBone Black or an Arduino and use either WiFi or an RF module to control the vehicle. A side project for another day.

 

Regardless of having a remote control there was another immediate problem, a wheel was wonky. Seriously wonky, upon further inspection I discovered that the bar connecting the steering mechanism to the wheels was broken. The bar that wrapped around a vertical column had snapped on the loop around one of the columns and someone had attempted to super glue the bar to the wheel. The bar needed freedom of movement, super glue obviously didn't allow this. It probably worked maybe once or twice until they were fed up of it driving in a straight line and unable to turn and junked it.

 

So I had a choice. I could probably do a makeshift loop that replaces the end of the bar or, I could 3D model and print a replacement bar. No prizes for guessing which I chose.

 

When it comes to 3D modelling for 3D printing there are a range of possibilities available. The initial choice boils down to one of two:

 

    - Scan the item into software as a 3D model and work from there

    - Create the 3D model from scratch

 

I do not have a 3D scanner, though I'd love to, I've tried making my own but a lot of development is needed to have anything feasible to work with.

 

So I created the 3D model from nothing!

 

The first software that may come to mind when 3D modelling is mentioned is either software such as AutoCAD or 3D Studio Max, depending entirely on your discipline. This may reach out to software such as SoftImage, Maya or even Blender. These software packages can output to the format which 3D printing software typically accepts, which is an STereoLithography File (STL).

 

I'm not familiar with any of these software packages aside from Blender, which I find to be a chore at the best of times with its rapid changing of layout per version. So I thought "stuff this" and I went for OpenSCAD. OpenSCAD uses a scripting language to create a 3D model out of primitives. The software works by letting you create a cube, cylinder or a sphere and then you do maths on it to add/subtract/difference between these simple shapes. An example of this would be to create a cylinder and then have a cylinder inside of it; but you do the difference between the larger cylinder and the smaller one inside it; which then creates a hole. Hey presto, you have a ring!

 

openscad.png

 

It took me half a day to get to this point, if you're familiar with Javascript instead of OpenSCAD's arbitrary scripting language then you might find OpenJSCAD more to your tastes, it also has a preview of the file in the browser. The trick to 3D modelling in OpenSCAD is to start simple and then build up what you're working on. An understanding of sculpting probably helps a great deal alongside an understanding of mathematics and logical ordering for nested statements.

 

If you want to learn how to use OpenSCAD, find a method that works for you. 3D manipulation can be a complex topic and finding a tutorial or video that suits your learning style is the best approach. If you have difficulty working in 3D initially, then what you can do is work in 2D (ignoring the Z plane for example) and construct your model, that can help when translating/differencing the models from one another. Then you just have to add in the z heights later. Here's the code that created my vehicle part:

 

//Set the resolution of the model
$fn = 30;

//centre loop
translate([(106.94/2)-(7.3/2),-2.3+5,0])
{
difference()
{
//outer
cube([7.30,10.87,10.68]);

//inner
translate([1.9,1.9+1.5,0])
{
cube([3.5, 4.10, 10.68]);
}

translate([1.9+3.5/2, 1.5+1.9+4.10 ,0])
{
cylinder( h = 10.68, r = 3.5/2);
}

translate([1.9+(3.5/2), 1.9+1.5 ,0])
{
cylinder( h = 10.68, r = 3.5/2);
}
}
}

//centre prongs
translate([(106.94/2)-(29.95/2)-8,(7.03/2)-(1.6/2),4.15])
{
cube([8,1.6,9.14-4.15]);
}

translate([(106.94/2)+(29.95/2),(7.03/2)-(1.6/2),4.15])
{
cube([8,1.6,9.14-4.15]);
}

//centre block
difference()
{
translate([(106.94/2)-(29.95/2),0,4.15])
{
cube([29.95,7.03,7.16-4.15]);
}
translate([(106.94/2)-(7.3/2),-2.3+5,0])
{
cube([7.30,10.87,10.68]);
}
}

//small overhanging centre block
translate([((106.94/2)-(9.83/2)),-4.5,3.12])
{
cube([9.83,4.5,2.12]);
}

//lip on small overhanging centre block
translate([((106.94/2)-(9.83/2)),-(4.5+0.64),(3.12+2.12)])
{
cube([9.83,2.3,5.6-2.12]);
}

//remove centre block from base
difference()
{
//alter base for end cylinders
difference()
{
//base
//cube([106.94,7.03,4.15]);
translate ( [ 7.03 / 2, 0, 0] )
{
cube ( [ 106.94 - 7.03, 7.03, 4.15] );
}

translate ( [ 7.03 / 2, 7.03 / 2, 0] )
{
cylinder ( h = 4.15 , r = 7.03 / 2 );
}

translate ( [ 106.94 - 7.03 / 2, 7.03 / 2, 0] )
{
cylinder ( h = 4.15 , r = 7.03 / 2 );
}

}
translate([(106.94/2)-(7.3/2),-2.3+5,0])
{
cube([7.30,10.87,10.68]);
}
}

//left end curve
difference()
{
translate ( [ 7.03 / 2, 7.03 / 2, 0] )
{
cylinder ( h = 4.15 , r = 7.03 / 2 );
}

//end holes
translate([7.03/2,7.03/2,0])
{
cylinder(h = 4.15, r = 4.02/2);
}

}

//right end curve
difference()
{
translate ( [ 106.94 - 7.03 / 2, 7.03 / 2, 0] )
{
cylinder ( h = 4.15 , r = 7.03 / 2 );
}


translate([106.94-7.03/2,7.03/2,0])
{
cylinder(h = 4.15, r = 4.02/2);
}
}


 

At the Leeds Hackspace we have a Mendelmax that has been super-sized, which is more than enough to print out a small bar that I require for the task. Once the STL file was loaded into the software, slic3r or similar could then produce the gcode required to instruct the Ramps 1.4 based hardware to set about printing the bar.

 

printing_1.jpgprinting_2.jpg
printing_3.jpgprinting_4.jpg

 

I'll admit that I didn't copy the original design in its entirety, the central part on the original design is round where as on the printed model it is still based on a cube. This is mainly because I was lazy and at that point I felt that it wasn't crucial to the design of the piece. However I was entirely satisfied with the sizing of the item when it finally came out.

 

I printed it in PLA type plastic filament at about 190degC, this was done on top of a heated bed platform which you can see in the photographs above.

 

printed.jpgWhen attaching it to the car, I found that it was a snug fit but it happily worked as expected. It also became evident that the two vertical prongs either side to the central column on the design determined how far the car could turn left and right and that's either something I will alter by just sawing the blocks smaller or I'll 3D print another part to suit.

 

I measured the original piece using calipers in millimetres, which thankfully translated well to using the direct measurements into OpenSCAD and then the 3D printing software interpreted correctly and used as millimetres.

 

What you can see more clearly on the photograph to the left is the underside of the overhanging part of the bar where the 3D printing went a bit, well, squiggly. This is because the filament hadn't cooled down fast enough and there was no support structure for the filament to adhere to. Thankfully it still produced a viable print so it wasn't a problem.

 

You can also see more clearly the clear plastic parts of the wheels where the vertical columns reside that the holes of the bar connect onto. One of these is where it was superglued to the bar, I had to scrape a lot of crud off before fitting the bar, a nice mixture of melted plastic and glue.

 

What would have been ideal, is the ability to scan the original component and create a 3D model from it, or at least the basis of one, which could then have been altered to produce the same result.

 

However, currently, I imagine that would've gave me less fidelity to work with than creating it from scratch because I would have had to get it into a format that software such as OpenSCAD recognised and then hope that it's of a sufficient resolution to be able to alter it accurately.

 

 

I feel that there's a long way to go before people at home can easily repair items such as this, for example I could have just picked up a paperclip, altered it with my hands, some scissors, perhaps a soldering iron and duct tape and achieved a similar result. However manipulating a 3D object isn't as straight forward as picking up a physical tool and changing it because you're working on 3D represented on a 2D screen and we're not quite there yet with haptic interfaces. Perhaps that's what virtual reality will provoke with devices such as the Oculus Rift? I can only dream.

 

480x270_google_plus_3d_ban.jpg

Click for more 3D Printing information