Kann man mit LTspice einen Addierer mit zwei Eingängen erstellen? Also quasi die Eingänge mit unendlich hohem Eingangswiderstand und der Ausgangswiderstand=0.
Ich bin kein LTSpice Spezialist. Aber ich bin dennoch ziemlich sicher, dass es geht, denn er kann ja auch Operationsverstärker simulieren.
Mit einer Formel in einer B-Quelle - nennt sich "bv" in der Komponentenauswahl. V=V(a)+V(b)
>V=V(a)+V(b)
Vielen Dank. Kann ich dazu auch ein Symbol machen? So dass man das
Symbol einfach in einen Schaltplan ziehen kann?
Das Symbol ist bereits vorhanden. Name: bv. die obige Gleichung nach dem Drücken der rechten Maustaste einfach eintragen
chris_ schrieb: > Kann man mit LTspice einen Addierer mit zwei Eingängen erstellen? Ja, siehe Anhang. Wenn dir 1 GOhm und eine Differenzverstärkung von 10E9 nicht reichen, kannst du es ja noch erhöhen.
Ok, danke. Das sieht dann wie oben aus. Gibt es denn auch ein Möglichkeit, ein Symbol mit zwei Eingängen selber zu zeichnen und mit der Funktion zu verknüpfen?
chris_ schrieb: > Gibt es denn auch ein Möglichkeit, ein Symbol mit zwei Eingängen selber > zu zeichnen und mit der Funktion zu verknüpfen? Ja, du kannst dir natürlich ein Symbol selber zeichen und mit einer eigenen Funktion belegen. Im Netz gibt es reichlich Anleitungen dazu.
>Wenn dir 1 GOhm und eine Differenzverstärkung von 10E9 nicht reichen, >kannst du es ja noch erhöhen. Ich vermute, dass es besser ist, keine OPs und Widerstände zu verwenden, da diese extra Rechenzeit benötigen.
Wäre das so korrekt:
1 | Version 4 |
2 | SymbolType BLOCK |
3 | RECTANGLE Normal 113 -3 1 -92 |
4 | TEXT 30 -51 Left 2 plus |
5 | PIN 0 -80 RIGHT 8 |
6 | PINATTR PinName v1 |
7 | PINATTR SpiceOrder 1 |
8 | PIN 0 -16 RIGHT 8 |
9 | PINATTR PinName v2 |
10 | PINATTR SpiceOrder 2 |
11 | PIN 112 -48 LEFT 8 |
12 | PINATTR PinName vout |
13 | PINATTR SpiceOrder 3 |
Du mußt dein Symbol noch mit dem Circuit verknüpfen z.B. als .lib File. Für einen Anfänger ist es aber einfacher, mit der Schaltplanhierarchie zu arbeiten. Zeichne also deinen Schaltplan - entweder die oberere oder untere Version, wenn sich alle Signale immer auf 0 beziehen, speichere ihn und wähle dann im Menu Hierarchy=>Open this Sheet's Symbol Anpassungen vornehmen und speichern (Automatisch wird das .asy im Order ..LTSpice\lib\sym\AutoGenerated abgelegt, sollte aber im aktuellen Arbeitsverzeichnis gespeichert werden). Siehe LTSpice-Hilfe "Schematic Capture" - "Creating New Symbols" - "Automatic Symbol Generation" - "Hierarchy" - "Rules of Hierarchy" p.s. wenn Rechenzeit wirklich wichtig ist, solltest du mit realistischen Widerständen und Kapazitäten arbeiten - Zitat aus der Hilfe: "Note: It is better to use a G source shunted with a resistance to approximate an E source than to use an E source. A voltage controlled current source shunted with a resistance will compute faster and cause fewer convergence problems than a voltage controlled voltage source. Also, the resultant nonzero output impedance is more representative of a practical circuit."
Ich versuche gerade, das Symbol mit einem Sub-Circuit zu verbinden, die Funktion habe ich mit dem * auskommentiert.
1 | .SUBCKT addierer 1 2 3 |
2 | * B1 1 2 V=V(1)+V(2) |
3 | .ENDS addierer |
Das Pice-Netzlistenmodell zum testen sieht folgendermaßen aus ( eine Spannungsquelle an beiden Eingängen ):
1 | * C:\users\christoph\Desktop\graphProg\Draft4.asc |
2 | XX1 N001 N001 NC_01 addierer |
3 | V1 N001 0 V |
4 | .tran 1 |
5 | .backanno |
6 | .end |
Wenn ich die Simulation starten will, kommt folgendes: Unknown subcircuit called in XX1 N001 N001 NC_01 addierer Was mache ich falsch?
Du mußt das LTspice noch mit deinem Sub-Circuit bekannt machen. ".lib addierer.sub"
Danke für die Antwort. Gerade eben habe ich dieses Dokument zu LTspice überflogen: http://denethor.wlu.ca/ltspice/ Im Abschnitt "Method 2 and Method 3: Setup" steht, dass man den Prefix des Symbols auf 'X' setzen kann. Dass soll LTspice dann anzeigen, dass es sich um ein Sub-Circuit handelt. Ich habe es so verstanden, dass dann das Simulationsmodell aus dem addierer.sub file geladen werden soll. Braucht man dann zusätzlich noch das lib-File?
> Braucht man dann zusätzlich noch das lib-File?
Wenn im Symbol das Attribut "Prefix" auf X gesetzt ist, dann sucht
LTspice nach einem Subcircuit mit dem Namen der im Attribut "Value"
steht.
Das Subcircuit kann entweder direkt im Schaltplan stehen oder in einer
Datei sein. Falls es in einer Datei ist, dann benötigt LTspice den Namen
der Datei. Der Dateiname kann entweder im Symbol selbst oder im
Schaltplan stehen. Im Falle eienr Datei muss dazu eine include-Zeile im
Schalplan stehen.
.inc dateiname
oder
.lib dateiname
Gruß
Helmut
Helmut S. schrieb: >> Braucht man dann zusätzlich noch das lib-File? > > Wenn im Symbol das Attribut "Prefix" auf X gesetzt ist, dann sucht > LTspice nach einem Subcircuit mit dem Namen der im Attribut "Value" > steht. > Das Subcircuit kann entweder direkt im Schaltplan stehen oder in einer > Datei sein. Falls es in einer Datei ist, dann benötigt LTspice den Namen > der Datei. Der Dateiname kann entweder im Symbol selbst oder im > Schaltplan stehen. Im Falle einer Datei muss dazu eine include-Zeile im > Schalplan stehen. > .inc dateiname > oder > .lib dateiname > > Gruß > Helmut Kleiner Tipp: Die Datei mit dem Modell legt man am besten in das Verzeichnis in dem sich der Schaltplan befindet.
Nachdem ich ein anderes Modell mit zwei Anschlüssen erstellen konnte, habe ich noch einmal einen Versuch mit der von dmwtr (Gast) unternommen. Es ergeben sich zwei Dateien addierer.sub:
1 | .SUBCKT v1 v2 vout |
2 | R1 v2 0 1000k |
3 | R2 v1 0 1000k |
4 | B1 vout 0 V=V(v1,0)+V(v2,0) |
5 | .ENDS |
addierer.asy
1 | Version 4 |
2 | SymbolType BLOCK |
3 | RECTANGLE Normal 113 -3 1 -92 |
4 | TEXT 30 -51 Left 2 plus |
5 | SYMATTR Prefix X |
6 | SYMATTR SpiceModel ADDIERER |
7 | SYMATTR Description addierer |
8 | SYMATTR ModelFile addierer.sub |
9 | PIN 0 -80 RIGHT 8 |
10 | PINATTR PinName v1 |
11 | PINATTR SpiceOrder 1 |
12 | PIN 0 -16 RIGHT 8 |
13 | PINATTR PinName v2 |
14 | PINATTR SpiceOrder 2 |
15 | PIN 112 -48 LEFT 8 |
16 | PINATTR PinName vout |
17 | PINATTR SpiceOrder 3 |
Und die Testschaltung:
1 | Version 4 |
2 | SHEET 1 880 680 |
3 | WIRE 160 96 -32 96 |
4 | WIRE -32 160 -32 96 |
5 | WIRE 160 160 -32 160 |
6 | WIRE -32 224 -32 160 |
7 | WIRE -32 336 -32 304 |
8 | FLAG -32 336 0 |
9 | SYMBOL voltage -32 208 R0 |
10 | WINDOW 123 0 0 Left 2 |
11 | WINDOW 39 0 0 Left 2 |
12 | SYMATTR InstName V1 |
13 | SYMATTR Value 5 |
14 | SYMBOL addierer 160 176 R0 |
15 | SYMATTR InstName U1 |
16 | TEXT -64 360 Left 2 !.tran 2 |
Leider mit der obigen Fehlermeldung. Fällst euch dazu was ein?
Hallo Chis, Änderungen .SUBCKT addierer v1 v2 vout Damit läuft es dann schon. Man kann übrigens verschiedene Arten von Symbolen machen.
Danke Helmut, das war der Fehler. Ich habe 100mal hingeschaut, mit
anderen Modellen verglichen und es nicht gesehen.
>Man kann übrigens verschiedene Arten von Symbolen machen.
Wie meinst Du das? Für den Addierer habe ich einfach ein Rechteck
genommen. OK, vielleicht wäre ein Summenzeichen aus Linien schöner. Mal
sehen ...
Hallo Chris, Es gibt ca. 5 Arten für Symbole. Gesteuert wird das über die Verwendung oder Nichtverwendung bestimmter Attribute. Spezifisches Symbol (Vorteil: Kann nicht im Schaltplan verändert werden.) Universal Symbol (Vorteil: Kann für verschieden Bauteile verwendet wedren.) Auto generiertes Symbol -> ähnlich deinem Symbol Auswahl Symbol (Vorteil: Man kann aus eienr LIste wählen.) Hierarchisches Symbol ( Vorteil: Man hat einen Schaltplan für das Subcircuit.) Im Anhang mal dein Beispiel mit einem spezifischen Symbol. Einfach in einem neuen Verzeichnis auspacken, z. B. C:\Test
>Im Anhang mal dein Beispiel mit einem spezifischen Symbol. >Einfach in einem neuen Verzeichnis auspacken, z. B. C:\Test Ah, tatsächlich, das Symbol kann man nicht editieren. Das hat mich zum experimentieren animiert. Im Anhang liegt noch eine Variante. > z. B. C:\Test Ich habe kein C: aber ein "home". LTspice funktioniert mit "wine" ziemlich gut. Kann man dem Addierer eigentlich auch einen Offset verpassen, den der Anwender mit einem Eintrag in "value" einstellen kann?
Geht mit einem Parameter (im Beispiel Defaultwert=0) der dann im Symbol (SYMATTR SpiceLine offset=xx) geändert werden kann. .SUBCKT addierer v1 v2 vout PARAMS:offset=0 R1 v2 0 1000k R2 v1 0 1000k B1 vout 0 V=V(v1,0)+V(v2,0)+offset .ENDS
Im Anhang ein Beispiel mit "offset". Dabei habe ich mal die Syntax wie im Beiepiel von dmwtr genommen. Das ist eigentlich die PSPICE-Syntax.
Dank für die guten Beiträge. Im Anhang habe ich mal das Symbol von Helmut mit den Atributen als Bild angehängt. Wird Zeile Value ADDIERER_OFFSET da sein? Ich kann sie sonst nirgends finden. Warum ist sie groß geschrieben?
Hallo Chris, du kannst ADDIERER_OFFSET auch klein oder gemischt groß und klein schreiben. LTspice unterscheidet da nicht. Value: addierer_offset addierer_offset ist der Name des Subcircuits. Den könnte man auch im Schaltplan sichtbar machen, aber dann würde ich empfehlen einen kürzeren Namen zu nehmen damit der Schaltplan gut lesbar bleibt. Lesbarkeit von Attributen im Symbol stellt man so ein: Symbol mit dem Symboleditor öffnen, dann Edit -> Attributes -> Attribute Window -> Attribut auwählen
:
Bearbeitet durch User
Danke für Deine Antwort. Mit den neuen Erkenntnissen habe ich mal versucht, etwas Regelungstechnik zu machen ( siehe Anhang ).
Hallo Chris, dazu gibt es meines Wissens mindestens zwei verschiedene Bibliotheken in der Yahoo group. https://groups.yahoo.com/neo/groups/LTspice/files/%20Examples/Educational/Control%20Theory/ https://groups.yahoo.com/neo/groups/LTspice/files/%20Examples/Educational/Automatic%20control/ Es gibt noch eine weitere im Internet. http://home.scarlet.be/nap0/ltspice/index.html Gruß Helmut
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.