mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik mathematische Funktion in LTspice realisieren


Autor: Abdurrahman Kebap (gapbeherif)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe eine mathematische Funktion mit entsprechernder Kennlinie, die 
ich gerne in LTspice realisieren möchte.

Ist so etwas möglich? Finden sich hierfür Ideen?
vielleicht so etwas wie eine Look up Table?!

Anbei habe ich eine Excel-Datei der Funktion mit der Kennlinie 
beigefügt.

Vielen Dank im Voraus

Autor: Helmut S. (helmuts)
Datum:
Angehängte Dateien:

Bewertung
3 lesenswert
nicht lesenswert
In LTspice kann man mit den Quellen bv und bi Funktionen und Tabellen 
benutzen.

Bv-Quelle mit Tabelle

V=table(V(C1),0,0,0.3,0.7,1,1)


Bv-Quelle mit Formel

V=0.5*(1+tanh(-2+4*V(C1)))


Da deine Tabelle sehr lang ist, schreibt man am besten die komplette 
Bv-Tabelle in eine Datei. Siehe Anhang.

BV1 U1 0 V=table(V(C1),
+ 0.10,  0.100,
+ 0.11, 0.102,
+ 0.12,  0.105,
+ 0.13,  0.107,
+ 0.14,  0.110,
+ 0.15,  0.112,
....  )


Deine Funktion hat eine Delle bei 0,16. Absicht?


Übrigens teilt deine Funktion durch 0 bei einem Eingabewert von 0,5. 
LTspice bedankt sich da mit Giga-Volt.

: Bearbeitet durch User
Autor: Abdurrahman Kebap (gapbeherif)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okay, erstmal vielen Dank!

1) Sie haben Recht, die Möglichkeit die Funktion berechnen zu lassen 
funktioniert leider nicht. Für den Wert 0,5 folgt eine Null im Nenner.

2) Bleibt also die Möglichkeit über die Look-up-Table. Hier stimmt etwas 
nicht: ihre Bv1.asc Datei und Bv.raw Datei stimmen nicht überein! 
Betrachte ich V(c1) und V(u), so sind diese identisch, was aber nicht 
sein soll?! Könnten Sie da noch einmal nachsehen?
Oder kann es sein, dass ich die .txt falsch eingebunden habe? Wo haben 
Sie diese abgespeichert?

3) Die Delle bei 0,16 kommt daher, dass der falsche Wert zugewiesen 
wurde. Dieser muss 0.115 sein und nicht wie in Ihrem Anhang 
(bv_tabelle1.txt) 0.100

: Bearbeitet durch User
Autor: Helmut S. (helmuts)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Die 0.115 habe ich jetzt in der Tabelle korrigiert. Ansonsten einfach 
alle 3 Dateien in ein beliebiges Verzeichnis kopieren.

Niemals irgendwas in C:\Program Files hineinkopieren da man dort als 
Normal-Benutzer nicht genügend Rechte hat. Außerdem kopiere ich auch gar 
nichts in irgend einen Ordner der von LTspiceXVII angelegt wurde. 
Deshalb funktionieren meine Beispiele auf jedem Rechner ohne irgend eine 
Datei von LTC zu ersetzen oder zu modifizieren.

Autor: Abdurrahman Kebap (gapbeherif)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahh okay, jetzt habe ich meinen Denkfehler gefunden! Ich habe mir die 
ganze Zeit V(u) statt V(u1) angeschaut.

Gibt es denn eine Möglichkeit ein Label V(u1) zu generieren, sodass wenn 
ich auf den Netznamen u1 klicke, mir der Graph V(u1) angezeigt wird?

Ansonsten besteht ja die Möglichkeit über den Expression Editor den 
Graphen ausgeben zu lassen.

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Abdurrahman K. schrieb:

> Gibt es denn eine Möglichkeit ein Label V(u1) zu generieren, sodass wenn
> ich auf den Netznamen u1 klicke, mir der Graph V(u1) angezeigt wird?
>

Platziere eine Widerstand im Schaltplan. Einen Anschluss mit Masse 
verbinden und den anderen Anschluss an eine Leitung mit dem Netznamen U1 
anschließen.

: Bearbeitet durch User
Autor: Abdurrahman Kebap (gapbeherif)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Super vielen Dank.

Ich habe da noch eine weitere Frage, vielleicht können Sie mir 
behilflich sein?!

Angenommen V(u1) ist eine Verstärker-Kennlinie und ich möchte ein 
PWM-Signal, wie im Anhang dargestellt, durch V(u1) schicken.

Ist so etwas möglich?

: Bearbeitet durch User
Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PWM
Wenn du die Pulsbreite nichtlinear zum Eingangssignal V(tri) machen 
willst, dann musstest du V(tri) durch eine entsprechende Tabelle 
verändern. Die Formel der PWM-Quelle wäre dann 
V=IF(V(sine)>V(trimod),5,-5). Alternativ könnte man auch V(sine) mit 
einer Tabelle verzerren.

Autor: Abdurrahman Kebap (gapbeherif)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das habe ich leider nicht ganz verstanden...

Meine Look-up-Table bleibt ja erhalten:

BV1 U1 0 V=table(V(C1),
+ 0.10,  0.100,
+ 0.11, 0.102,
+ 0.12,  0.105,
+ 0.13,  0.107,
+ 0.14,  0.110,
+ 0.15,  0.112,
....  )

Wie soll ich diese auf V(tri) oder V(sine) anwenden?

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Dreieck hat +/-5V für eine Sinuseingangssignal von +/-5V. Da du 
andere Min.- und Max.-Spannungen hast, musst du erst mal deine Tabelle 
an die +/-5V  anpassen oder alles andere auf andere Spannungen umbauen.

Autor: Abdurrahman Kebap (gapbeherif)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habe das wie in der beigefügten Schaltung realisiert.
Dabei habe ich das Sinussignal gemäß der Tabelle verzerrt.

Wäre das so richtig?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.