All posts by nouyang

braindump, 3D Printing Research (from a year ago)

Last summer (while I was an intern at fitbit) I did a bit of research on 3d printers while considering getting a solidoodle, so this is about year-old information

 ===

Hi all,
(following is a long post, I decided to finally educate myself about 3d printers)

The 2 nozzle machines do not allow for support structure for complex parts.

In case anyone is interested, I consulted my awesome friend (who recently sourced 3d printers for a new shop space) about the resolution issue.

It turns out that resolution in the Z direction is less than in the XY directions so that can be used to differentiate printers. However, it seems that to some extent the limit nowadays on hobby machines is in software, not hardware, for z-axis resolution. In fact, usually (all?) professional 3d printers have to use steppers in the end, so they get similar resolution to hobby machines. Solidoodle and Makerbot Replicator can go down to 0.1mm (3.94 mils). I am uncertain but since this is comparable to listed professional layer heights, the main difference may be speed and lack of support material for overhangs and such.

The main difference between commercial (usu. 10k to 200k) and hobbyist machines(<$10k): one is designing for reals and 3d printing it, the other is design for the 3d printed cools and 3d print it. Partly resolution, partly speed, mainly “the problem with low-cost hobby printers for really professional apps is that they do not do support material.”

=======Technical Discussion (see below for background info)===============
From my friend Charles Guan on support materials:

Not even the [Makerbot] replicator right now does built-in support material, nor Ultimaker

or Solidoodle. If they really want something that they don’t have to think

about designing specifically around the shortcomings for, and especially for

protyping consumer product enclosures or internal assemblies, I think a

commercial machine is worth it [versus hobbyist printer]. Ultimately even $40,000 Stratasys printers are

stepper-driven and get the “same” resolutions.


On the topic of different professional printers,

If they want *sheer resolution* you still can’t beat classic stereolithography
(SLA) processes. Zcorp has the advantage of infinity colors, however. Depends
on if they want prototypes to be structural or not – zcorp prints won’t be able
to act as enclosures or test cases, etc. but SLA plastic generally can. Modern
SLA machines all use DLP to do a whole layer at a time so they can be very
fast. Downside of SLA is the open bucket of light-sensitive goo they use (which
tends to be really expensive, except for this new place
http://bucktownpolymers.com/polymer00.html which seems to be producing low-cost
variants, though not sure if a commercial printer would like that)

Otherwise, a hybrid of the two is Objet http://objet.com/ which we have on our
list of stuff to get. They essentially do UV-cured resin, similar to SLA, but
in a dry form (depositing only what’s needed). Both have much, much better rez
than FDM/extrusion. Can’t think of the numbers off the top of my head though.


On the topic of resolution (what resolution do you need for professional products?):

Depends on what you want… hair is usually 3 mil (.003). 0.01 is a tad rough,
you would see it very clearly. The makerbot Replicator is 0.27mm (0.0068) by
default. For professional product proto’ing I would try to find at least 5 mil
or greater. SLA (stereolithography) and Objets can hit this easily, I think. I have a “beast mode”
setting on the replicator which is 0.5mm (about 19 mil) layers if i am building
something square that just needs fast.


============Background Info====================
Okay, that was hard for me to digest and summarize because I didn’t have the background knowledge, which I present here.

First person pronouns
Industrial 3D printer manufacturers:
(manfuacturer name – printer name – technology used)

Hobbyist 3d printers manufacturers of note: (all FDM process)

  • reprap-based machines (tend to be finicky to setup and use),
  • Makerbot
    • (gen 1 cupcake, finicky and poor mechanical design,
    • gen 2 replicator, better designed and support for two nozzle head for multicolored prints)
  • Ultimaker – super light moving head for fast printing
  • Solidoodle
  • a whole host of others, including cake printer (candyfab), chocolate, rice krispy printer…

Technologies
Summary
SLA, DLP, FDM — terms I’d heard before but didn’t know in detail:  http://en.wikipedia.org/wiki/3D_printing

