Generar onda triangular con cambio de fase desde onda cuadrada

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Mi entrada es una onda cuadrada. La salida es una onda triangular. En el medio de la sección alta, la onda cuadrada debe correlacionarse con el pico de la salida de la onda triangular. ¿Hay ejemplos de circuitos que pueden hacer esto?

¿La onda cuadrada es solo una frecuencia estable?
@Antonio51 si, lo es
Lo olvidé, ¿se conoce el "punto central"?
@Antonio51 No. Es justo el medio de la onda cuadrada que se correlacionará con el punto máximo de la onda triple.
Su interruptor no está bien cableado... El "interruptor" está a la derecha del símbolo... A la izquierda, el voltaje de comando... Use también OP27 o mejor opamp...

Respuestas (4)

La primera idea es este circuito, pero necesita algo de "impulso" de retroalimentación debido a que se desconocen las "compensaciones" de voltaje y el "punto central".

Fabricado con microcap 12 .

ingrese la descripción de la imagen aquí

La idea para encontrar el "punto central" es esta.
Integre la forma de onda cuadrada.
Al final, muestree el voltaje de la rampa.
Tome el voltaje de medio punto.
Este es el "punto central" para el próximo ciclo, para usar con un comparador... que reemplazó a SQUARE2.

Esta es otra versión actualizada con "1 ciclo de retraso"...

ingrese la descripción de la imagen aquí

Se agregaron otras "olas" ...

ingrese la descripción de la imagen aquí

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


Excelente respuesta, señor. Pero, ¿por qué la necesidad de V4 si no está conectado a nada? ¿Te importaría compartir el archivo LT Spice para ese esquema? :)
V4 está controlando S1.
Hola, en realidad he pegado mi circuito LT Spice arriba en mi pregunta con el mismo circuito que el tuyo. Sin embargo, el resultado no es el esperado :(
Lo siento, no uso LTspice... Agregaré un nuevo circuito. Tenga en cuenta el funcionamiento de los interruptores... Algunos están cerrados con un comando de entrada de voltaje positivo, algunos están abiertos...
@Antonio51 Creo que puedes poner todo en una carpeta y subirlo a Google Drive y hacer clic en compartir. Google Drive le dará un enlace que luego puede compartir aquí :)
@Antonio51 ¿Quizás pueda compartirlo con mi correo electrónico en codetest1312@gmail.com?
@TestingSu Está bien. Enviará después.
@Antonio51 Hola señor, soy muy nuevo en LT Spice y no sé cómo ejecutar el archivo de texto directamente. ¿Puede simplemente enviar por correo electrónico el esquema de LT Spice en una carpeta a mi correo electrónico que está listo para ejecutarse :)?
@Antonio51 Hola señor, ¿le importaría enviármela a mi correo :)?

Si se conocen la frecuencia y el ciclo de trabajo, entonces sí, es posible, implementando una constante de tiempo fija para la integración, igual a la mitad del ciclo de trabajo, y un disparador para invertir el signo cuando se alcanza el punto medio.

Si no se conoce el ciclo de trabajo entonces no importa si se conoce o no la frecuencia, es imposible hacerlo, ya que implica saber de antemano cuándo cambiar el signo de la integración. Tendría que determinar el punto medio antes de saber cuál es el valor total del ciclo de trabajo.

Si, OTOH, puede permitirse un retraso de ciclo, entonces puede hacerlo si tiene un bloque de memoria: dispare en el momento de subida, dispare en el momento de caída, determine el ciclo de trabajo, luego use esa información para el siguiente triángulo.

Y, si puede revertir el problema, podría generar primero el triángulo y luego deducir la onda cuadrada de él. Eso le dará lo que quiere, pero no sé si se aplica a su caso.

Me acercaría a esto como un PLL. Llamemos a la onda cuadrada s ( t ) y la onda triangular r ( t ) . La "onda de tocón triangular" final se generará a partir de eso.

Sabes que el cambio correcto τ para r es cuando la integral sobre el producto absoluto de estos dos se vuelve mínima:

τ optar = argumento min τ | s ( t ) r ( t τ ) | d t

Ahora, sabiendo que s ( t ) es periódico, llamemos al período T podemos poner un "disparador" en el flanco ascendente, llamar a ese tiempo 0 e integrarlo en un período. Simplemente detenemos la integración en el período de muestra descendente:

τ ^ = argumento min τ t borde ascendente de  s t borde descendente de  s | s ( t ) r ( t τ ) | d t

Así que construir eso es bastante sencillo: dado que s ( t ) solo está encendido o apagado, no necesita un multiplicador:

τ ^ = argumento min τ t borde ascendente de  s t borde descendente de  s | r ( t τ ) | d t

El mínimo se logra cuando es 0, por lo que también podemos

τ ^ = τ  calle  t borde ascendente de  s t borde descendente de  s r ( t τ ) d t = 0

¡Excelente! Eso significa que necesitamos construir un integrador a partir de un opamp y un capacitor (miles de circuitos de ejemplo disponibles) y alimentar nuestra onda triangular. Alimentamos eso en un circuito de muestra y retención (miles de circuitos) activado en el borde descendente de s ( t ) .

Si el valor es positivo, reduce la velocidad de su oscilador generador de ondas triangulares. Si es negativo, lo aceleras.

La onda triangular se puede generar de muchas maneras, pero la más fácil aquí (ya que necesita algo que sea un VCO) es tener un oscilador armónico controlado por voltaje, alimentado a un comparador para hacer una onda cuadrada de frecuencia variable, y luego construir un integrador para convertirlo en una onda triangular.

Genial, ahora tienes una onda triangular síncrona que se encuentra "centrada" en tu onda cuadrada s ( t ) 's en períodos. Para convertirlo en su onda triangular tocón, solo necesita un rectificador de media onda (miles de circuitos).

Esa es una buena solución ++. Una pena que el OP sea tan escaso de información.

Algunos de los detalles aún no están claros, pero parece que toda la primera etapa del amplificador operacional en el esquema original se puede reemplazar con un generador de pulsos de 1 o 2 puertas, algo con un poco de histéresis. Ajuste el ancho de pulso de modo que sea igual a la mitad del semiciclo positivo de la onda cuadrada de entrada, y obtendrá rampas ascendentes y descendentes de 1/4 de ciclo fuera del integrador.

O

En lugar de un formador de pulsos, tenga un bucle de bloqueo de fase funcionando al doble de la frecuencia de entrada. El oscilador impulsa la etapa del integrador, y ahora el circuito rastreará automáticamente los cambios en la frecuencia de entrada. El CMOS CD4046 puede hacer esto. El seguimiento automático tiene un costo: la amplitud de la onda triangular variará a medida que cambie la frecuencia de entrada (pero el pico del triángulo permanecerá centrado).

El primer opamp (X3) es un amplificador de ganancia conmutada (+1 o -1).
Cierto, pero dado que la entrada es una onda cuadrada, no veo la necesidad de ello.
Era solo una explicación (para "novatos"). Por supuesto, muchos circuitos analógicos pueden ser reemplazados por circuitos digitales, pero no siempre tan "simples" de entender para algunos... especialmente sin los "antecedentes" necesarios. :-)