Questions about a Mezzanine Implementation in KiCAD

See update above please.

you may consider to use kicad StepUp to create the 3D model of your daughter board from the kicad 3D itself



you can align the daughter board to its footprint with StepUp tools



Maurice

1 Like

yes, anything that is on Edge.Cuts in a footprint will be changed into some other ‘harmless’ layer when you open a footprint in the FP editor… to get the layer to Edge.Cuts you just modify the kicad_mod file with a text editor.
But it’s not advised.

Yeah, for that reason the mounting holes in the motherboard footprint could be just markers instead of the real thing (PTH/NPTH)… pro: one can change type on the fly, con: one can screw them up
Same for the daughterboard footprint…
Really depends on how you feel about it and what you prefer… more risk/modificability or less risk/safer.

If you stick with this scheme:

  • board footprint carries:
  • it’s outline (I use Dwgs.User)
  • mounting holes (PTH/NPTH or markers on Cmts.User)
  • connector markers (I use Cmts.User)
  • any other information/markers (I use Dwgs/Cmts.User)

You will be able to use any board footprint as either mother or daughter board and the important information will be handed through without any further work to keep stuff in sync and a low chance to screw things up.

1 Like

Yes Maurice, thanks for the repost, in fact when I referred to a “interim solution” I had your posts in mind :).

I do a lot of embedded C/C++ and you can always just run a build and see what happens. I do a lot of code refactoring and am in constant recompile mode and then setup units tests for all modules. You just don’t have that with a physical product unless you have some full block p-spice model with all of the parts model (both physical and electrical which I do not). 3D modeling capability is a must; thanks for contributing.

At the moment I’m under the gun and need to defer more advanced 3D but it is clear that the 3D rendering are absolutely a game changer when trying to be through a design. The daughter board is a purchased product so I’m not doing that layout at the moment either and do not want to have to create a model of it.

Jim

1 Like

Thanks, I actually prefer to have the physical properties of the holes in the various footprints even if it is duplicated in another footprint. Then the layout only carries the Edge-Cuts. Maybe it is for no other reason than I know I have the exact same thing to alighn between the various footprints instead of worrying if a graphics is the same as a PTH or NPTH.

I played around with the 3D settings in the FP editor and you can have multiple ,wrl files all with different orientations specific to each wrl rendering.

Maybe I can take a wrl at creating a daughterboard rendered image out of composite wrl’s that would mimic the daughter board placement with all of its connectors?

PcbNew only renders one board for the layout ( I’m guessing )based on the Edge.Cuts but for a simple rectangular daughter board that can be done of the canned shapes scaled to the correct size.

BTW I found this site and had started to download the project thinking I would not get an answer for days. I’m not going to start a new project but I will open it up to see how it is setup.

this is strange… have you tried to export DXF in R12 version? … this is much more compatible with kicad…

here the mezza.dxf mezza.step mezza.wrl mezza.kicad_mod coming from mezza.kicad_pcb converted with Stepup and FreeCAD
I have not added connectors (I don’t have the STEP model but it would be easily to find at some online libs)
mezza.7z (21.9 KB)

Yes I recalled such limitations, but no time now to install another program just to locate some holes. I’m focusing now on how to store the location info (which I have in a dimensioned graphic file) into my project with hopefully a view to reuse.

I have been playing around with the template file from 96boards.org

This looks like it will be useful. I’m wondering if I could not keep an entire reference circuit block design library in a common template file and just delete the stuff you don’t want. Even better would be to have a program select with checkboxes so that you just select what to include from the standard circuit block library.

From what I see with the template they have located the connector on the board which through the netlist is already connected to the schematic.For a single connector design this is kind of the degenerate case where the location doesn’t matter nearly ass much as having multiple mezzanine connectors that have to all align.

The other great thing is many of the common arduino boards are already in the template files. uno,nano,mini, etc.

Maui, You are really being persuasive:blush:

EDIT:
I had FreeCAD installed after reading some of the posts but could not find anyway to change the ellipses. I then downloaded LibreCAD and did a save as R12 and then imported into KiCAD. Ironically I got the mounting holes but none of the connector info which is really what I was missing from the mechanical drawing I already had.

Anyway, I tried, will have to sort this later.

The DXF import capability in KiCad does not support DXF
features like POLYLINES and ELLIPSIS;
any POLYLINES need to be split (Exploded) and your DXF has to be saved in R12 version/format
Anyway if you upload the DXF I will have a look… :wink:

Thanks for the extra effort; as mentioned above I did use LibraCAD to save in a R12 format and I then still lost pin graphics. As it turns out I don’t need them and the ones I do need are now located in my layout (as long as I don’t move them). I have pushed on now back to the layout. I’ll just have to get back to this later.

This is kind of an interim solution anyway, I was mainly looking for ways to locate mounting holes in my daughterboard footprint so I can’t move the connector holes without shifting the entire footprint. Right now I can have my daughterboard footprint well placed and inadvertently move one of the correctors(because they are all separate). I’m using some graphics now as Joan had used above but I don’t really like it.

Making the connector references electrical (PTH) causes schematic problems (they have to be on the schematic) and I’m still not absolutely sure that having a NPTH on top of a NPTH is a good idea and I don’t think having a NPTH on top of a PTH is very good either.

EDIT: I reread your comments and the “EXPLODE” is another step separate from the save as R12? Again I’m not familiar at all with these CAD packages.