(abbreviation, full term, summary, base materials, manufacturer)

  • FDM – Fused Deposition Modeling – Poop out lines of heated material that then solidifies (“molten polymer deposition”) – thermoplastics and eutectics – Stratasys
  • SLS – Selective Laser Sintering – Dump layer of powder, use laser to fuse parts to keep, repeat (“granular materials binding”) – thermoplastics, metal powders, ceramic powders – EOS
  • SLA – Stereolithography – photopolymerization to produce a solid part from a liquid – photopolymers – Objet
  • DLP – Digital Light Processing – photopolymers – Object
  • Z-corp – Powder bed and inkjet head 3d printing – deposit lines of liquid glue on powder, deposit layer of powder,  repeat – Plaster, colored plaster – Z-corp (exclusive)


Full[er] Explanations

FDM  http://en.wikipedia.org/wiki/Fused_deposition_modeling

A plastic filament or metal wire is unwound from a coil and supplies material to an extrusion nozzle which can turn the flow on and off. The nozzle is heated to melt the material and can be moved in both horizontal and vertical directions by a numerically controlled mechanism, directly controlled by a computer-aided manufacturing (CAM) software package. The model or part is produced by extruding small beads of thermoplastic material to form layers as the material hardens immediately after extrusion from the nozzle. Stepper motors or servo motors are typically employed to move the extrusion head. If required, support structures are automatically generated. The machine dispenses two materials – one for the model and one for a disposable support structure. The materials are deposited in layers as fine as 0.04 mm (0.0016″) thick,


SLS  http://en.wikipedia.org/wiki/Selective_laser_sintering

Selective laser sintering (SLS) is an additive manufacturing technique that uses a high power laser (for example, a carbon dioxide laser) to fuse small particles of plastic, metal (direct metal laser sintering), ceramic, or glass powders into a mass that has a desired 3-dimensional shape. The laser selectively fuses powdered material by scanning cross-sections generated from a 3-D digital description of the part (for example from a CAD file or scan data) on the surface of a powder bed. After each cross-section is scanned, the powder bed is lowered by one layer thickness, a new layer of material is applied on top, and the process is repeated until the part is completed.  Unlike some other additive manufacturing processes, such as stereolithography (SLA) and fused deposition modeling(FDM), SLS does not require support structures due to the fact that the part being constructed is surrounded by unsintered powder at all times.
According to http://www.shapeways.com/tutorials/design_rules_for_3d_printing, one machine, “EOSINT p390. The layer thickness of this machine is0.15mm.” (5.9 mils)


SLA  http://en.wikipedia.org/wiki/Stereolithography

Stereolithography is an additive manufacturing process which employs a vat of liquid ultraviolet curable photopolymer “resin” and an ultraviolet laser to build parts’ layers one at a time. For each layer, the laser beam traces a cross-section of the part pattern on the surface of the liquid resin. Exposure to the ultraviolet laser light cures and solidifies the pattern traced on the resin and joins it to the layer below. After being built, parts are immersed in a chemical bath in order to be cleaned of excess resin and are subsequently cured in an ultraviolet oven. After the pattern has been traced, the SLA’s elevator platform descends by a distance equal to the thickness of a single layer, typically 0.05 mm to 0.15 mm (0.002″ to 0.006″). Then, a resin-filled blade sweeps across the cross section of the part, re-coating it with fresh material
Stereolithography requires the use of supporting structures which serve to attach the part to the elevator platform, prevent deflection due to gravity and hold the cross sections in place so that they resist lateral pressure from the re-coater blade. Supports are generated automatically during the preparation of 3D Computer Aided Design models for use on the stereolithography machine, although they may be manipulated manually. Supports must be removed from the finished product manually, unlike in other, less costly, rapid prototyping technologies.

DLP http://en.wikipedia.org/wiki/3D_printing

In digital light processing (DLP), a vat of liquid polymer is exposed to light from a DLP projector under safelight conditions. The exposed liquid polymer hardens. The build plate then moves down in small increments and the liquid polymer is again exposed to light. The process repeats until the model is built. The liquid polymer is then drained from the vat, leaving the solid model. The Objet PolyJet system uses an inkjet printer to spray photopolymer materials in ultra-thin layers (16 micron) layer by layer onto a build tray until the part is completed. Each photopolymer layer is cured by UV light immediately after it is jetted, producing fully cured models that can be handled and used immediately, without post-curing. The gel-like support material, which is designed to support complicated geometries, is removed by hand and water jetting. Also suitable for elastomers.


