Forum: Platinen KiCAD: 20 identische Sub-Schaltungen. Wie macht man das im Schaltplan und im Layout?


von Jens .. (eltronno)


Lesenswert?

Moin liebe Freunde des FR4,

ich arbeite gerade an einer Platine mit 20 ADC-Kanälen. D.h. 20 
identische Sub-Schaltungen im Schaltplan mit jeweils unterschiedlicher 
Führung der Ein- und Ausgänge.

Im Schaltplan war das kein Problem:
- Ersten Kanal entworfen
- Mit 'Copy Block' den Kanal vervielfältigt
- Netznamen der Eingänge und Ausgänge angepasst
- Annotation laufen lassen

Meine A3-Schaltplanseite ist nun vollgepackt mit den 20 Kanälen.

1. Frage: Wie kann man diese Redundanz im Schaltplan loswerden und 
trotzdem die komplette Netzliste und Bauteil-Referenzen in KiCAD 
erhalten?
(Natürlich könnte ich für den menschlichen Leser den Kanal nur einmal im 
Schaltplan zeichnen und ein entsprechendes Kommentar schreiben inkl. 
Angabe der Nummerierung der Bauteil-Referenzen, Ein- und Ausgänge.)


2. Frage: Wie erstellt man so ein Layout ähnlich dem Copy Block Ansatz 
wie ich es im Schaltplan gemacht habe?

Erster Ansatz:
- Netzliste komplett Einlesen
- Pcbnew haut alle Bauteile auf einen Haufen. Diese kann man zwar 
flächig verteilen lassen oder gleich platzieren lassen aber das ergibt 
ein Konvolut aus allen Bauteilen der 20 Kanäle ohne Anordnung gemäß der 
Kanäle.
- Man müsste also jedes Bauteil im kompletten Haufen suchen und für 
jeden Kanal erneut anordnen
- Copy Block ist dann nur noch bei den Tracks und Planes verwendbar.

Zweiter Ansatz
- Im Schaltplan alle bis auf den ersten Kanal löschen und Netzliste neu 
erstellen
- In Pcbnew Netzliste einlesen und den ersten Kanal fertig designen
- Ersten Kanal mit Copy Block im Schaltplan vervielfältigen
- Ersten Kanal mit Copy Block in Pcbnew vervielfältigen
- Annotation im Schaltplan laufen lassen sowie Netzliste neu erstellen
- In Pcbnew, für alle Kanäle ausser dem ersten, jede Bauteil-Referenz 
manuell umbenennen, so dass die Referenzen jedes Kanal mit denen im 
Schaltplan übereinstimmen
- Erst jetzt in Pcbnew die Netzliste erneut einlesen


Nachteil Ansatz 1: Alle Bauteile müssten manuell platziert werden. 
Ansatz gestrichen!

Nachteil Ansatz 2: Alle Bauteile müssten manuell referenziert werden. 
Das ist zwar auch nervig aber schon viel besser als Ansatz 1.

Was sagt Ihr dazu? Was wäre Euer Ansatz?

Gruß
Jens

von Bernd W. (berndwiebus) Benutzerseite


Lesenswert?

Hallo Jens.

Jens .. schrieb:

> Im Schaltplan war das kein Problem:
> - Ersten Kanal entworfen
> - Mit 'Copy Block' den Kanal vervielfältigt
> - Netznamen der Eingänge und Ausgänge angepasst
> - Annotation laufen lassen

Bessere Idee: Den Kanal in einen Subschaltplan einfügen, und den 
Subschaltplan entweder mehrmals einfügen, oder Kopieren (als Datei) und 
die Kopien als Subschaltplan einfügen.


>
> Meine A3-Schaltplanseite ist nun vollgepackt mit den 20 Kanälen.
>

Darum macht man ja Subschaltpläne/hierarschiche Schaltpläne. ;O)

> 1. Frage: Wie kann man diese Redundanz im Schaltplan loswerden und
> trotzdem die komplette Netzliste und Bauteil-Referenzen in KiCAD
> erhalten?

Darum macht man ja Subschaltpläne/hierarschiche Schaltpläne. ;O)

Näheres ist hier beschrieben: 
https://www.mikrocontroller.net/wikifiles/7/79/HierarchischeSchaltplaeneAlsBausteineInKicad_RevC_23Dec2013.pdf


>
> 2. Frage: Wie erstellt man so ein Layout ähnlich dem Copy Block Ansatz
> wie ich es im Schaltplan gemacht habe?
>
> Erster Ansatz:
> - Netzliste komplett Einlesen
> - Pcbnew haut alle Bauteile auf einen Haufen. Diese kann man zwar
> flächig verteilen lassen oder gleich platzieren lassen aber das ergibt
> ein Konvolut aus allen Bauteilen der 20 Kanäle ohne Anordnung gemäß der
> Kanäle.
> - Man müsste also jedes Bauteil im kompletten Haufen suchen und für
> jeden Kanal erneut anordnen

