Introduction: Designing a Microcontroller Development Board

About: I'm a Maker and Hardware Hacker.

Are you a maker, hobbyist, or hacker interested in stepping up from perfboard projects, DIP ICs and home made PCBs to multilayer PCBs fabricated by board houses and SMD packaging ready for mass production? Then this instructable is for you!

This guide will detail how to go about designing a multilayer PCB, using a microcontroller dev board as an example.

I used KiCAD 5.0, which is a free and open source EDA tool, for creating the schematics and PCB layout for this dev board.

If you aren't familiar with KiCAD or the workflow for PCB layout, Chris Gamell's tutorials on YouTube are a pretty good place to start.

EDIT: Some of the photos zoom in too much, just click on the image to see the full picture :)

Step 1: Think About Component Packaging

Surface Mount Devices (SMDs) can be positioned on a PCB by a pick and place machine, automating the process of assembly. You can then run the PCB through a reflow oven, or a wave soldering machine, if you also have through hole components.

Component leads for smaller SMDs are also reduced, resulting in
substantially lower impedance, inductance and EMI, a very good thing, particularly for RF and high frequency designs.

Going the surface mount route also improves mechanical performance and
ruggedness, which is important for vibration and mechanical stress testing.

Step 2: Choose Your Microcontroller

At the heart of every microcontroller development board, like the Arduino and its derivatives, is a microcontroller. In the case of the Arduino Uno, this is the ATmega 328P. For our dev board, we will be using the ESP8266.

It’s dirt cheap, runs at 80MHz (and is overclockable to 160MHz) AND has a
built-in WiFi subsystem. When used as a standalone microcontroller, it can execute certain operations up to 170x faster than an Arduino.

Step 3: Choose Your USB to Serial Converter

A microcontroller will need some way to interface with your computer, so you can load your programs onto it. This is typically accomplished by an external chip, which takes care of translating between the differential signals used by the USB port on your computer, and the single ended signaling available on most microcontrollers through their serial communications peripherals, like UART.

In our case, we'll use an FT230X, from FTDI. USB to Serial chips from FTDI tend to be well supported across most operating systems, so it's a safe bet for a dev board. Popular alternatives (cheaper options) include the CP2102 from SiLabs and the CH340G.

Step 4: Choose Your Regulator

The board will need to get power through somewhere - and in most cases you'll find this power provided through a linear regulator IC. Linear regulators are cheap, simple, and while not as efficient as a switched mode scheme, will offer clean power (less noise) and easy integration.

The AMS1117 the most popular linear regulator used in most dev boards, and a pretty decent choice for our dev board as well.

Step 5: Choose Your Power OR-ing Scheme

If you're going to let the user power the dev board through USB, and also offer voltage input through one of the pins on the board, you'll need a way to choose between the two competing voltages. This is most simply accomplished through the use of diodes, which work to allow only the higher input voltage to pass and power the rest of the circuit.

In our case, we have a dual schottky barrier, which includes two schottky diodes on a single package for this very purpose.

Step 6: Choose Your Peripheral Chips (if Any)

You can add chips to interface with your chosen microcontroller to enhance the usability or functionality your dev board offers its users.

In our case, the ESP8266 has only a single analog input channel, and very few usable GPIOs.

To address this, we will add an external Analog to Digital Converter IC, and a GPIO Expander IC.

Choosing an ADC is typically a trade off between conversion rate or speed, and resolution. Higher resolutions are not necessarily better, because chips that feature higher resolutions because they use different sampling techniques will often have very slow sample rates. Typical SAR ADCs have sample rates in excess of hundreds of thousands of samples per second, whereas higher resolution Delta Sigma ADCs are usually only capable of a handful of samples per second-a world away from the speedy SAR ADCs and the lightning fast pipelined ADCs.

The MCP3208 is a 12-bit ADC, with 8 analog channels. It can operate anywhere between 2.7V-5.5V and has a maximum sampling rate of 100ksps.

The addition of an MCP23S17, a popular GPIO expander results in 16 GPIO pins becoming available for use.

Step 7: Circuit Design

The power delivery circuit uses two schottky diodes to provide a simple OR-ing function for power input. This sets up a battle between 5V coming from the USB port, and whatever you wish to provide to the VIN pin — the winner of the electron battle comes out on top and provides power to the AMS1117 regulator. A humble SMD LED serves as an indicator that power is in fact being delivered to the rest of the board.

The USB interface circuit features a ferrite bead to prevent stray EMI and the noisy clock signals from radiating down towards a user’s computer. The series resistors on the data lines (D+ and D-) provide basic edge rate control.

The ESP8266 uses GPIO 0, GPIO 2 and GPIO 15 as special input pins, reading their state at boot to determine whether to start in programming mode, which lets you communicate over serial to program the chip-or flash boot mode, which launches your program. GPIO 2 and GPIO 15 must remain at logic high, and logic low, respectively during the boot process. If GPIO 0 is low at boot, the ESP8266 relinquishes control and allows you to store your program in the flash memory interfaced within the module. If GPIO 0 is high, the ESP8266 launches the last program stored in flash, and you’re ready to roll.

To that end our dev board provides boot and reset switches, letting users toggle the state of GPIO 0, and reset the device, to put the chip into the desired programming mode. A pull-up resistor ensures that the device launches into normal boot mode by default, kick-starting the most recently stored program.

Step 8: PCB Design and Layout

