This is the simplest circuit I can come up with.
Harmonics are more than 80dB down in simulation.
FFT the last 30 seconds.
There is only one harmonic stopping me claiming 90dB but the exact FFT result can depend
on exactly how much output is selected for the FFT. You may see different results.
If a prototype is ever built, attention to the type and quality of the capacitors used will be needed.
Electrolytics are not intended. Put C1 and C2 near U1 supply pins.
Also pay attention to the stability of +/- 6V.
It would be nice to have a single 12V rail version but so far I can't get it to work.
R1 and R2 and probably R7 should be easily changeable.
R3 should be 220 ohm ten turn. R9 should be 1M ohm ten turn in series with 470k.
I don't fully understand why the DC stabilization circuit through U2B achieves what it does
and this makes me concerned about whether a real circuit would have the same behaviour.
It was added when I noticed that the diodes D1 and D2 weren't contributing equally so I
decided to try to derive a DC correction signal. This was originally connected to the FET source
and then to R13. Since this is a DC correction signal I decided to try out the effect of
connecting it to U1 Vocm and was amazed that this works as well as it does.
If you disconnect R5, harmonics will not be more than 50dB down because D1 and D2 are no
longer providing stable and equal contributions to the level control feedback.
If you need even better performance then the circuit referenced by Bill Sloman can be used.
https://www.google.com/search?q=AN132+purityNSL-32SR3 is not expensive and simulation models exist but LT1468 is expensive.
Other references
https://www.google.com/search?&q=The+field+effect+transistor+as+a+voltage+controlled+resistorhttps://www.google.com/search?&q=sine+wave+oscillator&udm=2Version 4
SHEET 1 2196 932
WIRE -64 -672 -96 -672
WIRE 48 -672 0 -672
WIRE -96 -576 -96 -672
WIRE -64 -576 -96 -576
WIRE 48 -576 48 -672
WIRE 48 -576 16 -576
WIRE -32 -464 -32 -480
WIRE 48 -448 48 -576
WIRE 48 -448 0 -448
WIRE -96 -432 -96 -576
WIRE -64 -432 -96 -432
WIRE 160 -416 0 -416
WIRE 208 -416 160 -416
WIRE 336 -416 288 -416
WIRE 400 -416 336 -416
WIRE 512 -416 400 -416
WIRE 624 -416 512 -416
WIRE -96 -384 -96 -432
WIRE -32 -384 -32 -400
WIRE 48 -368 48 -448
WIRE 336 -368 336 -416
WIRE 160 -352 160 -416
WIRE 400 -352 400 -416
WIRE 512 -288 512 -416
WIRE 624 -288 624 -416
WIRE -96 -272 -96 -304
WIRE -96 -272 -192 -272
WIRE -96 -240 -96 -272
WIRE 48 -240 48 -288
WIRE 160 -240 160 -288
WIRE 336 -240 336 -288
WIRE 400 -240 400 -288
WIRE -192 -176 -192 -272
WIRE -224 -128 -256 -128
WIRE -96 -128 -96 -160
WIRE -96 -128 -128 -128
WIRE -80 -128 -96 -128
WIRE 144 -128 -80 -128
WIRE 288 -128 224 -128
WIRE 352 -128 288 -128
WIRE 512 -128 512 -224
WIRE 512 -128 432 -128
WIRE -256 -48 -256 -128
WIRE -208 -48 -256 -48
WIRE -80 -48 -80 -128
WIRE -80 -48 -128 -48
WIRE 288 -16 288 -128
WIRE 288 -16 64 -16
WIRE 352 -16 288 -16
WIRE 512 -16 512 -128
WIRE 512 -16 432 -16
WIRE -256 0 -256 -48
WIRE 144 48 144 32
WIRE -240 96 -320 96
WIRE -176 96 -240 96
WIRE 64 96 64 -16
WIRE 112 96 64 96
WIRE 512 96 512 -16
WIRE 512 96 272 96
WIRE 16 128 -48 128
WIRE 112 128 16 128
WIRE -320 144 -320 96
WIRE 624 144 624 -224
WIRE 656 144 624 144
WIRE 768 144 720 144
WIRE 848 144 768 144
WIRE -176 160 -176 96
WIRE 16 160 16 128
WIRE 112 160 64 160
WIRE 624 160 624 144
WIRE 624 160 272 160
WIRE 144 224 144 208
WIRE 848 240 848 144
WIRE 16 256 16 224
WIRE 64 272 64 160
WIRE 160 272 64 272
WIRE 288 272 160 272
WIRE 400 272 352 272
WIRE 512 272 512 96
WIRE 512 272 480 272
WIRE 64 288 64 272
WIRE 160 288 160 272
WIRE -320 320 -320 224
WIRE -320 320 -400 320
WIRE -400 336 -400 320
WIRE -320 336 -320 320
WIRE -176 336 -176 224
WIRE -176 336 -320 336
WIRE -48 336 -48 128
WIRE 64 384 64 368
WIRE 160 384 160 352
WIRE 160 384 64 384
WIRE -320 416 -320 336
WIRE 64 416 64 384
WIRE 848 416 848 320
WIRE -176 432 -176 336
WIRE 192 480 144 480
WIRE 304 480 272 480
WIRE 384 480 368 480
WIRE 512 480 512 272
WIRE 624 480 624 160
WIRE 288 576 288 560
WIRE -320 592 -320 496
WIRE -240 592 -320 592
WIRE -176 592 -176 496
WIRE -176 592 -240 592
WIRE 384 592 384 480
WIRE 384 592 320 592
WIRE 624 592 624 544
WIRE 624 592 384 592
WIRE -48 608 -48 416
WIRE 0 608 -48 608
WIRE 32 608 0 608
WIRE 144 608 144 480
WIRE 144 608 112 608
WIRE 208 608 144 608
WIRE 256 608 208 608
WIRE 432 624 320 624
WIRE 512 624 512 544
WIRE 512 624 432 624
WIRE 624 624 624 592
WIRE 704 624 624 624
WIRE -48 656 -48 608
WIRE 0 656 0 608
WIRE 288 656 288 640
WIRE 512 656 512 624
WIRE 704 656 704 624
WIRE 432 672 432 624
WIRE 624 672 624 624
WIRE -48 768 -48 720
WIRE 0 768 0 720
WIRE 0 768 -48 768
WIRE 432 768 432 736
WIRE 512 768 512 736
WIRE 512 768 432 768
WIRE 624 768 624 736
WIRE 624 768 512 768
WIRE 704 768 704 736
WIRE 704 768 624 768
WIRE -48 800 -48 768
WIRE 432 800 432 768
FLAG -400 336 0
FLAG 288 560 V+
FLAG 144 224 V-
FLAG -240 96 V+
FLAG -240 592 V-
FLAG 768 144 output
FLAG 144 32 V+
FLAG 288 656 V-
FLAG 432 800 0
FLAG 16 256 0
FLAG -32 -480 V+
FLAG -32 -384 V-
FLAG -256 0 0
FLAG 400 -240 0
FLAG 160 -240 0
FLAG 848 416 0
FLAG 64 416 0
FLAG 48 -240 0
FLAG 336 -240 0
FLAG -48 800 0
FLAG 208 608 dc-trim
SYMBOL voltage -320 128 R0
WINDOW 123 0 0 Left 0
WINDOW 39 10 135 Left 2
WINDOW 0 12 7 Left 2
WINDOW 3 15 104 Left 2
SYMATTR SpiceLine Rser=0.01
SYMATTR InstName V1
SYMATTR Value 6
SYMBOL res 496 256 R90
WINDOW 0 1 52 VBottom 2
WINDOW 3 33 45 VTop 2
SYMATTR InstName R11
SYMATTR Value 10.5k
SYMBOL cap 352 256 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 35 30 VTop 2
SYMATTR InstName C8
SYMATTR Value 0.015�
SYMATTR SpiceLine V=16 Irms=271m Rser=0.594318 Lser=0 mfg="KEMET" pn="C0603C153K4RAC" type="X7R"
SYMBOL res 240 -144 R90
WINDOW 0 -1 46 VBottom 2
WINDOW 3 35 56 VTop 2
SYMATTR InstName R7
SYMATTR Value 6.34k
SYMBOL res 448 -144 R90
WINDOW 0 -4 61 VBottom 2
WINDOW 3 39 55 VTop 2
SYMATTR InstName R8
SYMATTR Value 13k
SYMBOL njf -128 -176 R90
WINDOW 0 -37 23 VRight 2
WINDOW 3 -9 -3 VRight 2
SYMATTR InstName J1
SYMATTR Value J112
SYMBOL voltage -320 400 R0
WINDOW 123 0 0 Left 0
WINDOW 39 10 135 Left 2
WINDOW 0 10 0 Left 2
WINDOW 3 15 104 Left 2
SYMATTR SpiceLine Rser=0.01
SYMATTR InstName V2
SYMATTR Value 6
SYMBOL res 48 272 R0
WINDOW 3 36 65 Left 2
SYMATTR Value 10.5k
SYMATTR InstName R10
SYMBOL schottky 496 -288 R0
WINDOW 3 -17 -26 VRight 2
SYMATTR Value BAS40HY
SYMATTR InstName D1
SYMATTR Description Diode
SYMATTR Type diode
SYMBOL schottky 608 -288 R0
WINDOW 3 -15 -25 VRight 2
SYMATTR Value BAS40HY
SYMATTR InstName D2
SYMATTR Description Diode
SYMATTR Type diode
SYMBOL res -112 -64 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R3
SYMATTR Value 82
SYMBOL OpAmps\LT1994 176 128 R0
WINDOW 3 10 -65 Left 2
WINDOW 0 11 -95 Left 2
SYMATTR InstName U1
SYMBOL OpAmps\LT1057 288 544 M0
WINDOW 0 19 104 Left 2
WINDOW 3 18 130 Left 2
SYMATTR InstName U2B
SYMBOL schottky 528 480 M0
WINDOW 3 52 -26 VRight 2
WINDOW 0 -18 3 Left 2
SYMATTR Value BAS40HY
SYMATTR InstName D3
SYMATTR Description Diode
SYMATTR Type diode
SYMBOL schottky 640 480 M0
WINDOW 3 49 -26 VRight 2
WINDOW 0 -21 4 Left 2
SYMATTR Value BAS40HY
SYMATTR InstName D4
SYMATTR Description Diode
SYMATTR Type diode
SYMBOL res 528 640 M0
WINDOW 3 25 87 Left 2
SYMATTR Value 220k
SYMATTR InstName R16
SYMBOL res 720 640 M0
WINDOW 3 27 87 Left 2
SYMATTR Value 220k
SYMATTR InstName R17
SYMBOL res -112 -256 R0
WINDOW 0 38 42 Left 2
WINDOW 3 36 66 Left 2
SYMATTR InstName R2
SYMATTR Value 1k
SYMBOL res 320 -384 R0
WINDOW 0 -55 41 Left 2
WINDOW 3 -64 83 Left 2
SYMATTR InstName R13
SYMATTR Value 220k
SYMBOL res 448 -32 R90
WINDOW 0 -4 61 VBottom 2
WINDOW 3 39 55 VTop 2
SYMATTR InstName R9
SYMATTR Value 1.0469Meg
SYMBOL res -80 -288 R180
WINDOW 0 40 70 Left 2
WINDOW 3 45 42 Left 2
SYMATTR InstName R1
SYMATTR Value 1k
SYMBOL res -32 432 R180
WINDOW 0 36 76 Left 2
WINDOW 3 36 40 Left 2
SYMATTR InstName R5
SYMATTR Value 33k
SYMBOL res 176 464 M90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R15
SYMATTR Value 220
SYMBOL res 16 592 M90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R14
SYMATTR Value 10k
SYMBOL cap 176 352 R180
WINDOW 0 -37 41 Left 2
WINDOW 3 -88 16 Left 2
SYMATTR InstName C7
SYMATTR Value 0.015�
SYMATTR SpiceLine V=16 Irms=271m Rser=0.594318 Lser=0 mfg="KEMET" pn="C0603C153K4RAC" type="X7R"
SYMBOL OpAmps\LT1057 -32 -496 M0
WINDOW 0 -63 128 Left 2
WINDOW 3 -54 156 Left 2
SYMATTR InstName U2A
SYMBOL cap 720 128 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C13
SYMATTR Value 1�
SYMATTR SpiceLine V=10 Irms=0 Rser=0 Lser=0 mfg="Murata" pn="GRM153R61A105ME95" type="X5R"
SYMBOL res 832 224 R0
SYMATTR InstName R18
SYMATTR Value 100k
SYMBOL res 32 -384 R0
SYMATTR InstName R6
SYMATTR Value 22k
SYMBOL res 192 -400 R270
WINDOW 0 35 55 VTop 2
WINDOW 3 -6 55 VBottom 2
SYMATTR InstName R12
SYMATTR Value 220k
SYMBOL res -80 -560 R270
WINDOW 0 31 55 VTop 2
WINDOW 3 -3 56 VBottom 2
SYMATTR InstName R4
SYMATTR Value 47k
SYMBOL cap 176 -352 M0
WINDOW 0 -22 9 Left 2
WINDOW 3 -31 54 Left 2
SYMATTR InstName C6
SYMATTR Value 10�
SYMATTR SpiceLine V=6.3 Irms=0 Rser=0 Lser=0 mfg="Murata" pn="GRM155R60J106ME15" type="X5R"
SYMBOL cap 416 -352 M0
WINDOW 0 -36 9 Left 2
WINDOW 3 -31 54 Left 2
SYMATTR InstName C10
SYMATTR Value 10�
SYMATTR SpiceLine V=6.3 Irms=0 Rser=0 Lser=0 mfg="Murata" pn="GRM155R60J106ME15" type="X5R"
SYMBOL cap 368 496 M270
WINDOW 0 32 32 VTop 2
WINDOW 3 0 32 VBottom 2
SYMATTR InstName C9
SYMATTR Value 10�
SYMATTR SpiceLine V=6.3 Irms=0 Rser=0 Lser=0 mfg="Murata" pn="GRM155R60J106ME15" type="X5R"
SYMBOL cap 416 672 R0
WINDOW 0 -37 6 Left 2
WINDOW 3 -31 54 Left 2
SYMATTR InstName C11
SYMATTR Value 10�
SYMATTR SpiceLine V=6.3 Irms=0 Rser=0 Lser=0 mfg="Murata" pn="GRM155R60J106ME15" type="X5R"
SYMBOL cap 608 672 R0
WINDOW 0 -33 9 Left 2
WINDOW 3 -31 54 Left 2
SYMATTR InstName C12
SYMATTR Value 10�
SYMATTR SpiceLine V=6.3 Irms=0 Rser=0 Lser=0 mfg="Murata" pn="GRM155R60J106ME15" type="X5R"
SYMBOL cap -192 160 R0
WINDOW 0 -22 9 Left 2
WINDOW 3 -31 54 Left 2
SYMATTR InstName C1
SYMATTR Value 10�
SYMATTR SpiceLine V=6.3 Irms=0 Rser=0 Lser=0 mfg="Murata" pn="GRM155R60J106ME15" type="X5R"
SYMBOL cap -192 432 R0
WINDOW 0 -22 9 Left 2
WINDOW 3 -31 54 Left 2
SYMATTR InstName C2
SYMATTR Value 10�
SYMATTR SpiceLine V=6.3 Irms=0 Rser=0 Lser=0 mfg="Murata" pn="GRM155R60J106ME15" type="X5R"
SYMBOL cap 32 224 R180
WINDOW 0 24 56 Left 2
WINDOW 3 24 8 Left 2
SYMATTR InstName C4
SYMATTR Value 10�
SYMATTR SpiceLine V=6.3 Irms=0 Rser=0 Lser=0 mfg="Murata" pn="GRM155R60J106ME15" type="X5R"
SYMBOL diode -32 720 R180
WINDOW 0 24 64 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D5
SYMATTR Value 1N4148
SYMBOL cap 0 -688 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C3
SYMATTR Value 10�
SYMATTR SpiceLine V=6.3 Irms=0 Rser=0 Lser=0 mfg="Murata" pn="GRM155R60J106ME15" type="X5R"
SYMBOL cap -16 720 M180
WINDOW 0 24 56 Left 2
WINDOW 3 24 8 Left 2
SYMATTR InstName C5
SYMATTR Value 1�
SYMATTR SpiceLine V=10 Irms=0 Rser=0 Lser=0 mfg="Murata" pn="GRM153R61A105ME95" type="X5R"
TEXT -624 272 Left 2 !.tran 0 300s 0s startup
TEXT -1568 -728 Left 2 ;Edward Rawde's high purity 1kHz sinewave oscillator. 8 Nov 2024\n \nHarmonics are more than 80dB down in
simulation.\nFFT the last 30 seconds.\nThere is only one harmonic stopping me claiming 90dB but the exact FFT result can depend\non
exactly how much output is selected for the FFT. You may see different results.\n \nIf a prototype is ever built, pay attention to
the type and quality of the capacitors used.\nElectrolytics are not intended. Put C1 and C2 near U1 supply pins.\nAlso pay attention
to the stability of +/- 6V.\nIt would be nice to have a single 12V rail version but so far I can't get it to work.\n \nR1 and R2 and
probably R7 should be easily changeable.\nR3 should be 220 ohm ten turn. R9 should be 1M ohm ten turn in series with 470k.\n \nI
don't fully understand why the DC stabilization circuit through U2B achieves what it does\nand this makes me concerned about whether
a real circuit would have the same behaviour.\nIt was added when I noticed that the diodes D1 and D2 weren't contributing equally so
I \ndecided to try to derive a DC correction signal. This was originally connected to the FET source\nand then to R13. Since this is
a DC correction signal I decided to try out the effect of\nconnecting it to U1 Vocm and was amazed that this works as well as it
does. \nIf you disconnect R5, harmonics will not be more than 50dB down because D1 and D2 are no\nlonger providing stable and equal
contributions to the level control feedback.\n \nIf you need even better performance then the circuit referenced by Bill Sloman can
be used.\n
https://www.google.com/search?q=AN132+purity\nNSL-32SR3 is not expensive and simulation models exist but LT1468 is
expensive.\n \nOther references\n \n
https://www.google.com/search?&q=The+field+effect+transistor+as+a+voltage+controlled+resistor\n
\n
https://www.google.com/search?&q=sine+wave+oscillator&udm=2