Jan 05

There are many guides on making a vacuum pickup tool for SMT assembly on the web. This is mine.

There are at least two DIY guides for building your own inexpensive vacuum pickup that have been written up on Hackaday from back in 2010.  Based on those, I built my own for about $15.

If you are willing to drill a couple holes, I think most aquarium pumps will work. I ordered an inexpensive pump ($5.80) from Amazon that I knew was quiet from using it in my aquarium : Tetra 77851 Whisper Air Pump, 10-Gallon.


I also used:

  • soft, flexible tubing. I got 20 feet for $5.50.  You will only need 3 to 6 feet. This is more flexible than the clear tubing you typically find. Flexibility makes the tool easier to use.
  • T connector. I had one left over from my aquarium setup. $1.
  • blunt luer needles. I bought a 5-pack sample kit from Qsource.com for $1 when I ordered some other soldering supplies. Different gauge needles are helpful for different size parts.
  • 3cc syringe. I already had one laying around (note it has yellowed due to being ~15 years old). A 5cc would also work. These are so cheap it is hard to buy just one, but you can get 20/$5.


In addition, I used an xacto knife, a pair of diagonal cutters, small Phillips screw driver, two-part epoxy, drill bits: 3/16”, 15/64”, 3/32”.

1) Open the pump and locate the air intake. I used a 3/16” drill bit to widen the hole. Try not to get shavings in the chamber. I shook some bits out when I was done.

2) Cut one arm off the T connector and epoxy the hole closed. Of course, be careful the epoxy doesn’t get far enough inside to gum up the works.


3) The 3/16” hole makes a nice friction fit with the T connector. You can glue it if you want, but I just relied on the tight fit.

connector in pump

4) I cut a 15/64” hole in the top for the tubing. This is loose enough to allow for final assembly. I hope it is snug enough to not put a lot of stress on the T connector when using the vacuum pickup.

5) Cut the tubing to length. I am starting with 6 feet. If that is too long, I’ll cut it down later. Feed it through the top and connect to the T connector. Then attach the top with a couple screws.


6) Pull the plunger out of the syringe. Pull off the rubber gasket. I used a new, sharp, Xacto knife to cut a hole in the closed end of the gasket. I cut the hole to be roughly even with the thickness of the side wall. Do a neat job with a sharp blade, and it should form a decent seal without glue. I poked the end of the tubing in the hole I made in the gasket, and pushed it into the syringe. This will probably pop loose eventually. If it becomes a problem, I’ll glue it in place.


cut holetupe inserted

7) Drill a small hole where your finger will rest, I used a 3/32”. Bend your needle at about 45 degrees for a comfortable angle and attach it to the syringe. You are done!


Cover the hole with your fingertip to grab a part, lift your finger to release. 

This project takes less than an hour once you have all the parts and the tools ready to go.

Nov 04

My previous post I talked about 3D printer hardware calibration. Following that procedure should get your printer working well enough to print easy objects.

But it just gives the very beginnings of doing the software calibration. I looked around the web and found a lot of people asking why their objects aren’t printing well, and usually the answer is “you need to calibrate carefully”. Sure, but how do you do that?  I searched around and found some posts that covered some aspects of calibration, and some objects on Thingiverse.com that are recommended for calibration.  I’m going to describe what I did in a step by step process that should get your printer working fairly good.

Note that I am using Slic3r version 0.9.2.  and I am using Pronterface from March 2012..

Software initial Setup

I covered the hardware setup in my previous post. The bed should be level, the end stops set , and Z home should be set properly.

You should have also already done the software setup described in the Printrbot Getting Started Guide.  I will be repeating some key settings here.

Slic3r defaults

Slic3r is really where you do all of your software adjustments that affect print quality. Pronterface just sends the gcode file you generate from Slic3r down to the printer.

  • Set the starting defaults in Slic3r.  Be sure to hit the save icon after changing settings.
    • In the Printer Settings tab,
      Set the bed size (200,200 for the plus) and the center (100,100 for plus).
      Set the stepper calibration numbers by putting them into the Start G-Code section. Don’t just use the defaults in the firmware. You probably don’t know for sure what they are, and you will need to know exactly what you are starting with so you can adjust them correctly. 
      • M92 X64.8592 ; calibrate X
      • M92 Y64.8592  ; calibrate Y
      • M92 Z2387.0719  ; calibrate Z
      • M92 E569  ; calibrate E

This is my post-calibration start and end G-code:


    • In the Filament Settings tab,
      Set the defaults according to the plastic you are using as shown in the Getting Started Guide. I suggest that you save these with a filename specific to the roll of filament you are using. For example “NaturalPLA”, or “BlueABS”. When you switch to a new filament, you will need to recalibrate and the settings can be different for each roll. If you save them under distinctive names, it makes it a little easier to switch back and forth.
    • Print Settings tab
      There are a lot of settings here. Follow the recommendations in the Getting Started Guide. Some key ones:
      • Nozzle diameter: 0.5
      • Layer height: 0.4
      • First Layer height: 0.4

Remember to save the settings!

Filament Size Calibration

