Vectorscope KiCad Redrawing Project

When I saw this year’s Supercon Vectorscope badge, I decided that I had to build one for myself. Since I couldn’t attend in-person, I immediately got the PCBs and parts on order. Noting that the GitHub repository only had the KiCad PCB file and not the associated schematics and project file, I assumed this was because everyone was in a rush during the days leading up to Supercon weekend. I later learned, however, that there really wasn’t a KiCad project — the original design was done in Circuit Maker and the PCB was converted into KiCad. I thought, “how hard can this be?” and decided to try my hand at completing the KiCad project.

Fortunately I didn’t have to start from scratch. The PCB schematics were provided, although only as image files. They are nicely laid out and fortunately don’t suffer the scourge of many schematics these days — “visual net lists” that are neither good schematics nor useful net lists. To the contrary, these schematics, while having a slightly unorthodox top to bottom flow, are an example of good schematic design. Continue reading “Vectorscope KiCad Redrawing Project”

Try It Out

It’s like Star Wars versus Star Trek at a SciFi convention, or asking creamy or chunky at the National Peanut Butter Appreciation Festival. (OK, we made that one up.) When Jenny reviewed the 1.0 version of LibrePCB, it opened the floodgates. Only on Hackaday!

Of course it makes sense that in a community of hardware hackers, folks who are not unfamiliar with the fine art and engineering of designing their own PCBs, have their favorite tools. Let’s face it, all PCB design software is idiosyncratic, and takes some learning. But the more fluent you are with your tool of choice, the more effort you have invested in mastering it, leading to something like the sunk-cost phenomenon: because you’ve put so much into it, you can’t think of leaving it.

The beauty of open-source software tools is that there’s almost nothing, aside from your own psychology, stopping you from picking up another PCB program, kicking the proverbial tires with a simple design, and seeing how it works for you. That’s what Jenny did here, and what she’s encouraged me to do. Whether it’s beginner-friendly Fritzing (also recently in version 1.0), upstarts LibrePCB or Horizon EDA, heavyweight champion KiCAD, or the loose-knit conglomeration of tools in coralEDA, you have enough choices that something is going to fit your PCB hand like a glove.

I certainly wouldn’t risk a swap up to a new tool on something super complicated, or something with a tight deadline, but why not start up a fun project to test it out? Maybe follow Tom Nardi’s lead and make a Simple Add-on, for a badge or just as a blinky to put on your desk? Don’t be afraid to try something new!

Review: LibrePCB Hits Version 1.0

Nearly three years ago at the start of 2020 and before the pandemic hit, we took a look at an up-and-coming player in the world of PCB design. LibrePCB is by no means as old as the more established players, but at the time it was joining the ranks of open-source EDA packages with its first early stable releases. It showed a lot of promise but was still a little rough around the edges back then, but in the years since it’s advanced to the extent that in September they released version 1.0. That’s a significant moment for any open source package, so it’s time to return and take another look. It’s a cross-platform package with builds available for Linux, Windows, MacOS and FreeBSD, of which I needed the Linux version. There are one or two options to choose from, I went for the appImage as probably the least trouble. Very quickly I was in a new EDA package, and I set out to make a simple Schmitt trigger oscillator as a test project. Continue reading “Review: LibrePCB Hits Version 1.0”

PCIe For Hackers: Our M.2 Card Is Done

We’ve started designing a PCIe card last week, an adapter from M.2 E-key to E-key, that adds an extra link to the E-key slot it carries – useful for fully utilizing a few rare but fancy E-key cards. By now, the schematic is done, the component placement has been figured out, and we only need to route the differential pairs – should be simple, right? Buckle up.

Getting Diffpairs Done

PCIe needs TX pairs connected to RX on another end, like UART – and this is non-negotiable. Connectors will use host-side naming, and vice-versa. As the diagram demonstrates, we connect the socket’s TX to chip’s RX and vice-versa; if we ever get confused, the laptop schematic is there to help us make things clear. To sum up, we only need to flip the names on the link coming to the PCIe switch, since the PCIe switch acts as a device on the card; the two links from the switch go to the E-key socket, and for that socket’s purposes, the PCIe switch acts as a host.

While initially routing this board, I absolutely forgot about one more important thing for PCIe – series capacitors on every data pair, on the host TX side of the link. We need three capacitor pairs here – on TX of the PCIe switch uplink, and two pairs on TX side of the switch – again, naming is host-side. I only remembered this after having finished routing all the diffpairs, and, after a bit of deliberation, I decided that this is my chance to try 0201 capacitors. For that, I took the footprints from [Christoph]‘s wonderful project, called “Effect of moon phase on tombstoning” – with such a name, these footprints have got to be good.

We’ve talked about differential pair calculations before in one of the PCIe articles, and there was a demo video too! That said, let’s repeat the calculations on this one – I’ll show how to get from “PCB fab website information” to “proper width and clearance diffpairs”, with a few fun shortcuts. Our setup is, once again, having signals on outer layers, referenced to the ground layer right below them. I, sadly, don’t yet understand how to calculate differential impedance for signal layers sandwiched between two ground planes, which is to say – if there’s any commenters willing to share this knowledge, I’d appreciate your input tremendously! For now, I don’t see that there’d be a tangible benefit to such an arrangement, anyway.

