Howto Anleitung zum Erstellen und Einbinden eines Subcircuits

RudiS

Absoluter Profi
Member
Landesflagge
Wenn man sich im Internet anschaut, was so alles zu LTspice gefragt wird, so trifft man oft auf das Problem, wie man einen Subcircuit erstellt und in LTspice einbindet.

Allerdings muss man zugestehen, dass die LTspice-Hilfe teilweise sehr knapp gehalten und mitunter auch etwas kryptisch ist. Man kann sogar den Eindruck gewinnen, dass das gewollt ist, und dass LTspice nur dem voll zur Verfügung steht, der mit Ausdauer hartnäckig in die Materie eindringt. Ohne das nötige Wissen probiert man dies und das, und es klappt immer noch nicht... :(
Und irgendwie lacht einen zum Schluss Dennis Nedrys Troll an: "Ah ah ah, you didn't say the magic word!"

Ich möchte im folgenden versuchen, etwas Licht (oder sollte ich mit Prometheus sagen: ...Feuer...?) in das Dunkel zu bringen, das den nebelverhangenen "Subcircuit" umgibt. Ich hoffe nur, dass die LTspice-Götter mir nicht zürnen und mich nicht wie Prometheus aus dem Olymp verjagen und an den Felsen nageln, denn ich frage mich schon, ob eine solche Anleitung zu veröffentlichen überhaupt sinnvoll und gut ist...

Jedenfalls habe ich zu diesem Zweck also eine Anleitung erstellt, mit der jeder in der Lage sein sollte, einen Subcircuit zu erstellen und auch in LTspice einzubinden.
Und weil ich ein Faible dafür habe, sind die Beispielschaltungen dieses Mal DOAs (Discrete Operational Amplifiers).

Die Anleitung befindet sich als PDF-Datei im Archiv, zusammen mit Bildern der Schaltpläne, den Simulationsdateien, die meisten mit schon fertigen Subcircuits, einigen Symboldateien, einer kleinen, zugegebenermassen recht simplen DOA-Testsuite sowie einer Mini-Bibliothek mit etlichen eingebundenen Opamps, u.a. von Dynacord, Marantz, Bryston und einem der seltenen Yamaha-DOAs.
Zusätzlich zum Text sind an wichtigen Stellen Screenshots eingefügt, die die Orientierung erleichtern. Damit sollte es dann jedem möglich sein, eigene Werke erfolgreich als Subcircuit in LTspice zu benutzen.
Allerdings sollte man auch hier nicht vergessen, dass mit diskreten Bauteilen aufgebaute Schaltungen je nach Umfang wesentlich länger brauchen in der Simulation als die gängigen Opamp-Makromodelle.

Rudi S

P.S.: In der Bibliothek befindet sich auch der uralt-Opamp RC4558 aus den Zeiten des 741. Nicht etwa, weil ich den gut finde. Er ist nur darin, um eine einzige Sache zu zeigen. Welche das ist, sage ich nicht. Da müsst ihr selber drauf kommen... ;)
[Obwohl der 4558 meiner Einschätzung nach sehr übersichtlich und von daher gut geeignet ist, Prinzipien der Konstruktion eines BJT-Opamps zu studieren.]

spicer:
Habe noch die pdf angehängt, obschon alles in der Zip vorhanden ist.
Dient lediglich zur Veranschaulichung ;)
 

Anhänge

  • Subckt_RS.zip
    2,2 MB · Aufrufe: 24
  • Anleitung zum Erstellen und Einbinden eines Subcircuits.pdf
    1,4 MB · Aufrufe: 41
  • Errata und Hinweise.pdf
    34 KB · Aufrufe: 16
Zuletzt bearbeitet:
Wenn lust hast, probier mal mit den bbCode Mitteln hier das Tutorial zu posten.
Es sollte eigentlich alles möglich sein.
Zudem kannst in der Test-Sektion den Thread erstellen.
Wenn er perfekt ist, verschiebe ich den gerne für Dich in die richtige Sektion!
Bearbeiten kannst ihn als Ersteller eh ewig!

Nochmal vielen Dank. Ein Forum lebt von dem!
 
Zuletzt bearbeitet:
Tut mir aufrichtig leid, dass ich deinem Wunsch nicht nachkommen kann. Nicht nur, dass mir im Augenblick die Zeit dafür fehlt -- sowieso hat die ganze Geschichte schon mehr Zeit gekostet, als ich eigentlich dafür aufbringen wollte. Nebenbei befinde ich mich in den Vorbereitungen für einen Umzug bis zum Jahresende.
Es ist mir auch lieber, wenn diese Anleitung eher wie eine unscheinbare Feldpflanze am Wegesrand ihr Dasein führt -- wer genau hinschaut, weiss, was er vor sich hat.

Rudi S