No matter what the quality of filament you have, there will likely be a small manufacturing variation from the nominal size of 3mm. The roll I have in my printer right now is 2.98mm. You will need to use the full accuracy of your calipers.

Entering the precise diameter of the filament is critical to success. The software uses this number for various calculations behind the scene. All subsequent calibration steps depend on the diameter being set accurately.

If you don’t already have dial calipers or digital calipers, I highly recommend you get one.  I bought an inexpensive, six-inch digital caliper that works fine and the battery life has been good (Amazon associate link):

A note on measuring with dial calipers

When you measure, the calipers must be perpendicular to the filament. If the calipers are off-angle, your measurement will be too large. Be sure that you are using the central, flat area of the calipers. If you measure with the “sharp” area near the tip, you could pinch into the plastic and measure too small, and it is easy to not be perpendicular and you would measure too large. Watch out for the notch in the reference edge near the blade. Measuring there will result in the measurement being to small by about 1mm.

Measure your filament at multiple locations

To measure the diameter of your filament, do the following:

About a foot back from the end of the filament (or from where it comes from the extruder), measure the diameter of the filament carefully, twice, taking the two measurements at right angles to each other. The filament can be a little oval shaped, so you need to get measurements that will take this into account.  Record the numbers.


Move 6 to 12 inches further down the filament, measure and record again. And (at least) one more time. Now you have (at least) 6 measurements. Add them up, divide by the number of measurements.  Go ahead and use 3 or 4 digits of precision. Use that for the diameter of this roll of filament. You might want to record the diameter on the filament spool for future reference.

Enter the measurement into the Filament Settings under Diameter.


Extruder Stepper Calibration

There are two times you need to turn on the extruder’s heater manually. When loading and unloading filament, and when calibrating the extruder stepper. So turn it on to now. 210 for ABS, 185 for PLA.  Let it get up to temperature.

The extruder stepper calibration is just as important as the filament diameter. But it is harder to take the measure accurately. 

Note: You might want to print yourself a Filament Guide. Not only does it help guide your filament into the extruder, it also gives you a flat base for measuring the filament length.

  • Get out your digital or dial calipers again.
  • Copy the M92 E569 (or whatever the number is behind the E) line from your Start Gcode section of Slic3r to the command line in Pronterface and click Send. This is to make certain you know what steps per unit setting you are starting with.
  • Put blue tape on the filament about 100 mm from the extruder.   As carefully as you can, measure the distance from the bottom of the tape to the top of the extruder. The filament should be straight during the measurement. It may take 3 hands to do this well.  Record the distance.
  • Using the Pronterface Extrude button, extrude the filament 5 mm at a time for a total of 30mm. Measure the distance and record it.
    • The stepper should not stall, chatter, or grind.  If it does: make sure the hot end is up to temperature; make sure the idler is neither too tight nor too loose (it is easier to have it too loose than too tight, but there is a sweet spot); clean out any plastic bits on the hobbed bolt. 
  • Repeat twice more:  move 30 mm and measure, move 30 mm and measure.  The tape should now be about 10 mm from the extruder.
  • Don’t forget to remove the tape!
  • From those measurements, calculate the three differences.  Take the average.
  • Now calculate your new E value:

Old_Value * 30/average_measurement = New_Value

That simple equation is going to be used in the future for calibrating the X,Y, and Z steppers.

Example: If the average measured movement was 27.63, and your old E value (in the Printer Settings / Start GCODE section) was M92 569, then:

569 * 30 / 27.63 = 657.8067

  • In the Slic3r Start GCODE, replace the old M92 E value (example M92 E569) with the new E value (example M92 E657.8067).

If you decide to re-calibrate the extruder stepper, you must remember to copy the M92 E”old_value” line from the Start GCODE section to the command line and execute it, and use that “old_value” in the equation above to calculate the New_Value.

In fact, I’d recommend you redo that procedure right now and check that the average distance is very close to 30, otherwise make a new calculation and repeat until you are satisfied.  I’m guessing a measurement of +/- 0.05 from 30 is good.

If your measurements are jumping around, check your technique for taking the measurements, and watch that your extruder isn’t stalling or slipping.

Next step

At this point, you should be getting the right amount of plastic into your extruder. But we are only just getting started with calibration. Next, we will work on getting the plastic sticking to the bed.

When I’m going to be printing, the first thing I do is set the bed temperature to 70 in Pronterface so the bed will be warming up while I’m getting ready to print. It doesn’t hurt the system to leave the bed hot, and it takes a few minutes for it to heat up. The (extruder) heater gets up to temperature pretty fast, and while it is at temperature I get some slow ooze of plastic coming out of the extruder, so I turn it off when I’m not printing.

Oct 30

Calibration is the adjustment of your 3D printer mechanical systems and software to optimize the output.

After I got my Printrbot Plus put together, I spent some time trying various different guides (and there are quite a few of them) on how to do calibration of the Printrbot.  My goal was to match the output I’ve seen others achieving with various printers.  After spending quite a few hours experimenting, I’ve got a systematic method that will get a Printrbot making pretty nice objects.  There is still more I can do, so consider this an intermediate guide to calibration.

