[Eagle vs KiCad part 7]
This is effectively a repeat performance of something I’ve already done in Eagle. You can read that post to learn about the task that lay before me.
I wasn’t expecting anything too difficult, given that I’d gone through the process before and because I quickly discovered that KiCad has a couple of advantages over Eagle.
For me, the main advantage is the way KiCad maintains connections better. In the Eagle post, I moaned (as many have done before me) that if you hook up multiple connections to a bus and then move the part, the connections don’t go with it. There is a workaround, but it’s clumsy. KiCad is better in this regard once you’ve learned the difference between ‘moving’ a part (in which case connections get broken) and ‘dragging’ a part (where they stay connected).
Moving stuff in KiCad is, in any case, so much easier. Just hover over part, hit the M key if you want to move or the G key if you want to drag and then just shift the part to its new location. Copying parts is also much simpler than with Eagle’s weirdly modal approach.
KiCad’s use of labels to make connections without drawing wires is simple to grasp and fairly easy to use. It really helps to simplify schematics.
Where things go wrong, in my opinion, is when it comes to using a bus. Drawing the bus connections is finicky. You then have to wire them up. And then, to get KiCad to understand the bus connections, you have to start adding labels – and this can be a lot of labels if you have many components attached to the bus.
Adding the bus entry connections, wiring them to an existing net or pin and then adding the labels is made considerably easier through the use of a hot key. After you’ve entered the first item, and assuming the remaining items are evenly spaced and (in the case of labels) in a logical sequence – eg, D0 – D7 – then just repeatedly hitting the hot key fills in the remaining items. For example, in the image above, I added the bus entry connection (the angled green line) for pin 11 then hit the hot key seven times to insert the next seven entries. Then I made a wire connection (the horizontal green bit) to connect the bus entry to the pin. Then I hit the hot key seven times. Then I added the D0 label and, one again, hit the hot key seven times, with KiCad being smart enough to automatically increment the numbers for the labels.
It took me a while to work out how to do this because the default hot key for this is the Insert key. But it didn’t work for me – maybe because I’m on a Mac? I had to edit the hot key list, selecting ‘=’ instead. (Why? Who knows?)
In any case, it has its limitations. In the example above (for a different project), it worked fine when connecting and labelling the bus connections on the left, from the IC, because they are incrementing in number as they descend and they are at the normally grid spacing. On the right, linking to the DB25 connector, the automatic drawing and connecting didn’t work at all because the numbering goes from bottom to top and we’re connecting every other pin.
But still, when this feature is applicable it works like a charm and speeds things along nicely.
Nonetheless, Eagle’s method of labelling, which is akin to using an array in programming, seems far more logical, more flexible and faster. For me, this is one area where Eagle greatly outshines KiCad.
By the way, while making all these connections I found myself doing a lot of zooming. It’s much easier to ensure a good connection with a wire it you’ve zoomed in because you can place the mouse pointer more accurately. But this highlighted another major annoyance with KiCad: where are the bloody scroll bars?
Seriously … so many times I found that I just wanted to move sideways a little bit to access a part of the schematic that was just off-screen. But there are no scroll bars. So instead, I had to zoom out a bit, move the mouse pointer, zoom back in. And yeah, I know, you can ‘pan’ by holding down the centre mouse button, but it’s jerky as hell.
Is there anyone working on the KiCad solution that has any UX training at all? And I mean UX training in the 21st Century. Anyway, rant over … for now.
There is one nice feature of KiCad, that again makes for cleaner schematics. (I don’t know if Eagle has this – I’ll need to go back and check.) Components can have hidden pins.
These are most commonly used for the power pins. If you look at the schematic for the 74HC595 shift register in the image above you’ll see that the VCC and GND pins are in grey and don’t have little connecting legs. So long as you set up VCC and GND points on your schematic, any hidden pins that are properly configured as power pins will get connected automatically. It removes a lot of lines on the schematic that are unnecessary, especially given that these pins are most likely going to get connected to VCC and ground planes on the actual board.
So how was it for me? By and large I’d say making connections with KiCad is simple. I found that I was left with fewer ‘hanging wires’ that I thought were connected but weren’t than I had with Eagle.
Other than the thing with bus connections, the experience in the two packages – at least at the simple level I’m at right now – is quite similar.
A small confession
Now, when I carried out this process in Eagle, I ended up with a complete schematic. I haven’t done that this time.
At the beginning of this series I said that I would be following this HexMonitor project through to fabricated PCBs. But that ain’t gonna happen. Why?
Two reasons. The first is that I’ve become convinced that this is too complex a project for a first PCB. The chances of version 1 actually working are slim. And although I’m content to throw a small amount of money at a glorious failure, I have to ask how much I would learn from that.
The second reason is that my need for the HexMonitor board has receded a tad and there’s something I want more. It’s a serial-to-parallel interface to drive my Epson dot matrix printer from a Raspberry Pi.
So here’s where we go from here. I’m going to create the schematic for a simple version of the printer board in both Eagle and KiCad and report on that process in a single post. And then I’ll create and fabricate the boards in both packages too. So we’re still going all the way to actual fabrication, but with something that stands a slightly higher chance of success.