Prototype to production: How to build and design a PCB prototype
blog.particle.io
blog.particle.io
Autodesk, on the other hand, has shown signs of crippling Eagle after they bought it, such that I have my doubts about Eagle being viable in 5 years.
If you already know Eagle, it's a tougher call, but if you have just begun learning, I think you're better off with KiCAD.
To me, that's a deal breaker for what amounts to a code/IP editor, especially if you haven't yet invested the time to become proficient. If you have, you face perhaps a tougher choice.
There are other options which may be of interest. Altium have one, I think it's called circuit maker, and digi-key have schemeit.
Its hard to try new things when you have access to a professional package and library. I'd really like to try something free but the motivation has been a challenge.
I didn't like my first install as it required me to be on the internet for library parts. On a later install I found the option to have them locally and that works better for doing layouts on airplane trips.
I tried Eagle a few years ago enough to make a couple designs, but never got proficient at it, just "passable". I found KiCAD easier than Eagle, but it was also several years later and my second such package, so I'm sure just being deeper in the hobby was a big part of that ease.
Yes, KiCAD, for some reason, has a GUI for library management which is both nonstandard and confusing. The schematic symbol library manager and footprint library manager have similar GUIs but behave quite differently.
Schematic editing isn't bad, although it has the worst approach to wire junctions ever seen in a schematic editor. The dot where wires connect is an entity separate from the wires, and can be omitted or moved, with negative effects on the netlist.
Layout is OK, but, as mentioned, the footprint library isn't very good. Expect to spend time looking at manufacturer data sheets and drawing footprints to match.
There's an autorouter, but due to some political problem you have to download it from another site and rename it. The autorouter and the design rule checker don't quite agree on some tight clearances, which can be a problem.
It's open source, and widely used, so you know it's not going away.
Just to expand on this, KiCad is an abomination stitched together from the corpses of about six different programs. There are four different graphical editors (schematic part, schematic, pcb footprint, pcb layout) which look somewhat similar but have notably different user interface conventions for selecting, moving, copying and deleting objects, making it frustrating to switch between them. To make it even better, the PCB layout program has three different options for the "canvas" (ie. the layout area) which again have different interface conventions, and additionally some features are only available in some canvases and will simply fail to work if another canvas is selected.
These programs communicate via export/import functions instead of being properly integrated so the process to add a component to a circuit board involves five different programs and four export steps. You also can't back-annotate any changes at the PCB level back to the schematic (or at least, it's a royal pain to do so.)
Once you get your workflow going and you've pushed past the worst of the confusion, it works just well enough that it's easier to put up with the pain for now and allow your resentment to simmer than it is to figure out how to build the damn thing so you can fix it yourself.
(For comparison, I used EAGLE back in 2004 or so, and I thought it was pretty good. I'm not sure what they've done to it since then to garner such animosity.)
Last time I checked, Scheme-it was basic web-based schematic capture, not layout.
Case in point they've drastically improved the horrible CAM export process in previous versions. And push and shove routing is a god send.
Agreed. KiCAD has had for 3+ years as well, though.
My life has changed since I discovered DipTrace. It is free for non-commercial use and extremely cheap for commercial use - About $100 would get you enough to build small-medium sized projects. And it is just so well engineered. Kudos!
Also, no subscription business. Just good ol' perpetual licenses. DipTrace developers are just amazing people - if you ask nicely, they'll give you a discount if you're a startup.
From a software engineering standpoint, I realize this feels crazy, but its pretty much par for the course. Every organization develops their own libraries for parts and processes their vendors may use, and while there are standard size parts, there is enough variance that it doesn't really make sense.
"Re-implementing" the standard library is sadly par for the course.
If you've ever had a run in with a piece of software called Ultra Librarian you'd probably think highly of KiCad :)
I was planning to design my own ergonomic keyboard. I downloaded some library files for switches, etc, but it was just so painful to even find those switches in the library, I had no idea how to do anything.
I might give it a go again sometime, but it really was so bad I just gave up and let it go, hoping it would improve somewhat in future versions.
I consider it somewhat similar to vim or CLI programs in general in that regard... It violates all conventions you are used to, but internally it is very consistent and well made.
They understand PCB design, but they do not understand software design at all.
I wish Altium had a more accessible license for hobbyists because it's amazing. I'll have to check out DipTrace.
I've been an Eagle user for years. After Autodesk bought it, the program has been hugely improved and new functionality is added several times a year. I have rarely see a mature software package develop this fast...
It's a subscription model,which I know some people don't like. But for a professional cad program it's not expensive. In the same ballpark as Photoshop. Competitors charge several orders of magnitude more.
I definitely recommend putting it into OpenGL mode as you get extra features like nice autorouting and a smoother framerate. Not sure why design features are tied to the rendering engine but that's just how it is for now.
I made all my parts/footprints myself in their editor. The library management is a little convoluted but all it takes is some time on Youtube tutorial videos to get the hang of things.
I like that all the kicad files are text and easily version-controlled so I can have my entire parts library and board designs in git and can easily roll back to previous iterations if needed.
Unfortunately there is no good open source EDA software. Sorry but it's true. Also Eagle is the biggest pile of crap I've ever used. Worse than Eclipse. If you don't believe me, download it and then try to work out how to copy and paste something.
The best free, closed source software is DesignSpark PCB. It's still a little weird (e.g. zooming warps the cursor) but it at least is fairly logical to use. You can work it out without extensive tutorials. And there aren't any limits on part numbers of PCB sizes unlike Eagle or MultiSim Blue.
Let me say it again - if you are a beginner DO NOT USE EAGLE! DO NOT USE KiCAD! Either pirate Altium, or use DesignSpark PCB.
Trust me, the difference is like "oh wow designing PCBs sure is complicated! I'm going to need to read a book and watch some tutorials or something" vs "huh this is much easier than I always thought it would be - it's basically MS Paint".
They're backed by CERN [1] (who fund actual people working on the project) and, as I'm happy to realize now, my own University of Grenoble :)
So the project is here to stay, and I really enjoyed learning how to use it.
His design worked out of the box with no issues, and he even had solid advice on dealing with the end Chinese PCB suppliers.
I'd advise hiring an expert because they generally aren't priced the same as software experts. I'm pretty sure I'd have spent a lot more fumbling around trying to do it myself.
Kind of a shame really. It's arguably a harder skill to master these days.
I'd argue that maybe EE's aren't underpaid on an absolute scale, but that software has completely different market conditions and rather, it's software people who are doing uniquely great.
And I completely got that people smarter than me were billing at 5x lower rates for harder work.
Back when was re-evaluating where I wanted to go with my career(post-gamedev burnout) I briefly considered getting an BS in EE and getting a hardware job since it's an area that interests me. Did a bunch of research and found similar things.
I think it largely boils down to a couple factors:
1. Everything in hardware has to be spec'd to the teeth since re-spin of HW/Masks can easily run into the 7-figures. That means there's very little flexibility and opportunity for the "10x" EE to manifest.
2. Since everything is still heavily spec'd you get a lot of "replaceable cog in the machine effect".
3. A lot(but not all) HW is really removed from the end customer so you aren't as deeply tied with the business side of things which hurts visibility/etc.
4. Software is just more flexible which means you have a much easier opportunity to be "full stack" and not get pigeon-holed to a specific technology.
At the end of the day I scratch the hardware itch in my spare time and I still find SW a ton of fun. Plus there's a ton of value in being a software dev that can speak/understand hardware language and fit it into the larger picture.
Asking because our analog layout guy with decades of experience really needs help with the discrete parts.
Nothing fancy just some rotary encoder work.
This is the kind of stuff I remember doing in my FPGA class a long time ago but I figure I'd be fumbling around in a real hardware land since I usually do embedded software.
There must be gotchas that an expert would know in a real hardware that are not present in a simulation.
People with those talents should congregate on some webaite. They could easily get side work that pays better then their day job. Since PCB's are dirt cheap these days, it feels like there's a missing marketplace.
Also worth noting (didn't see this mentioned in the article, and maybe this is obvious...), it is usually wise to make your prototype on a breadboard/perfboard first, before ever printing a run of PCBs. This is especially true if your board is interacting with other parts of a system (E.G. you are building a power board for a robot). This let's you get a proof a concept working right away, and helps ensure no unexpected integration problems crop up that might call for a redesign.
Too many hobbyist boards end up with connectors on all four edges, making it very difficult to package the board.
Although sometimes you may want to get the pcb working before worrying about the particulars of the case if there are a lot of unknowns in the design.
Once you get a bit bigger (physical volume), the cost becomes prohibitive and you can look at etruded aluminium. If you're clever you can design a PCB to act as end panels. 3D printing is also a nice stepping stone before getting a machined enclosure made - saves a lot of cash if you find you've missed something.
And yes - too easy to forget things like standoff holes, or where a connector is going to be mounted. I suspect because it's annoying having to double your board area so you can fit an M3 clearance hole/keepout. Cheaper to not bother. If you go with 3D printing you can do things like add slots and slide your board in.
For simulation one needs the exact behaviour of all parts. That excludes board with parts that have a closed design, or insufficient documentation. But for many parts, and hopefully soon with CPU-ICs thanks to RISC-V, we can do simulation.
I don't expect real-time simulation, but at least a solution for letting the machine compute over night to see if the board successfully does X.
Any suggestions? Is this a problem waiting for a solution?
Edit: not sure why I got drive by downvotes.
https://www.autodesk.com/products/eagle/blog/spice-simulatio...
Edit2: for KiCAD http://mithatkonar.com/wiki/doku.php/kicad/kicad_spice_quick...
Practically speaking, your interface ought to be separate enough that you can define the range of states the micro's inputs should see, and the range of outputs it should drive, and separate the two. There are times when I've wished for a combined simulation but it wasn't worth the hassle to set it up. Honestly for the accuracy I expect I usually prefer to just build the thing rather than simulate it.
LEDs are really boring to model anyway.
You can set up testbench code that feeds in data and stuff, and link different stuff together digitally. I don't know if there's much in the way of analogue simulators like SPICE hooked up to logic simulators though.
The next level down is to run it up on an FPGA, which is only a few orders of magnitude slower than you can clock an IC.
There is also a lot of merit in a simulation even if it can't go very deep, say, considering quantum mechanical effects inside the IC's. That may be practically impossible due to unknown data, or just give impractical performance. But there are a lot of use-cases that don't need that level of detail.
What level of detail is realistically possible? If we know that a certain level of detail is too slow to simulate, then writing a simulator for a higher level is easier and we need less data for the models.
Simulation is usually more useful when you have very specific questions about small parts of your circuit. Questions like will the oscillator start up under the full temperature range, or what's the phase margin of my analog front end.
Big exception to this is FPGAs and other programmable logic where a major portion of one's time is spent specifying, simulating, and verifying a design in software. This can also include software/hardware co-simulation. But the toolchain for doing this is usually furnished by the silicon vendor.
Another place simulation pops up more often is in power supply design and RF parts. TI, LT and other vendors have specialty software and wizards to simulate common designs. This is basically an extension of reference designs and demo boards.
Last time I checked, the most popular options didn't even support HiDPI mode. E.g. KiCAD on Mac feels very "out of place", e.g. two fingers control zooming instead of scrolling (panning), not to mention other usability issues / general unpolishness.
I've tried https://circuits.io (Autodesk Circuits web app) and it's surprisingly good (for a beginner, at least).
I made a few PCB's using http://aisler.net/ which seem fine for prototype manufacturing. They can also make the laser-cut stencil for SMD component mounting. You can upload Eagle BRD files directly (my experience with KiCAD and Fritzing was a lot less than stellar). Cost was around nine euros for three small PCB's and another nine for the stencil and took about a week to be delivered.
You have two great resources on designing for manufacturing/test right at your fingertips. Building electronics is what these houses do every day, and they possess an immense amount of knowledge about it. Give them the chance to review your designs so you don't make dumb, expensive mistakes!
This is currently listed on the CERN roadmap for KiCad. Given all the complaints about the UX here I thought it might be relevant.
I’d love to be able to just hire someone to make me a custom PCB the way someone would hire a developer to write an app, but unfortunately it seems there is no market for this.
Do realize that keyboard-sized PCBs will be expensive in single quantities past the design stage as well.
Then, if you want a change, it's pretty near that same full amount of effort/cost again for the second assembled prototype.
Have a look at this custom keyboard PCB tutorial perhaps and see if you want to tackle all or part of it yourself: https://news.ycombinator.com/item?id=13406772
I've also got a friend who does that as part of his company's offerings. Not sure how busy he is or if he wants to do a small one-off (he mostly serves product and engineering companies), but you could have a look at: https://www.ciholas.com/ourservices/ (I have no financial interest and he's a good acquaintance or distant friend, so use him or not; I don't care... :) )
There's still a time-intensive series of steps for one-off production from "finished PCB gerbers" to "finished PCB with all components installed, all mechanical holes in exactly the right place, microcontroller firmware written and programmed, and the whole thing tested".
If the scripts exist, there's probably forum discussions about people's experiences trying that path.
I would love a solution where I could simply have a PCB made based on parameters but I guess it's not happening any time soon. Still requires specialized knowledge.
You still need to buy the parts and solder everything up, but for one-off, that's mostly a bit tedium, so this seems doable if you're somewhat dedicated and the type to find a way around or over small obstacles. The microcontroller and firmware for something constrained like this is almost assuredly a solved problem, so I wouldn't worry much about that [though it's something you need to chase down, of course].
But you're right, there's still enough specialized knowledge that there's no real "thingiverse equivalent" (of similar community size) for PCBs.
Surely you could have a group of switches together and copy/paste?