Kann man mit LTspice einen Addierer mit zwei Eingängen erstellen?
Also quasi die Eingänge mit unendlich hohem Eingangswiderstand und der
Ausgangswiderstand=0.
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.
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."
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?
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
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