In this post, I’m going to just cover the hardware calibration.  In a following post, I will cover basic software calibration and my method of refining the software calibration.

Assembly notes

I made a couple errors during assembly that became apparent during the calibration of my Printrbot Plus.  Before you bother doing any calibration, if you made any of these errors, you should just go ahead and fix them.  This will save you some frustration of trying to follow the calibration steps, then tearing your Printrbot apart to fix them, then starting calibration over again.

Use three bearings on the X carriage

You must install three linear bearings on the extruder assembly to hold it to the X carriage smooth rods. You may have read that this is optional. It is not. The extruder will wiggle around too much with only two linear bearings.  You should have two linear bearings on the top rod, and one on the bottom. 


Fully insert the hobbed bolt into the big gear

I read somewhere that it is OK for the teeth on the knobbed bolt to be offset in the extruder. It is not. The teeth must be centered above the hot end, feeding the plastic filament straight into it.

Notice how the bolt head is not inserted fully into the gear, and the teeth are off center. Plastic will not feed properly with the extruder built this way.



Below, the bolt head is inserted completely. The teeth are centered. Also note that the surface of the two gears are flush, and thus they are aligned.  My extruder is now very reliable.



Hardware calibration

Download and follow the Printrbot-Getting-Started-Guide2.pdf. It is a good guide to getting your printer up and running and able to print objects successfully. 


  • Install the recommended software
  • Set the X/Y bed size into Pronterface’s options screen
    • 150mm x 150mm for standard Printrbots
    • 200mm x 200mm for Printrbot Plus
  • Set the X and Y stops.  These are not critical settings.
    • X should be set so that the extruder assembly doesn’t hit the wood surrounding the Z rods, which will stall the stepper.
    • Y should be set so the extruder doesn’t home past the edge of the heated bed nor hit the screw holding the heated bed down at the X/Y/Z home position.

At this point, I’m going to offer an alternative to the remaining three steps of the hardware calibration. 

  • Set the Z end stop
  • Level the print carriage
  • Level the bed

It is recommended to set the Z end stop with the extruder just a paper’s thickness above the bed.  However, leveling the print carriage and the bed will likely require you to adjust the Z end stop again and again.

Jim, a DorkbotPDX member who is very experienced with 3D printers, taught me an alternative method of setting the Z home position.

Simply put, you set the Z end stop screw, one time only, to about 0.5 to 1mm high, then use the G92 command to lower the software’s Z home position.  Now a Z home command will never bounce the extruder against your bed, yet you can still measure the relative height of the bed.

This is very handy during print carriage and heated bed leveling. When you are all done with those steps, this technique will give equivalent results to the classic method of carefully setting the Z end stop screw to the perfect height. I feel it is better doing important calibration adjustments in software rather than a lot of fiddling with a screw setting.

Setting the Z end stop

Position the extruder in the middle of the bed.  Adjust the Z end stop screw so the Z home position places the tip of the extruder’s hot end about 1mm above the surface.  This should be the last time you touch that end stop screw (unless you change your build height with a glass bed, of course). 


Type “G92 Z2.0” (without the quotes, no extra spaces, all caps) in the Pronterface command line.  This lowers where the software thinks home is by 2.0mm and allows you to manually command the Z axis to move lower than the Z end stop switch.  Any time you home the Z axis, it resets the software home position, so you will have to re-issue that command. The last command entered will remain showing on the command line, so just click the Send button to run the command again whenever needed.

You do need to be careful. If you click any negative Z move that is more than 0.1mm, the extruder hot end can hit the heated bed.  Try not to do that. Definitely don’t do a X or Y move with the hot end pressed against the heated bed!

If you set software Z too low and mistakenly make too large of a Z move down, the hot end could bottom out on the bed and you might run the nuts on the threaded Z rods out of the slots in the X carriage. If you do that, you will have to re-level the X  carriage. Not that I every did that…

Leveling the X carriage

As the Getting Started Guide first instructs, you need to adjust the nuts on the threaded Z rods such that the carriage sets firmly on the nuts at each end.  Run the Z up and down several times and check there is no binding and the carriage remains firmly on the nuts.  Lubricate the threads with some PTE (Teflon tm ) lubricant. Be careful not to get any oil on your heated bed. It will not assist you in getting prints to stick.

Leveling the carriage to the print bed is iffy at this point. The bed isn’t necessarily level.  The important thing is that the carriage isn’t at an angle on the Z rods, as this could lead to binding.  I simply checked that the carriage was level using a small bubble level.

Leveling the print bed

While leveling the bed, you will want to raise the Z 1 or 2 mm before doing any big X or Y moves to avoid scraping the bed. Then issue a Z home, then remember to execute “G92 Z2.0” or whatever amount is appropriate and safe.

At the center of the build area, count the number of negative Z 0.1mm moves below home you can go until a piece of paper scrapes between the hot end and the heated bed. Record that.

Measure the negative Z offset in each corner and record each.