Nein. n PCBnew "T" drücken. Es poppt ein Fenster auf, wo man die 
Bauteilreferenz (den Namen) eingeben kann. Und schon hängt das Bauteil 
zum Bewegen am Zeiger. Die Bedienung ist letztlich genauso wie das "m" 
und die Komandozeile in Eagle.

Noch ein Ansatz:
ersten Kanal in PCBnew erstellen > Block Copy past > von Hand neue 
Referenzen vergeben.

noch einer: ersten kanal auf separater Platine layouten, und dann per 
append board einfügen....von Hand neue Referenzen vergeben.

Mit freundlichem Gruß:Bernd Wiebus alias dl1eic
http://www.l02.de

von Jens .. (eltronno)


Lesenswert?

Hallo Bernd,

vielen Dank für Deine Antwort. Ich hab da noch ein Frage bzgl. der 
Skalierbarkeit Deines Vorschlags.

Bernd W. schrieb:
>> 1. Frage: Wie kann man diese Redundanz im Schaltplan loswerden und
>> trotzdem die komplette Netzliste und Bauteil-Referenzen in KiCAD
>> erhalten?
>
> Darum macht man ja Subschaltpläne/hierarschiche Schaltpläne. ;O)
>
> Näheres ist hier beschrieben:
> 
https://www.mikrocontroller.net/wikifiles/7/79/HierarchischeSchaltplaeneAlsBausteineInKicad_RevC_23Dec2013.pdf

Danke für die gute Erklärung, das ist sehr hilfreich für mich. Aber zu 
meiner Frage bzgl. der Redundanz sind Subschaltpläne/hierarschiche 
Schaltpläne doch IMHO keine Lösung. Es sind dann halt 20 
Subschaltplan-Blöcke anstatt 20 komplette Schaltungen. Das ist zwar 
definitiv ordentlicher und übersichtlicher aber die Lösung ist m.E. 
nicht skalierbar. Nehmen wir mal an, ich müsste 200 anstatt 20 Kanäle 
unterbringen. Wie würdest Du da vorgehen? Diese Problemstellung klingt 
so, als müssten diese schon viele vor mir gehabt haben.

Für mich wäre am logischsten: Die Schaltung einmal komplett zeichnen und 
im Kommentar daneben eine Formel für die Bauteile definieren, so dass 
man sich jede Referenz anhand der Kanalnummer ausrechnen kann... Quasi 
wie bei Iterationen einer for-Schleife beim Programmieren. DAS wäre 
keine Redundanz ...wie man sieht bin ich bin mit Softwareentwicklung 
mehr vertraut als mit ECAD. :-)

> Noch ein Ansatz:
> ersten Kanal in PCBnew erstellen > Block Copy past > von Hand neue
> Referenzen vergeben.
>
> noch einer: ersten kanal auf separater Platine layouten, und dann per
> append board einfügen....von Hand neue Referenzen vergeben.

Ich erkenne hier prinzipiell keinen Unterschied zu meinem zweitem 
Ansatz. Vielleicht war mein Posting auch zu lang und Du hast nicht alles 
gelesen :-) Fazit ist, man kommt nicht um die manuelle Vergabe der 
Referenzen herum?

Bei 20 Kanälen mit je 12 Bauteilen heisst das für mich 228 mal manuell 
Referenzieren. OK, kann ich machen.

Und nun wieder mein fiktives Beispiel von oben mit den 200 Kanälen.... 
2338 mal manuell Referenzieren? :-/


Gruß
Jens

von Bernd W. (berndwiebus) Benutzerseite


Lesenswert?

Hallo Jens.

Jens .. schrieb:
> Hallo Bernd,

> Nehmen wir mal an, ich müsste 200 anstatt 20 Kanäle
> unterbringen. Wie würdest Du da vorgehen? Diese Problemstellung klingt
> so, als müssten diese schon viele vor mir gehabt haben.

Naja. Bei solchen Schaltungen ist es im dann eher üblich, tatsächlich 
statt einer Riesenschaltung auf einer Platine dann auch komplette 
Subplatinen zu verwenden. Erleichtert auch Reperatur und Fehlersuche.

In Deinem Beispiel würde man z.B 10 gruppige Platinen aufbauen, die in 
Backplanes stecken, die 20 Steckplätze haben. Dann hätte man die 200 
Gruppen beisammen. Du würdest aber nur ein Layout für die Steckkarte 
machen, und eins für die Backplane und natürlich noch Stromversorgung 
und dass, was diese Gruppen ansprechen soll. z.B. Rechner (der auf einer 
extra Steckkarte sitzen könnte, aber nicht muss) oder ein 
Netzwerkinterface, das ebenfalls auf einer extra Steckkarte aufgebaut 
sein könnte.

