Erzeugen Sie eine Dreieckwelle mit Phasenverschiebung von einer Rechteckwelle

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Mein Eingang ist eine Rechteckwelle. Die Ausgabe ist eine Dreieckswelle. Die Mitte des hohen Abschnitts der Rechteckwelle sollte mit der Spitze der Dreieckwellenausgabe korrelieren. Gibt es Beispiele für Schaltungen, die dies tun können?

Ist Rechteckwelle nur eine stabile Frequenz?
@Antonio51 ja, das ist es
Ich habe vergessen, ist der "Mittelpunkt" bekannt?
@Antonio51 nein. Es ist genau die Mitte der Rechteckwelle, die mit dem Spitzenpunkt der Traingle-Welle korreliert
Ihr Schalter ist nicht gut verdrahtet ... Der "Schalter" befindet sich rechts vom Symbol ... Links die Befehlsspannung ... Verwenden Sie auch OP27 oder einen besseren Operationsverstärker ...

Antworten (4)

Die erste Idee ist diese Schaltung, aber Sie benötigen ein gewisses "Fahren" der Rückmeldung, da die "Offsets" und der "Mittelpunkt" der Spannung nicht bekannt sind.

Hergestellt mit Mikrokappe 12 .

Geben Sie hier die Bildbeschreibung ein

Die Idee, um den "Mittelpunkt" zu finden, ist folgende.
Integrieren Sie die Rechteckwellenform.
Am Ende die Spannung der Rampe abtasten.
Nehmen Sie die Halbpunktspannung.
Dies ist der "Mittelpunkt" für den nächsten Zyklus zur Verwendung mit einem Komparator ... der SQUARE2 ersetzte.

Dies ist eine weitere aktualisierte Version mit "1 Verzögerungszyklus" ...

Geben Sie hier die Bildbeschreibung ein

Andere "Wellen" hinzugefügt ...

Geben Sie hier die Bildbeschreibung ein