Powder bed and inkjet head 3d printing http://en.wikipedia.org/wiki/Powder_bed_and_inkjet_head_3d_printing  

An inkjet-like printing head moves across a bed of powder, selectively depositing a liquid binding material in the shape of the section. A fresh layer of powder is spread across the top of the model, and the process is repeated. When the model is complete, unbound powder is automatically removed. [For some definition of automatic.. usual requires manual post-processing aka making a giant mess]


Random dump from class notes:
typical feature size — 10 mils. state of art — 1 mils. (lowe resolution than can machine parts). Slow! — hours to print small objects. complex — days.   
real point of 3d printers: nested parts and overhang — cannot do in mold [molding and casting procdess]. but need supporting material.
stratasys — water soluble primer
inkjet acrylic droplets — print with wax
dimension 3d printers — has two heads. raster structural and then support material and then next layer. temperatuer of chamber — below fusion temp and much higher than plastic flow so plastic sticks to itself.
have crypto on material cartridges — drm on plastic (can use cheap plastic otherwise). 10k mac shop [yea I don’t remember what this means] — fine but materials are appallingly expensive. Applies to any vendor.
tektronix phaser — inkjet photocurable acrylic. melt wax away to get part and then play with solvents to get wax completely out. fairly fast process b/c heads running in parallel and global uv flash. very nice finish / resolution for same reason.
dimesnion — little fdms — 10 to 40k. big ones, 100k.
InVision — 100k, and $100 for tiny part due to mats.

color 3d printers —
zcorp — everyone dislikes, because? they have powder bed (plaster), spreads layer of powder. straight inkjey heads from hp spreads binder. then powder, then binder. don’t need support material (use unused powder), and add color just in binder.
but disliked because binder does not bind very well. when done printing, try to separate bound from unbound, and sort of bound powder, and everywhere covered. post process to convince to really stick (infuse / dip in wax) together. color but no structure / surface finish. in theory just as fine as invision with droplet size, but due to messiness does not come close.

laser sintering — instead of binder, use laser to print. works with metal powder. issues: machines are alarmingly expensive (few hundred thousand dollars) and metal compacting is not very good.
metal 3d printing — force in metal (injection mold) and squish it. cost does not justify quality.  

Hobbyist FDM resolution
http://www.core77.com/blog/digital_fabrication/feedback_friday_solidoodles_sam_cervantes_sets_record_straight_on_desktop_3d_printing_resolution_22398.asp

Best of all Sam Cervantes, the founder of Solidoodle—who clarified some of the technical points on their website following our post—helpfully contacted us to illuminate some of the murkier points of 3D printing resolution. As Sam explains:
… Typically the Solidoodle—and the MakerBot, from my understanding—print layers every 0.3mm (11.8 mils). At Solidoodle we’ve printed as low as 0.1mm (3.94 mils),

Now let’s talk about the resolution in the horizontal (X-Y) plane. The Solidoodle is capable of repeatedly positioning its printhead to within 0.011mm (0.433 mils) … but I did see that they [Makerbot] use 1/16th (62.5 mils) microstepping on their motors.

However, you can see how it’s a little superfluous to say that the resolution in the vertical (Z) direction is 0.3mm and the resolution in the X-Y (horizontal) direction is 0.011mm

… it’s important to remember that the printhead is extruding plastic through a 0.35mm (13.8 mils) nozzle. It’s important to remember that ABS plastic oozes and expands a bit when it comes out of the nozzle . Even though the motor on the automatic sprinkler may be capable of positioning the water nozzle to within millimeters, in the end the water is going to going to spray out of the big nozzle over a wide area in a somewhat random manner.

miniature things research (tiny steppers!) / start-lolling, start-trolling, start-rolling

stepper motors
I started looking into how tiny and cheap steppers can get, since micro servos are in the $2-3 range, and holy lady hexapods they can get tiny.

 More info here.

Turns out most tiny steppers come from vehicle dashboard instrumentation. To actually buy them
you don’t turn to mcmaster http://www.mcmaster.com/#stepper-motors/=lwy84g

Instead, a search for “nano stepper motor” reveals this:

