spicing a VCO

I'm designing an LC oscillator that is tuned by a DAC and a varicap.

formatting link
I can come up with a reasonable model for varicap c vs v. I want to add a series padder cap to define the oscillator pull range. That becomes impressively nonlinear. Or rather, maybe I can get some impressive nonlinearities to cancel.

But how to draw a graph of oscillator frequency vs varicap voltage? In LT Spice.

Build a frequency-to-voltage converter into the simulation?

Reply to
jlarkin
Loading thread data ...

Transient analysis doesn't analyze frequency, nor does DC analysis. So, just hack up a polynomial source, with 1/sqrt(L*(C(v)) analyzed into a Taylor series... you'll need a graph of the varactor characteristic to work with.

E is the voltage-voltage nonlinear source in general SPICE, and MODULATE is the voltage-frequency primitive in LTspice.

Reply to
whit3rd

Use the .measure together with .step commands and plot the stepped measurement data from the .log file.

Reply to
JM

I can easily measure varicap c vs v, compute the padded value, and then compute the resulting oscillator frequency as a plottable value, using a BV maybe. That will do for now, but if I ever want to plot actual frequency I'd have to do something else.

Reply to
jlarkin

You could put a ramp on the varicap and use a delay discriminator to get the frequency.

Cheers

Phil Hobbs

Reply to
Phil Hobbs

This will work,

formatting link
but it's tediuous. I can change the padder cap and manually note/plot the frequency peaks vs voltage and see if I like it.

The DAC range is somewhat flexible with math in an FPGA.

The varicap is nonlinear, but so is the padder math, and the nonlinearities sort of cancel.

I guess tedium will solve the problem faster than elegance. That's a common dilemma, grunt out the solution or play with shiny toys. I have seen engineers go for shiny toys that took 20x as long as grunting.

Reply to
jlarkin

onsdag den 31. marts 2021 kl. 17.54.49 UTC+2 skrev snipped-for-privacy@highlandsniptechnology.com:

formatting link

Reply to
Lasse Langwadt Christensen

They always say "But we can use it again!"

And never do.

Reply to
jlarkin

With a voltage ramp on the varicap, current is incremental capacitance. Then the rest is all math, with a plottable BV output. Boring.

I guess I'll go for boring and be done.

Reply to
jlarkin

Plus you grow the maintenance task of keeping it working. But as in this case there are often intermediate states, e.g. that ramp + delay discriminator.

Cheers

Phil Hobbs

Reply to
Phil Hobbs

Doesn't account for bias and amplitude changes due to gain rolloff though. If the linear approximation is good enough, I'd just stick it in Mathcad.

Cheers

Phil Hobbs

Reply to
Phil Hobbs

On 31/03/2021 16:36, snipped-for-privacy@highlandsniptechnology.com wrote:

Do something similar to that done in the attached file (stepping the varactor control voltage rather than the value as I've done here). Then view the log, left click and plot the measurement (in this case add the frequency trace).

Version 4 SHEET 1 932 692 WIRE 448 -144 304 -144 WIRE 640 -144 448 -144 WIRE 640 -112 640 -144 WIRE 304 -96 304 -144 WIRE 448 0 448 -144 WIRE 96 48 -48 48 WIRE 192 48 96 48 WIRE 304 48 304 -16 WIRE 304 48 256 48 WIRE 384 48 304 48 WIRE 96 112 96 48 WIRE 448 128 448 96 WIRE 544 128 448 128 WIRE 640 128 608 128 WIRE 672 128 640 128 WIRE 448 160 448 128 WIRE 640 160 640 128 WIRE -48 224 -48 48 WIRE 96 256 96 176 WIRE 448 256 448 240 WIRE 448 256 96 256 WIRE 96 336 96 256 WIRE 448 336 448 256 WIRE 304 352 304 48 WIRE -48 480 -48 304 WIRE 96 480 96 400 WIRE 96 480 -48 480 WIRE 304 480 304 432 WIRE 304 480 96 480 WIRE 448 480 448 416 WIRE 448 480 304 480 WIRE 448 528 448 480 FLAG 640 -32 0 FLAG 448 528 0 FLAG 640 240 0 FLAG 672 128 vo SYMBOL ind -32 320 R180 WINDOW 0 -41 89 Left 2 WINDOW 3 -49 37 Left 2 SYMATTR InstName L1 SYMATTR Value 33µ SYMBOL cap 80 112 R0 WINDOW 0 24 13 Left 2 WINDOW 3 22 56 Left 2 SYMATTR InstName C1 SYMATTR Value {cu} SYMBOL cap 80 336 R0 SYMATTR InstName C2 SYMATTR Value 390p SYMBOL cap 256 32 R90 WINDOW 0 0 32 VBottom 2 WINDOW 3 32 32 VTop 2 SYMATTR InstName C3 SYMATTR Value 10n SYMBOL npn 384 0 R0 SYMATTR InstName Q1 SYMATTR Value 2N3904 SYMBOL res 288 -112 R0 SYMATTR InstName R1 SYMATTR Value 39k SYMBOL res 288 336 R0 SYMATTR InstName R2 SYMATTR Value 8.2k SYMBOL res 432 320 R0 SYMATTR InstName R3 SYMATTR Value 140 SYMBOL res 432 144 R0 SYMATTR InstName R4 SYMATTR Value 86 SYMBOL voltage 640 -128 R0 WINDOW 123 0 0 Left 2 WINDOW 39 0 0 Left 2 SYMATTR InstName V1 SYMATTR Value 12V SYMBOL cap 608 112 R90 WINDOW 0 0 32 VBottom 2 WINDOW 3 32 32 VTop 2 SYMATTR InstName C4 SYMATTR Value 10n SYMBOL res 624 144 R0 SYMATTR InstName R6 SYMATTR Value 10k TEXT -464 -192 Left 2 !.tran 0 300u TEXT -472 24 Left 2 !.step param cu 300p 400p 10p\n;.param cu 390p TEXT -472 -128 Left 2 !.meas tran time1 when V(vo)=0 td=250u rise=1\n.meas tran time2 when V(vo)=0 td=250u rise=11\n.meas tran freq param 10/(time2-time1) TEXT -472 -40 Left 2 !.save V(vo)\n.option plotwinsize=0 numdgt=15

Reply to
JM

Brute force with manual fiddling:

formatting link
The trick is to juggle the varicap voltage range and C2 to get the desired pull range and reasonable FM linearity. Of course, the real thing will be an oscillator, not just an LC tank.

In real life, the tank voltage will be about 1 volt p-p, and the AC across the varicap will be about half that. With 8 volts bias, that's not bad.

Reply to
John Larkin

.meas ac peak max mag(V(LC)) .meas ac freq when mag(V(LC))=peak

Reply to
JM

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.