Lessons from Running a Small-Scale Electronics Factory in My Guest Bedroom
spun.io
spun.io
a) doing some reading on design for manufacturing
b) getting some quotes for PCB assembly services and
c) considering factory-programmed microcontrollers
At quantity 200, you could have simple boards like these assembled for about a buck a piece. Microchip will program 200 PIC or Atmel microcontrollers from the factory for about 20 cents each with a $29 setup fee. Unless you're willing to work for a very low hourly rate, you should probably take advantage of someone else's economies of scale.
https://pcbshopper.com/#assembly
https://www.microchipdirect.com/programming/Tutorial.aspx?mi...
The real issue was that I had ended up cutting a lot of corners to try and get things done in time, particularly with regards to testing. Definitely a major lesson learned.
The MCUs didn't take long to program with a ZIF socket, but once they were baked onto boards and I was finding bugs that needed to be fixed, that's where it really turned into a pain doing it over SPI.
After all of that, I still ended up having to bodge 2 connections on all of the final boards after all was said and done (which was the 5th or 6th board revision after I did small test runs to play with things and fix issues)
They have some competition but CircuitHub is my go to. Others to check out are...
https://smallbatchassembly.com/
Haste makes waste, measure twice and cut once. It's one of the hardest lessons to properly internalise - bodges and firmware changes can be hugely time-consuming, so it nearly always makes sense to absolutely nail your prototype before moving to production.
Congrats on a cool project.
One/one-hundred-off prototypes are expensive but nothing beats the information gained from soldering a board, plugging in connectors, and programming chips directly. You'll do these steps at the end of a waterfall process anyways, and I'd say they're more expensive to alter then. When a problem is found, deciding to bodge wire two pads is the high-cost, low-risk solution to problems found late in the game. Discovering the problem early, fixing it in the schematic, and testing during your next prototype cycle is cheaper during production and risk is mitigated because you're still going to be testing before you ship.
Of course, this is all very much propaganda, and not all shops would follow this idealistic scenario, but I don't think hardware is any more waterfall than anything else.
1. In-person reviews with an expert. Offline reviews can be useful for getting a design out, but to understand the problem space, you need a back-and-forth conversation. Sample conversation that's easy in person but very hard over email: "Why not do it this way?" "Well, that would work, and it's a good solution a lot of the time, but you have this thing over here which makes this other approach a lot better...."
2. The hard way: sometimes there's just no substitute for experience.
At quantity 200, I think contract assemblers make a lot of sense (but do shop around: the economics of this particular supply chain can get weird), but factory-programmed parts really don't. Maybe if your firmware is final final I'd advise a client of mine to do it, but in any case where you're going to want a later firmware update, the best ROI is going to come from getting the debug port hardware perfect. That means the right connector (standard pinout, standard part, from a good quality manufacturer), level shifters where appropriate, pull-up and pull-down resistors, and all the rest. (Making sure this stuff was all explicitly spelled out on our review checklist was one of the first things I did when arriving at my current employer, and it's saved us and our clients a lot of money!)
Seeed Studio guide to DFM.[1]
First, this is the DFM guide specifically for Seeed. Every factory will have a different set of specs depending on equipment (assembly, test, and inspection, and familiarity of operating personnel), throughout requirements, yield requirements and price points, rework allowance, and so on.
Second, these typically assume for wide tolerances. Operating environment or design may necessitate relaxing some parameters in order to allow others to tighten (aka the tolerance stack up).
Dealing with both cases effectively in volume production is what requires experience beyond the manufacturer provided DFM guide.
Someone who learns this guide inside and out will be able to DFM with Seeed but not necessarily anyone else.
More generally, the DFM guidelines for ceramic RF materials would be wildly different than for Kapton flex connectors or for standard FR4 material.
Even if some things are different across CM's, the guide at least provides an awareness of the main issues for the target audience (amateurs or people getting their feet wet) for which these things are "unknown unknowns." If someone were to follow Seeed's guidelines, they would be in a good position to adapt their stuff for a different CM as long as they're receptive to feedback and the CM is willing to review it.
Right now it is a tool for myself and my work, which puts a priority on being comprehensive; but the licensing is liberal and I’m open to input.
Also some bottom rung assemblers you don't want to trust with your production firmware!
For me, 200 boards:
1. JLCPCB board + parts + assembly service. 2. Final assembly (non placeable parts) yourself. 3. Load firmware in and test via own test/programming jig. 4. Pack and send.
It's still not quite trivial, but it's not exactly hard now for small designers to go circuit -> Amazon without ever having to do any assembly at all.
I don't think PCB assembly would be that cheap, especially for a board with lots of SMT components. What I understand is that SMT manufacturing has a high startup cost, you need to supply the factory with full tapes of parts, and the factory needs to program the assembly line, often a factory is reluctant to take any offer below tens thousand boards because its high overhead. Even for service providers specialized in prototyping then, I don't see many provide QFN and BGA packages as options.
What have I missed here?
I just requested some quotes for assembly of 200 boards with a single-side load of 25 SMT parts, of which one is a BGA. The cheapest quote was ALLPCB at $1.09 per board, followed by PCBWay at $1.33 per board. That price includes setup and testing.
No transaction involving Chinese outsourcing is without risk and you need to do your homework, but it is no longer the case that DIY assembly is your only option.
Depending upon your turn time you can get boards made for say $20-50 for say a 4-6 layer board. For assembly —- that is really the expensive part. Basically can be hundreds of dollars per board for complex boards. But there is zero way you are going to build a complex board on your own at home. Toaster oven style? I mean honestly unless the board is pretty simple it’s basically close to just hitting the button on a slot machine. Burn some money and maybe you win maybe you don’t. Best bet is to start small — like one micro plus some passives and solder all the components onto the board yourself. Once you determine your board is good then build up from that. Lots of SW folks are not used to spending money to prototype something — they still click the “still evaluating” button on winrar for like 10 years solid. So yea hw takes a bit of guts to click the buy button and wait and hope for the best.. my advice just do it! Definitely my personal phrase there..
Speaking from experience as a sw guy, the "hit buy and pray" approach should be preceded by as many desk-checks as are humanly possible. For example: Use the design verification features in your CAD program. Print the PCB onto paper, place all the components on it to check for component clearances and orientations (no-one would lay out a connector upside down, would they?)
I think I got that last idea from one of Robert Feranec's DFM tips, lots of good ideas there: https://www.youtube.com/playlist?list=PLXvLToQzgzddPKq_txEXN...
A couple of things I found helpful.
Use a standard connector for in circuit programming. It just makes developing and debugging so much easier. Being able to easily swap parts of a development setup to see if the problem follows a piece of hardware will save your hair.
For AVR's where the programming interface is shared with the SPI Bus, always put pull ups on the chip selects for SPI's bus parts. As you learned those parts can fight the programmer if you reset the processor while they are holding the bus.
Also for AVR's I've seen mis-programming set the fuses to a clock setting that isn't supported by the hardware. Like programming an very low speed clock or an external clock when there is none. On our test jigs we resorted to injecting a 1MHZ clock on the xtal input pin when programming. Providing for this will be it easy to recover bricked board.
Having a command line interface for running tests is really really helpful. Use one of those USB to serial adaptors by FDDI. I found USB kind of sucks because plugging and unplugging USB ports a lot seems to often confuse OS. I've seen the US just give up on a USB port that it thinks is hosed. Either that or the drive gets messed. And you need to reboot. Using serial solves that problem.
And for small runs of boards try designing a simple loopback teststand. Just loop IO back through the test stand and use the host uP to run the tests.
C#/.net gets a lot of hate, but works really well to drive a single device under test. That allows you to slap together a simple GUI based test that you can offload onto someone else. You don't need anything but the programmer and a USB to serial adapter. You can shell out to run AVRDude.
Consider barcodes and barcode readers to keep track of boards. Failing that invest in QC tags.
Also, I've found renumbering passives to keep the same values in contiguous groups to simplify hand prototyping. You end up having dozens of 0.1uF for example and it's nice to knock them all out instead of switching between different components
We don’t print designators on silkscreen, so it’s not really a problem with the length (e.g when you get over 10 pages and have a five or more digit long designator. With a page that is subclassed you might have one like R1208B for example!)
Echos many of the important lessons learned in this piece.
On a large design, this makes it much easier to find the right section.
Sure you could have a look a the traces to find those out, but it's not always straightforward.
This makes a big difference when debugging boards IMO. For example now if you see that your blue LED is too bright again (as is usually the case ;)), you can just look for Rb* and fix it without the schematic.
- sell it as a "kit" or "component", something that doesn't stand on its own; these don't need approval
- stick the CE mark on there and rely on nobody checking it. This does leave you open to future legal action, but it's quite rare.
- stay out of the market entirely and abandon the field to Chinese postal vendors who will never be held accountable
(same goes for WEEE registration in the EU)
BotFactory: https://www.botfactory.co
KiCAD offers a free open-source EDA package that won't limit you after you learn how to draw your first electrical schematics or layout a PCB.
(Disclaimer: Fritzing is a perfectly fine project for someone's first introduction to electronics. Eg. Blinking an LED with an arduino. It quickly runs into limitations because of it's use of point to point wiring on pictographic components)