lørdag 3. januar 2015

The Xonik VCA revisited

I have spent some time tweaking the LM13700 based linear VCA. I read somewhere that one should aim to use the highest possible value for the control current I_abc, which makes sense:

The way the VCA works is

  • The input voltage is divided down to something the LM13700 can handle
  • The voltage is attenuated/amplified by the LM13700, the highest output signal is found when the control current is at its highest.
  • The output current from the LM13700 is converted into a voltage and amplified by the output opamp.

Now, the lower the maximum controlling current is, the higher the output amplification must be. The higher the amplification, the more noise you amplify as well.

With this in mind, I took a closer look at the circuit and the LM13700 datasheet.

The datasheet states that the maximum Iabc the IC can handle is 2mA. Any more than this and the device self destructs.This is why some circuits out there have a 10k resistor connected between the transistor collector and the IC. The Iabc input (pin 1) of the LM13700 will stay close to the negative power rail, and the collector can never move above 0V (more than this and it would turn off as the collector has to be more negative than the emitter, and the emitter is connected to the CV inputs opamp's virtual ground). This gives a maximum voltage across the resistor of 15V, and a current through the resistor and into the LM13700 of 15V/10k = 1.5mA.

This can safely be changed to a 8.2k resistor which will give a maximum current of 1.83mA. It could actually be reduced even further, from my experience the Iabc input never goes much below -14V, but at least this is still on the safe side.

After some experimentation I decided to use a 3k3 resistor on the CV input, R2, when using a 0 to 5V CV. The maximum input current will then be 5V/3.3k = 1.515mA (A higher CV input will make this go higher, but it will be limited by the 8.2k resistor on the LM13700 input so we will never break the LM13700).

With a CV of 5V, I then tried different values for the input and output signal resistors. Assuming we want the input signal to be allowed to swing as much as possible, I added a 15V signal through a potmeter to the input and watched when the LM13700 started clipping. I ended up using a 27k input resistor, R1. To get the output signal back to the same amplitude (The opamp will start clipping with an input signal of about 13V, so I tried this with a 10V signal) I had to use a combination of a 22k and a 1.2k resistor in the feedback of the output amplifier, R15 and R17.

I also tried various other configurations. One may want to use a 0 to 10V CV instead of the 0 to 5V (the CV has to be positive, so if you want to use a -5 to 5V CV you have to bias it into 0 to 10V first. A negative CV will not harm the VCA in any way, it will just be fully turned off when the CV is less than 0V). If you are certain your input signal will never be above 5V or 10V you can also get away with less attenuation/amplification and thus less noise.

Here is a table of good values to use:
CVSignal swingInput resistor R1Output resistor R15 (+R17)CV input resistor R2
+/-10V12k10k + 560R3.3k
Max27k22k + 560R3.3k
0-10V+/-5V5.6k4.7k + 680R6.8k
+/-10V12k10k + 1k6.8k
Max27k22k + 1.2k6.8k

You can of course use a potentiometer instead of the output resistors, this will let you tweak the output perfectly. My experience however is that this is unnecessary as long as you use 1% resistors and the values above.

Dual VCA circuit using 0-5V CV

Ps: The additional input resistors are changed from two 510R resistors to one combination of 470R + 22R and one 510R. While this adds an additional resistor, it is well worth it in terms of balance / centering. Alternatively use a 1k potentiometer instead, with one side connected to the positive input and the other to the negative input. The center pin should be connected to ground.

Input vs output signal. The topmost wave is the input. The output wave is slightly off center.

Input vs output signal with a different balance - the waves overlap nicely.

PPS: The output buffer inverts the phase of the signal, this can be remedied by adding a second opamp with unity gain.

Disclaimer: The Xonik VCA is mainly inspired by the LM13600 VCA found on the Bergfotron pages and the linear Lockbox VCA 2 found on the Lockbox Synth pages

10 kommentarer:

  1. I just realized that i had an error in the post - it said that the maximum controlling current Iabc is 20mA, this should be 2mA. The rest of the calculations are ok and I've fixed the error.

  2. I suspect that the diode in the opamp feedback circuit compensates for the voltage drop across Vbe, though this has not been confirmed.

  3. No, thinking again, the diode is there to prevent any current flowing from the opamp input to the output. Now, the only way the opamp may get an equal current flowing through the feedback loop as the one across R88 is to adjust the voltage at the transistor base so that Ie is equal to the wanted current.

  4. Hello Joakim, thanks for sharing your work! I'm planning on trying out this VCA for 0-5V CV. The signal will also be 0-5V. On the diodes, would a 1N4001 be good? Building my shopping list.

    Thanks again!

    1. Hi! 1N4001 is a power diode, use a small signal diode such as the 1N4148 instead. Also, you may want to consider using a 25-50k multiturn trim pot in place of the R15-R16 to be able to trim the output amplitude, and a 1k trimmer instead of R5-R7-R9 (connect the center pin to gnd). It will work fine as described above but this lets you trim it perfectly. Try breadboarding it as per the schema first and see if it's necessary to change anything. Ps: as described, this is a linear VCA, if you want to use it as a volume control you need to control it using a logarithmic signal to get an even response (but perhaps you knew this already).

      Just ask if you need any more help!

  5. Svar - thank you very much for the response. I forgot to check the box to be notified on your response. It may be a little while still before I try this, going to build an oscillator first, but I will let you know how I make out. I did buy the parts, and I think I already have 1N4148 :)

    1. Nice, what oscillator are you building?

  6. I'm planning my own design, dual VCO with signal generation via Atmega328 + 12 bit ADC and DAC. Planning to have variable waveshape and modulation, PWM, osc sync, also working at LFO rates.

  7. Hello Joakim, returning again to your VCA here which I built some years ago. Using it now in a polysynth design I'm toying with. Thanks for sharing!

    1. Great stuff, do you have any posts about it? PS, if you haven't already done so, check out the comment above about using trimpots - the values in the schematic were perfect for my breadboarded circuit, but don't allow any trimming of symmetry and amplitude.