Low-distortion Audio-range Oscillator

Someone has already looked into Thermistors in detail: Amplitude stability and distortion in thermistor-controlled oscillators - IEEE Xplore Document Probably not linear enough.

I used TelLabs precision wire wound PTAT resistors used in compensating log-amps. They were extremely linear but I never got the time constant down below minutes. BTW it's the voltage coefficient of non-linearity of the wire not the thermal effect that matters, everyone should read Oliver's article on the HP200 and the ones that never settled.
 
Last edited:
The LM13700 datasheet (figure 43) shows a simple Sample and hold made from half an LM13700:

I assume an LM13700 sample and hold would work less well than a sample and hold IC that has been specifically optimized for the job.
Samuel's analysis of sample and hold for his ultra low distortion oscillator involved a lot of fine details that I didn't fully take in, David (Davada) do you have any comments based on work for your own oscillator?

Does anybody know of a reference that looks at oscillator optimization from a broad perspective? Not just tweaks of a particular variety?
The best I have read is the Bruce Hofer conference paper that top ranked the State Variable oscillator, thus used for the Tektronix and subsequent Audio Precision sources.
But the maths doesn't seem to quite hit the heart of the problem, is not "Low Entropy", to use Middlebrook's term.

Best wishes
David
 
Plus the rectification circuitry presumably?
The "sum of two squares" approach could be done with a LM13700, one IC and just over $1.

I assume an LM13700 sample and hold would work less well than a sample and hold IC that has been specifically optimized for the job.

With all due respect it was you who first suggested using an LM13700 for the sum of two squares approach. For that reason, as a courtesy, I suggested the LM13700 for consideration as a sample and hold.

Using the reasoning of your second quote and applying it to your first, an AD633, at $10, should be better than a $1 LM13700. It might be worth trying an unused LM13700 section for the S/H before assuming it is inferior based on its price.

I don't know which is better for a low-speed sample and hold, LF398 or an LM13700 but if I were doing a tuneable oscillator and were inclined to use the LM13700 as a multiplier I think I would be curious enough to at least try one as a sample and hold before ruling it out.

Its not so much the parts and expense used that makes these designs interesting as it is the cleverness of the designer making inexpensive parts perform well.

I submit the Loftect TS-1 as an example: Loftech TS-1 Schematics

The Loftec TS-1's 1000:1 tuneable SV oscillator used LM13600s for the tuning element. It used JFET stabilization. Though it only got down to 0.15% THD the design is very clever and ultra-simple.
 
As Demian points out the fact is peak, average, and rms for a pure sine wave are only an easily computed scale factor apart. 0.003% is -90dB, I don't remember who discovered that a standard 120V Christmas tree bulb works very well as a level control. I got -110dB with nothing else.

Could it be the following 2012 EDN article?
Injection-lock a Wien-bridge oscillator | EDN
Fig. 1 caption makes a reference to L.A. Meacham (The Bridge Stabilized Oscillator, BSTJ 17-4, Oct. 1938)...

Warning: this thread is addictive ! I keep reading it, even though a lot of it exceeds my skill level...

Best,
 
With all due respect...the LM13700 for consideration as a sample and hold.

The comment was not intended as a rejection, or even criticism, of your idea, it was a statement of my assumption prior to a request - for comments by someone better informed than I am about sample-and-hold.
The whole point was to be able to consider it based on information and not my assumptions.

I am all for cheaper alternatives to specialized parts, hence my idea to use an LM13700 in the first place.
There is no inconsistency, I do indeed assume it will be a trade-off compared to a specific multiplier IC.

I submit the Loftect TS-1 as an example... The Loftec TS-1's 1000:1 tuneable SV oscillator

Thank you for the Loftech link, I will study it.
You note that it's a SV, why did you chose a Wien for your own oscillator?
For a fixed frequency unit the better control-ability of SV is irrelevant but there should be a distortion benefit too.

Best wishes
David
 