I don’t believe you will be able to get to the recommended 0.05mm flatness across the whole build surface if you are using a bare heated bed PCB. Until I added 1/8-inch glass plate to my heated bed, I was just satisfied with getting better than 0.1mm flatness within 50mm of the center.

The instructions tell you to put thin washers between the P brackets and the wooden bed to raise any corner that is too low.  I didn’t have any thin washers, so I came up with a different technique.

Level the bed by finding which corners are too high.  Remove the four screws holding down the heated bed. Carefully remove the heated bed but don’t stress the temperature sensor or power leads to the heated bed. Carefully file down the top of the P shaped mounting brackets under the high corners.  I found it easier to file the brackets after removing them from the rods.  Remove them one at a time so you don’t mix them up.  I found there were lumps left by the 3D printing process on top of some of my printed P brackets. The bed was level by the time I had removed these irregularities from three of my P brackets.



Setting your Z home height in software

Once you are happy with your bed flatness, move the hot end back to the center of the print area. Very carefully re-measure the distance from the mechanical Z home position to the point paper scrapes between the end of the extruder and the bed.  Count the number of negative 0.1mm Z moves you can go without trapping the paper against the bed.

Go into Slic3r to the “Start GCODE” section and add a G92 command to put your software Z home position just above the bed. If you were counting seven 0.1mm steps to the point of scraping the paper, enter “G92 Z0.7”.

That will affect everything you print. But if you are manually moving the extruder around, remember that every time you home the Z axis, you need to re-issue a G92 command if you want to manually move the hot end closer to the bed.

In my next post, I will describe the technique I used for software calibration of my Printrbot.  It also starts with following the software calibration instructions in the Getting Started Guide.

Oct 25

I have been trying to create a 3D print of an adapter for my laser cutter’s exhaust system.  I need to convert the 5-inch output of a Grizzly Dust Collector to 4-inch dryer vent hose.


Consistently, the 5-inch diameter print would break free of the heated bed at a height of about 3mm.  I tried a few things, but I couldn’t get past that 3mm point.


So I talked to a couple DorkbotPDX members that are experienced with 3D printers.  They gave me several ideas to try.

I tried several things in isolation before I did the following combination which worked:

  • Carefully clean the bed with alcohol (I do this every time I start using the printer anyway)
  • Use higher heat on the hot bed to improve adhesion.  I pushed it as far as my bed would go, to about 110 C.
  • Make the bottom layer thinner, so the hotend pushes the plastic more firmly into the bed, and the layers squish out for more contact surface area.  I lowered the bottom layer from 0.4mm to 0.3mm.
  • Use a "brim" to have even more bottom layer connected to the bed.  I used 5mm.  Slic3r doesn’t do rafts, so I wasn’t able to try that.  Rafts are somewhat flexible so they avoid transferring the strain of the plastic contracting to the interface with the bed.
  • I put the printer into a cardboard box, so the whole build area became heated above room temperature.  Thus the upper layers didn't shrink quite so much.


When the job was finished, I turned off the heated bed. This typically is needed to help get objects to come off of the bed.  Within a couple minutes, I heard a pop as the object released itself from the bed.P1010518

One thing that was suggested to me by an industrial engineer was to modify my design to add a couple cross pieces to the bottom of the part. This would add surface area to the bed to improve adhesion, and hold the circumference of the circle to be more constant. Fortunately, I didn’t have to resort to that.


This is my theory on the problem and why this worked:

For ABS to stick to the platform, the platform has to be heated to about 70-90C. The plastic has to be extruded near 210 C.

As the layers are added, they adhere to the layer below at the extrusion temperature, then they begin to cool to room temperature.

The cooling plastic shrinks while the bottom layer or two are held at a higher temperature by the heated bed. This differential in contraction can cause the familiar problem where corners of objects tend to pull up off the bed.  I had mostly cured that by carefully calibrating my first layer height and the heated bed temperature. But that wasn’t enough to keep my large, thin walled object adhered to the bed.

Oct 23

In my last post, I described why Kickstarter hardware projects can require fairly high funding goals, and yet they do not make the founder rich.  What they do is get his design to market and the company started, barely.

In this post I am looking at the scenario of analyzing a much more modest hardware project (low priced backing levels, low funding goal) that is often seen on Kickstarter.

Digispark is the kind of project I am talking about. It is a cool little board that uses the Arduino IDE for programming, and only costs $12 in single quantities, less in multiples.  It offers Makers a unique form factor at an attractive price.  It is illustrative of the ability of small projects to really take off and get a huge backing. The originator of the project, Erik, is from Portland but I don’t know him and we haven’t talked.  I want to be clear, my analysis below is not intended to be an accurate analysis of Digispark.  That project is just the framework of what I’m using to hang my example on. 

I’m hoping that at people considering a Kickstarter will see this and do the necessary what-if analysis and plan their project such that they can be successful if they barely make their goal, and also if they are fortunate enough to be one of the projects that achieves a huge success. 

Minimum funding scenario