D:\__Utiles\mc12cd\DATA\opamp integrator v013.cir Transient Analysis
* Converted From Micro Cap Source file to PSPICE
*
.FUNC DPWR(D) {I(D)*V(D)}
.FUNC BPWR(Q) {IC(Q)*VCE(Q)+IB(Q)*VBE(Q)}
.FUNC FPWR(M) {ID(M)*VDS(M)}
.FUNC HOTD(D,MAX) {IF((V(D)*I(D)>MAX),1,0)}
.FUNC HOTB(Q,MAX) {IF((VCE(Q)*IC(Q)+IB(Q)*VBE(Q)>MAX),1,0)}
.FUNC HOTF(M,MAX) {IF((VDS(M)*ID(M)>MAX),1,0)}
.PARAM LOW3MIN={IMPORT(LOW3MIN.OUT,LOW3THRES)}
.PARAM HIGH3MAX={IMPORT(HIGH3MAX.OUT,HIGH3THRES)}
.PARAM LOWLVDS={IMPORT(LOWLVDS.OUT,LOWLIMIT)}
.PARAM HILVDS={IMPORT(HILVDS.OUT,HILIMIT)}
.PARAM LIMTLVDS={IMPORT(LIMTLVDS.OUT,LVDSLIMITS)}
.FUNC SKINAC(DCRES,RESISTIVITY,RELPERM,RADIUS) {((PI*RADIUS*RADIUS)/((PI*RADIUS*RADIUS)-PI*(RADIUS-SKINDEPTHAC(RESISTIVITY,RELPERM))**2))*DCRES}
.FUNC SKINDEPTHAC(RESISTIVITY,RELPERM) {503.3*(SQRT(RESISTIVITY/(RELPERM*F)))}
.FUNC SKINTR(DCRES,RESISTIVITY,RELPERM,RADIUS,FREQ) {((PI*RADIUS*RADIUS)/((PI*RADIUS*RADIUS)-PI*(RADIUS-SKINDEPTHTR(RESISTIVITY,RELPERM,FREQ))**2))*DCRES}
.FUNC SKINDEPTHTR(RESISTIVITY,RELPERM,FREQ) {503.3*(SQRT(RESISTIVITY/(RELPERM*FREQ)))}
C1 3 Vo 1u
C2 11 Vo1 1u
C3 Vg Prst 1n
C4 0 Vo2 100u
R3 Vd 3 10k
R19 6 Vg 50
R20 3 Vo 10Meg
R21 Vg 9 10k
R22 9 Vd 10k
R23 Vg 8 10k
R24 13 11 10k
R25 11 Vo1 10Meg
R26 Prst 0 10k
R27 Vo2 Vo3 10k
R28 Vo3 0 10k
S1 8 0 Voc 0 SW1
S2 Vo1 11 Prst 0 SW2
S3 17 Vo2 Prst 0 SW3
S4 Vo 3 Start 0 SW4
V1 VC 0 DC 5 
V2 VE 0 DC -5 
V3 6 0 DC 0 PULSE (0 5 0 5e-009 5e-009 0.005 0.01)
V5 Start 0 DC 0 PULSE (0 3 0 1e-008 1e-008 0.00999999 1)
X2 0 3 VE Vo VC OP_27
X3 8 9 VE Vd VC OP_27
X4 0 11 VE Vo1 VC OP_27
X5 Vg 13 AMP PARAMS: GAIN=-1 
X6 Vo1 17 AMP PARAMS: GAIN=1 
X7 Vo3 Vo1 Voc COMP PARAMS: VOH=5 VOL=0 GAIN=1000 
*
.MODEL SW1 VSWITCH (ROFF=10MEG)
.MODEL SW2 VSWITCH (ROFF=10MEG)
.MODEL SW3 VSWITCH (ROFF=10MEG RON=0.01 VON=-4)
.MODEL SW4 VSWITCH (ROFF=10MEG)
*
*** From file D:\__Utiles\mc12cd\library\AMP.MAC
.SUBCKT AMP  PinA PinB PARAMS: GAIN=1 
E1 PINB 0 PINA 0 {GAIN}
RE1 PINA 0 1G;added by E1
.ENDS AMP
*
*** From file D:\__Utiles\mc12cd\library\COMP.MAC
.SUBCKT COMP  Inp Inm Out PARAMS: VOH=15 VOL=-15 GAIN=1000 
.PARAM VA={(VOH-VOL)/2}
.PARAM DC={(VOH+VOL)/2}
E1 Out 0 VALUE = {DC+VA*TANH(GAIN*(V(INP,INM)))}
R1 Inp 0 1e9
R2 Inm 0 1e9
.ENDS COMP
*
* OPAMP
* PINS:  1=NC+ 2=NC- 3=VEE 4=VO 5=VCC
.SUBCKT OP_27 1 2 3 4 5
IEE 10 3 8.401999999999999e-005
VS1 11 0 0
VC 5 16 1.800000000000001
VE 17 3 1.800000000000001
VLP 19 0 20
VLN 0 20 20
VS2 13 15 0
F1 13 14 POLY(5) VS1 VC VE VLP VLN 0 47746482.92756861 -47746482.92756861
+ 47746482.92756861 47746482.92756861 -47746482.92756861
E1 14 0 POLY(2) 5 0 3 0   0 0.5 0.5
H1 18 0 VS2 1000
GCM 0 12 10 0   7.557734198666343e-010
GA 12 0 6 7   0.001507964473723101
C1 6 7 8.660254037844386e-012
CE 10 14 1e-019
C2 12 13 3e-011
RC1 5 6 663.1455962162306
RC2 5 7 663.1455962162306
RE1 8 10 47.32264900962777
RE2 9 10 47.32264900962777
RE 10 14 2380385.622470841
RP 5 3 40036.65578262764
R2 12 11 100000
RO2 13 14 25
ROUTAC 15 4 50
D5 3 5 D
D3 4 16 D
D4 17 4 D
D1 18 19 D
D2 20 18 D
Q1 6 2 8 QINN
Q2 7 1 9 QINP
*
.MODEL D D ()
.MODEL QINN NPN (BF=2896.551724137931)
.MODEL QINP NPN (BF=7636.363636363636 IS=1e-016)
.ENDS OP_27
*
.OPTIONS ACCT LIST OPTS ABSTOL=1pA CHGTOL=.01pC DEFL=100u DEFW=100u DEFNRD=0
+ DEFNRS=0 DEFPD=0 DEFPS=0 DIGDRVF=2 DIGDRVZ=20K DIGERRDEFAULT=20 DIGERRLIMIT=0
+ DIGFREQ=10GHz DIGINITSTATE=0 DIGIOLVL=2 DIGMNTYMX=2 DIGMNTYSCALE=0.4 DIGOVRDRV=3
+ DIGTYMXSCALE=1.6 GMIN=1p ITL1=100 ITL2=50 ITL4=10 PIVREL=1m PIVTOL=.1p RELTOL=1m
+ TNOM=27 TRTOL=7 VNTOL=1u WIDTH=80
*
.LIB "D:\__Utiles\mc12cd\library\NOM.LIB"
*
.TEMP 27
*
.TRAN 0.00025 50m 0 10u UIC
.PLOT TRAN v([VG]) v([START]) -0.75,6.75
.PLOT TRAN v([VD]) -4,6
.PLOT TRAN v([VO]) -0.4,1.6
.PLOT TRAN v([PRST]) -5,7.5
.PLOT TRAN v([VO1]) v([VO3]) -1,4
.PLOT TRAN v([VOC]) -2,8
*
.PROBE
.END


