MCP23017-on-PCB-Vertical-Stackable-V1.fzz

Got a new part. Format .fzz. Want to share design but unclear for me how to do as “Share” button Fritzing does not support share (better webpages is not supporting it currently).
Found reference to Forum “parts submit” but even here it is unclear how to upload design.

How and where can I upload a design.

To share here, when editing the post, the 7th button from the left is an upload button. Use that.

A part would normally be a .fzpz file. A .fzz file is a sketch, which could have multiple parts in it. Those can be extracted / exported, but the .fzpz is the intended way to share parts.

There is a FritzingCheckPart tool that helps to catch some kinds of errors in parts files. It also complains (warns) about some things that are not really problems. Still good to run it, as it will catch a lot of common mistakes and typos.

@microMerlin,

Thanks for the intro of FrizingChecPart. Just downloaded it but not used yet. As I understand from your reply and your comments on [ODrive 3.2 BLDC Motor Controller] to Matt there is a lot of work to do before it will be in the right format.
Also found an old threat about creating a .fzpz file but that was from .fzp and not from .fzz format.
How to convert .fzz to the required .fzpz

I uploaded my .fzz for some advise.
I’m just working for two days with Fritzing and still need to discover how it all works.

MCP23017-on-PCB-Vertical-Stackable-V1.fzz

Jan

The MCP23017 part itself is included in the fzz file. To create a .fzpz file from that, click on it in one of the views, then on the Fritzing Part menu select “Export”. Give it a name and path in the save requestor.

However, looking at the fzz file, and your description here, what I think you are intending is to create a new part that would be a carrier / breakout board that contains that chip. That is what the fzz sketch file seems to be. To turn that into an importable (fzpz) file is a completely different process. The text comment on the pcb view seems to indicate that what you want is to create a part that would match one of the “cheap versions”. Which would need breadboard, schematic, pcb graphics, plus part definition that matches what the breakout board looks and works like, not the raw chip. That graphics would not need all of the internal wiring shown in the current sketch. Just the connections and names for the pins used to connect to the board (plus “bus” entries for pins that are wired together internally … the multiple GND pins). The difference between an Arduino Uno “board” and an atmega328 “chip”. Both of which are “parts” in the library.

If your intent is to publish a design for a PCB board that can be used to create that breakout board, then you are already done. Just don’t call it a “part file”. The fzz file plus a paragraph to describe what it is for, how to use it would do. Maybe include a reference to one or more of the existing boards that it is intended to be a replacement for.

I see a few opportunities for minor cleanup of the breadboard and schematic views, but I am assuming that is not the focus of the project. The base pcb is a little strange. It looks like you used a custom board graphic that is way bigger than the actual copper area. Why is that not just a standard rectangular pcb board a bit bigger than the traces and headers?

@microMerlin,

It is indeed intended as a breakout board. Need to stack four of these boards together.
And the main board I’m using an ESP but ESP lacks the many I/O pins from the Atmel boards.
I started design with a example I found that got only the breadboard and the schematics part.
I assume that that sample came with the Arduino boards included. The design I made It is not intended for a specific board as it is generic.

So I need to publish not as a parts but as a breakout board. (OK, shall look how to do that)

The base pcb is a little strange. It looks like you used a custom board graphic that is way bigger than the actual copper area. Why is that not just a standard rectangular pcb board a bit bigger than the traces and headers?

The board is more or less the same size as the board I want to replace with my own design. I don’t understand what you means with a “standard rectangular pcb board” As far as I’m aware the board is just one 1/10 inch width on the outside sides. Design could be improved. Mostly on the distance between wires. What I would like to know if it is possible with Fritzing to get more wires on the board as now with this design I could can not have more than two wires on 1/10 inch.

Jan

In PCB view, if you click on the black / blank area below and to the right of the text note, Inspector shows it as a part. “plain vanilla pcb” with a “Custom Shape”. That shape is about 2.5 times as wide and 4 times as high as the actual pcb board with traces. Which is why View, Fit in Window puts the circuit board in the top left, instead of filling the window. To switch that to the standard rectangular pcb, select that existing part, then in inspector change the “Custom Shape” drop down to “Rectangle”, and resize the result to fit the traces. Now “Fit in Window” works a lot better.

To fit more wires, go to the View menu, click “Set Grid Size”, and specify a value less than “.1 in”. When working with tight spacing, I set that to 0.001 in. If you do not want to fiddle at that scale, set it to 0.01 or even 0.05 inch. I usually try to set it to half the spacing I want to use, so that I can centre between things.