So lets say you have already got your hardware prototype designed and at least mostly debugged.  You just need to get enough orders through Kickstarter to buy parts at a good volume to get the price down for an initial build which you plan to do yourself using equipment you already have.  You look at the price breaks for parts and decide that if you build 500 units, you could get good prices.  You carefully calculate that the parts plus the PCBs will cost $4 per unit. 3X parts cost for a price is a rule of thumb you’ve heard, so you set the minimum pledge at $12, but figure the average backer will get the two unit reward for $20.  500 units x $10 each = $5000 minimum goal.

But lets double check the numbers for this minimal funding situation, based on my calculations in KF 101:

2% non funded, 10% to Kickstarter and Amazon.  So if the project funds at the minimum level, a few weeks after the project completes you would get a check for $4410. 

You will need to build 490 units (because of the 2% that didn’t fund), plus you need to order some additional parts for test and assembly fallout.  Let’s say you plan for about 25% assembly and test failures so you order PCB’s and parts for 600 units * $4 = $2400, plus $30 in shipping. Total cost of parts is $2430.

Building and testing over 500 units is going to be a chore!  You decide you need a solder paste stencil, some assembly jigs, a test fixture, a better ring light, and more solder.  You spend $400 for supplies. 

You toil for a few weeks building and testing those units using your trusty hotplate and tweezers. Your back hurts and your eyes are blurry.

Then its time to ship. You promised free shipping.  USPS for a small package is just under $2, plus you need boxes and some packing material and labels.  Creating 250 shipping labels justifies buying a $75 label printer.  $3 *245 paid backers +$75  = $810 for shipping. 

Net, $4410 – $2430 - $400 - $810 = $770 net for a couple months of work.  There isn’t enough left to launch a business.

The lesson here is that the simple 3X rule of thumb isn’t a great way to set the price on small volume manufacturing of hardware products.  Make sure you are covering all your costs, including parts, supplies, shipping, overhead, and a reasonable wage for yourself.

Viral success on Kickstarter

What happens if Adafruit tweets about your project, then Hackaday blogs it, and it even appears on engadget?

Well, then you might end up getting $270,000 pledged by 6000 backers. Let’s say the average backer choses a reward of 5 boards for $45, for an average pledge of $9 per board. You have 30,000 boards to build and ship to 6000 backers.

Over 50X funded! You are rich, right?   Let’s re-check the numbers to see if it will add up.


Again Kickstarter/Amazon takes 10% off the top (I’m not going to worry about the 2% non-funding here, lets just say you got $275K pledged originally and $5K didn’t fund).  You receive a check for $243K. 

Startup costs

Over $200K is a lot of money, and the Kickstarter success shows enough demand for this to become a business.  You pay a lawyer to form an LLC, an accountant to set up the books.

You rent a small office space to separate business from home and buy some office furniture.

You hire a part time bookkeeper to make sure the invoices are paid and everything else is accounted for.

The web page you built needs expansion, but you have bigger issues to worry about now, so you pay a developer to add forums and support for online sales, plus hosting costs for a bigger site with increased bandwidth.

These costs accumulate over the months while you struggle with getting parts, finding the right assembly contractor, and ramping up production to fulfill those 30,000 units you owe your Kickstarter backers.



The cost of parts falls to $2.50 per unit due to quantity discounts.  That’s good! 

For this many boards you are going to have to use a professional assembly contractor.  They will get better yields on their automated machines than you and your hotplate, so you cut back to 10% extra parts.  Anything left over will be inventory for post-Kickstarter sales anyway.

Oh wait, it turns out that it is hard to find any distributor that stocks 30,000 units of anything. After several weeks of phone calls and emails, expedited shipping, sometimes paying more than the quantity 10K prices, the average cost of your parts rises to $3.00 per unit.  You learn about supply chain management and one of the reasons projects get delayed.


Assembly and Test  

You physically can’t build over 30,000 units in a reasonable amount of time on your kitchen table.  You could outsource to China to save some money on assembly, but that will cost you more time to set up and get working smoothly than working in the US with a company that is at least in your own time zone. An assembly house will charge you tooling and setup charges, plus a fee per board. Test tools and test time are extra.  $5K in manufacturing tooling, setup costs, and test fixtures. $2 per board for assembly and $0.50 each to test your 30K+10% simple, low part count electronic devices with no cases. 



The cost to ship 5 boards goes up to $4 for a custom printed box with some purchased ecologically friendly packing material.  You wouldn’t want to pack and ship 6000 boxes from your house. You hire a fulfillment house to pack and ship your orders for $2 each. 



$243K – $25K -  $99K – $87.5K – $36K = -$5K

But that number is very sensitive to variations in costs.  If you had saved $0.25 per board for parts+assembly+shipping, then your project would have at least broken even.

What looked like an unbelievably great success can turn into a very stressful exercise in negotiating for pennies to try to not loose money on the project.


You need to do your homework on costs and expenses to see what happens if the project just reaches the minimum funding goal, and just as important you should look at what you will do if it goes 10x or 50x above the funding goal.

Make sure your minimum goal is high enough that you can build and deliver the rewards to backers plus have enough left over to cover development and prototyping costs and any equipment  and tooling you will need.

