1
\$\begingroup\$

Is there a way to create a library component for another PCB module in Altium?

For example, let's say that I want to have a footprint that accepts DRV8825 motor driver module (from the picture below).

DRV8825 Motor Driver

In order to accept this module on my PCB, I would just need to have two female 8-pin headers in my schematic and the PCB layout. This is very simple approach but makes design phase way more difficult because you have to manually ensure proper spacing between two headers and also that they are rotated/oriented properly, both in schematic and PCB layout.

Is there a way to create a component that has both schematic and footprint properly defined but also when generating BOM and pick and place files, it would have two BOM entries (for 2x 8-pin female header) and also have two pick and place entries for each header?

I guess I could do this manually (or through external scripting) but it would be really nice to be able to do this from within Altium and not have to run scripts after each export.

I am hoping that there is an "industry standard" solution to this problem since companies like Adafruit, Sparkfun etc make designs like this every day so hopefully there is an elegant and easy solution to this issue.

Ideally the solution should be something that is good to go ie. you can generate output files and send them to the fab house and it's manufacturable without questions or additional notes about the "weird" multi part module.

\$\endgroup\$
5
  • \$\begingroup\$ Do you know how to make custom schematic components in Altium? \$\endgroup\$
    – qrk
    Aug 11 at 15:04
  • 1
    \$\begingroup\$ This link will take you, with a valid license, to an excellent (and official) Altium forum: https://forum.live.altium.com/ \$\endgroup\$ Aug 11 at 15:16
  • 1
    \$\begingroup\$ There may be some confusion here. The title asks how to create a multi-part component, which in Altium parlance means to create a schematic symbol that has multiple parts (e.g. a quad op-amp package but with four symbols that can be positioned separately). The question body, however, asks how to create a component (whether it is multi-part doesn't matter) that has two or more physical placements of components. In the former case, this is easily addressed by Altium documentation. In the latter case, it is not something that I believe Altium covers specifically. \$\endgroup\$
    – JYelton
    Aug 11 at 15:26
  • \$\begingroup\$ Frame challenge: you don't need a multi-part footprint consisting of 2 separate headers. You just need a single footprint with the correct pin spacing which you can easily make yourself. In fact I'd be surprised if there isn't already a standard footprint which would work - something like a 'wide' DIP-16. \$\endgroup\$
    – brhans
    Aug 11 at 16:06
  • \$\begingroup\$ A personal general guideline about PCBA BoMs: they should include everything that is soldered to the circuit board. This wouldn't therefore include the module but, you'd have a higher level BoM that called up the PCB BoM and the module. \$\endgroup\$
    – Andy aka
    Aug 11 at 16:50

3 Answers 3

1
\$\begingroup\$

I would just consider that module as a single component, and design a suitable footprint for that component.

If you buy that module as a pre-made device, just treat it as you would an IC or other pre-made device.

\$\endgroup\$
2
  • \$\begingroup\$ Yep, this works as long as OP is placing the assembled module and direct-soldering it; and not individual header pins/sockets to accept the module. In other words, say with two female headers that are placed onto the PCB during assembly to create a socket for the module, how would one go about making the combination of those connectors a single "supercomponent," but maintain the correct entries in the BOM and pick and place files for the individual connectors? \$\endgroup\$
    – JYelton
    Aug 11 at 15:47
  • \$\begingroup\$ Thank you for the answer but this is not what I'm looking for. Question is how to make a footprint that accepts this module that consists of two individual 8x female headers. And then have them properly show up in the BOM and Pick and Place without making schematic and pcb phase too cumbersome (manually maintaining pinout, spacing, rotation etc) \$\endgroup\$
    – Calculon
    Aug 11 at 18:17
1
\$\begingroup\$

Altium added a multi-board file type for that purpose. It isn't perfect but might work fine for your need.

Most likely, what you will need is two PCB projects since you have two PCBs. The daughter board get designed with an interface. This daughterboard is a component, just like a resistor or a chip with that exact interface. When you want to add it to your motherboard, you can use the component "daughters board". Its footprint will be based on the header position and you can import the 3D of your other PCB. When you will place it, you will see both.

In the BOM, you will get a line requiring one daughter board. Since they might not be produce at the same time it can be convenient.

If the PCB isn't your design, you can pretty much see it as a through-hole chip (DIP style)! Then, you should create a component (like you would do with any other IC) with a symbol that fits its interface and a footprint that matches the whole chip. To be able to place components (like SMD capacitor) under it, it is critical to have the 3D. Most DIY PCB 3D model can be found online easily. If not, creating it can be done too.

Does that make sense for your application?

\$\endgroup\$
4
  • \$\begingroup\$ This may work fine when the OP has access or controls the design of both PCBs; but with pre-made modules (e.g. Adafruit, etc.) it wouldn't be practical or possible to recreate or possess that PCB design. Or are you saying to simply create a "dummy" PCB that has the appropriate connectors on it, matching the pre-made module? \$\endgroup\$
    – JYelton
    Aug 11 at 15:30
  • \$\begingroup\$ Indeed, If the PCB isn't own by his design, it's even simpler, it actually is pretty much a trough hole chip (DIP style)! Then, you should simply create a component with a symbol that fits it's interface and a footprint that matches the whole chip. To be able to place components under it, it is critical to have the 3D. Most DIY PCB 3D model can be found online easily. If, not creating it can be done too. \$\endgroup\$
    – Julien
    Aug 11 at 15:34
  • 1
    \$\begingroup\$ The problem with this approach, at least that I've had, is that the BOM and pick and place files list the (let's call it a "supercomponent" ) with a single placement, but during pick and place at the fabricator, they need an entry for each connector or physical component. For example, a Raspberry Pi Compute Module 4 requires two Hirose DF40C-100DS-0.4V(51) connectors, the "supercomponent" is a convenient way to place and maintain correct spacing, but it results in a BOM and pick and place file that requires some annoying editing. \$\endgroup\$
    – JYelton
    Aug 11 at 15:40
  • \$\begingroup\$ Fair, that is indeed an issue. If you have a connector, or in that case two, between your daughter board and your motherboard, indeed, it will be a bit trickier. Usually, when I faced that issue they were prototype boards so I just didn't go with any trouble and when we went in prod, they were directly solder on. The one time I had this issue, the way we solved it was by defining the second board as an assembly of 3 components. (2 connectors and 1 PCB) The part in Altium was the part number of the assembly. It isn't neat, but for the few occurrence, it did work fine. \$\endgroup\$
    – Julien
    Aug 11 at 15:52