Wenn ich genau hinschaue,
sehe ich das Hirtentäschel
an der Hecke - blühen.
Matsuo Basho
 
@admin
Ich finde es eigentlich nicht so gut, dass diese meine Ergänzung hierher verschoben wurde. Obwohl sie eine Ergänzung des obigen Beitrags darstellt, ist sie insgesamt eigenständig: alles, was die Ergänzung behandelt, kann man verwirklichen, ohne den obigen Beitrag zu kennen und gelesen zu haben, meine ich.
Bei vielen könnte bei flüchtigem Hinsehen der Eindruck entstehen: ok, das kenne ich schon, und schauen nicht noch einmal nach.

RudiS
 
Aber es wird dann total unübersichtlich. In dieser Sektion sind immerhin 214 verschiedene Themen!
Wenn hier vom einen Beitrag 2-3 Posts sind und von einem Anderen auch noch mal 2 oder 3, schaut sich das erst recht niemand mehr an!
Wenn doch, dann wenigstens den Link zum anderen Beitrag rein machen, damit Jeder weiss, um was es sich handelt.

Muss aber noch sagen, dass ich sehr froh bin, wenn so gute Beiträge rein kommen und will niemals jemanden vergraulen!
 
Zuletzt bearbeitet:
@spicer
Tut mir leid, dass kein Link auf den ersten Beitrag enthalten ist. Trotzdem meine ich, dass die Ergänzung mehr Eigenständigkeit besitzt und daher nicht unter "Erstellen und Einbinden eines Subcircuits" laufen sollte.

RudiS
 
Ok. Was für eine Überschrift wünschst Du?
 
"Signalgeneratoren als Subcircuit" wäre eine Möglichkeit. Später werde ich dann auch einen Hinweis auf den ursprünglichen Beitrag einfügen. Ich sehe zwar, dass man einen Link einfügen kann, habe aber keine Ahnung, welche URL der Beitrag hat.
 
Ist das so ok?
 
Errata und Hinweise zu obiger Anleitung
-----------------------------------------------------

Trotz aller Vorsicht und Überprüfung ist mir in der Anleitung ein Fehler unterlaufen, den ich hier korrigieren möchte.

1) Auf Seite 9 der Anleitung findet sich der Satz: "Diese Bibliothek muss man wie die Subs der Subcircuits ebenfalls in den Ordner ../lib/sym kopieren."
Das ist natürlich falsch! In den Ordner "../lib/sym" kommen, wie der Ordnername sagt, Symbole, und nur Symbole!
Einzelne Subcircuits (*.sub) sowie Bibliotheken (*.lib) gehören in den Ordner "../lib/sub". Am Ende der Anleitung, bei der Erläuterung zum Archiv auf Seite 12, steht es allerdings richtig.

2) Auf Seite 3, bei der Erstellung des Subcircuits, sieht man einen Screenshot der Netliste. Manch einer mag sich gefragt haben, warum man hier nicht die Netliste als Grundlage wählt, sondern die erweiterte Netliste (expanded listing). Grund ist: in der Netliste sind zwar die verwendeten Halbleiter namentlich genannt (BC414B, BC416B), die Modelle jedoch nur als NPN bzw PNP.
In der erweiterten Netliste sind dann die diesen Halbleitern zugehörigen Modelle explizit eingebunden (vergl. Screenshot auf Seite 4).

3) Ausserdem noch ein Hinweis zum Symbol-Editor. Im Menü dieses Editors findet man das Menü "Attributes" mit dem Sub-Menüs "Edit Attributes" und "Attribute Window".
Wenn man "Attribute Window" anklickt, öffnet sich ein "richtiges" Fenster mit Titel "Attribute Window to Add", einer Liste der verfügbaren und damit selektierbaren Attribute "InstName, Type,..., SpiceLine2" und zwei Buttons (Cancel und OK).
Diese Bezeichnung "Attribute Window" finde ich missverständlich. In der Titelleiste heisst es "Attribute Window to Add", zu Deutsch etwa "Attribut Fenster hinzufügen", aber man fügt damit gar kein richtiges Fenster im Sinne einer Programmiersprache hinzu, wo ein Fenster gewöhnlich einen Rahmen, eine Titelleiste mit Titel, verschiedene Buttons und sonstige Elemente besitzt.
Besser wäre m.E. die Bezeichnung "Add Attribute to display" (Attribut für Anzeige hinzufügen), denn man wählt hier nur, welches Attribut als Text angezeigt werden soll (in einem gaaaanz weiten Sinne ein "Fenster" ;-))
.
Als weitere Besonderheit: ein einmal zur Anzeige gewähltes Attribut kann man nicht einfach "abwählen" durch z.B. Rechtsklick / Delete, sondern man muss es mit der Schere entfernen.

RudiS
 