That will gain enough room to get rid of all but one of the vias on the board. I do not see a way to avoid the one at the top left, without going ‘outside’ the header at the bottom, which would make the board larger.

When things get real tight, you can also reduce the trace sizes in inspector. Changing from the standard (24 mil) to 16, 12, 8 (or manually override to a specific size). Thinner traces bring other potential issues, but sometimes the trade off is worth it. Also look at the “Routing”, “Autorouter/DRC Settings” to get Fritzing Design Rules Check to accept traces closer together without complaint. For this case, reducing the grid size to 0.025 inch is enough to place things cleanly. You might want to lock the parts before changing the grid size, so that they do not accidentally get moved off of the 0.1 inch grid they were placed at. (Select all, “Part”, “Lock Part”, “Lock Part”) Need to select lock part twice, because first time will unlock the note, second will relock that plus everything else. Probably have to unlock the individual vias to manipulate them.

1 Like

@microMerlin,

Thanks for your support.
Created a new design without any via and also better and smaller.
Called it a breakout now either.
I assume this one is nearly good enough to be shared. (might need some parts and wire locking to keep it all persistent.
But as it is not a part where do you upload it? How do you share it?

MCP23017-BreakOut-Vertical-Stackable-V2.fzz (46.3 KB)

And “The fzz file plus a paragraph to describe what it is for” I now have a text block insides that contains some description but I doubt that this is the paragraph you had in mind.

The category here is “parts submit”, but seems like a good place for something like this as well. The paragraph is just the post content that goes with the uploaded file. It needs to be outside of the sketch itself, so searches (in the forum, or from google) can find it.

According to the wiring on the other views, you are missing a trace on pcb view. Fritzing tells you about that with the status information at the bottom (“26 of 27 nets routed - 1 connection still to be routed”). It is the top 2 ground connections in the 2nd column from the right.

One of the general rules / conventions / goals for pcb traces, is to avoid 90 degree corners where possible. Shallow angles are preferred.

Looking closely in all of the views, you have some extra bend points in wires right on top of connection terminals, or bend points on top of bend points. Those can be seen by moving the part, and seeing that the wire leaves a bend point behind at the connection point.

You have used single row, single pin headers for a lot of the connections. Using a single row, multiple pin part would simplify positioning, and make sure the the proper spacing is maintained. Although that would make the schematic and breadboard wire more complex / messy, tt would simplify the “BOM” for the pcb board.

The text note on the PCB view has some spelling mistakes. Here is what I think it should say.

This is a breakout PCB for MCP23017 made with a DIP instead of an SMB. All important pins are on one line so it is stackable on a mainboard. For using multiple breakout boards together A0,A1,A2 are reorganised for easy configuration with jumper pins.

DIL is “dual inline”, DIP is “dual inline package”.

For me, since (at least) Canadian and British English spell “reorganised” as “reorganized”, there should be one more change.

For some reason, your parts are not quite aligned to the main 0.1 in (or 2.54mm) grid. If that was done to assist in getting the traces to “centre” between rows of pins, that is the reason I said I set the grid spacing to half of what I really wanted to use. You set grid spacing (at the end at least) to 0.508mm, which is 0.01in. For something like this, I would have used fractional inch units, just to keep the numbers simpler.

I played with your sketch. Here is my version using your layout and routing, but with a few tweaks to positioning and labels. I adjusted the grid size to different values when working on different sections. 0.1, 0.025, 0.02, 0.021 inch. Since some of the headers are now longer, I replaced the associated part labels with separate silkscreen text parts. That needed adjustments to the other views as well.

MCP23017-BreakOut-Vertical-Stackable-V2.fzz (47.1 KB)

I don’t know if you are trying for an exact match to an existing board, but I would have used 3 headers of 3 pins each for the address configuration. Ground at one end, an address line in the middle, and Vcc at the other end of each header. With a 0.05 or 0.1 inch separation between the headers. Those do not need to stay on the same grid as the stackable headers.

@microMerlin,

Your breadboard setup is indeed much better than the one I had.
Good that this is just my first tryout to make a simple board with Fritzing.

“*your parts are not quite aligned to the main 0.*1” I think that I could better place all real parts first on the board and then freeze them before I start wiring. I did not because I moved parts a few time to check if all wires are connected to pins.

I adjusted the grid size to different values when working on different sections. 0.1, 0.025, 0.02, 0.021 inch”. Does this means that one can say that the parts and the headers should always be aligned to 0.1 inch and one can say that wire should be aligned to another grid metrics. That is nice to know that this is possible. Shall study your “play” work to see how you managed to do that.

status information at the bottom (‘26 of 27 nets routed - 1 connection still to be routed’” Missed that one. I trusted most on the “Design Rule Check” And did not noticed that during the rewiring I lost a connection although one can see that also very clearly in the design. (red dot and rat line) and the message ( gray on red) in the bottom menu line.

I changed the setup op the address block from 3x3 as it was before as I believed I could not wire the between the pins. But maybe if I use very small traces I could manage to get a trace between two pins. Shall give it a try.

Used single pins as the where easier to replace on the board during design. Expected a group function where I could group multiple single pins to one header block. (Maybe there is on but I have not yet found it)

It is a DIP indeed :wink: No idea why I wrote DIL. To late perhaps.
For you I shall change s to z although my spell checker did not complained about it.

Must admit after a few days working with Fritzing that making a good design is less easy as I first thought.

Jan

PS. With smaller rounds around the pins (0,400) , alternate setting and 12 width trace I can make a 3x3 block for A1,A2,A3 where The A’s are in the middles and GND and VCC are at the left and right side.

I often do the same. My process is to unlock the part, drag it, see if any connections have problems (but do not fix them), undo the move (not drag back), lock the part, then fix any problems noticed.

Yes, that is quite possible. Even different areas of the wires at different grid spacing. Even different bend points on a single trace. That is what I did here. The traces were routed to the needed path, then I set the grid spacing to 0.021 to evenly adjust the traces between the DIP package pins, then changed the spacing to 0.025 to adjust the bends at the other end of the same traces near the header row.

Design Rules Check only looks at the parts, traces, and pcb edges. It ignores ratsnest wires, so does not consider that to be a problem.

As you found, with narrow traces and smaller copper pads it is possible to fit between header pin pads. Be careful with that. The drill hole size is defined by the radius of the circle minus half of the thickness of the graphic stroke. So JUST making the circle smaller also makes the hole smaller. To do that properly, you need to reduce both the radius and stroke width (by different amounts).

A variation of that is to use narrow, oblong pads, instead of circular. Try placing an 8x8 LED matrix part (search for “matrix”), and switch it to “narrow” pads. With that pad size and shape, a 24 mil trace will fit between the pads. As long as the trace is centred. It is a bit tricky to set pads like that. It is actually a small circle with a larger oblong laid over top to extend the pad area. The circle is needed to get the drill hole. I do not think any of the standard headers are configured with the narrow pads. That would need a customized part. Which is what I did for the LED matrix parts.

There is no group function. I do not know of any way currently to directly replace multiple individual parts with a single part, and transfer the connections. I think (I have not used it) that a “delete minus” will remove the existing parts leaving the traces, then place the new part, and finally jiggle (move slightly) each of the now “open ended” traces to get them to attach to the new connection point. That needs to be done on each view separately.

“organized” and “organised” are both valid spellings, depending which dictionary the spell checker is using.

Like a lot of things, some practice helps.

This is my final design.
Added three resistors to pull SDA,SCL and RST to low or high.

MCP23017-BreakOut-Vertical-Stackable-V3.fzz (52.2 KB)

Lot of credits to microMerlin for all the good advise I got from him.
Jan

Here are three more versions of that board. These do not have your latest changes to add the resistors, but they get the address configuration headers back to straight lines with the address line in the middle. The first gets enough room by rotating the headers by 40 degrees. The other 2 split the headers a bit, one horizontal at the top, the other vertical down the side. Each makes enough room (one needed a single via) to route the traces without needing the narrow pads or thinner traces. Not staying on the 0.1 inch grid, but that should be fine for the configuration headers.

MCP23017-BreakOut-Vertical-Stackable-V2-hpd-2.fzz (44.8 KB)

MCP23017-BreakOut-Vertical-Stackable-V2-hpd-3.fzz (46.1 KB)

MCP23017-BreakOut-Vertical-Stackable-V2-hpd-4.fzz (46.0 KB)

Think “outside the box”

Hi MicroMelrin,

Nice work, You have been busy today.
For me I was enjoying sailing here in the Netherlands. So I just read you message.
Have seen your designs. Version hpd-2 feels for me as the most logical one as setup on the board is balanced.

Today I discovered that the cheap china made boards I last bought someday back from Amazon got address with on both side ground. So, no way I can use them. Board is out of stock and not available anymore either. Good that I started with my own board.

Jan

Last design V5:

  • Address pins under 45 degrees
  • Board size reduced.

MCP23017-BreakOut-Vertical-Stackable-V5.fzz (55.3 KB)