The classic solution uses a sample and hold + a track and hold. This mixes the fast pulse catching of a sample and hold with the slow droop+ lack of junk of a track and hold. A sample and hold can have some nasty glitches before its finished. The combination can get an accurate picture of the output voltage pretty much after the first peak so a control loop can be faster. On the precision oscillators the sample window is only a few microseconds or less.

There are many ways to make a sample and hold. Some other stuff did it with discrete circuitry which can get pretty involved. The virtue of dedicated chips is the predictable performance from as few parts as necessary. Especially when you need to make more than one unit.

The loftech is a remarkable example of clever circuitry. A simple goal and distortion performance traded for frequency range and flatness.

At the other extreme would be a precision calibrator where everything needs to be really accurate and predictable and still low distortion. The ones I have looked at are quite involved.
 
With a sampling controller the oscillator level is not measured. Instead the oscillator level is is compared to a dc reference. The difference between the dc reference and the peak of the sine is the error signal. It is this error signal which is sampled. Over time, a short time, the controllers integrator forces the error to zero as it integrates the error signal from cycle to cycle. When the oscillator level is settled the input to the sampler is zero volts because the error is zero. The voltage across the hold capacitor is also zero. There is no hold capacitor drop in this state. The integrator input is also seeing zero volts so there is no further change at the integrator output. The integrator holds the total error voltage which is the exact amount the multiplier requires to keep the oscillator level stable.

Any droop from the track and hold - sample hold occurs during the settling interval where it doesn't matter.

If you want cheap sample and hold, I don't think you will be happy with the results.
The OPA615 won't let you down but you have give it more attention than what's in the data sheet. I can help with that.

It not absolutely necessary to to sample at a 90 degree angle. Anywhere between 45 degree and 90 degrees will do. What's important is the sampling is always at the same angle.

All RC oscillator generate an angle somewhere in their network. For Wien Bridge the series RC node can be tapped by a Jfet op amp. Detect the zero crossing and condition the signal. Add a cheap multivibrator and your in business.

A switched integrator eliminates the need for integrator TC adjustment from range to range. It is self adjusting with frequency.

Not that hard to do.
 
[Useful stuff]

Thanks for that explanation.

...If you want cheap sample and hold, I don't think you will be happy with the results.

When you say "cheap sample and hold" do you mean the LF398 and similar ~$2 ICs won't be satisfactory or do you mean circuits not based on a dedicated sample and hold?

The OPA615 won't let you down...

You used the OPA615 in your own oscillator?
Why did you choose that one (or whatever you did use), what specifications did you evaluate?

Best wishes
David
 
Thanks for that explanation.



When you say "cheap sample and hold" do you mean the LF398 and similar ~$2 ICs won't be satisfactory or do you mean circuits not based on a dedicated sample and hold?



You used the OPA615 in your own oscillator?
Why did you choose that one (or whatever you did use), what specifications did you evaluate?

Best wishes
David

Hi Dave,

Cheap is the $2 SH. I mean you get what you pay for. If you look at the charts in the data sheet you will see turn on/off transients that are unacceptable for oscillators. The step voltage at turn on is not good either. High feed through etc.

I tried many approaches to Sh and found the OPA615 to be outstanding.
My control is unusual. I take advantage of the SH in the ADC for the proportional part of the control. The multiplier is a multiplying dac so I need a small 16 bit ADC to drive it.

The integrator is driven from an analog SH, the OPA615. This part works form 10Hz to over 100kHz with no component changes.

To make the OPA615 work best one has to replace the OTA buffer with a Jfet buffer. This improves the droop. This part is a high speed SH. The data sheet 22pF hold cap is not large enough Increase the value to 1nF - 10nF.

You can use the amplifier input to set up a DC reference to compare with the sine peak saving one op amp.

This is a very good paper. It covers theory for any SH.

Sample and Hold with OPA615 - Texas Instruments

https://www.google.ca/url?sa=t&rct=...5a.pdf&usg=AFQjCNFLVO6ozwgXodishETlmWuLExYBcw
 
