Сгенерируйте треугольную волну со сдвигом фазы от прямоугольной волны

введите описание изображения здесь

введите описание изображения здесь

Мой вход представляет собой прямоугольную волну. На выходе получается треугольная волна. Середина верхней секции прямоугольной волны должна коррелировать с пиком выходного сигнала треугольной волны. Есть ли примеры схем, которые могут это сделать?

Является ли прямоугольная волна только одной стабильной частотой?
@ Антонио51 да, это так
Я забыл, известна ли "центральная точка"?
@ Антонио51 нет. Это как раз середина прямоугольной волны, которая будет коррелировать с пиковой точкой треугольной волны.
Ваш переключатель плохо подключен ... «Переключатель» находится справа от символа ... Слева - управляющее напряжение ... Используйте также операционный усилитель OP27 или лучше ...

Ответы (4)

Первая идея - это эта схема, но вам нужно некоторое «управление» обратной связью из-за неизвестных «смещений» напряжения и «центральной точки».

Сделано с микрокап 12 .

введите описание изображения здесь

Идея поиска «центральной точки» заключается в следующем.
Интегрируйте прямоугольную форму волны.
В конце попробуйте напряжение рампы.
Возьмем полуточечное напряжение.
Это «центральная точка» следующего цикла для использования с компаратором… который заменил SQUARE2.

Это еще одна обновленная версия с "1 циклом задержки"...

введите описание изображения здесь

Добавил другие "волны"...

введите описание изображения здесь

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


Отличный ответ, сэр. Но зачем нужен V4, ведь он ни к чему не привязан? Не могли бы вы поделиться файлом LT Spice для этой схемы? :)
V4 контролирует S1.
Привет, я на самом деле вставил свою схему LT Spice выше в своем вопросе с той же схемой, что и ваша. Однако результат не такой, как ожидалось :(
Извините, я не пользуюсь LTspice... Добавлю новую схему. Помните о функционировании выключателей ... Некоторые замыкаются по команде положительного входного напряжения, некоторые размыкаются ...
@ Antonio51 Антонио51 Я думаю, вы можете поместить все в папку, загрузить на Google Диск и нажать «Поделиться». Google Диск даст вам ссылку, которой вы можете поделиться здесь :)
@ Antonio51 Может быть, вы можете отправить его на мою электронную почту codetest1312@gmail.com?
@TestingSu Хорошо. Отправлю после.
@ Antonio51 Антонио51 Привет, сэр, я новичок в LT Spice и не знаю, как напрямую запустить текстовый файл. Можете просто отправить схему LT Spice вместе в папке на мою электронную почту, которая готова к запуску :)?
@ Antonio51 Привет, сэр, не могли бы вы отправить его на мою почту :)?

Если частота и рабочий цикл известны, то да, это возможно путем реализации фиксированной постоянной времени для интегрирования, равной половине рабочего цикла, и триггера для изменения знака при достижении средней точки.

Если скважность не известна, то неважно, известна частота или нет, сделать это невозможно, так как это подразумевает заранее знать, когда менять знак интегрирования. Вам нужно будет определить среднюю точку, прежде чем даже узнать, каково полное значение рабочего цикла.

Если, OTOH, вы можете позволить себе задержку в один цикл, то вы можете сделать это, если у вас есть блок памяти: запуск по времени нарастания, запуск по времени спада, определение рабочего цикла, а затем использование этой информации для следующего треугольника.

И, если вы можете решить проблему, вы можете сначала создать треугольник, а затем вывести из него прямоугольную волну. Это даст вам то, что вы хотите, но я не знаю, применимо ли это к вашему делу.

Я бы подошел к этому как к PLL. Назовем прямоугольную волну с ( т ) и треугольная волна р ( т ) . Из этого будет сгенерирована окончательная «треугольная волна-пень».

Вы знаете, что правильный сдвиг т для р когда интеграл по абсолютному произведению этих двух становится минимальным:

т выбрать "=" аргумент мин т | с ( т ) р ( т т ) | г т

Теперь, зная, что с ( т ) является периодическим, назовем период Т мы можем поместить «триггер» на нарастающий фронт, назвать это время 0 и просто интегрировать за один период. Мы просто останавливаем интегрирование на падающем периоде выборки:

т ^ "=" аргумент мин т т передний край  с т падающий край  с | с ( т ) р ( т т ) | г т

Таким образом, построить это довольно просто: поскольку с ( т ) только включено или выключено, нет необходимости в множителе:

т ^ "=" аргумент мин т т передний край  с т падающий край  с | р ( т т ) | г т

Минимум достигается, когда он равен 0, поэтому мы можем точно так же

т ^ "=" т  ул.  т передний край  с т падающий край  с р ( т т ) г т "=" 0

Большой! Это означает, что нам нужно построить интегратор из операционного усилителя и конденсатора (доступны тысячи примеров схем) и подать нашу треугольную волну. Мы вводим это в схему выборки и удержания (тысячи цепей), запускаемую по заднему фронту сигнала. с ( т ) .

Если значение положительное, вы замедляете генератор генератора треугольных волн. Если он отрицательный, вы ускоряете его.

Треугольную волну можно сгенерировать многими способами, но проще всего (поскольку вам нужно что-то, что является ГУН) иметь гармонический, управляемый напряжением осциллятор, поданный в компаратор для создания прямоугольной волны с переменной частотой, а затем построить интегратор, чтобы преобразовать его в треугольную волну.

Отлично, теперь у вас есть синхронная треугольная волна, которая находится «в центре» вашей прямоугольной волны. с ( т ) периоды. Чтобы преобразовать его в свой пень треугольной волны, вам просто нужен однополупериодный выпрямитель (тысячи цепей).

Это хорошее решение++. Жаль, что у ОП так мало информации.

Некоторые детали до сих пор не ясны, но похоже, что весь первый каскад операционного усилителя в исходной схеме может быть заменен формирователем импульсов с 1 или 2 затворами, что-то с небольшим гистерезисом. Отрегулируйте ширину импульса так, чтобы она равнялась 1/2 входного положительного полупериода прямоугольной волны, и вы получите 1/4 периода повышения и понижения на выходе интегратора.

ИЛИ

Вместо формирователя импульсов используйте контур фазовой автоподстройки частоты, работающий на удвоенной входной частоте. Генератор управляет каскадом интегратора, и теперь схема будет автоматически отслеживать изменения входной частоты. CMOS CD4046 может это сделать. Автоматическое отслеживание имеет свою цену — амплитуда треугольной волны меняется при изменении входной частоты (но пик треугольной формы остается в центре).

Первый операционный усилитель (X3) представляет собой усилитель с переключаемым коэффициентом усиления (+1 или -1).
Верно, но так как на входе прямоугольная волна, я не вижу в этом необходимости.
Это было только объяснение (для "новичков"). Конечно, многие аналоговые схемы можно заменить цифровыми, но не всегда так "просто" для понимания некоторым... тем более без необходимой "подготовки". :-)