Homemmm​.s‑ol.nu

pleasant experiments and code and wires

manufacturing at MOQ-1

These are some thoughts about a future for manufacturing that intentionally rejects the dogma of mass production and -consumption. These are very much thoughts-in-progress and certainly naive in many ways, so responses and comments are very welcome. I’d be particularly excited to hear from anyone who has tried running projects along the lines described below.


mass production: quantity reigns supreme

When I got into hacking on electronics as a hobby, I had to learn about sourcing components from distributors, and later custom parts from suppliers. It didn’t take long until I learned about volume discount pricing, and as soon as I discovered Alibaba I was introduced to the concept of a minimum order quantity (MOQ).

In case you haven’t heard the term before: The MOQ is a limit for the minimum quantity of goods a supplier is willing to provide. This can apply both to custom parts or off-the-shelf components, and it might be a hard limit or softly enforced by pricing; in some cases for example ordering one or ten of the same item might cost exactly the same.

Within the traditional manufacturing model, this just makes sense. For mass-produced items, the cost per item is the single most important metric, and every step in the manufacturing process is optimized to lower it. This means front-loading all design effort, having tools like molds and dies made, and buying, customizing or even designing custom machines to squeeze time and money out of each unit produced. As a result, the fixed (setup) costs are quite high and need to be amortized over a certain minimum batch size.

As a small player that doesn’t work with large numbers, this can present a significant barrier to entry and is the main reason crowdfunding platforms and group-buys exist. However producing “a lot” also means selling (and needing to sell) “a lot”, which creates an incentive to produce bland, lowest common denominator products for the largest possible market. While there is certainly a need for many products like that, I’m personally not interested in pursuing this approach with my projects at the moment.

digital fabrication and scaling down

However, not all the machines and processes used in mass production actually need to mass-produce. Computer-controlled machines like CNC mills, laser cutters, and pick-and-place machines can crank out identical part after part, but they can just as well run a unique program every cycle.

There are some constraints of course: a CNC mill has only a limited amount of tools available in the toolchanger at a given time, it’s optimized for a small selection of materials and potentially has a clamping system designed for a particular purpose. You can only put so many different component reels on a pick-and-place machine before you run out of feeder slots. etc.

This can be solved by establishing some requirements or design rules. As an example, look at PCB manufacturers (JLCPCB, PCBWay, OSHPark, Aisler come to mind as examples). These services have revolutionized the PCB prototyping space by offering very low MOQ (3 or 5 pieces) circuit board production at very competitive prices. This is possible based on two principles (I think):

  1. standardization (& batching):
    These services offer limited, fixed capabilities with few (though ever-expanding) options. This ensures that most customers' orders are process-compatible and can be batched and produced in a single go. As a result, fixed process costs are amortized over multiple customers rather than single project quantities, effectively lowering price and MOQ.
  2. process automation:
    Apart from process optimization on the factory floor, this includes eliminating manual steps and communications overhead, such as quoting, accommodating customer files in obscure formats, etc. In part, this is only possible thanks to the standardization and saves time on both the supplier’s and the customers' sides.

As a small “creator” of things, I much prefer interacting with services like this where a streamlined process, pricing structure and documentation let me do as much learning and work on my end without feeling like I’m wasting someone else’s time by quoting version after version of my designs, wasting my own time waiting for the responses, and ultimately paying extra to pay for the customer support.

Paradoxically, spending time to learn a specialized skill like “preparing 3d models and drawings to hand-off for CNC machining” or “exporting and checking PCB gerbers” is much less risky of an investment for me as an individual “creator” of things at a small scale, whereas finding and keeping someone on payroll for the same task at a larger company might be more of a liability.

the MOQ-1 fantasy

It seems to me that in principle it should be possible to apply these concepts to B2C production as well, rather than B2B relations as in the PCB example. (This is where things get very hypothetical and a healthy dose of optimism is required.)

By definition, a MOQ-1 company produces only one-of-a-kind products, highly customizable by the client. Instead of a product, the offering would be a design space.

As opposed to the B2B service model, there’s another important fixed cost that stands in the way of scaling down towards MOQ-1: research and development costs. In the case of PCB fabs, these costs weren’t visible because the customer provides the design (and the customer themselves presumably operates within the mass production framework).

Applying the model from above:

standardization

The design space defines the limits of customizability and consequently the requirements for the production processes. By applying “design for manufacturing” principles, the product design space and the production processes need to be tuned together.

process automation

To realize the design space while minimizing manual per-order work, the rest of the process needs to be automated and integrated as tightly as possible across all layers of the product. For the kind of projects I’m working on, these could be mechanical, electronics, software, documentation and packaging.

For each of the layers, different strategies can be used and mixed. Where automation is impractical, modularity can be harnessed, or the space may need to be restricted further.