In LibreCAD select i.e. ellipsis and explode it (it is an option in the Modify menu) then export w R12 version

Call me old school, but I just used a pen and paper and noted down the X, and Y co-ords of the connectors in the first PCB. I had 2 connectors to line up. When I did the next schematic, and export netlist to PCB, and set the 2 connectors to the correct rotation, and set the X and Y co-ords the same as the previous PCB. I then built the rest of the PCB around them locking them in place. Getting the edge.cuts the same was not the highest priority, but I could do the same with that or import the DXF, which has worked well so far.
The PCB’s actually stacked when I had them made. Kicad has been nice to me.

I’ve usually just done this as a footprint for the connector and mounting holes with a few tics on the silkscreen layer to show suggested board edges. That way you can make daughter-boards that aren’t full size if needed.

I guess it almost goes without saying that a manual process you describe would work if you are extremely careful. In this case extremely careful means taking an inordinate amount of time to check and recheck after every time you think you are at a final till you eventually forget and make a mistake and invalidate the whole PCB design without even knowing it.

Not having to be extremely careful is the objective. Being able to simply check one index on the layout and be sure that the entire mezzanine footprint is locked is what this question is about. Your manual method obviously does not do that.

In my case I have a daughter board footprint is that relatively complex (4 mounting holes and 7-8 fine pitch connectors). I want a method to insure that following a layout of the main board, that I had not inadvertently shifted one of the element of the daughterboard footprint. It would appear that making all elements of the daughterboard a single footprint somewhat is required so that you literally have to go into the footprint editor to alter the locked relationship and you can not do that in the layout.

From here there are various implications as to exactly how to incorporate the various elements with symbologies seeming to be the most straightforward.

Importing the DXF files has challenges, but in effect having the mezzanine footprint in a single a graphics layer seems to be the easiest. At this point I’m only using 4 of those 7-8 connectors so hopefully I can just be careful and place the foot prints over the graphics and keep it aligned.

@midworld08
this is a good method for simple mechanical situations… but if you try to have a 3D module of your daughter board, next time you will not come back :smiley:
The best of creating a 3D model of your daughter board is that, after fist attempt, you will find that this method is really fast and reliable…
Typically you need just the edges with mounting holes and connector positions…
if you have a dxf then everything can be just fast:

  1. import dxf in module editor in Front Silk to have the margin dimensions and connector positions; add mounting holes where needed and save it as a kicad footprint module; that will be used in your board to position the daughter board where you need it
  2. create a new pcb board importing again the dxf but this time assign the layer to Edge; if your dxf is good you could see your pcb in 3D-viewer; manually add to this pcb the connector that are needed for mechanical purposes and save it
  3. open the kicad_pcb board in kicad StepUp and save the STEP and wrl 3D model of the populated daughter board (you will need 3D STEP models of your connectors)
  4. open the footprint of the daughter board with kicad StepUp, import the 3D model of the daughter board itself and visually align it (if needed) to the footprint; save the updated and aligned 3D model again to STEP and wrl.
  5. place your daughter board in your pcb design and see in 3D-viewer the 3D as a daughter model of your design… and if you move it all the connectrs will follow the footprint :smiley:
    I know that it seems a quite complex process, but when you do it ones, next time will be so easy compared to all the checking needed for a manual 3D manipulation, that you will not come back IMO to old way; at least that was for me :smiley:
    @posplayr if you send me the DXF I could convert it to the daughter footprint and board …
    PS I used this method to create the 3D model of the crazyflie board adding the motor holder, motors, propellers and shield obtaining this result:
    https://cdn.hackaday.io/images/7537561443908546062.png

Maurice

Thanks, I know I have more work to do this is a controlled way. I’m back in BOM He## now and it is the Digkey website causing the frustration.

Thanks, I’m hoping by morning I’ll wake up and most of it will be over; like a bad dream.:cry:

@posplayr
I don’t see how you have to recheck? Once the connectors are in the same location and you lock them there they aren’t going to move, and you don’t have to recheck them. I’m working on a 6 connector version now. The motherboard PCB I copied across into the daughter board folder. I renamed it, then opened it, removed all the tracks, and components not used in the daughter board schematic, then imported the schematic net list, job done - well almost the schematic is not finished yet. I’m not saying its superior, but its not slow, and does not require rechecking once foot prints are locked in position. It’s also simple and does not require the use of other software packages.
Its exactly like using the new project from template. The rPi, or Arduino PCB footprint is done for you in the right locations, and they are locked already so you can’t move them, unless you stuff up a netlist import…but that’s always going to stuff things up.
@maui
I do admit that Stepup looks good, and I hope to get some time soon and get it running, as I’ve not had much luck with using mesh labs and getting the IGES/STL to be the correct size when I import it into Inventor. I do think you are correct its a far superior way to work to check interface and I love working in 3D, as all my PCB’s go into cramped areas. So you’ll have another follower soon…
Anyway good thread its helped with my work flow…

1 Like

Well I’m glad I posted and fumbled around. You have inadvertently answered my question. There is an option in the footprint properties to lock footprint (but you knew that) which solves the problem I was trying to address.:grinning:

I had looked at the mezzanine projects before but did not know to look for locked down properties in the footprints. I assumed they would move like anything else except they are locked which means they can’t move.

I see now that all of these mezzanine examples are what I need to do. I just need to understand all the settings better.

Thanks for persisting with me.