Continue reading “PCIe For Hackers: Our M.2 Card Is Done”

A bench setup with a spectrum analyzer and a PCB under test

Clever Test Rig Clarifies Capacitor Rules-of-Thumb

If you’ve done any amount of electronic design work, you’ll be familiar with the need for decoupling capacitors. Sometimes a chip’s datasheet will tell you exactly what kind of caps to place where, but quite often you’ll have to rely on experience and rules of thumb. For example, you might have heard that you should put 100 µF across the power supply pins and 100 nF close to each chip. But how close is “close”? And can that bigger cap really sit anywhere? [James Wilson] has been doing research to get some firm answers to those questions, and wrote down his findings in a fascinating blog post.

A PCB used to measure the effect of capacitor placement
The test board has two-layer and four-layer sections. The inter-layer capacitance greatly affects the PDN’s performance in each case.

[James] designed a set of circuit boards that enabled him to place different types of capacitors at various distances along a set of PCB traces. By measuring the impedance of such a power distribution network (PDN) across frequency, he could then calculate its performance under different circumstances.

The ideal tool for those measurements would have been a vector network analyzer (VNA), but because [James] didn’t have such an instrument, he made a slightly simpler setup using a spectrum analyzer with a tracking generator. This can only measure the impedance’s magnitude, without any phase information, but that should be good enough for basic PDN characterization.

The results of [James]’s tests are pretty interesting, if not too surprising. For example, those 100 nF capacitors really ought to be placed within 10 mm of your chip if it’s operating at 100 MHz, but you can get away with even 10 cm if no signals go much above 1 MHz. A bulk 100 µF cap can be placed at 10 cm without much penalty in either case. Combining several capacitors of increasing size to get a low impedance across frequency is a good idea in principle, but you need to design the network carefully to avoid resonances between the various components. This is where a not-too-low equivalent series resistance (ESR) is actually a good thing, because it helps to dampen those resonances.

Overall, [James]’s blog post is a good primer on the topic, and gives a bit of much-needed context to those rules of thumb. If you want to dive deeper into the details of PDN design or the inductance of PCB traces, our own [Bil Herd] has made some excellent videos on those topics.

An ATX motherboard sits on a grey surface with the I/O in the foreground. Behind the I/O is a large image of Tux, the Linux penguin, taking up most of the PCB and winding its way around different components on the board. Tux is part of the PCB itself, with his feet, beak, and outline in gold, body in black silkscreen, and belly in green soldermask.

Designing Aesthetically-Pleasing PCBs

We’ve seen our share of custom PCBs here on Hackaday, but they aren’t always pretty. If you want to bring your PCB aesthetics up a notch, [Ian Dunn] has put together a guide for those wanting to get into PCB art.

There are plenty of tutorials about making a functional PCB, but finding information about PCB art can be more difficult. [Ian] walks us through the different materials available from PCB fabs and how the different layer features can affect the final aesthetic of a piece. For instance, while black and white solder mask are opaque, other colors are often translucent and affected by copper under the surface.

PCB design software can throw errors when adding decorative traces or components to a board that aren’t connected to any of the functional circuitry, so [Ian] discusses some of the tricks to avoid tripping up here. For that final artistic flair, component selection can make all the difference. The guide has recommendations on some of the most aesthetically pleasing types of components including how chips made in the USSR apparently have a little bit of extra panache.

If you want to see some more on PCB art, check out this work on full-color PCBs and learn the way of the PCB artist.

The Whole Thing In Python

[hsgw] built a macropad in Python, and that’s not a strange language to choose to program the firmware in these days. But that’s just the tip of the iceberg. The whole process — from schematic capture, through routing and generating the PCB, and even extending to making the case — was done programmatically, in Python.

The macropad itself isn’t too shabby, sporting an OLED and some nice silkscreen graphics, but the whole point here is demonstrating the workflow. And that starts with defining the schematic using skidl, laying out the board with pcbflow, which uses a bunch of KiCAD footprints, and then doing the CAD design for a case in cadquery, which is kind of like OpenSCAD.

The result is that the whole physical project is essentially code-defined from beginning to end.  We’re not sure how well all the different stages of the workflow play together, but we can imagine that this makes versioning a ton easier.  Coding a PCB is probably overkill for something simple like this — you’d be faster to lay it out by hand for sure — but it doesn’t really scale.  There’s definitely some level of complexity where you don’t want to be clicking an pointing, but rather typing. Think of this as the “hello world” to designing in code.

Some of the tools in the workflow were new to us, but if you’d like an in-depth look at cadquery, we’ve got you covered. [Tim Böscke]’s insane CPU made from 555 timers (yes, really) uses pcbflow. And if you’d like to dig back a bit into the origins of Python PCB design, this post introduces CuFlow, on which pcbflow was based.