Then check how you would scale your project if it goes viral and you have to deliver a lot of rewards.  Supply chain costs, outsourcing assembly and test, and fulfillment are not as cheap for large quantities as it can be for a DIY small build.  Be careful how you set up the rewards to be sure the funding for the project will scale up enough for the added costs of higher levels of success.

Sep 09

Many people don’t seem to realize how expensive hardware can be to develop and bring to market in volume.  This is really obvious to me when I look at Kickstarter hardware projects.  I see both Kickstarter project owners and Kickstarter backers that just don’t seem to get how expensive it can be to bring a hardware project to production.

One recent Kickstarter project, Tangibot, set their funding goal at $500,000.  Among other problems with that project, some folks were complaining “They don’t need that much money.”  In this post, I am going to show why I think it was a very realistic funding goal.

On the other end of the spectrum, a recent hardware Kickstarter project, Digispark, set its goal very low, $5000, with rewards at a very attractive price.  This project became very successful, raising 60X its goal. In a following post, I’m going to show why I think this “success” can actually be a big problem.

The Tangibot Kickstarter project’s stated goal was to raise enough money to start a business and create an efficient, modern assembly process to lower the cost of a 3D printer.   Let’s break down that $500K and see if the minimum goal is reasonable to do that. 

The pledge levels were from $1200 to $1400.  I’m going to simplify the analysis by just using $1300 as an average, and ignoring international shipping.  Note that a lot of my numbers are going to be rough, informed guesses.

Out of the $500K pledged, some 1 to 3% will fail to pay.  Kickstarter does not collect money until the project completes, and some credit cards have insufficient credit or expire or whatever.  Because the pledges are pretty large, I’m going to assume 3%, so $485K is collected.  Then, Kickstarter and Amazon take 10%, so the project will only receive $446.5K.

$485K/$1300 = 373 rewards that need to be built and delivered.  This is where a lot of the money from any hardware Kickstarter is likely to go. 

Most people expect some discount for essentially pre-paying for a product when they back a Kickstarter project.  So lets say these $1300 rewards will retail for $1450, that’s a reasonable 10% discount. 

When pricing hardware, there are two rules of thumb you can follow.  One is to multiply the BOM (parts) cost by 3X.  Another is the multiply the COGS (cost of goods sold, which includes assembly and test costs) by 2X.  The 2X number allows the manufacturer to charge 40% over his manufacturing costs for wholesale markup, and retailers to charge 40% over wholesale.  So I’m going to assume that the founder did that calculation and thus it will cost $725 for parts and labor to make each reward for this project.. 

To deliver 373 rewards, I’m going to assume he needs to build an additional 10%.  This is for units that fail final test and aren’t easily fixed, get lost or damaged in shipping, etc.  So he would need to spend 410 * $725 = $297K  on rewards.  Oh wait.  He included free shipping.  Normally, you charge customers for shipping, its not part of COGS.  And these are great big, assembled 3D printers that need a large, protective shipping container.  I’m going to estimate $75 for labor, shipping materials, and shipping charges per unit.    That’s another $28K.  So just building and delivering the rewards would be $325K. 

$446K - $325K = $121K available beyond the cost of just delivering the rewards to backers.

Thus, assuming you are using the 2X COGS price model with a 10% Kickstarter backer discount, a hardware project will have available about $25% ($121/$500K) of its Kickstarter funds to do anything beyond just building and delivering the rewards. So a very simplified rule of thumb is that you need to set a Kickstarter goal of at least 4X what you need for your development and setup costs.

Since Tangibot is built on an existing, open source design, their development costs are low.  But they are planning to set up an efficient production line to lower costs. Here is my estimate of what those setup costs might be. 

$30K plastic mold

$20K assembly and test fixtures

$10K development and production prototypes

$10K travel visiting vendors, and grass roots marketing such as attending Maker Faires,

$10K four months rent and utilities on a very modest manufacturing facility

$5K lawyer and accountant startup expenses

$5K office and shipping equipment

$5K web store setup

$95K for setting up and running the company while building the Kickstarter rewards.  I think that the numbers I have used above are low, it would likely be higher.

At the end of delivering the rewards, he also needs to have some units on hand and ready to ship to post-Kickstarter customers.  $121K – $95K = $26K. At a cost of $725 per unit, he will have 36 units in stock when the store opens.  That’s not a lot of stock.  They will have a tough time bootstrapping up to larger quantities without borrowing money or taking an outside investor.

Notice there is no money set aside to pay the founder during those 4 months, nor any non-production line employees, such as engineers to develop the test fixtures, or someone to write user documentation, or community/customer support help.  There is also no money left for delays or the unexpected. 

I have shown that $500K is actually quite a frugal amount to complete the Kickstarter rewards and start a small company for a hardware project like this.  If you went to an investor to raise the money, they would point out you need a whole lot more for salaries and a decent marketing campaign.

The costs aren’t much different when the Kickstarter hardware device is cheaper, such as the $100 Twine.  They just have to make and ship more units. 

In Kickstarter 102, I’ll show you why I think a simple, low cost hardware project can get into trouble when it goes viral and gets a lot more backers than the original goal.