a little taste

So here’s an example application of this concept: I’m working on an open-source MIDI keyboard. My current product has a fixed shape and feature-set, but some of the choices I’ve made in the process could be expanded to stretch the design out into a design space something like the following:

  • number of keys and key arrangement
    • including multiple key grids
    • in particular custom menu/shift/etc key arrangements
  • size, type, and position of the screen module(s)
  • I/O port types, number, positions
    • including multiple ports of one type
    • DIN-MIDI (in, out, thru)
    • TRS-MIDI (in, out, thru)
    • PWM Audio Output
    • CV, Gate
    • I2C
    • Foot Pedal input
    • other GPIO
    • external power input
  • other controls
    • rotary encoders
    • rotary or fader potentiometers
  • materials
    • MDF, acrylic, or aluminum housing

On the other hand, a lot of choices would remain fixed:

  • component choices
    • same MCU for all boards
    • one type of key switch, keycap, encoder, etc.
  • mechanical structure and mounting
    • top plate, PCB, bottom plate construction
    • solderable thread inserts
    • M2 hardware

mechanical

For the mechanical layer, modern parametric CAD is a good part of the solution, although as a programmer, I feel like they leave something to be desired. (Most professional CAD packages have scripting capabilities, but I have the impression they are used almost exclusively for workflow optimization and rarely for geometry generation in the industry.)

OpenSCAD is great but a bit clunky for “real” designs, but cadquery provides the completely unhinged level of customization I’d like to see, although ergonomically it could be improved IMHO:

But CAD is only a part of the process. To make things real, we need toolpaths to feed the CNC machines, and those are generated by CAM software. Like CAD tools, these generally do have scripting capabilities that I suspect go mostly unused.

Generalizing CAM to automatically machine any 3d model is a damn near impossible task (though some companies are trying), but that’s not necessary since we’re in control of both the design space and the CAD output. This lets us make many more assumptions (baking them into the design limitations if necessary), and tailor the workflow to technical needs (e.g. separately exporting different design layers or subcomponents, etc).

electronics

KiCAD has a great machine-readable file format and the ERC and DRC can be used to detect screw-ups when generating PCB designs automatically. Schematic generation and board routing might need manual intervention, but an automated system could pre-populate both the schematic and board with any building blocks required for a particular product instance.

The fabrication of PCBs is a complicated multi-step process, and scaling it down is a very interesting problem. Here’s the setup I’m currently imagining:

  1. we start with bare copper-clad boards
  2. traces are isolation milled with a CNC router
    This is less precise than photolithography, but scales down to MOQ-1 and produces less (and less dangerous) waste.
  3. solder paste is applied using jet printing
    This again avoids the more wasteful two-step process of laser-cutting a steel stencil and using it to squeegee the solder paste onto the pads
  4. SMT components are placed using a pick-and-place machine
    There are even some machines on the market that combine both paste jetting and component placement.
  5. the board is soldered in a reflow oven

This process only allows for single-side, single-layer PCBs, which is a very severe restriction for the design process that wouldn’t be acceptable for mass production. In this context, it might be worked around using 0-Ohm resistors, SMT jumpers, or even a wire-bonding machine.

Alternatively, two-layer boards could be enabled with a copper plating step to allow the creation of plated through-holes and vias, but it seems like a good idea to avoid that. Another fall-back option would be soldering wires or pins inserted into unplated through-holes.

I’ve put much less thought into the other layers so far, mostly because while they’d definitely be a lot of work, they seem to be more achievable today and closer to common practices. I’ll close with a quick run-down anyway:

packaging

I’ve been experimenting with laser-cut cardboard inserts for keeping pieces in place in standard box sizes. For most of my projects that could be enough, although the black residue left on the cardboard edges can be a bit problematic.

documentation

Much like the hardware and electronics design, the documentation might be put together from pre-existing pieces.

quality control

Stephen Hawes brought up in the OSHWA Discord that I hadn’t mentioned quality control at all. I don’t have much experience with QC yet, so I hadn’t yet given it much thought here as well. The traditional approach to QC for electronics products is using custom jigs and tools that can quickly check a lot of low-level hardware functions at various steps in the production process to catch problems early, as well as more integrated tests at the end of the production process that are automated as much as possible.

Producing a custom jig for each product of course is neither sustainable nor realistic, so perhaps modularity would have to carry the weight here again. Software systems could help improve manual QC processes by generating concrete QC protocols / checklists to follow.

software

Software is very malleable. If software is flexible enough to make automate creating PCBs and manufacturing, then having software configure other software to match should be one of the lesser challenges. Modularity, configurability and, maybe, metaprogramming are good tools for this.


edit history:

  • 2021-11-21: added a concrete example of what a product design space in the last section
  • 2021-11-21: added a short section on QC (quality control)