(First ever) PCB Design Check (keyboard)

This is tedious. Is there not a function like in normal CAD programs where one can dictate dimensions? If this were a CAD application, I’d type “d” (dimension) then click an edge of my rectangle, click the edge of the thing that I wanted to make it a set distance from, and then I’d type the number 3 (3mm). And it’d be done. (There’s also a GUI to do this.) Even better, I could define a variable, and then—if I wanted to change it—I could simply go to my variable and change it. Everything else would update as well (e.g. if I had a 2mm fillet, it would update as well).

. . . If it was really difficult to find for you than you have to be used to some completely different User Interface.

Appreciate you looking for that, but that was easy for me to find. The problem is that there doesn’t appear to be anything parametric about KiCad. Once I’ve defined a 2mm fillet, KiCad just makes a bunch of points in a curve. If I later decide that I want to change the fillet or change to rectangle that the fillet is attached to, the only way I’ve found to do it is to select each corner (meaning: select all of the tiny points in each corner), delete them, repeat for the other three corners, then select and delete the four lines for each side, and then start the whole thing all over again.

In short: while finding what tools are available is relatively intuitive, the actual tools available often simply don’t exist. Maybe I should be making feature requests? There need to be more tools in KiCad for defining dimensionality (it’s literally about 1/3 of the GUI menu bar in a CAD application).

Thanks again. Guess I’m just not lucky. My base unit is 19.05mm, which is why things aren’t as easy to just do a quick “divide by two.” But surely this isn’t uncommon? I guess in a lot of cases, you’re starting with edge cuts and trying to squeeze everything in. See my post above, but man—there seems to be room here for a massive increase of “forced” dimensional definition. It’s a really basic feature of just about every other design application out there, and unless I just haven’t been able to find it, it doesn’t seem like it exists in KiCad?

Yes, it’s a problem. Kicad forum is used by engineers with 40 years, or more, experience laying out boards, to brand new users with no experience with electronics.
A line has to be drawn somewhere with respect to asked questions otherwise the forum ceases to be a reasonable reference to Kicad usability. That line is between answering questions on how to use the functions of Kicad and designing circuits and PCBs.

I appreciate you stating this so clearly. Funnily enough, the reason I started posting here was because the KiCad subreddit strongly urges people to come over here to post KiCad questions. That seems like it might be the wrong approach, if this is more specifically devoted to discussing the software itself and not “the things created via the software.“ Of course, now I feel like maybe I should spend a little more time here and discuss some feature requests! :wink:

By all means do . . . but before that you might find some useful info here . . .

1 Like

You don’t seem to realize that drawing the PCB outline is maybe one millionth of the PCB design process so proportional part of GUI should be destined for it.
My first PCB I have designed using squared paper and pencil around 1970. My entire professional life revolves around electronics (and therefore PCBs also).
From my point of view it would be a waste of resources for designers to spend time developing tools for sophisticated methods of creating a board outline. There are hundreds of more important things in a board design than a stupid outline, which I have never seen a problem drawing. If you need some unusual board shape, you can draw it in your favorite graphics program and import it into KiCad.

1 Like

Understood. My (admittedly naive!) thank was that, broadly speaking, the concept of parametric design, dimensional references, and usage of user-defined variables seems “easier” to me than the code required to route traces or run DRC. The link provided by @RaptorUK tells me that my view of what is and isn’t “easy” is likely far off base.

Another question: Let’s say that I’m designing a board for a consumer electronics device: a mobile phone. The phone is offered in two sizes: a small (72mm x 148mm) and a large (78mm x 161mm). The board will have all of the same components (the only difference between the two is the screen and battery sizes). Obviously, the more difficult one is the smaller one, so you design that one first, and then you tackle the larger one. Is there currently a way to simply “scale up” from the smaller to the larger?

