Saturday, December 7, 2019

Lessons from the Fit-Test board

I learned several things from the fit-test board, the most important of which is how to create a KiCad footprint with an NPTH (non-plated through hole). Unlike Eagle, which I recall has a "hole" tool, holes in KiCad footprints are specified by instantiating a "Pad" with a hole of the desired dimension, and setting the pad type to NPTH.

However, that isn't sufficient. You also need to change the pad size to match the hole size, otherwise the hole will have a copper annular ring of the default diameter (1.3mm diameter around my 1.0mm hole). Board houses (JLCPCB and OshPark, at least) seem to interpret this as a plated-through hole. It's also reportedly a good idea to untick the boxes for "technical layers" like solder mask.

How do I know this? The 1.0mm holes for my JTAG connector's alignment pins were fabricated as plated-through holes with annular rings. This resulted in a ring of exposed copper uncomfortably close to the pads for the connector signal pins and could easily have resulted in a solder bridge and a short under the connector.

Personally, I think if you select NPTH, the pad size should be forced or default to the hole size to avoid this confusion. Maybe I'll offer this as an enhancement patch.


I also spent some time thinking about my reset switch. I wanted to find a tact switch thin enough to fit in the space between the PCB and the back shell. This is down where the spacing is quite narrow, so that ruled out many of the larger switches. The ones thin enough are miniature switches with actuator or "push plates" of maybe two millimeters in diameter. I finally settled on one and got it aligned as well as I could behind the hole in the shell when it occurred to me that I already had a perfect solution: use the original switch!

Attached to the back of the calculator's shell is a separate, small PCB that forms a CR2032 battery holder and the reset switch. I don't have use for the battery as I don't have a low-power real-time clock like the original calculator had. The switch is made up of another conductive-pill contact pattern and a small silicone rubber cup that fits between the PCB and the back shell. Pressing the cup through the hole in the shell presses the conductive pill against the PCB's contact pattern, shorting the traces together. This wouldn't be usable if connected directly to the PROGRAM_B input of the FPGA as the resistance of the circuit with the pill pressed firmly to the PCB is about 500 ohms, but now it drives a Schmitt trigger input on a 74AUP1T08 AND gate. With pull-up and series resistors of 62K and 15K respectively, an extra 500 ohms isn't going to change the debounce timing appreciably.

I'm down to the last 48 unrouted nets (of about 300 total), and most of these are in the power and printer driver circuits. My intent is to get these routed tomorrow (Saturday) morning. Sunday afternoon I'll do my last-minute cleanups before sending Gerbers off to China for fabrication. And finally, I'll update my BOM spreadsheet and send parts orders to Digi-Key and Mouser.

No comments:

Post a Comment