Last edited:
A bit more on sample and hold amplifiers.

There are two basic type of SH amplifier. Input amplifier voltage output and input amplifier current output. The current out put is preferable because it eliminates some of the causes of
of the output transients on the switch opening and closing. The hold capacitor function like an integrator with current drive. One key parameter to look at is the charge injection of the switch. A good switch may be in the pC range. The OPA615 is current drive with a charge injection of 40fC. The channel resistance of the switch is important as there is a voltage drop across the switch resistance which is maximum the moment the switch is closed. The voltage across the hold cap recovers over time but the phenomena causes a glitch in the output. Therefore the switch should have a minimal channel resistance.

One problem with voltage drive, if you roll your own, is the instantaneous short circuit condition of switching the output of an amplifier to a capacitor load is it that causes an op amp, if used, to activate the output current limit circuits momentarily. Current drive illuminate this problem. Indecently, this is also observed in op amp diode rectifier circuits and one of the reasons the circuit take several cycles for the hold cap to reach a final value. The SH should be designed to alleviate this problem and they are. Speed is of the essence.
 
In the most recent issue of the Journal of the AES my co-author Martin Polak and I have published a paper which presents the composite opamp I'm using for my oscillator design; see www.aes.org/e-lib/browse.cfm?elib=18733.

Regarding sample and hold amplifiers for level detection: It is very desirable to limit the bandwidth to the minimum required for amplitude flatness. Otherwise aliasing (we're dealing with a sampled system) of broadband noise will make the level detector very noisy. In fact the bandwidth of the sample and hold amplifier can track the oscillator frequency for optimum noise performance--see the AP System One schematics for a possible basic implementation.

Samuel
 
I have used the LF398 and, as mentioned earlier, the '398 has a nasty transient response. It would likely create more problems than it solves.

LF398_Sample_Transient.JPG

LF398 Transient Response

LM13700_Sample_Hold.JPG

LM13700 Sample and Hold

One of the potential benefits that the LM13700 S/H I suggested earlier would be the ability to ramp to new sample values by controlling Ib since it uses the variable transconductance output of the LM13700 rather than a FET to switch the hold capacitor. It may have other limitations that make it unacceptable but that aspect made it unique. I've never used the circuit but its clever.

To answer the question as to why I chose a Wien topology for fixed-frequency was to see if Viktors design using a FET or the Janasek/Williams et al "Vactrol" designs could be modified to use a VCA.

Viktors detector design is simple, low-cost, and with simple modification works very well with a VCA.
 
Last edited:
I have used the LF398 and, as mentioned earlier, the '398 has a nasty transient response. It would likely create more problems than it solves.

LF398_Sample_Transient.JPG

LF398 Transient Response

LM13700_Sample_Hold.JPG

LM13700 Sample and Hold

One of the potential benefits that the LM13700 S/H I suggested earlier would be the ability to ramp to new sample values by controlling Ib since it uses the variable transconductance output of the LM13700 rather than a FET to switch the hold capacitor. It may have other limitations that make it unacceptable but that aspect made it unique. I've never used the circuit but its clever.

To answer the question as to why I chose a Wien topology for fixed-frequency was to see if Viktors design using a FET or the Janasek/Williams et al "Vactrol" designs could be modified to use a VCA.

Viktors detector design is simple, low-cost, and with simple modification works very well with a VCA.


When the switch opens the negative feedback loop is opened as well. The schematic for the 398 show a pair of back to back diodes forming a short loop around the SH amplifier to limit the swing of the amplifier under the open condition.

I don't see anything in the above schematic that manages the open feedback loop condition with the LM13700 sample and hold circuit.

However the 13700 is an OTA and will probably work better for this purpose than the 398.

I haven't tried it so I can't say.

If I set out to do a fixed frequency oscillator I probably wouldn't use a SVF. It seems a bit much for a single. I'm not sure it would be justified.
 
Last edited:
Let me propose two alternative solutions.
First proposal: DavidA's idea of using an ADC + DAC makes a lot of sense. Adding some arithmetic between could handle the AGC level detection gain control as well. You would need some zero crossing logic to trigger the sampling. 12 or 16 bit chips for this are now quite inexpensive and all the S+H stuff is inside the ADC.

Second proposal, start with a digital source and one of the really low distortion DAC's and drive a state variable filter. At a minimum you would get a 12 dB reduction from the already really low 2nd harmonic on the DAC. You would also get crystal stable and accurate frequency and hopefully amplitude as well. The filter would be tuned the same way an oscillator would be tuned but no agc circuits.
 
The ADC sampler functions as the proportional controller by applying the oscillator output
to the input of the ADC and applying a dc reference voltage to shift the AC peak down to the ADC input range. The multiplying DAC is configured such that an increase in oscillator level reduces the multiplier gain and if necessary inverts the multiplier output. The circuit stabilizes the oscillator and levels it on its own.

No need for a full PI controller if the oscillator runs between 10Hz and say 30kHz. Above 30kHz the enhancement effect kicks in and make it necessary to add integral to the control. Otherwise the level continues to rise with frequency.

The flatness is surprisingly good. One can adjust the level just by changing the dc reference bias on the input signal to the ADC or by attenuating the input signal to the ADC.

This chops out a big chunk of cash as well, no additional controller.

In fact it is the addition of the integral which slows the settling down. The system is lightning fast with a pure proportional loop.

So multiplier and controller all in one.

The parts I used are quite expensive but less expensive part will work just as well. But you will have to build your own front end for and inexpensive ADC. The ADC and Mdac are serial bus so only three direct connections. The ADC has a serial transmitter and clock built in which eliminates all the glue logic.

A $0.60 high speed cmos multivibrator has a schmitt trigger input which can be setup to detect zero crossing, The output of the multivibrator provides the ADC conversion start pulse, (trigger).

The oscillator needs to be kick started because the ADC timing comes off the oscillator output. A Jfet with an RC ramp on the gate to add momentary pos feedback at power up will do.

I'm not sure this is suitable for Wien because the multiplier noise really stands out. But it's great for an SVO and worked well for the 339A bridged T oscillator. Careful isolation of the power supplies is necessary to keep the switching noise out of the oscillator core. This can be achieved using separate shunt regulators on the multiplier and Mdac and a healthy amount of decoupling between the multiplier and oscillator. Use OSCON where ever possible.
 
Last edited:
Let me propose two alternative solutions.
First proposal: DavidA's idea of using an ADC + DAC makes a lot of sense. Adding some arithmetic between could handle the AGC level detection gain control as well. You would need some zero crossing logic to trigger the sampling. 12 or 16 bit chips for this are now quite inexpensive and all the S+H stuff is inside the ADC.

Second proposal, start with a digital source and one of the really low distortion DAC's and drive a state variable filter. At a minimum you would get a 12 dB reduction from the already really low 2nd harmonic on the DAC. You would also get crystal stable and accurate frequency and hopefully amplitude as well. The filter would be tuned the same way an oscillator would be tuned but no agc circuits.

The tuning of the filter has to be bang on for this to work otherwise there will be a beat between the source and filter. But it is doable.
 
Do you need 16 bits? The 12 bit ADCs I have been looking at for the 725 are quite cheap.

Sent from my LG-H811 using Tapatalk

I used the 16 bit because 16 bit has the lowest noise. With Mdacs the noise drops as the bit depth increases. AD does have a 14 bit at a lesser cost but same noise spec. TI and LT have Mdac as well. These are precision devices and they are expensive but worth it.

I did the tuning with Mdacs as well. I chose that after looking at the cost of quality switches. At the time it didn't cost much more to do the tuning with Mdacs, a USB micro controller and small win app. Besides it was fun to do. As a bonus 262144 frequencies and no controls to wear out.

Will a 12 bit work? Maybe. I would not want to be bouncing between binary steps though.