Ausgezeichnete Antwort, mein Herr. Aber warum die Notwendigkeit für V4, da es mit nichts verbunden ist? Haben Sie etwas dagegen, die LT Spice-Datei für diesen Schaltplan zu teilen? :)
V4 steuert S1.
Hallo, ich habe meine LT Spice-Schaltung oben in meine Frage mit der gleichen Schaltung wie Ihre eingefügt. Die Ausgabe ist jedoch nicht wie erwartet :(
Tut mir leid, ich benutze kein LTspice ... Ich werde eine neue Schaltung hinzufügen. Achten Sie auf die Funktionsweise von Schaltern ... Einige werden bei positivem Spannungseingang geschlossen, andere sind offen ...
@Antonio51 Ich glaube, Sie können alles in einen Ordner legen und auf Google Drive hochladen und auf "Teilen" klicken. Google Drive gibt Ihnen einen Link, den Sie dann hier teilen können :)
@Antonio51 Vielleicht kannst du es an meine E-Mail an codetest1312@gmail.com weitergeben?
@TestingSu Ok. Werde nachsenden.
@ Antonio51 Hallo Sir, ich bin sehr neu bei LT Spice und weiß nicht, wie ich die Textdatei direkt ausführen soll. Kann ich den LT Spice-Schema einfach zusammen in einem Ordner an meine E-Mail-Adresse senden, die betriebsbereit ist :)?
@Antonio51 Hallo Sir, macht es Ihnen etwas aus, es an meine Post zu schicken :)?

Wenn die Frequenz und das Tastverhältnis bekannt sind, dann ja, ist es möglich, indem eine feste Zeitkonstante für die Integration implementiert wird, die gleich dem halben Tastverhältnis ist, und ein Trigger zum Umkehren des Vorzeichens, wenn der Mittelpunkt erreicht ist.

Wenn das Tastverhältnis nicht bekannt ist, spielt es keine Rolle, ob die Frequenz bekannt ist oder nicht, es ist unmöglich, dies zu tun, da dies voraussetzt, dass man vorher weiß, wann das Vorzeichen der Integration geändert werden muss. Sie müssten den Mittelpunkt bestimmen, bevor Sie überhaupt wissen, was der Gesamtwert des Tastverhältnisses ist.

Wenn Sie sich, OTOH, eine Zyklusverzögerung leisten können, können Sie dies tun, wenn Sie einen Speicherblock haben: Triggern Sie zur Anstiegszeit, triggern Sie zur Abfallzeit, bestimmen Sie das Tastverhältnis und verwenden Sie diese Informationen dann für das nächste Dreieck.

Und wenn Sie das Problem umkehren können, könnten Sie zuerst das Dreieck erzeugen und dann die Rechteckwelle daraus ableiten. Das gibt Ihnen, was Sie wollen, aber ich weiß nicht, ob es auf Ihren Fall zutrifft.