0
\$\begingroup\$

I have found one solution that works for what I am trying to do. It is not ideal but I don't think that with the features that are available in the Altium today I can get a better result, although I would love to hear more suggestions.

Step 0

Create a "helper" schematic component with the footprint that only has origin and assembly/reference mark.

Step 1

On the schematic document, place the normal schematic symbol for the module. Mark the module as "Standard No BOM". This will import the full module footprint onto the PCB design but will not place any items on the BOM.

Step 2

Add two "helper" schematic symbols and assign desired Mfg/Mfg PN and any other BOM data. In this case it would be a 8-pin header.

Step 3

Import everything into PCB design. You should have three components. One is your original module footprint. The other two are origin points from the "helper" component.

Step 4 - (The ugly, one-time)

Align the two "helper" PCB origin points with the holes of the actual module. Align them so that they indicate where each pin #1 of the header should be placed.

Select all three components on the PCB (two "helper" parts and the module). Right click and chose "Unions -> Create Union from selected objects"

Now all three parts are locked together and moving/rotating any of them will keep everything in sync.

Conclusion

While this is not an ideal solution, after trying several different approaches I think this is the one I will continue to use in the future.

Some of the benefits are

  • You can re-use your existing schematic components for modules/parts. Just add the "helper" components where needed.
  • You can re-use the helper component all over your design and only change the BOM items (ie. mfg, mfg pn etc)
  • When exporting BOM, you can have option to export for assembly with headers only or headers + module
  • Pick and place file will have correct information and correct origin
  • Assembly drawings can automatically have additional information or notes if needed

But there are also some obvious drawbacks:

  • Step 4 where component need to be aligned and linked manually, although it's one-time action, it is still not ideal
  • We have to rely on Altium not breaking unions
  • Depending on how many modules we have on the design, adding, aligning and "linking" helper components can be tedious

Bottom line is that now I have used this method (albeit just once so far) with a "generic" PCB manufacturer and there was no confusion. They produced the PCB correctly and also purchased and populated the boards correctly.

I have not tested it yet but I guess that if I wanted them to include the module to make a "kit", they could easily do that and on my end I would just have to mark the module "Standard" instead of "Standard No BOM" and everything else remains the same.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.