Die (korrigierte) zip solltest eigentlich auswechseln können im Eröffnungspost. Diesen kannst immer editieren.
 
Danke für den Tip, Du hattest früher schon mal darauf hingewiesen. Ich habe die Errata als PDF oben beigefügt, würde aber gern den Post #10 beibehalten. Ist das ok?
 
Ja klar. Dient ja alles zur Information.
Ohne die Ergänzung im Post #1 würden wohl die meisten User die Korrekturen übersehn weiter unten ;)
 
Allgemeine Hinweise zum Gebrauch von Subcircuits


Ich persönlich sammle alle von mir erstellten Subcircuits in einem Ordner “MySubs”. Ausserdem kopiere ich sie in den
LTspice-Ordner “Dokumente/LTspiceXVII/lib/sub”. Die zugehörigen Symbole kommen in den Ordner “MyParts”, den ich unter
Dokumente/LtspiceXVII/lib/sym” erstellt habe. Die so erstellten Bauteile sind auf dem eigenen Computer immer und überall
verwendbar, auch in anderen Schaltungen in wieder anderen Ordnern, und man erspart sich die Hin- und Herkopiererei.

Für andere aber entsteht hier ein Problem: beim Entwurf einer Schaltung muss LTspice natürlich festhalten, wo sich das Symbol
eines Bauteils befindet, bzw. woher (= aus welchem Ordner) der User das Bauteil bezogen hat!
Bei einfachen Bauteilen wie Widerstände, Kondensatoren, BJTs usw. ist das klar, die kommen aus dem Ordner ../lib/sym,
bei anderen aber wie z.B. Opamps kommen sie aus einem Unterordner, wie ..lib/sym/Opamps!
Und folglich registriert LTspice diesen Unterordner zusammen mit dem Bauteilsymbol im Schaltplan, der xzy.asc-Datei. Wenn ich also
ein eigenes Bauteil aus meinem Ordner “MyParts” in den Schaltplan einbinde, notiert LTspice folgendes:

SYMBOL MyParts\\dPSU -208 32 R0

Und wer dann auf seinem Computer keinen Ordner “MyParts” hat, wird wahrscheinlich eine Fehlermeldung bekommen! Obwohl ich wusste,
dass LTspice den Ordner registriert, habe ich bisher nicht daran gedacht, die Schaltpläne, die ich weiterreiche, dementsprechend zu bereinigen!

Wenn sich der Subcircuit und das Symbol im gleichen Ordner wie der Schaltplan (...asc) befindet, genügt es, den Schaltplan in einem Texteditor
zu editieren und Ordnername sowie den Doppel-Backslash zu entfernen. [Das darf man bei Bauteilen, die aus LTspice-Ordnern stammen, natürlich nicht machen!]

SYMBOL MyParts\\dPSU -208 32 R0 ---> SYMBOL dPSU -208 32 R0 OK!

SYMBOL OpAmps\\OP27 0 96 R0 ---> SYMBOL OP27 0 96 R0 BAD! Ltspice-Ordner!!


Fazit: Wer – wie ich aus Bequemlichkeit – selbst erstellte Symbole in einen Unterordner wie “MyParts” kopiert und die zugehörigen Subcircuits
in den LTspice-Ordner “lib/sub”, der sollte beim Veröffentlichen nicht vergessen, die asc-Datei entsprechend clean&proper weiterzureichen!!
Wo ich das in meinen Beiträgen übersehen habe, bitte ich um Entschuldigung.
 
Zuletzt bearbeitet:
@spicer

Im vorigen Post wollte ich die vorletzten Zeilen eigentlich weiter eingerückt sehen, aber auch mit dem Einfügen von HTML-Code war das Ergebnis nicht so, wie ich es mir wünschte.
Und meine normale Einrückung mit whitespace ist nach dem Klicken auf "Antworten" wieder futsch! Mit HTML kenne ich mich nicht sonderlich aus...

[Snapshot]
Einrücken.png
[End snapshot]

Vielleicht kannst Du mir kurz erklären, wie man so etwas bewerkstelligt, auch für die Zukunft... ;)
Danke im voraus!

der Rudi
 
Tabulatoren gibt es leider nicht in HTML (bzw bbCode).
Was ich Dir anbieten kann ist eine Tabelle. In Deinem Fall 4 Spalten machen und "no border" anwählen.
Auswahl_002.png

Beispiel:
SYMBOL MyParts\\dPSU -208 32 R0--->SYMBOL dPSU -208 32 R0OK!
SYMBOL OpAmps\\OP27 0 96 R0--->SYMBOL OP27 0 96 R0BAD! Ltspice-Ordner!!
 
Zuletzt bearbeitet:

Benutzer welche diesen Thread betrachten (Mitglieder: 0, Gäste: 1)

Zurück
Oben