More info here, including the fact that this stepper can be driven directly by an Arduino. 
On amazon, these cost ~$2-3 each as well. (search for “stepper motor gauge”).
I just order 6 for $16.50 to have some hand to play with (randomly ordering the micro-servos a while back turned out well); we’ll see how this goes. So, upcoming tiny stepper gantry?
Some more reasonable 15 cm ones cost ~$15 (vs the price on mcmaster…)

flying things

from the facelols, charles seyz

i think these days about $150
for the average kramnik  kopter
frame: $20-30 from HK. motors: $10each. esc: $15 each. kk2 board: $20
i guess add in radio and gaudy lighting too so $180-200
so
if you are fine with small
less than $100 is definitely possible
tinycopter runs like $7-8 motors and $8ish ESCs
the frame was made of a few 3d printed doobobs and carbon fiber
you can get CF sticks cheaply and i’m sure the 3dp stuff can be replaced with lazzered parts

this is why i am considering it:

i think flying things are an example of neat engineering
but that’s [$180] too expensive to justify
if it were in the $80-100 range
for a reasonably robust multicopter
that could be reliably produced (not made from chopsticks)

current commercial options,  which are super-slick and $150

http://www.seeedstudio.com/depot/preorder-crazyflie-nano-quadcopter-kit-6dof-with-crazyradio-bccfk01a-p-1364.html?cPath=170_172
(hattip shane)

Uweh. That is SO AWESOME. Actually now I am not so sure there is much point trying to drive the cost down to $80 or so with reusable parts. Then again, if the kits are derpy enough, they should encourage people taking the course to go forth and build better versions.

In theory, tricopters would cut down on costs even more (take out a motor, propeller, and ESC). But something about they are more mechanically complex (extra component, servo rudder)? I might be confused here.

for research, here are some small quadcopters my friends have built:
http://www.instructables.com/id/PCB-Quadrotor-Brushless/ by scolton
hi shane
hi charles

start-lolling
what is this all about?
in my pursuit of excessive feedback / encouragement wherever I can find it, I input to 100k coaches corner (sort of questionable since I have no intention of entering the 100k ~_~) yet another description of what I intend to work on:

Khan academy / Udacity with hands-on mechanical engineering projects, fully kitted so no fabrication resources are required, aimed at high school+university level.

the current plan is to have three projects, a micro-robot arm, a nano-quadcopter, and a nano-stepper gantry. (Maybe some swarm robots? What other buzzword robots are there? Anyway). Realistically I would be happy just running with the first one, since the timeline is so short (six months until I run out of health insurance). But it’s fun to think about the other two/three/infinity.

idk why I feel so awkward about pursuing a startup full force except that my group of friends seems to have a reactionary “too cool for startups” attitude .__.

misc. info
health insurance after graduating
I’m in this awkward position where I cannot get coverage under my parents. Given my recent spate of issues after a lifetime of not needing to go to the hospital, insurance is a good idea (plus, it’s mandated in MA). Therefore:
http://medweb.mit.edu/healthplans/student/after_graduation.html

“Your MIT Health Plan coverage continues through August 31”

Ouch, so the FSA (no strings attached MIT accelerator) ends on the 21st with a Demo Day on September 7th. By which point in time it’s most likely I’ll have decided this won’t get to the scale I need to sustain myself and look for a full-time job, but just in case:

bcbs I / II 

“you must apply before August 1 for your new coverage to be effective starting September 1.”