Jul 26

First, I want to thank everyone for their interest, kind words, and encouragement for the SMT Soldering Comic.  We have an Italian translation posted, and several other languages are coming soon, thanks to volunteers.

While hand soldering SMT is easier than you think, and in some ways it is easier than hand soldering through hole parts, there is another popular method to solder SMT parts: reflow soldering. 

I’m not going to give a tutorial on reflow in this post.  I’m just going to talk about choosing a “reflow oven”.

For hobbyists, there are two inexpensive choices for heating up your board to reflow the solder: hotplates and toaster ovens.


Doctek from the local hacker group Dorkbotpdx, has an Instructable on using a hotplate for soldering. I took a class from him on using hotplates for reflow soldering about three years ago.  Hotplates are cheap, small, and give good results.  Every hotplate I’ve seen can get plenty hot to do reflow.  For $20 retail or $5 at the resale store, you can be pretty sure you have something that will work.

The downside to hotplates is that they typically have hot and cold spots created by the shape of the heating element.  You will need to put your board in the same spot each time to get consistent results, and because you want your board evenly heated, you are limited in board size to the hotspot area, and probably doing one board at a time.

Toaster Ovens

A toaster oven that works good can overcome that one downside to hotplates.  They can do larger boards, or more boards simultaneously. But people that try to use toaster ovens for reflow soldering have a harder time reaching success.  This is because not all toaster ovens are good for using as reflow ovens.

If you want to use a toaster oven successfully, here is my list of what to look for, in priority order:

High temperature of 260 C / 500 F

The oven needs to be able to quickly heat to reflow temperatures. Leaded solder paste will have a reflow temperature around 225 C. An oven that only goes up to 230 C / 450 F will only slowly reach that temperature, and may never get to the higher reflow temperature needed for lead-free solder paste. So you need an oven that is designed to reach 260 C / 500 F. These ovens typically have higher power ratings, such as 1500 Watts.

Manual controls

You can manually control the temperature of the oven with the front panel. But to get good, consistent results without carefully babysitting your oven, you will eventually want to use a reflow oven PID controller to automate an accurate and consistent soldering profile. A PID controller will be modulating the power to the oven to control the temperature. Digital controls will be reset by the loss of power, so you need an oven with manual controls, or be ready and willing to hack the oven to remove the digital controls.  This will involve working with high voltage AC circuits – not something I would recommend for a novice.

Convection bake

The air movement from convection heating will help to eliminate hotspots. Otherwise, you could get uneven heating due to the placement of the heating coils and air leaks.

My oven

I use a Cuisinart TOB-60 Convection Toaster Oven Broiler.  1500 Watts, convection bake, 500 F.  The used oven I bought has a squeaky fan.  Not so good for cooking, fine for a reflow oven.  This oven appears to be manually controlled by a few dials on the front. In reality, there are electronics inside to precisely control the temperature and the fan.  I’m not going to explain how to do this. If you know AC circuits, it should be easy to figure out yourself. If you don’t, you shouldn’t be messing around with line level circuits.  Just manually control the temperature with the front panel. 

Jun 02


Well the SMT Manga has been out for a few days not and it’s been very popular.  It looks like it has been viewed by people all over the planet and we hope you all enjoy it.  But to make it even more enjoyable we want to thank Francesco Tarantino for taking the time and effort to translate the comic into Italian.  The translated version is now on the web site so feel free to download and distribute…Looking forward to other translations soon.


Thanks again Francesco



May 17

SMT Soldering–It’s easier than you think! is our new Manga Comic that shows you step by step tips and techniques for learning to solder SMT parts.  To down load the full comic press on the comic front page:


We’d love to get your feedback on the comic.  We are in the process of working out the kinks so we can get translations of the comic into everyone's hands – we’ll keep you posted.

For everyone that learns better with hands on experience we are offering our SMT 2D6 SMT Learn to Solder Kit in the store. You will end up with a 2 Dice simulator that can be used for games and fun and satisfaction in your new found knowledge that you gained in the world of SMT electronics.




Have fun – let us know what you think


Apr 02

If you had any doubts that SiliconFarmer has an actual farm, this project should dispel them. We got six chickens last year.  I built them a nice coop. It sits about 100 feet from the house, and has wheels so we can occasionally move it.

Chicken coup for six

Chickens like to be in the coop at night.  They are protected from predators, and they can stay warm if there are no drafts. They like to be outside during the day to forage for food.

This means someone has to go out early in the morning to open the coop, or they get noisy and start pecking each other.  And after it gets dark, someone has to go out to close the door so they are protected, regardless of the weather. Did I mention it is after dark?

Anyway, this gets old after a while.  So I built an automated system to open the door at dawn, and close it at dusk.


The first problem was deciding what sort of motor and mechanism to use.  Brent from Autosport Labs suggested using a window wiper motor, as they are 12V, high torque, geared about the right speed, and can be found cheap at a junk yard.

Subaru window wiper motor

He also suggested using an arm and pulley mechanism so the motor could be run in just one direction to both open and close the door.

