07/02/2018 at 10:22 •
This trick was originally described by @Arduino Enigma in the #Sinclair Scientific Calculator Emulator. Tented vias are vias that are covered with soldermask. If you think about it for a moment, there is really no reason for a via to be exposed (unless you re-use it as a test point). Its job is to connect the layers, and it does it as well when it is covered. On the other hand, when it's covered, the risk of shorting it is smaller, and the board can look much better.
Unfortunately Fritzing doesn't normally give you the option to have the vias tented. But there is a simple trick to add the soldermask over them when you are generating the gerbers. Start by generating your gerber files as usual, and once you do that, select Routing→Select All Vias from the menu, and press the Del key to delete them. It will also delete some of the traces, but don't worry about it. Now generate another set of gerber files, in a separate directory, and close Fritzing without saving the file.
Now all you have to do is to copy the maskTop, maskBottom, silkTop and silkBottom files from the latter directory to the former, and voila, your vias are now covered with soldermask. You can also only copy only some of those files to only have the vias covered on one side of the board.
07/01/2018 at 17:59 •
One of the greatest advantages of Fritzing over other PCB software currently on the market is its ability to SVG files directly, without any need of converting or tracing them. Since it uses SVG internally for anything, it's only natural that the PCB outline is also an SVG file. I'm going to tell you here how I go about making custom PCB outlines.
Usually I start by designing everything on a standard rectangular PCB, keeping in mind the rough shape that I am going to need. Here's an improved design for the #Mechatronic Ears with a power switch added:
Next, I export the design as an SVG image:
Then I open it in Inkscape, where I can easily draw my desired board outline:
Usually I pick some nice, partially transparent color (green, blue and purple work well) and draw the shape of the PCB I want with it:
You can also add some silkscreen:
Next, I remove all the Fritzing stuff from the image, and leave only the board outline and the silkscreen:
Now create a new layer in Inkscape using Layer→Add Layer... menu option, and name it "board". Select the board outline, and then select Layer→Move Selection to Layer..., then select the newly created layer "board". Repeat that with the silkscreen, except call it "silkscreen0" for the bottom, or "silkscreen1" for the top (you can have both).
We are almost done. Unfortunately, Inkscape doesn't call the layers the way you tell it — it only adds labels to them with your names. We will need to go a little bit deeper to actually modify the layer IDs. Open the XML Editor, you should see something like this:
Now you can select each of the layers, select the "id" attribute on the right side, and enter new value for it on the bottom. Change the IDs to "board", "silkscreen0", "silkscreen1", etc. so that they match the labels. Don't forget to click Set each time, or it won't get saved.
You are done. Now you can save your board as "Plain SVG", and go back to Fritzing. In Fritzing, select the PCB, and in the properties click on the load image file button:
Select your saved SVG image. You should see a summary telling you how many cutouts (slots) your PCB has — make sure that number is correct. Finally, you will need to adjust the position of your PCB to match the components, and you are done:
Now, when you export the board as gerbers, I recommend to do one more step before you send it to fabrication: open the board outline in a gerber viewer, such as "gerbv" and verify that the generated shape is indeed correct. Fritzing has some very annoying bugs around the gerber generation, and you might be unpleasantly surprised if you skip this step.
This time everything is correct. If it wasn't, I would go back to Inkscape and add a couple of nodes to the shape, around the places where something went wrong, to make sure it's correct.
09/24/2017 at 19:19 •
Let's talk a little bit about schematics. I know that you rarely visit that tab, but if you want other people to actually make sense of your project, you have to document it. Like I did with my #D1 Mini Matrix Shield:
I really tried to make it readable. However, the LED matrix has such ridiculously random pinout, and there are so many connections, that it's really difficult to make sense of it.
Today I'm a little bit wiser and I use the net labels, which you can find in your parts pane under schematic view:
The way you use it, you connect it in place of a wire, and at the other end you make another one, with the same name. Fritzing considers all the labels with the same network name on them connected. The resulting schematic is much easier to read, like the way I made for #PewPew FeatherWing:
Of course, this is not a silver bullet. If you overdo it, and all your connections are just some random labels, your schematic will be even harder to read. But if you can think of a name for a given connection, it's probably a good idea to use a label for it.
09/18/2017 at 10:37 •
I've been putting this post off for some time now, but we need to talk about this sooner or later. Fritzing became infamous in the electronics community for the characteristic ugly traces that are often done with it. People new to the whole thing just connect the holes and pads in straight lines, adding a bend sometimes when necessary, and call it a day. It looks something like this:
What's wrong with this, you ask? All the connections are there, so it will work fine, after all, no?
Well, there is a number of things wrong. First of all, you are just being lazy, and that's a sure warning sign that most likely there will be other problems with this design. Second, this is not pleasant to look at, and more importantly, to work with. It's not easy to see what is connected where and to modify this design. It's also easy to miss shorts between the traces. Finally, there are actual technical reasons why this design is sub-optimal.
You probably have heard about radio-frequency emissions from traces. Turns out that every trace is basically a small antenna, and it will waste energy by emitting radio waves. Most traces are not particularly good antennas, but the ones that have a lot of sharp angles and are not surrounded by copper fill are better at emitting noise. Unless you are working with gigahertz signal, this is not the technical reason for worrying about sharp angles, though.
If you are etching your own boards, you have to be very careful about all the nooks and crannies in your design. The etchant will tend to pool int them, and eat out much more copper in those places, leading to possible faulty boards. This is not the technical reason for worrying about sharp angles if you send your design to a professional board house for fabrication, though. Neither is the fact that because of the lack of a copper fill, a lot of copper has to be etched away and a lot of the etchant wasted on that, and the etching process will take a lot of time.
Finally, the sharp corners are more likely to peel off the board, especially if it's subject to any mechanical stresses or bad storage. Again, not much of an issue with professionally made boards.
But it still looks very bad, and all the people who ate their teeth on the above-mentioned limitations will shudder at the sight of it. So please, be a nice person and spend the minimal extra effort to actually make it look good. Start by aligning all the traces so that you only have horizontal, vertical and diagonal lines (you can hold ctrl+shift while moving the trace for Fritzing to help you with it):
Much better already, don't you think? Now let's get rid of those sharp angles:
It's starting to look right, doesn't it? Note that I actually left a couple of right angles in there — in the T-junctions, and also for the traces that are too close together to actually do a nice gradual turn. Personally I think this is fine, but for the reasons I listed above, opinions vary. Finally, let's add a copper fill:
Et voila! A decent looking PCB design. It wasn't so difficult after all, was it?
Of course there is much more to it than just the horizontal and vertical lines and sharp angles. But this is already a start. If you keep practicing, looking at other people's designs, etc. you will come up with your own set of good habits that make the designs nicer, easier to read, less likely to contain mistakes, and more pleasant to work with.
09/17/2017 at 17:52 •
Fritzing comes by default with a pretty large library of parts that you can use in your designs, and new parts are being added to that library all the time by various contributors. However, there are also a few large part libraries outside of that, that you might want to add to your installation. The biggest ones are probably the libraries of parts made by the companies that sell those parts:
See the README in the Adafruit's library for detailed instructions on adding those to your Fritzing.
09/17/2017 at 16:59 •
Rotating elements is easy. You just use the "rotate" button in the bottom left corner of the screen, right?
Well, yes, you can do that and that works fine most of the time. But there are limitations. By default, that button rotates things by 90°. Some objects can be rotated by 45° by clicking on the small arrow on that button, and selecting the appropriate option for the pop-up menu. But some things, such as vias and holes, can't be rotated at all. Initially that makes sense. After all, why would you want to rotate a round hole or via — they look the same no matter how they are rotated! However, you might still need to rotate a set of holes or vias, or a mix of parts (like your whole design, for example) that includes holes and vias in it. And Fritzing won't let you do that.
I had this problem with an Adafruit Feather shield that I was designing — it's slightly longer than 5cm, but my board house would only make 5×5cm boards cheaply, anything larger costs extra. But I figured out that I can fit this shield into the 5×5cm outline if only I rotate it by 45°. But how can I do that when it contains vias and holes?
Looking for a way to do this, I found this "rotation" property in the side pane:
This lets you rotate a single object by pretty much any angle, not just multiplies of 45° or 90°. In particular, you can rotate your PCB by any amount, even though that red button only lets you do 90° for the PCBs. Neat! But I can't use that when I have multiple objects selected, so it doesn't solve the problem.
I wish I could also figure out the next piece of the puzzle myself, but I actually found it on the Fritzing's user forum. You see, the PCB has one property that other objects don't have — the "sticky" checkbox, right under that rotation property:
When an object is sticky, whenever you move it, it will also take with it all other objects that touch it. And rotation counts as movement here. So all I had to do is make my PCB sticky and set its rotation, and everything on it rotated together with it. Presto!
Of course, sometimes you want to just rotate a few selected parts. Then you can drag a second PCB onto your design, make it sticky, put all the parts you need rotated on it, rotate it, and then delete the PCB and move the parts back where you need them. A bit hacky, but workable.
09/15/2017 at 08:04 •
The grid is a very useful tool. It lets you align all your parts properly, and make sure the traces between them are straight. However, the default grid in Fritzing is set to a huge 0.1" — which is probably fine for large through-hole parts, but completely inadequate for the smaller SMD components. Fortunately you can change the grid size using the View → Set Grid Size... menu option:
I usually start with a pretty large grid, such as 0.05", and then halve it whenever I need more detail or denser traces. This lets me make sure that all the large parts are properly aligned to the bigger grid, but the traces can still go around them.
You can also temporarily disable snapping to the grid with the menu option View → Align to Grid, or by holding down the Ctrl key while moving a trace. This can be useful for those few traces that don't want to align no matter what you do, because the footprint you are using is not compatible with the grid you have set.
Another trick is to hold down both Ctrl and Shift keys while moving a trace — then it will automatically snap to horizontal, vertical or diagonal positions. I use that to connect traces to the pins of small integrated circuits, which somehow never align with my grid. So I make the first segment of the track horizontal, until it crosses the grid, and from there it all aligns properly again.
Some objects, like the PCB itself or images, will never snap to the grid for some reason. To align them perfectly, you can use the "location" and "rotation" properties. This is also the way to get a rotation that is not a multiple of 45°.
09/15/2017 at 07:47 •
One of the nicest features of Fritzing is that it lets you easily switch between the schematic and PCB views, and the updates you make in one will show in the other in the form of so called "ratsnest" lines — color dashed lines.
However, while generally useful, they can become very problematic when too dense, because of one peculiarity of Fritzing — the ratsnest lines have clicking priority over everything else, so it may be very difficult to click on anything covered by them. A quick workaround is to double-click on the offending lines to turn them into traces, which obey normal clicking priority rules and are not as problematic, but then it's hard to keep track of what you have already connected in your design.
A better way is to simply disable the display of the ratsnest layer. You can do that in the menu, by clicking on the checkbox next to View→Ratsnest Layer. But then how are you going to know what to connect to what? Don't worry, if you click on any pin, Fritzing will highlight all the other pins it should be connected to — this way you can make all your connections while avoiding visual clutter.
Though I still wish there was an option of making the ratsnest lines unclickable...
09/14/2017 at 14:49 •
Sometimes you have some module or part that you want to use in your project, but since it's just a one-off, you don't feel like making a special footprint for it. You could just use pin headers for it, and that's what I usually did, but there is a better way: a mystery part.
It looks like a black box with a question mark on it, and it's basically a pin header with some extra options. What are the extras? Well, first of all, it has the first pin marked with a square — so that you know how to rotate your part. But more importantly, it has that "edit pin labels" button, which lets you assign names to all of the pins, so that when you hover over them with mouse, you can see what they are. This makes it much harder to make a mistake when connecting everything.
It also looks like a plain box in the schematic view, better than the anonymous headers. Of course you should give it a label describing what it actually is.
09/14/2017 at 14:43 •
When Fritzing was created, we didn't have anything like OSHPark, and most hobbyist were making their PCBs manually at home. That included drilling. That's probably why the Fritzing defaults to 1mm hole sizes with a preety wide copper circle around them — it's simply much easier to do by hand.
But today, when we send our PCBs to fabricators who use automated processes for everything, it doesn't make much sense, and the huge holes and pads mean it's impossible to route a track between them.
Fortunately, you can change the sizes of holes for your headers, using the "hole size" settings:
You have three pre-sets, but you can also enter your own numbers, and they will be remembered as one more preset. Personally I like using 0.9mm for the hole diameter and 0.4mm for the ring thickness — this gives pretty good fit for the male headers, with enough copper to solder them to, and enough room between the pins to fit a trace comfortably.