Uhm, what, I have to call to get a quote. Meh. Looks like in the range of $200 a month as of three years ago.
(http://www.city-data.com/forum/massachusetts/541525-how-much-do-you-pay-health-3.html).

weekend project: minimalistic servo arm

There’s a video of it in its final state, with its multitude of issues. *sigh* one day I will actually finish a project. Only the first and last 5 seconds or so are interesting. Cost: ~$6 for the two microservos (!! so cheap), plastic is free, then the board+microcontroller battery is $25+$15+free (probably $10?).

After building hexa-rideablepod, I have definitely been more inclined to daydream about small or fold-able or compact project.

I should update my project todo list.

Anyway,
I started at ~8pm on Saturday and finished ~3:30 pm on Sunday (and yes, I did sleep a bit, as well as watch an anime movie (Summer Wars) …


what the cloud looks like in the future

… and spend a lot of time reading about inverse kinematics and poking at IK code I never ended up using).

I was inspired by http://www.instructables.com/id/Robotic-Arm-with-Servo-Motors/?ALLSTEPS

The code looks pretty straightforward.

// Given theta1, theta2 solve for target(Px, Py) (forward kinematics)
void get_xy() {
  actualX = a1*cos(radians(theta1)) + a2*cos(radians(theta1+theta2));
  actualY = a1*sin(radians(theta1)) + a2*sin(radians(theta1+theta2));
}

I was a bit confused by the definitions of the variables, since I haven’t done kinematics in a while. In the forward kinematics part it is essentially saying:

measuring the servo spline outer diameter in order to create lasercut female splines on my parts instead of using the proprietary servo horns. I started around this time. I swear I spent like 30 minutes trying to figure out how many divots it has (21) before just trial-erroring it, lol.

It gets to be pretty late in the day after I try to struggle to remember kinematics.
Here are some beautifully written kinematics notes I found linked from stackexchange question on drawing robots (robotics stackexchange! i’m excited).

Well, crap. I hesitate — do I want to try to get something done and present a project or not? I eventually decide (and with some support from the awesome Jessica Artiles) that I may as well get more feedback on my ideas. What is there to lose?

Thus, I emergency hot-glued some potentiometers onto pieces of plastic and used that as my control ( a simple mapping of potentiometer values to servo values is all that’s needed) instead of writing IK code. This arm controller design was inspired by http://www.maxjusticz.com/a-miniature-robotic-arm-controller/.

img src my design inspiration, except mine was jankier and used more hot glue

near the end of the designathon

I didn’t even have time to map things correctly, because I thought the presentations began at 5pm but actually they began at 3pm.

The lasercutter files looked like so:

It’s hard to see the cuts. But the pots have flats on their shafts, so the pot arms have semicircular holes that are tightly fit onto the pot shaft to couple rotationally. And for a minimalistic design, the robot arms have servo splines cut into them so they mate directly to the servo.

I had the most issues trying to make a press-fit bracket for the servo so that I could couple it to a base. The sides of the servo weren’t particularly flat so the rectangular brackets always broke on installation; I ended up with a C-shaped bracked design.

a frontal image

Also, the servos are amazingly torque-ful. I thought the base would be enough to hold it down but I ended up adding tape so that the servo arm wouldn’t swing itself around.

Also to fix, I actually need to build a platform so that the base is heavy enough that the servos don’t push it around and high enough that at zero degrees the width of the servo arm doesn’t cause it to hit the ground.

I also actually did calculations for the servo, or rather used a calculator online, to verify the servos would handle the sharpie weight. Not that I had different servos or anything. (screenshot below)

Oh, another issue I ran into, the servo.write() arduino library uses modulation from 544us to 2400us, while the microservos used 500-2400 us, which gave me this issue where the servos wouldn’t go all the way down to zero degrees when I used myservo.write(0). I took a quick look at “arduino-1.0librariesServo” and found out thatyou can specify these min/max values when you initialize the servo, e.g.

attach(pin ) - Attaches a servo motor to an i/o pin. attach(pin, min, max ) - Attaches to a pin setting min and max values in microseconds 

There was some other funky issue with trying to read a sensor while the servo was drawing power. Turns out I just need more delay in my loop.

Can’t think of anything else for now.

Material Costs

ebay $11.88 
“4x SG90s 9G CYS micro servo motor RC Robot Helicopter Airplane Car Boat + Horns”
so about $3 per servo

The servo specs: http://www.servodatabase.com/servo/towerpro/sg90

Pulse Width: 500-2400 µs sg90

Current Status:
I lost the code, and I broke some of the lasercut pieces, (the usb port for programming the arduino also seems to create a lot of sensor noise and the servo arm kind of did crazy robot arm thing and killed itself) so right now I re-lasercut  pieces and am re-writing the code. Should be up within a week.

===================================

Follows is a live blog of me working on drawbot:

===================================

ebay $11.88 
“4x SG90s 9G CYS micro servo motor RC Robot Helicopter Airplane Car Boat + Horns”
so about $3 per servo
let’s follow this tutorial
confirmation that 9g micro servo can indeed make robot arm: 
okay yay let’s do some math
thanks society of robots

alright, now let’s see some real specs on these micro-servos:

Stall Torque at 4.8 volts = 22.2 oz/in (1.6 kg/cm)

aww… so cute (compare to the 7 to 15 kg/cm ones used in “small” robot arms: http://www.nex-robotics.com/robotic-arm/robotic-arm.html)

So what are the tradeoffs? With a longer robot arm length, I get more range, but then I suffer torque-wise.

Also, need 4 dof — one for the pen to move up and down.

===
7:47pm
some research into simulating robot arms online..
http://wps.aw.com/aw_young_physics_11/0,8076,898588-nav_and_content,00.html

my initial thought was to use processing, but oh hexapods java applets >__<

okay the guy next to me at the hackathon, idk his name, says i should just write it in html5
[edit: it may have been vincent xue]

excellent plan, learn html5

mmm kinematics libraries http://kineticjs.com/

wah html5 games
http://raptjs.com/
okay let’s not get too distracted

hrm kinematics in flash
http://active.tutsplus.com/tutorials/animation/learn-about-linear-kinematics/
===
http://www.societyofrobots.com/robot_arm_tutorial.shtml

frick
i should catch up in 18.06, perhaps
http://commons.bcit.ca/math/examples/robotics/linear_algebra/index.html

==
okay, assume some weights
google: density of acrylic
1.18 g/cm³
thanks google

okay let’s make up some dimensions for a link length
4x16x3 = 192 cm^3 * 1.18 g/cm^3 =
226.56
thanks dot-gridded metric notebook and google

hrm, so about 1/5th of a kg. Wait what? that seems wrong.

oh units -> 0.3cm thick, so = 22.7 grams.

(from actual measurements:
15g for a 3*50*76 mm chunk, or 1.32 g/cm^3

okay now for
pre-built calculator!
😛

okay not operating near stall torque, that is good

(conversion N m to kg cm is about x10, if you let gravity ~10 m/s/s)
==
8:30
okay, screw this, I am going to CAD some stuff
later: end up not CADing anything
==
3:18
One anime later, and back to staring at robots.
i start watching youtube stanford lectures but am too sleepy
http://www.cs.unc.edu/~jeffi/c-space/robot.xhtml mmm canvas, 2010 2d robot arm simulator

hmm GUI via processing
http://luckylarry.co.uk/arduino-projects/arduino-modifying-a-robot-arm-part-2/

oh! excellent written documentation
http://www.micromegacorp.com/downloads/documentation/AN044-Robotic%20Arm.pdf

===
day 2
haha, still here. i’m so sloowwww at building things, all the other teams are so cool
okay i’m working by myself because i’m weird like that

eww, the servos are doing funky things where servo.write(0) doesn’t seem to go all the way to zero. let’s compare. hitec311 and sg90.
http://www.servodatabase.com/servo/hitec/hs-311

Pulse Width: 500-2400 µs sg90

Pulse Width: 900-2100 µs hitec311

hrmmm.

bam,
arduino-1.0.3librariesServoServo.h

   attach(pin, min, max  ) – Attaches to a pin setting min and max values in microseconds
   default min is 544, max is 2400

==
Adam Libert, DIY waterjet and crazy grad student, drops by and shows me cool robots:
http://medesign.seas.upenn.edu/index.php/Courses/MEAM520

==
serial monitor output:

º’j¤ º’jP ºŠjR ºŠjR º’jT ºŠjR ºŠjR ºŠjT ºŠjR º’jR ºŠjP º’jP º’jT º’jR º’jP º’jR º’jP º’jR º’jR ºŠjR º’jR º’j

Exciting, when I am commanding a servo, it pollutes the analogRead.
Well then.

Oh, I just needed to increase the delay (was using 1). Hmm. I’m not even writing to the servos. I wonder why initializing the servo means the serial loop can’t run fast enough.

==
how the heck does a kit for this not exist already?
http://www.bizoner.com/arduino-6-dof-programmable-clamp-robot-arm-kit-ready-to-use-p-238.html
$250, wow.

==
whee it’s 3 pm and i decided to pitch because I HAVE NO SHAME. 😀 It’s amazing what having the support of a friend can do for you.