KiCad is good now. That might seem like a flippant comment however it is indicative of the progress that KiCad has made in the last 3 years. I have moved from a firmly entrenched position with a proprietary EDA (which felt like a pair of comfortable shoes) to KiCad for the majority of projects.
Until you need to route DDR (or any other parallel bus nets.) Or use any significant amount of impedance control. Or use blind/buried vias. Or tent specific sides of vias.
Kicad is great, but there are very solid use cases that are substantially more painful than other commercial EDA offerings.
I've watched the growth of kicad since 2013. Far more usable now, though it was very poor at the beginning.
In its current state I could recommend it for most hobbyist stuff and some simpler commercial PCBs. Far better than Eagle ever got.
Meanwhile I will continue to use Altium for everything just because I'm fast with it. When time is money and $8k is just another expense it's well worth it.
What kind of projects doesn't need all those things, but yet is still too complex to just do in LibrePCB? To me the nicer and less keyboard driven UI(last I checked, haven't tried KiCAD in years) makes Libre worth it.
Agreed!
The gap is getting smaller, I can imagine feature parity in another few years. Some fellow nerds doing that kind of stuff in $$$-EDA say it isn't exactly smooth sailing in those EDAs - regular crashes and so on.
The level of UI polish and control Altium gives you over the construction of HDI vias (and just in general, the properties pane) is substantially greater.
Indeed KiCad is much improved in many different areas, and the devs deserve accolades for making those things happen. The self-destruction of EagleCad was certainly a good source of motivation to focus efforts on making something open-source better.
For a number of years I have been using DipTrace for personal projects and it is quite easy to use. It is one of the easiest and fastest tools for doing PCBs for the non-PCB engineer. I have recommended it to a number of non-engineers and they were quickly successful in getting a design up and running.
Wow, what a coincidence! Thank you for posting, this looks like a great resource.
I am (a very novice, no EE background hobbyist) creating my first design right now.
It seems like there are a lot of design rules that are not common knowledge. And in the electronics tinkering "community" there is basically a vertical wall in the learning curve after Arduino/breadboard. I work on embedded software for a living so I understand that side but some of the electrical stuff really doesn't have an easy learning curve.
If anyone knows of any other resources I would love to know. And, is there a place, maybe a slack or discord, that would review designs? I really want to have someone look at it before it goes out but I have no clue where I would begin searching for someone to ask.
The most basic design rules will be provided by your PCB fab so they can vary quite a bit depending on the quality of the manufacturer and the cost you're targeting. Some other design rules (i.e. differential pairs) need to be computed using an engineering calculator using some data from the fab and some choices you have to make. Unless you're pushing the analog-high speed digital boundary you don't need to worry much about them, just choose arbitrary values that result in values within your fab's specs.
However, most other design rules are experimentally derived by the manufacturer of each part. Look for documents called routing or layout guidelines which should be on the same page you find a part's datasheet. The manufacturer of your CPU, RAM, sensors, connectors, PMICs, and so on will usually make them and they'll often include really basic info like how many caps and how far they should be away from some pins, how to route signals to minimize reflections, and so on.
But focus on the two most important words in EE: REFERENCE DESIGNS. Until you're doing mixed signal stuff, you can usually just copy reference designs wholesale and strip out the stuff you don't need. The only hard part is making sure the layers and copper weights compatible. Even professional engineers base their work on manufacturer reference designs when they can.
I don't know the full depth of the trade space of stackup parameters. I go with what the fabs provide. While trying to do some 200 V routing recently I found out something interesting. Higher weight copper layers have thicker prepreg. This is interesting to me because the rule of thumb for 200 V clearance is "0.4 mm in outer layers and 0.2 mm in inner layers". Most prepreg is 0.1 mm, but going to 2 oz copper means 0.22 mm prepreg. This lets me route 200 V without having to worry about arcing through prepreg, specifying a more expensive board material, or going to more layers.
Awesome to hear of new people getting into PCBs! It's wonderful how accessible PCB design has become, and I think KiCad plays a major role in that. If you're the kind of person who can read to learn stuff, I highly recommend this old powerpoint presentation:
It describes the manufacturing process in pretty good detail. The reason the design rules feel like such a wall is that these design rules are completely based upon the manufacturing processes themselves (thus different manufacturers will have different rules). As you go through that presentation, you'll probably have to search or ask about many of the terms you don't recognize, but that'll just help you learn even more! Next, check out the design rules for a popular fabricator. For example, here's one:
I'm not trying to rain on your or KiCad's parade, but what did it for me was EasyEDA's integration with JLCPCB's part library. Combined with JLCPCB's assembly service.
For just a bit of extra money I now don't have to worry about footprints, availability, exporting the right files, creating a BOM, etc. I can just order at JLCPCB right from EasyEDA.
I really wanted to use KiCad instead of yet another online tool, but for my first steps this just makes more sense.
Certainly JLC and their EasyEDA integration is a great tool for reducing barriers - absolutely. There are others as well, Eagle for one (maybe even before KiCad got as popular as it is) plus some of the newer tools looks Libre PCB and Horizon. I'm definitely biased towards KiCad, since it's what opened doors for me personally a decade ago.
Congratulations on starting! I am about 14 years in to my PCB design journey and having an absolute blast with it. I am also not formally trained but that hasn't stopped me from continuing to learn and making some pretty complex boards.
The biggest thing I learned lately was, if your board is open source, find some nice person online (twitter, mastodon, reddit, etc) who is willing to offer design review for you. I have learned SO MUCH from having a professional critique my boards.
Also Phil's Lab is excellent! My favorite resource for learning advanced concepts. Just ignore his shilling for Altium and stick with Kicad (which he more recently has been exploring). Kicad is an incredible tool. Learning Altium has value if you want to work at a shop that uses Altium, but Kicad is really an excellent tool that is very accessible.
I do robotics so I do software, mechanical design, welding and fabrication, and PCB design. PCB design is by far my favorite of all these fields!
I also saw this recommended in the past for assigning functions (like serving as a ground plane) to layers depending on the numnber of layers that your board is going to have:
One thing I'd add to the schematic checklist is "label every net". It makes setting up net classes much easier and clearly communicates the design in the layout.
Just checked your link - yes, Phil's Lab is good, not aware of anything better for PCB design on YouTube. Maybe some of the Rick Hartley recorded talks he recommends sometimes, or perhaps some old EEVBlog videos would be worthwhile too.
But in general I agree, there's too much fascination with Arduino et al. that I think's mid/long-term harmful to those that stick with it personally.
Rick Hartley's content is fantastic, but I think it caused collateral damage by making hobbyists who work with 8-bit microcontrollers and I2C believe they need to follow the same rules that must be followed for GPUs and PC motherboards. It's not Rick's fault, but it's a matter of the cult-like following he's developed among some hobbyists. Old-timers on PCB design forums try to impress and intimidate novices by citing his advice without really understanding if it's relevant. And most of the time, it isn't.
A lot of his videos should be prefaced by "it's interesting, but you don't need to worry about it unless you're working on the types of projects I'm paid to work on." Without this disclaimer, PCB design becomes less accessible. It's akin to teaching basic chemistry by starting with quantum foundations and insisting that everything must be derived from that.
Yes that's fair enough, I mentioned it in the spirit of what else is good learning material on YouTube, not/forgetting 'creating my first design right now'.
Phil's Lab is pretty good 'zero to DDR' though I think, for PCB at least - you might need some awareness of basic electronics first, he does schematic walkthroughs and projects too, but it'd probably seem pretty quick and unexplained if you're coming to it not knowing some fundamentals.
I can look at it. I'm a hobbyist like you but I have been using KiCad and making PCBs for a few years now.
If you want to be anal you can print the PCB from KiCad on a regular laser printer at actual size and "stuff" your paper PCB with the components you intend to install. I've used a push-pin to poke small holes in the paper PCB and then threaded the resistors, etc. into the holes to get a sort of sanity check that the components are going to actually fit with one another.
The latest KiCad has a 3D viewing mode that seems to have a similar benefit. But I had a few components on my latest PCB that KiCad didn't know about so there was no 3D model for those components. (I could probably hunt for these component's 3D models on the web but I am too lazy.)
I did spend the time to find 3d models on the web to plug into my 3d views and it was definitely helpful.
Rather than paper, I think you could Kicad-design a 2D grid of holes matching an existing proto board (https://www.amazon.com/ElectroCookie-Solderable-Breadboard-E...) and then do the placement and routing in Kicad, and then finally assemble the board in place. To avoid fritzing.
Laziness is the enemy. I spend a lot of time on things that some might consider frivolous. I always make sure to set up pin assignments and constraints properly so ERC and DRC checks mean something. I've found that the 3D models are quite helpful in finding pain points in clearance for multi-board assemblies, large components, and user interactive components. It's also really handy for checking mounting configuration (hole size, standoff height, will standoffs obliterate traces, etc.)
> It seems like there are a lot of design rules that are not common knowledge.
Even worse, there ard a lot of design rules that are shared as common knowledge, but that are wrong or detrimental to modern designs. Rules that applied when all you had were througholes, slow rise times and no emission tests to worry about.
Modern MCUs for example might just run at 8 or 16MHz if so configured but can have rise times in nanoseconds, so emissions must be considered despite the "slow speed" of the clock.
Another big one is having multiple capacitors one decade apart for decoupling, ie 1uF, 0.1uF and 10nF or something like that. With modern SMD capacitors you'll almost never want to do that. Instead use multiple large ones, ideally in the smallest package you can.
> And, is there a place, maybe a slack or discord, that would review designs?
I've had a good time over at MicroType Engineering's discord[1], got a separate room for design feedback. Also has a YouTube with some helpful videos[2].
> Another big one is having multiple capacitors one decade apart for decoupling, ie 1uF, 0.1uF and 10nF or something like that. With modern SMD capacitors you'll almost never want to do that. Instead use multiple large ones, ideally in the smallest package you can.
Great post! I’m an ex maths/physics person and have always been into EE and electronics as a hobby. I’m currently working on a pcb and am also struggling to find that leap in knowledge.
I have recently found the eevblog forums [#] which are extremely valuable. I haven’t posted there yet but am planning on engaging and seeing if I can learn some deeper knowledge.
I’m struggling to pick which MCU to use exactly. Let alone what brands of rotary encoders are good, or which water proof usbC female port I should use!
All the parts from Mouser or Digikey are good. It takes time to find your favorite vendors, parts and most enjoyable datasheets. Part picking process is very time consuming.
Any tips if I wanted to get something pre manufactured through the big pcb players?
How to figure out what parts are in stock, what can be used with each other. Any tips for beginners?
I’m looking to get a pcb with parts soldered on (ws2812 LEDs, atmega328 and supporting parts. Is this easy and feasible to do?
I do my assemblies by myself. It’s faster and more convenient during prototyping stage. While the boards alone cost 400€, with assembly it might cost 4000€. First revision has errors and it’s a waste of 4000€ then. I can recommend in Germany Beta LAYOUT GmbH. They do usual boards for good price with good quality. Be aware, that nobody wants waste the time with 1500€ first order with assembly of 5 boards. Maybe you can find some student willing to play with electronics on weekend for cheap. And yeeah, maybe overseas is cheaper. But I don’t do that anymore.
I have not put in an order yet, but I am looking at JLCPCB which seems to have a wide-ish variety (not like mouser or digikey but still, most things available) of parts at reasonable prices. I am designing with their partslist in mind so that they can assemble for me especially the tiny SMT stuff that I have no hope of doing myself.
I think you may need to pay a bit of extra fees if you don't use their "in house" parts but so far it looks reasonable.
>It seems like there are a lot of design rules that are not common knowledge.
Totally. And it can often be unclear how to proceed when the design rules you do know conflict.
Ultimately I've learned over time it's about the process rules, not design rules. Follow the same logic design process each time refining it to be better knowing that the design rules will be bent and even broken at times.
Howdy everyone - Fischer here, I started this course last year along with my good friend Adi. Glad to see that this ended up on HN, and glad that people are excited about it and seem to find the content useful. The goal of putting this together was to help people have fun and feel empowered to build cool stuff, and from the comments here it looks like it's helping that. Yay :)
A quick note though: We're updating the site right now to get it ready for it's second running in IAP 2024, which is in about a week or two. So most of the content for this year is being built out, but everything from last year is available under the archive page:
It's really nice to see this IAP course! The lectures from last year are great!
You really covered a lot for a month, even for MIT students. I keep finding great stuff like, oh yes, they reference Ott for EMI right away in layout.
I particularly appreciate the slides for "Hardware's not dead".
It would be cool to do some advanced topics in physical modeling of circuit boards - electromagnetic, thermal, and mechanical/reliability.
Some internal links to the 2023 site are broken, and some google links too. It took me a bit to find the motor lecture from its mention on your technical resources page.
Some notes on resources:
If you're going to take a board to production, the Coombs handbook is nice to have handy. IPC standards can be helpful also, and you might access to them through your library.
For batteries, there really isn't a single reference as useful as the Linden handbook.
You mention Ott for EMI/EMC in lecture 3 already.
For motors I have found Fitzgerald&Kingsley and the old Electro-Craft handbook particularly useful. The Electro-Craft handbook is one of those fun old books that has crisp control theory block diagrams you can pretty much enter directly into Simulink and run.
I spent part of yesterday looking over Winnie's projects and was amazed. I continue to be blown away at the productivity of MIT students and their ability to make fun things (I'm thinking of the various high power LED projects, as I work with high power LEDss). I especially enjoyed reading about designing, simulating, and manufacturing a single-layer Aluminum PCB which acted as the substrate for the LEDs, but was impossibly hard to solder because it was a huge heat sink! And the solution to pre-heat the board with a board heater worked.
Please continue to post the projects, especially the git repos with the actual designs, as well as the reports.
Thank you :) LEDs are how I got into electronics-- they were a great way for me to burn crazy amounts of power when I was learning power electronics.
I'll continue to post projects since most of my learning happens when I make something that works... or more often doesn't work. I don't see a world where I can stop since there's so much to learn and explore. Currently I'm working on a ~100W LED driver that works off AC mains and it's really pushed me to be thoughtful and intentional with all the testing I do. It's my first project where I pull power straight off the wall, and it's both exciting and terrifying.
I didn't really understand the motivation for a 100W LED that runs off AC mains.
As for AC, I am generally quite scared by it but my very first maker project, some 40 years ago, was a nightlight, that every kid made in shop class (it's a resin-encased vacuum fluorescent light and a resistor connected to AC blades!)
And I also played with vacuum tubes, converting AC to DC on a protoboard. After a bit I decided to stop doing that, as it's a true shock hazard./
I've spent my vacation making a nixie tube clock PCB. Just the last few traces left to route. I use altium at work and KiCAD at home. There are things I like about both. It really is enjoyable.
PCB Design is a broad "field." Depends on what you're building. I think people place too much of an emphasis on the tool you use instead of the skillsets you need. At the end of the day, in 99% of cases, we're integrating highly complex, yet modular systems built by semiconductor companies.
Expand your design capabilities by understanding these semiconductor black boxes that are available to you in your field (power electronics, audio, RF, etc.) As another user mentioned, read up on design references! And datasheet graphs, and try to get your hands on closely related previous designs. As EEs, we should talk more about design patterns and primitives like software engineers see it.
But of course, I understand why there's a big discussion about tooling, it's like picking the first language to start programming in. Imo, if you're starting out in PCB design, pick a tool that doesn't get in the way with your learning; something simple but also capable when you progress. The software engineering choice would be python, and I think flux.ai is the closest thing we get to that. But still, if you learn one, you can use the rest! We're all constrained by a pretty standardized manufacturing process so the functions you perform in all these tools will be very similar.
Indirectly related question, I’m thinking about starting into PCBs, have downloaded KiCAD and started playing around. But I’m not super psyched to etch my own boards (although I understand it’s gotten easier over the last 30 years), and have been thinking about getting a PCB CNC. Any thoughts on best way to take your designs and make them real?
Etching or milling a PCB yourself can be fun if you want to learn about how it's really done, but it is very time consuming and the finished product will not be even remotely comparable to what you can get made for 2$ at JLCPCB or similar factories
Ask yourself what you want to achieve - if you want to create electronic projects, order your boards from the cheap manufacturers online. If you want to become really good at the process of making PCBs, then look at making your own.
This is the reality - unless you’re only interested in the most simple stuff (one or two layers but no plated holes, no vias, no solder mask, etc.), you can spend years trying to develop and tweak processes to try and achieve something that won’t match the quality and reliability of something you can have delivered in less 7 days for $10. Not to say that developing PCB processes isn’t fun to some people, and if it is then more power to you, but I’d rather spend the time on the electronics than spending all of it trying to build PCBs.
I don't think it's worth it for all the reasons you mentioned. I just want to stress that no vias (actually you usually need at least a few and have to make them with a drill and clipped resistor leads) makes layout way more difficult, and no solder mask makes soldering much more difficult. Making the PCBs by cnc or etching has no path forward as you design more complex stuff, eventually you will reach a point where you have to order assembled boards and there isn't even viable hobbyist version of all the equipment pcb fab shops use.
I will echo JLCPCB as a great solution for this. I basically have gotten into a "week cycle": design some board (or improve a design), send to JLC, get the resulting board in about a week (I pick the faster manufacturing and shipping options), for about $30. This is about 2X the speed of OSHPark and 1/2 the cost.
You can get boards fabbed at places like OSH Park or JLCPCB for cheap, complete with plated through holes and solder mask. I don’t know a good reason to try to make your own boards these days.
Yeah, PCBs - even small quantities- have become to cheap to deal with making them oneself. We used to have a CNC at work for PCB prototyping, but it was also a bit of work to get everything set up. It didn’t work like a printer. Now we just order PCBs. We usually use Aisler or JLCPCB.
The CNC machines are still useful for testing RF designs. You can iterate a PCB antenna design more quickly with one than you can by sending out. And they're a low-commitment (i.e. no purchase order) way to make small jigs and adapters.
Courses like this is what makes me keep going, I’m pretty new to EE and PCB design so the learning curve is somewhat difficult since I have to look up for resources everywhere for the specific things I want to make. I tried KiCad at first but ended up using Flux as my main design tool because of two things: If I’m stuck on something, instead of having to google the answers and accommodate their context with mine, I instead ask their AI which already has the context of my project.
And second one is that there is such a strong sense of community and collaboration, it makes me feel like I never have to do anything alone. I mean the whole library is made by other people (as far as I know)
I know I won’t have to Google everything at a later point but for now it’s what works for me.
Hey there it's Winnie. Thanks for all the helpful guides everyone posted! They all seem quite interesting and it makes writing lecture plans and teaching our students much easier :)
As mentioned on our website, we'll be putting up our content as we complete them. By the end of January of next year there should be a complete set of lecture recordings, lecture notes, labs, and assignments updated for 2024.
I haven't touched PCB design/EDA since college because it was so cost prohibitive and I lost the student license to Mentor Graphics, but it's something I've always wanted to return to. I am excited to try this out!
The first lab assignment is to install Altium which they explain is what is being used for the course, and it includes sage advice such as "just get a Windows machine".
Kinda jumping to conclusions... Using any PCB design tool well and with good principles and ideas means you can use any other. Good designers are not determined but their tool but by their output
To any KiCad dev reading this - thank you.