Log
2025-01-17 Friday
This is very cool: JLCPCB state the progress of the manufacturing on the order page. Not relevant for me since my board is small and low volume, but still good to know.
2025-01-14 Tuesday
Other than designing the circuitry and aligning to the PCB fab manufacturing rules, the footprint placement was ridiculously easy (from drawing the schematic from a reference design, to generating the gerber, done in about 4 hours?).
Tried to work on printing a PCB for an e-ink display I previously bought. The reference diagram, as well as a very horrible schematic attached below given by my lack of understanding of the circuitry:
Some notes:
- Pinouts directly to the MCU is replaced by a set of pin headers (in case I misconfigured them), these connectors are under the Connector library with the name "Conn_01x02_Pin"
- For specialized components (beyond the generic resistor/capacitor), the footprints are typically available from the purchase website, i.e. CAD (for the 3D model), footprint, and schematic symbol. See below for an example:
- In this instance, they provided a KiCAD symbol file
.kicad_sym
and footprint.kicad_mod
. - Symbols can be imported by creating a library in the Symbol Editor, then importing it.
- Footprints seem to be housed under a special
[LIBRARY].pretty
once the library is created, which one can just drag and drop the footprints. These footprints will appear when assigning footprints.
- Pins can be given "Net Labels" (by right-clicking), which will be useful in referencing the nets in both schematic and PCB routing.
Once done, the footprints are transferred over to the PCB editor. A couple of notes:
- Default track width can be specified by adding it to "File > Board Setup > Design Rules > Pre-defined Sizes" and populating the desired size. When placing a route, press W to cycle through this list of sizes to set as default.
- A trace width of 0.25mm was used instead of the default 0.2mm.
- Adding a ground plane involves creating a filled zone in the desired layer (probably either B.Cu or a middle copper layer). Draw the shape, then press B to refill the zones. Assign them a net beforehand to allow DRC rules to help you out.
- Solve for the board placement by creating traces, as well as vias to the opposite layer. Refilling will automatically add DRC constraints to separate the different nets.
- The basic layers to work with are the two main copper layers (front and back), and the corresponding silkscreen layers (front and back), as well as the Edge.Cuts layer to draw the board outline.
- Need to align with the manufacturing requirements, e.g. track widths to be at least 6 mil, Silkscreen trace width at least 1.53mm, etc. Probably can integrate these with DRC checks.
How a PCB is layered can be seen in the 3D editor, from top to bottom:
- Solder paste
- Front Silkscreen (text, marking, reference designators)
- Front Mask (shields non-exposed traces)
- Front Copper
- Board Body / Vias
- Back Copper
- Back Mask
- Back Silkscreen
There is probably automatic placing and routing, but I haven't figured that out yet. In the meantime, manual place and route is basically just an art, and it's like a mini-puzzle game to play.
Mostly informed by the electronic circuits that I have previously seen in my line of work, and some sensibilities, e.g. capacitors not too far, creating ground plane and using ground vias, grouping components together, creating margins for hand soldering.
Placed an order with JLCPCB for now, from a recommendation from a colleague. It has a nice quotation screen, and all one needs to do is submit the relevant gerber files:
Update: Turns out they require special instructions to print the PCB, found here. Summary:
- Export Gerber: Enable Protel filename extensions, and subtract soldermask from silks.
- Export Drill file: Check User alternate drill mode for Excellon, Absolute drill origin, mm for Drill units.
- Export Drill map files
- Compress them into a simple zip file for upload.
Make sure to test with a different Gerber viewer to ensure no bugs appear. Gerbv is a fairly decent one:
Sidenote, I was browsing their website and found EasyEDA. It seems like JLCPCB has some relations to the EasyEDA development as well, so it seems pretty trusted! There's even an online DFM check tool.
2025-01-12 Sunday
Past experience was just pure schematic recreation using Eagle, and figured I should do this a little more properly this time. Following this cute little website as a hello world tutorial.
Creating a new hello world project! (on KiCAD 8.0)
UI stuff:
- Scroll to zoom
- Left-Click to select and/or drag
- Drag in background to highlight multiple elements
- Esc to deselect
Some immediately useful shortcuts:
- A to add new symbol
- R to rotate selected symbol
- W to add wires over hover (or drag from symbol tails)
- Annotate symbols:
- U to edit reference field
- V to edit value field
- F to edit footprint
Tips:
- Symbol references can be globally changed (reannotate) under Tools > Annotate Schematic.
- Common workflow commands are found in the top bar of the editor. From left to right:
- Create symbol, Symbol library, Create footprint
- Assign references, ERC, SPICE, Assign footprints, Assign all fields, Generate BOM
- Switch to PCB editor, Open Python scripting window
Flow:
- Add symbols, edit the values (for personal reference), then assign footprints.
- Footprint libraries on the left, components in the middle, footprints on the right. Use the "pin count" filter (marked #) to filter by number of available pins. Right-click to view 2D schematic, and click on the 3D viewer to see the rendering:
- For pin headers, no 2D view exists, but it does effectively create two holes. The assignments I used:
- Air-wires will appear that indicate how the components are connected in the schematic. Arrange the components and route tracks on the front copper layer (this also removes the air-wires). Draw a rectangle on the Edge.Cuts layer for the board.
- Print the board!