Skip navigation

3D Printing

3 Posts authored by: Christopher Stanton     element14 Team

The element14 Community was recently hit by a spat of Game of Thrones episode spam (thanks for the hits spambots!) so I figured we may as well have something GoT related on the website. It's a little old, and yet, still relevant:

 

IMG_3794_preview_featured.jpg

 

I wonder now if it could be redesigned with intentional moving pieces?

 

IMG_3799_preview_featured.jpg

 

Frankly, I might purely upscale it for some tabletop roleplay, Dunegeons and Dragons style!

 

You can download and print this model from Thingiverse: https://www.thingiverse.com/thing:39680, I've also mirrored the files and attached them to this blog post.

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

I wanted to 3D print a part for a remote control car, I had recovered it from a skip from the back of my house and someone had super glued the steering to a metal shaft connected to one of the wheels and that shaft was meant to move freely. It had broken.

 

Sure there are simpler solutions than 3D printing a part, but being a member of Leeds Hackspace with a MendelMax readily available I figured this was a good time to learn. So my next problem was getting the model from meatspace into cyberspace.

 

So there's two choices, I either 3D model the piece of plastic by hand, using OpenSCAD, Blender, 3DStudio Max, etc. Though there are two problems to that. One is that some of the software costs money I don't have, the other is I don't know how to use them. Especially Blender, ugh. Or I 3D scan the plastic to mitigate the majority of the modelling and just alter it afterwards, which is possibly harder but the thought of tinkering with electronics and distracting myself from learning a 3D package was too tempting.

 

3D scanners are expensive. You can get fancy hand-held ones for $900, I'll let you do the Google search. So I wanted to make my own, why not?

 

i-have-no-idea-what-im-doing-dog.jpg

I have no idea what I'm doing, after talking with a number of people from the Hackspace the best idea was to go with a laser and webcam combination. At this stage I was interested in what was available for free on the internet to use as a basis for making a 3D scanner. So I searched off for software, in the Hackspace I have sufficient hardware to do the job, a member bought a bag of 50 lasers with the intention of attaching them to everything (why not?) and constructed some laser-sights for nerf guns (the maverick in particular).

 

The webcam we had left over from the Hackspace versus Pumping Station 1 competition with the Beaglebone Black in 2013, a Playstation Eye from the PS3. So I felt that I was off to a good start.

 

After searching online for a while, I happened upon MakerScanner, free open source software that's available on github, low and behold it also uses a PSEye and laser, even better is that it has the parts/frame available as a thingiverse download.

 

 

 

The software, written in C++ is painless to download and compile if you're running linux. I run Debian Wheezy on my personal laptop, so visiting the github , downloading a zip (there should be a button for it) rather than cloning the git repository made it even simpler. Extract, follow the instructions on the page, run.

 

I had a problem, I had a laser pointer, but I needed the laser in a form that was useful; a line. Similar to what you get from a barcode scanner at the supermarket. White-tac and a bar of metal which was recovered from a laser printer came to the rescue!

 

1-left.jpg

1-right.jpg

 

When the laser was shone at the metal bar at about 45 degrees, the refraction was a nice, sharp, clear line. After trying it by hand, the white-tac was piled up to support it. What you can also see in the photo is that the white-tac was affixed on top of a bolt, that was sat within some metal rings (actually bearings if I recall correctly) just so that we could rotate it in situ. It wasn't graceful, but it worked!

 

one.jpgtwo.jpg

 

Suffice to say, I did get readings. MakerScanner creates an RGB coloured point cloud from the scan, but I also had a lot of noise in the scan. I attribute this mainly to the scatter of the laser from the metal bar, which if I was to use in future then I would put a filter on it to ensure a clean line. Though I would ideally get hold of a proper lens that should produce the same output. The other reason for the noise was partly reflections from the table surface I was scanning on, the paper helped with this.

 

However there was still a lot of mess on the point cloud, by mess I don't mean scattering but it appeared that some points were either being mis-placed or calculated incorrectly. I couldn't tell if this was in software or if it was just dodgy hardware.

 

I think that I need to narrow down my variables and try to acquire some decent pieces, though I don't have a lot of money to do so! I think being self contained would be useful, but having seen some hand-held 3D scanners then I'd rather go in that direction.

 

And yes I did just use an Arduino to power the laser, lazily.

 

Any feedback/questions appreciated.

480x270_google_plus_3d_ban.jpg

Click for more 3D Printing information

Filter Blog

By date: By tag: