DIY一个音高线性VCO:从原型设计到完美调谐
- 2025-07-29 17:22:14
编者注:这一系列设计实例(DI)探讨一种音高线性(pitch-linear)的压控振荡器(VCO)设计方法,涵盖从基本振荡器架构、电压控制逻辑,到提升供电电压适应性、实现类正弦波输出等多项技术细节,适用于音频应用与电子音乐实验。
完整系列分为两部分:第1部分(本文)说明如何制作一个音高与控制电压成正比的振荡器。第2部分将介绍如何修改电路以支持更高的电源电压、使用分立组件实现,以及调整输出波形使其更接近正弦波。
典型电路
我最近接手了一项正在开发的项目,需要一种方式来产生音频输出,以反映变化中的电压电平。乍听之下,这像是一个电压控制振荡器(VCO)的典型应用,但这个控制信号是双极性的,峰值范围从-1V到+1V。如果采用线性频率响应,声音听起来就不对劲,而且根本无法达成我想要的对称±1八度音输出。
图1 所示的是一种典型且广为人知的振荡器架构,但如图所绘,它并不具备电压控制功能。周期开始时,C1被完全充电,接着通过R1放电,直到达到中点电压(mid-rail,作为参考电压)时触发单稳态多谐振荡器(MSMV),该振荡器产生一个脉冲以导通Q1,并将C1短路至正电源轨,启动下一周期。输出则是一个幅度固定的指数衰减锯齿波,从C1的上端获取并经过一级缓冲输出(严格来说,这里的运算放大器应该是比较器)。C1通常会切换到不同的频率范围,并通过改变R1进行调整。
图1:典型的驰张振荡器,产生指数衰减的锯齿波输出,作为本设计的起点。
另一种调整方式是保持R1和C1不变,而改变参考电压。此时输出频率随着电压变化,其调谐特性呈指数关系。如果我们想要音高线性(pitch-linear),也许这会是个不错的出发点?
微调设计
指数衰减波形或许无法精确达成所需曲线,但经过一点微调,其部分曲线就足够接近可实用的程度了。经过一些实验,产生了如图2所示的可用电路。
图2:改变参考电压而非RC时间常数,可得到接近音高线性的调谐特性,尤其是加入R2后更为准确。
如前所述,双极性控制电压与衰减(近似指数)的谐波进行比较,用于调整振荡器的频率。当两者重合时,U2a (作为MSMV)会被触发,产生一个复位脉冲瞬间导通Q1,将C1的电压复位为最大值。图3显示该电路在两个八度音范围极端下的主要波形。
图3:图2电路于两个八度音范围极端下的波形。
改变规则,让我们达到目标
本设计的关键在于那个看似不起眼的电阻R2。它通过压缩与平移指数衰减曲线,使调谐特性接近音高线性(即控制电压变化导致频率以固定比率变化,而非固定差值),在两个八度音范围内达到合理的拟合效果。其匹配误差在低频端最明显,靠近最低校准点时误差约为5%,往下则更偏离(一个半音约等于7%)。若使用51kΩ的R2,在最低八度频率时能得到最佳匹配,但整体听起来,56kΩ的平均效果更佳。
在图中所示组件值下,控制电压从-1V到+1V时,输出频率大约从250Hz到1000Hz,这正好涵盖从“C4”(中央C:约262Hz,若以A4为440Hz 定义)到“C6”的两个八度音(此处使用引号区分音高与电容器命名)。
若欲调整音域,只需更换C1,或同时调整R1与R2,但两者比例需保持不变。当控制电压低于约-1.5V (由 R1和R2决定)时,振荡会停止。高于+1V时,匹配仍可接受,甚至能延伸到额外半个八度以上。
U2b将振荡器的脉冲输出除以2,产生方波,接着经由输出网络转换为约1.1V峰对峰的梯形波(约为-6dBu)。虽然它称不上是纯净波形,但相比数字方波边缘,现在已更柔和也更具“模拟感”。
其他补充:
MCP6002价格便宜、表现尚可。MCP6022规格更佳(速度更快,输入偏移 <500 µV),但价格较高。
U1剩余部分可用于进一步滤波输出。
Q1的规格并不关键。ZVP3306A的导通电阻RDS(ON) 高达15Ω,但其栅极脉冲宽度足以确保C1在各种情况下能完全充电。
±1V的控制电压范围刚好符合需求,不过这是巧合,并非刻意设计。
这个电路现在已能达成预期需求,可直接用于项目或工具中。不过,还有进一步的改进空间……
加几个组件,提升音域与精度
重新审视这个基础电路时,我想到一个有趣的方式。线性频率调谐可以用两种方法达成:其一是使用线性斜坡并变化控制电压(就像我们对指数波形所做的),另一种则是以可控制电流源取代R1,并移除R2。两者结合之下,调谐规律就会变成“平方”的,天生就更接近音高线性。
图4:用电压控制的电流源取代调谐电阻R1,即可大幅提升音域实现超过4个八度,且具备更高的音高精度。
Q2、U1b和R1组成一个电流吸收器。其控制电压为输入电压的一半,以确保Q2不会饱和。C1以线性速率放电,其斜率由Vcon控制。此处的电源电压改为0V / +5V,而非±2.5V,以反映更大的调谐范围。不过,输出频率仍然以约520Hz为中心(即约为“C5”的音高)。
现在控制电压所需的变化为每个八度约840mV (或每个半音约70mV)。在中间的两个八度范围内,音高线性几乎完美,而在其上下延伸的范围内,仍有不错表现。误差依然集中在低频端,因为此时电流源已接近极限(缺乏足够电流)。这一版本设计采用MCP6022,是因为其性能更佳,而其他电路几乎未做改变。
虽然超过四个八度的范围已远超出我原本的应用需求,但更佳的精度表现总是令人欣喜,也为潜在的音乐应用开启了可能性。
接下来,在第2部分,我们将说明如何修改本电路以支持更高电源电压,如何只用分立组件(除了运算放大器)来实现,并展示如何将输出波形改造成一个表现良好的正弦波。

- 点赞 (0)
-
分享
微信扫一扫
-
加入群聊
扫码加入群聊