> Für mich wäre am logischsten: Die Schaltung einmal komplett zeichnen und
> im Kommentar daneben eine Formel für die Bauteile definieren, so dass
> man sich jede Referenz anhand der Kanalnummer ausrechnen kann... Quasi
> wie bei Iterationen einer for-Schleife beim Programmieren. DAS wäre
> keine Redundanz ...wie man sieht bin ich bin mit Softwareentwicklung
> mehr vertraut als mit ECAD. :-)

Ja. Aber da in der Realität alle Bauteile einer solchen Gruppe 
tatsächlich vorhanden sind (auch da gibt es Ausnahmen, z.B. 
Bestückungsvarianten), benötigen sie echten Platz auf der Platine. Und 
Du solltest Dir, auch wenn alle Gruppen gleich aufgebaut sind, trozdem 
ansehen, wie sie ALLE ins Gehäuse passen. Es langt ja eine Ecke von z.B. 
einem Netzteil, einer anderen Platine oder die Mutter für die 
Verschraubung eines Tragegriffes, die mit einem einzelnen Bauteil deiner 
Platine kollidiert, um Ärger zu haben. Möglich, dass Du aus Platz oder 
Temperaturgründen einzelne Gruppen anders Layouten musst. D.h. für das 
Layout selber kannst Du das nicht machen, da solltest Du wirklich alles 
"plazieren".

Im Schaltplan sieht das möglicherweise anders aus. Schaltpläne sind viel 
abstrakter. Aber nicht jeder hat einen Viewer oder durchsuchbares PDF, 
um sich den Schaltplan anzusehen. Leider, leider, ist es immer noch der 
Fall, dass Du mit einem klassischen Papierschaltplan auf Fehlersuche und 
Reparatur bist (und für Notfälle solltest Du diese Option auch immer 
noch haben). In dem Falle ist es besser, auch im Schaltplan die 
Komponenten explizit dargestellt zu bekommen, statt sie sich selber 
rekursiv aus einer Formel zu überlegen. ;O)
Das gilt auch für PDF oder andere grafische Formate.

Die Netzliste ist eine andere Nummer.....

Es gibt allerdings nach meiner Ansichts bessere Verfahren, um Bauteile 
in Unterschaltplänen zu Referenzieren. Und zwar nicht rein über Nummern, 
sondern über Prefixe und Suffixe, die den speziellen Unterschaltplan
direkt beim Namen nennen. Wenn es Menschen lesen sollen, ist ausser in 
ganz einfach gestrickten Fällen klarlesbarer Text oder eine Kombination 
aus klarlesbarem Text und Zahlen besser als nur Zahlen.

>
>> Noch ein Ansatz:
>> ersten Kanal in PCBnew erstellen > Block Copy past > von Hand neue
>> Referenzen vergeben.
>>
>> noch einer: ersten kanal auf separater Platine layouten, und dann per
>> append board einfügen....von Hand neue Referenzen vergeben.
>
> Ich erkenne hier prinzipiell keinen Unterschied zu meinem zweitem
> Ansatz. Vielleicht war mein Posting auch zu lang und Du hast nicht alles
> gelesen :-) Fazit ist, man kommt nicht um die manuelle Vergabe der
> Referenzen herum?

Richtig. Er ist nicht prinzipiell anders, er nutzt lediglich andere 
Methoden, wie zum einen copy¬paste, und zum anderen die "Append Board"
Funktion.
Das manuelle Vergeben der Referenz bleibt leider.


>
> Bei 20 Kanälen mit je 12 Bauteilen heisst das für mich 228 mal manuell
> Referenzieren. OK, kann ich machen.
>
> Und nun wieder mein fiktives Beispiel von oben mit den 200 Kanälen....
> 2338 mal manuell Referenzieren? :-/

Praktisch wirst Du nur sehr selten Platinen finden, wo komplette 
Baugruppen mehr als 16-20 mal auftreten. Aber es gibt halt doch so 
Fälle, und dann hast Du recht.

Auf der anderen Seite: Die Dateiformate von KiCad sind textbasiert und 
offen. Die Boarddaten enthalten sogar in erster Linie  S-Expressions. 
Was spricht dagegen, Dir ein Skript einfallen zu lassen, dass die 
Referenzierung macht?

> ...wie man sieht bin ich bin mit Softwareentwicklung
> mehr vertraut als mit ECAD. :-)

Daher wirst Du das vermutlich besser machen als ich es könnte. Beispiele 
für so etwas findest Du hier: 
https://www.mikrocontroller.net/articles/KiCAD#Tools und ein konkretes 
Beispiel: Beitrag "Re: KiCAD: Baugruppen im PcB editor getrennt gruppieren"

Mit freundlichem Gruß: Bernd Wiebus alias dl1eic
http://www.l02.de

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.