Maybe there is, and I just haven’t found it yet, but with CAD modeling software (and, much like with KiCad: I’m a hobbyist, not a pro–self-taught and fairly recently), one learns to set up variables, and then adjust those variables as desired to accomplish things. What I’ve found so far with KiCad (and I’ve literally taken a stab at designing a single board–multiple attempts/versions/starting from scratch) is that, when I get a ways into things and determine that I may need to move in a different direction, there is a great deal that I have to unwind and then re-do to make a fairly simple change. With a pencil drawing on grid paper, you can erase a thing and redraw the affected area. With KiCad, a small change can blow up a lot of things, perhaps I need to “erase” a very large area.

I know that my issues are in large part due to my being still quite clumsy with things, but I’m politely suggesting that perhaps there are some aspects of CAD modeling applications that could be considered as value adds for future work on KiCad.

In terms of concrete feature requests, what you are discussing sounds a lot like parametric design used widely in mechanical CAD software. There is an existing feature request here: Parametric design / geometric constraints (lp:#1813239) (#2329) · Issues · KiCad / KiCad Source Code / kicad · GitLab with the more general “CAD drafting” system request here: adopt cad drafting methods (lp:#1812204) (#2324) · Issues · KiCad / KiCad Source Code / kicad · GitLab

If either or both of these seem like what you would like to see in KiCad, you can give them a “thumbs up” on Gitlab to show support.

1 Like

Thank you for doing the research, @scandey !

From what you have written previously I imagine that you think of it like for example specifying that you want PCB size just having 3mm margin around all elements and whenever you modify something in circuit PCB size just adopts to it.
It can be usable for amateur PCBs that need not to fit in any already ready case with fixed (not by you) dimensions. In practical life in most cases you have a PCB exact shape imposed from above.
When in 2012 we selected a DIN-rail mount cases family to be used I have draw a PCB rectangles for 3 segment, 4 segment and 6 segment cases and if I am designing new device for one of them I just start from ready empty PCB shape and need not to draw anything at Edge.Cuts layer.
The situation when you design PCB and then also the case for it is rather rare, I think. Mobile phone is first that came to mind but it is out of KiCad scope, so you have to search other example (more below).

I don’t believe KiCad will be used for such task in near 10 years. In such device you have so many electromagnetic emitting antennas (cell-phone, Wi-Fi, Bluetooth, NFC) that you have to design it with software that can accurately simulate all the interactions between them and the influence of every piece of copper on the board. I believe such software exists, but its price is probably related to the profits you can make from selling mobile phones.
I was struggling with a much, much and once more much simpler problem of having RFID reader and touch keyboard in front of it. Everything worked until we started to read mifare Desfire cards. Problem was that Eddy currents generated in the keyboard keys absorb so much energy from the RFID antenna field that there is no longer enough energy for the card to perform the necessary cryptographic calculations and the card just doesn’t work.
And these are only two different functions to be working together - no comparison to the complexity of a mobile phone.
If KiCad developers had some free time I think it is more valuable for example to improve differential pair routing than PCB shape drawing. I’m not sure but I think differential pair work from pads to pads now and not from pads through other pads to end pads. In my case it is connection from Ethernet socket to Ethernet IC but through ESD protection. But, as I didn’t redesigned it recently I didn’t checked if it was improved in V8 or not.

I was using Protel 3 (some about it here: KiCad 7.0.2 is arriving - #13 by Piotr ) for 20 years and there it worked like you write - to do any change you deleted everything around and did it once more. I moved to KiCad just because KiCad allows you to route tracks in the mode that other tracks that are on your way are automatically shifted making you a room for your track.

How you pose the questions makes a difference. A “review my design” request will not elicit as much response as “what is the problem here, here and here” or “what should I be doing to solve this, this and this”. You need to be specific and show that you have made an attempt yourself. There are many noobs who toss together a design that contains fundamental electronics design errors. One can easily foresee that it will take a lot of hand-holding to elevate their electronics design even before the PCB design.

Oh for sure! In my case, I felt like my design was pretty simple, and truthfully: I was looking for someone to “check my math.” I realize that’s a tall ask, but it’s the sort of thing I’ve done across a variety of different interests and which I’ve generally felt supported by that community (and something I’ve supported other noobs on in areas in which I’ve acquired proficiency). But maybe circuitry doesn’t led itself well to that.

Or maybe I should just trust the DRC to check my math. :grin:

We tend to get a lot of noobs with an abundance of “optimism”. You probably have an excess of caution.

1 Like

If you draw a schematic with footprints allocated (which you have done) then “Tools > Update PCB from Schematic”, you will get all the footprints dumped on the previously empty PCB, together with “Ratlines” joining the footprint pads exactly as the symbols have been joined by wires on the Schematic.

To then create the PCB, you shuffle the footprints around to your satisfaction and replace all the ratlines with tracks. If you stuff something up, DRC will complain.
Was this your procedure?
I’m not seeing Refs and Footprint descriptions on your PCB.

What you want is rather ‘electronic design question’ than ‘KiCad use problems question’. In past I sometimes get into such discussions here but later found it is not welcome. Forum mainteiners want it to be good place for people searching solutions with KiCad software use so as much as possible it should not be cluttered with other discussions. Good place for electronic questions is probably EEVblog.
With your design several separate discussions could arise, like:

  • how to ESD protect keyboard,
  • how to protect your circuit against other external disturbances,
  • why you should add GND plane to your PCB and why it should be continuous,
  • what for are decoupling capacitors (and where and why to place them),
  • what supply regulator to use (if low-drop than how to ensure it being stable),
  • do you have to use filter at supply,
  • what you plan to do with read keys (external interface?).

All of them are electronic, and not KiCad related.

If you want to learn about PCB design I recommend articles I mentioned here 4 years ago:

1 Like

That’s the procedure I followed. The Refs/Footprint descriptions didn’t transfer because (surprise!) I’m still learning how to use GitHub too, and didn’t understand that the libs I was using needed to be re-added to each project, (I had to manually “point” KiCad to their location) so they show up on my end, but not when being viewed externally.

Great suggestions here. And of course; I have no idea what all of this means yet, but now I’ve got some reading to do. :kissing_closed_eyes:

This is the sort of info I was looking for elsewhere (keyboard subreddits, etc) which seems to be heavily populated by either people who know a lot about electronics and people who know nothing about electronics. There is a lot of discussion that glosses over some basic elements, which I think likely leaves the less informed more likely to make errors.

The conclusion that I had ultimately drawn (which may be way off base!) is that the use of hobbyist MCUs (Promicro; RP Pico) negates the need to concern oneself with some of these items. I’m hoping that, after reading through the links that you provided, and researching The topics you brought up, I’ll have a better overall understanding for future design.

What has that got do with anything ? If you want to learn how to use MCUs (Arduino) there is a lifetime of videos, demos and full on tutorials for free. Same goes for electronics too just as easy to get going. Or get ‘The Art of Electronics’ read thru that ! :nerd_face: I think maybe you are trying to run before you can walk. Back to my point, none of the above needs you to go near ‘Github’ hell I looked at Git once and thought " Nah" I’ve got a life to lead. Anyway designing PCBs and designing circuits are two seperate things and you will need skills so start straight away. Tip of the day :drum: don’t buy cheap Breadboards.
:mouse:

LOL

Sometimes you need to use someone else’s footprints, clone or submodule their repos, etc.

I don’t know what GitHub is so don’t understand why LOL.

Trying to use found somewhere symbols/footprints typically lead to:

or

1 Like

This is really funny. (We’re sooo far off topic here, but I’m personally really enjoying the conversation, so thank you to all who have contributed!)

For all of you regulars on the KiCad Forums to reference:
There is a group of people out in the world who, while not huge, are very passionate about mechanical keyboards. Many are involved because of a desire for better ergonomics, but even more are coming at it with an interest in form, style, and customization. The customization route leads them eventually to designing/building hand-wired keyboards and even designing/building custom PCBs. There are manufacturers of semi-custom keyboards whose designs are often open-source. Those who seek to make truly custom keyboards often use parts of open-source, “proven” designs to develop for themselves. Using community-vetted footprints (rather than designing one’s own from the ground up) seems like a common-sense approach to design in cases where we’re using parts with tight tolerances and where function and usability are critically important.

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.