Ich würde das wie eine PLL angehen. Nennen wir die Rechteckwelle S ( T ) und die Dreieckswelle R ( T ) . Daraus wird die endgültige „Dreiecksstumpfwelle“ generiert.

Sie wissen, dass die richtige Verschiebung τ für R ist, wenn das Integral über das absolute Produkt dieser beiden minimal wird:

τ opt = Arg Mindest τ | S ( T ) R ( T τ ) | D T

Nun, das wissend S ( T ) ist periodisch, nennen wir die Periode T Wir können einen "Trigger" auf die steigende Flanke setzen, diese Zeit 0 nennen und einfach über eine Periode integrieren. Wir stoppen einfach die Integration bei der fallenden Abtastperiode:

τ ^ = Arg Mindest τ T steigende Flanke von  S T fallende Flanke von  S | S ( T ) R ( T τ ) | D T

Das zu bauen ist also ganz einfach: Since S ( T ) ist nur ein oder aus, kein Multiplikator erforderlich:

τ ^ = Arg Mindest τ T steigende Flanke von  S T fallende Flanke von  S | R ( T τ ) | D T

Das Minimum ist erreicht, wenn es 0 ist, also können wir es genauso gut

τ ^ = τ  st  T steigende Flanke von  S T fallende Flanke von  S R ( T τ ) D T = 0

Großartig! Das heißt, wir müssen einen Integrator aus einem Operationsverstärker und einem Kondensator bauen (Tausende von Beispielschaltungen verfügbar) und unsere Dreieckswelle einspeisen. Wir speisen das in eine Sample-and-Hold-Schaltung (Tausende von Schaltungen) ein, die auf der fallenden Flanke von ausgelöst wird S ( T ) .

Wenn der Wert positiv ist, verlangsamen Sie den Oszillator Ihres Dreieckwellengenerators. Wenn es negativ ist, beschleunigen Sie es.

Die Dreieckswelle kann auf viele Arten erzeugt werden, aber am einfachsten (da Sie etwas brauchen, das ein VCO ist) ist es, einen harmonischen, spannungsgesteuerten Oszillator zu haben, der in einen Komparator eingespeist wird, um eine Rechteckwelle mit variabler Frequenz zu erzeugen, und dann Bauen Sie einen Integrator, um es in eine Dreieckswelle umzuwandeln.

Großartig, jetzt haben Sie eine synchrone Dreieckswelle, die "zentriert" auf Ihrer Rechteckwelle sitzt S ( T ) hat Perioden. Um es in Ihre Stumpf-Dreieckswelle umzuwandeln, benötigen Sie nur einen Einweggleichrichter (Tausende von Schaltungen).

Das ist eine schöne Lösung ++. Schade, dass OP so knapp an Informationen ist.

Einige der Details sind immer noch nicht klar, aber es sieht so aus, als könnte die gesamte erste Operationsverstärkerstufe im ursprünglichen Schaltplan durch einen 1- oder 2-Gate-Pulsformer ersetzt werden, etwas mit einer kleinen Hysterese. Stellen Sie die Impulsbreite so ein, dass sie 1/2 des positiven Halbzyklus der Eingangsrechteckwelle entspricht, und Sie erhalten 1/4-Zyklus-Rampen nach oben und unten aus dem Integrator.

ODER

Anstelle eines Impulsformers einen Phasenregelkreis verwenden, der mit der doppelten Eingangsfrequenz läuft. Der Oszillator treibt die Integratorstufe, und jetzt verfolgt die Schaltung automatisch Änderungen in der Eingangsfrequenz. Das kann der CMOS CD4046. Auto-Tracking hat seinen Preis – die Amplitude der Dreieckswelle variiert, wenn sich die Eingangsfrequenz ändert (aber die Dreiecksspitze bleibt zentriert).

Der erste Operationsverstärker (X3) ist ein Verstärker mit geschalteter Verstärkung (+1 oder -1).
Stimmt, aber da der Eingang eine Rechteckwelle ist, sehe ich keine Notwendigkeit dafür.
Es war nur eine Erklärung (für "Neulinge"). Natürlich lassen sich viele analoge Schaltungen durch digitale Schaltungen ersetzen, aber für manche nicht immer so "einfach" verständlich ... vor allem ohne den nötigen "Hintergrund". :-)