These motors have an integrated switch, which allows my controller to determine when the motor is positioned with the door completely closed. 

The completely open position isn’t as critical. No one cares if the door is an inch down from the absolute top.  So I can use a simple timing loop for opening the door.

Motor reverse engineeringFirst thing I did was figure out which leads ran the motor, and which was the feedback switch.  Ohm meter, 12V battery, and an oscilloscope made quick work of that.

One lead is common, two leads are power for slow and fast speeds.  I used the slowest speed – fast was too fast! The forth lead comes from a switch connected to common that is only closed at one position. 

The motor is rated at 10 amps, and I had a 10A 12V relay in my parts drawer, so I chose to use a relay instead of a transistor to control the motor. 

It still took a small NPN transistor and flyback diode to control the relay.  I checked out all the circuits, one by one, on a breadboard before I created my schematic and had the boards built by @laen’s PCB prototype service.

I decided to use an Arduino with a custom shield design for this project.  As I tried out circuits, I wrote quick little bits of Arduino code to test them. To create the final software code, I had working snippets of code from my testing to use for each function.

My Chick Door Shield has the following features:

  • SPST 10A 12V relay to drive the motor.
  • NPN transistor and flyback diode to drive the relay.
  • An opto-isolated input to sense the motor’s switch.
  • 12V battery input. This goes through a polarity protection diode to the Arduino’s VIN.  the Arduino’s regulator generates 5V. The Arduino uses an inefficient regulator, so in hind sight, I wish I’d put a 5V regulator with lower quiescent current on the shield. 
  • Voltage divider input on the 12V battery to check battery charge level.  3:1 ratio so the input is good to 15V.
  • Voltage divider input on the solar panel.  Again, 3:1 ratio input.  This might be too low, as some unloaded solar panels can hit 18 volts.
  • A PFET to connect the solar panel to the battery. This is to avoid over-charging the battery.  Also, solar panels can drain a battery when there isn’t sufficient sun.  Even a solar panel with a protection diode will have a leakage current. With a PFET oriented the correct way, there is no leakage at all.
  • An input from a button, so the door can be manually operated.
  • I threw on a temperature sensor and a spare connector and power to an IO pin.  I plan to  eventually add a radio so I can monitor the door position, and check it with a limit switch or optical sensor.  I could also monitor the coop temperature.


I built the board, mounted the motor to a bit of metal and attached the arm.  Then I tested it on my workbench.  Everything worked!  I also debugged my software on the workbench.  One thing I found out was that the motor really does have a lot of torque.  You don’t want it to hit anything! 


Software features

  • The motor switch input pin fires an interrupt, which immediately shuts off the motor. This gives me the best accuracy on repeatedly positioning the arm in the same spot when closing the door.
  • The closing the door function uses a delay(500*3) followed by another motor shut off, just in case something happens to the wire from the switch.  I don’t want to run the motor until the battery dies!
  • The current surge from starting the motor can cause noise spikes from the motor power leads coupling to the switch wire.  This could inadvertently stop the motor too soon. So the close door function also delays arming the motor switch interrupt for 10mS after starting on the motor.
  • The open direction is controlled by a simple delay(500). This opens the door a bit past fully open.  I figure if the door sticks a little, it won’t open quite as far as expected, which should still be OK.
  • The light level (reading from the solar panel) is set to 50 for sensing night.  That’s under a 1V output from the 12V solar panel.  The chickens don’t go into the coop until after sundown, so I figured that on a cloudy day, I need to wait until as late as possible to close the door.
  • The open light level is set to 100, plus a 5 second debounce period.  This is to add some hysteresis so the door doesn’t go up and down repeatedly, and to avoid lightning flashes from opening the door.  It probably wouldn’t hurt to raise it to 200.
  • The FET is off when I check the battery and solar panel voltages.  It is on only when the solar panel voltage is higher than the battery voltage, and the battery isn’t over 14.6 volts.
  • All interesting values are checked for changes, and output on Serial.Print every control loop (10ms).  All I have to do is hook up to the USB port to see what is going on.  Eventually, I can connect a radio to the Arduino UART pins and get status messages from the chicken coop.

Hardware build

The control electronics are in a case, right next to the battery, in a storage area under the chicken roost.  It is dirty down there.


The solar panel on the roof is a spare 10W panel. If there is any sun at all, the battery gets charged.P1000839

The manual push button is mounted right by the door.  You can see the plastic sleeve going through the wall of the coop so the paracord doesn’t get frayed, and the pulley that pulls the door up and down.


Here is the pulley on the inside, with the paracord heading out through the plastic sleeve. As the arm swings around in its arc, this pulley makes sure the cord is going straight out through the hole in the wall


Here is the motor, mounted to the ceiling, in the open position.  When closed, the arm is pointing at the camera position, toward the inside pulley.


An overall picture of the arrangement of the motor and indoor pulley. You can see the cable going to the motor run along the rafter.  Don’t put cable (or anything else) where a chicken can peck at it. Eventually, they will damage it if they can get to it.


I have some video of the automatic chicken door in action, but I need to edit it down and upload it to Youtube, then I will update this page.