PCB layout becomes more critical once high speed or analog signals are involved. Analog ICs in particular are sensitive to ground noise issues. Ground planes have the ability to provide a more stable reference for the signals of interest, reducing noise and interference typically caused by ground loops.

Analog traces must be kept away from high speed digital traces, such as the differential data lines that are part of the USB standard. The differential data signal traces should be made as short as possible, and should be trace length matched. Avoid turns and vias to reduce reflections and impedance variations.

Using a star configuration for providing power to devices (assuming you are not already using a power plane) also helps reduce noise by eliminating current return paths.

Step 9: PCB Stack-Up

Our dev board is built on a 4 layer PCB stack, with a dedicated power plane and ground plane.

Your “stack-up” is the order of layers on your PCB. The arrangement of layers affects the EMI compliance of your design, as well as the signal integrity of your circuit.

Factors to consider in your PCB stack-up would include:

  1. The number of layers
  2. The order of layers
  3. Spacing in between layers
  4. The purpose of each layer (signal, plane etc)
  5. Layer thickness
  6. Cost

Every stack-up has its own set of advantages and disadvantages. A 4 layer board will produce roughly 15dB less radiation than a 2 layer design. Multi layer boards are more likely to feature a complete ground plane, decreasing ground impedance, and reference noise.

Step 10: More Considerations for PCB Layers and Signal Integrity

Signal layers should ideally be next to either a power or ground plane, with minimal distance between the signal layer and their respective nearby plane. This optimizes the signal return path, which goes through the reference plane.

Power and ground planes can be used to provide shielding between layers, or as shields for inner layers.

A power and ground plane, when placed next to each other, will result in an interplane capacitance that typically works in your favor. This capacitance scales with the area of your PCB, as well as its dielectric constant, and is inversely proportional to the distance between the planes. This capacitance works well to serve ICs which feature volatile supply current requirements.

Fast signals are ideally stashed in the inner layers of multi layer PCBs, to contain the EMI generated by the traces.

The higher the frequencies being dealt with on the board, the stricter
these ideal requirements must be followed. Low speed designs are likely to get away with less layers, or even a single layer, while high speed and RF designs necessitate more intricate PCB design with a more strategic PCB stack-up.

High speed designs, for example, are more susceptible to the skin
effect-which is the observation that at high frequencies, current flow does not penetrate through the entire body of a conductor, which in turn means that there is a diminishing marginal utility to increasing the thickness of copper at a certain frequency, since the extra volume of conductor won’t be utilized anyway. At about 100MHz, skin depth (the thickness of current actually flowing through the conductor) is about 7um, which means even standard 1oz. thick signal layers are underutilized.

Step 11: A Side Note on Vias

Vias form connections between the different layers of a multilayer PCB.

The types of vias used will affect the cost of PCB production. Blind/burried vias cost more to manufacture than through hole vias. A through hole via punches through the entire PCB, terminating at the lowest layer. Burried vias are hidden inside and only interconnect inner layers, while Blind vias start on one side of the PCB but terminate before the other side. Through hole vias are the cheapest and easiest to manufacture, so if optimizing for cost-use through hole vias.

Step 12: PCB Fabrication and Assembly

Now that the board has been designed, you'll want to output the design as Gerber files from your EDA tool of choice, and send them to a board house for fabrication.

I had my boards fabricated by ALLPCB, but you can use any board shop for fabrication. I would highly recommend using PCB Shopper to compare prices when deciding which board house to choose for fabrication - so you can compare in terms of pricing and capabilities.

Some of the board houses also offer PCB Assembly, which you'll likely need if you want to implement this design, as it uses mostly SMD and even QFN parts.

Step 13: That's All Folks!

This development board is called the "Clouduino Stratus", an ESP8266
based dev board I designed for speeding up the prototyping process for a hardware/IOT startup.

It is still very much an early iteration of the design, with new revisions coming soon.

I hope you guys learned a lot from this guide! :D

Step 14: Bonus: Components, Gerbers, Design Files and Acknowledgements

[Microcontroller]

1x ESP12F

[Peripherals]

1 x MCP23S17 GPIO Expander (QFN)

1 x MCP3208 ADC (SOIC)

[Connectors and Interfacing]

1 x FT231XQ USB to Serial (QFN)

1 x USB-B Mini Connector

2 x 16-pin Female/Male headers

[Power]
1 x AMS1117 - 3.3 Regulator (SOT-223-3)

[Others]

1 x ECQ10A04-F Dual Schottky Barrier (TO-252)

2 x BC847W (SOT323)

7 x 10K 1% SMD 0603 Resistors

2 x 27 ohm 1% SMD 0603 Resistors

3 x 270 ohm 1% SMD 0603 Resistors

2 x 470 ohm 1% SMD 0603 Resistors

3 x 0.1uF 50V SMD 0603 Capacitor

2 x 10uF 50V SMD 0603 Capacitor

1 x 1uF 50V SMD 0603 Capacitor

2 x 47pF 50V SMD 0603 Capacitor

1 x SMD LED 0603 Green

1 x SMD LED 0603 Yellow

1 x SMD LED 0603 Blue

2 x OMRON BF-3 1000 THT Tact Switch

1 x Ferrite Bead 600/100mhz SMD 0603

[Acknowledgements]
ADC graphs courtesy of TI App Notes

MCU Benchmark: https://hilo90mhz.com/arduino-esp32-esp8266-101-s...

PCB Illustrations: Fineline

PCB Contest

Participated in the
PCB Contest