Die meisten unserer PCB-Designs befinden sich als eine einzelne PCBs unter unseren Altium Designer-Projekten (z. B. .PrjPcb-Datei). Von Zeit zu Zeit verwenden wir für unser Design Varianten mit verschiedenen Bestückungsoptionen. Es kommt nur selten vor, dass wir ein einzelnes Projekt haben, das mehrere PCBs mit verschiedenen Bestückungsoptionen erfordert, aber wenn es geschieht, dann bleiben viele von uns hängen. Allzu oft habe ich erlebt, wie Designer Teile eines Projekts kopieren und einfügen und dann kleinere Variationen am Schaltplan und/oder den PCBs anbringen. Im Allgemeinen ist diese Vorgehensweise akzeptabel, so lange Sie das PCB-Design nicht später aktualisieren müssen. Wie bewältigen Sie die exakte Änderung über beide Projekte hinweg? Wie garantieren Sie, dass diese Änderungen identisch sein werden? Wie oft wird dies vorkommen (z. B. Rev A, B, C usw.)? Dieser Artikel behandelt einen Ansatz für die Verwaltung mehrerer PCB-Designs innerhalb eines einzigen Projekts, der eine zentrale Informationsquelle sicherstellt. Wir werden auch das Beispiel der PCBs aus meinem letzten Artikel Pandemic Prototyping: Building Electronics from your Living Room durchgehen.
Unser Ziel ist es, eine zentrale Informationsquelle innerhalb der Schaltpläne zu verwalten und dennoch Varianten der Leiterplatte selbst routen zu können. In diesem Beispiel habe ich einen einzigen Schaltplan, jedoch mit zwei PCBs, erstellt:
Die Varianten sind oben zu sehen. Ich habe zwei Varianten für meinen Kiln Controller erstellt: eine für den Raspberry Pi (Standardgröße) und die andere für den Raspberry Pi Zero. Ich begann das Routing mit dem Raspberry Pi Zero HAT-Design, da die Standardgröße im Wesentlichen eine größere Version von Zero ist. Nach Abschluss des Routing kopierte ich das ganze PCB-Design und fügte es in die PCB der Standardgröße ein (PiHat – Full.PcbDoc). Es waren einige geringfügige Anpassungen erforderlich (z. B. Ausschnitte, Polygonflächen, Leiterplattenumrisslinien usw.), aber die Bauteile und Leiterbahnen blieben gleich.
In meinem Schaltplan habe ich alle Bauteile, die in beiden Designs vorhanden sind, mit einbezogen (gleich, ob sie bestückt waren oder nicht):
Mir wurde klar, dass ich eine Menge zusätzlichen Platz in meinem Raspberry PiHat der Standardgröße hatte. Deshalb beschloss ich, den AC-DC-Wandler in die Leiterplatte einzubauen. Das Problem ist natürlich, dass durch das Hinzufügen des Wandlers zum Schaltplan er in das PCB für die kleinere PiHat-Leiterplatte importiert wird. Dies möchten wir nicht tun und deshalb habe ich ihn absichtlich von meinem PCB Doc ausgeschlossen:
Da die Bauteile nicht im Design enthalten sind, werden sie keine „unrouted“ DRC-Fehler erzeugen. Wir möchten auch DNI (do not install)-Optionen zu unseren Varianten hinzufügen, und zwar wie folgt:
Um Verwirrung zu vermeiden, habe ich den DC-Steckverbinder für die Standardgröße vollständig entfernt (da wir einen AC-Eingang verwenden) und umgekehrt auch für die Pi-Zero-Version.
Jetzt, da wir unseren Schaltplan entwickelt, die PCBs geroutet und die Bestückungsoptionen konfiguriert haben, müssen wir die Output Job-Dateien einrichten. Diese Output Job-Dateien generieren die erforderlichen Fertigungs- und Baugruppenpakete für den Bau aller PCBs mit ihren entsprechenden Bestückungsoptionen. Dies ist ein entscheidender Schritt, der oft übersehen wird, was bei der späteren Erstellung eines Pakets für den Anbieter enorme Probleme verursachen kann.
In diesem Beispiel haben wir für jede Leiterplatte eine separate Output Job-Datei. Der Einfachheit halber gibt es eine einzige Output Job-Datei für die Fertigung als auch für die Montage (was normalerweise in zwei getrennte .output-Dateien in den Beispielprojekten von Altium Designer aufgeteilt wird). Wie Sie in den Abbildungen 6 und 7 sehen können, sind die .outjob-Dateien identisch mit Ausnahme der Variantenauswahl und der PcbDoc-Auswahl. Für mehrere Bestückungsoptionen verwenden wir die im oberen Teil des Fensters angegebenen Variantenoptionen. Wir generieren ein Paket allein für die Leiterplatte, an der wir für die Bestückung der angegebenen PCBs interessiert sind. Beispiel: Für die „Pi“-Variante (für die Bestückung einer Raspberry PiHat der Standardgröße) wollen wir die PCB-Datei „PiHat – Full“ (d. h. in normaler Größe) auswählen. Wir sind nicht daran interessiert, Fertigungs- und Montagepakete für die Raspberry Pi Zero HAT zu generieren. Das Gleiche gilt für die kleinere Raspberry Pi (Zero) HAT. Wir erstellen die Dateien, die für die Fertigung und die Montage nur für die Leiterplatte, an der wir interessiert sind, erforderlich sind.
Um eine Wiederverwendung zu ermöglichen, setzen wir schließlich spezielle Strings in Folder Structure Settings ein und zwar wie folgt:
Dies ermöglicht uns, Unterordner automatisch basierend auf dem Namen der Variante zu erstellen. Wenn sich der Name der Variante ändert, so ändern sich auch die Namen der Ordner.
Es gibt noch weitere Möglichkeiten, diese Output-Job-Dateien mithilfe von Skripts und auf andere Weise zu verkürzen. Dies liegt jedoch außerhalb des Umfangs dieses Artikels. Der Zweck dieses Artikels ist es, zu verdeutlichen, wie dies möglich ist und den Lesern eine der vielen Möglichkeiten zu zeigen, wie sie dies einrichten können.
Dieser Artikel beschreibt die Herausforderungen, mit denen Designer bei der Verwaltung mehrerer PCBs auf der Basis einer zentralen Informationsquelle, konfrontiert sind. Anstatt mehrere Kopien eines Projekts zu erstellen und zu bewältigen, verwalten wir ein einziges PCB-Projekt und führen das Design unter Verwendung von Output-Job-Konfigurationen für mehrere PCBs durch. Mithilfe dieser Konfigurationen können wir mehrere PcbDoc-Dateien innerhalb des Projekts behalten, jedoch Pakete speziell für diese Leiterplatten generieren. Diese Methode ermöglicht es Entwicklern, bei der Aktualisierung eines einzelnen Projekts, das mehrere PCBs beliefert, Zeit und Geld zu sparen.
Würden Sie gerne mehr darüber erfahren, wie Altium Sie bei Ihrem nächsten PCB-Design unterstützen kann? Sprechen Sie mit einem Experten von Altium und erfahren Sie mehr darüber, wie Sie Designentscheidungen einfach und sicher treffen können.