ADC(Analog to Digital Converter)是模拟转数字采样器。Arduino的ADC口只能测量直流电,即0.0v ~ REFv(REF ≥ 0.0),但有时我们需要测量-REFv ~ +REFv的交流电,如音频信号,那就变得尴尬了~= ̄ω ̄=
设计思路
让交流音频信号可被Arduino测量:
∵ Arduino的ADC只能采集0 ~ VREF的电压值,且VREF ≥ 0
∵ 音频信号是-v ~ +v的交流信号,v ≥ 0
∴ 为音频信号加上+v的偏置电压,使其电压变化范围全部大于等于0,再将其放大到VREF即可被Arduino测量
在Arduino中对畸变的信号还原:
∵ 假设原始音频信号为V,它的最低电压为Vorg_min
∵ 对其加上偏置电压后为V' = V + Vorg_min
∵ 对其放大后的电压为V'' = n · (V + Vorg_min)
∴ 解算后的实际电压 V = (1 / n) · V'' - Vorg_min
如下图所示:
参考电路
共射极放大电路
共射极放大电路可以为信号添加一个固定的直流偏置电压,使信号完全偏移到正电压上,另外它也可以放大信号的电压,满足Arduino ADC接口的测量标准。
电路分析
上面的电路为固定偏置共射极放大电路。我们计算的共射极放大电路中使用到的三极管是NPN型三极管,它有三个极:
- 基极:符号b,可看作是控制水管流量的阀门
- 集电极:符号c,可看作是水管的注水端
- 发射极:符号e,可看作是书管的出水端
三极管有两种半导体类型:
- 硅管,集电极与发射极之间的压降为VBE = 0.7v
- 锗管,集电极与发射极之间的压降为VBE = 0.2v(因为穿透电流大,容易损坏,现在应该基本弃用了)
三极管的放大倍数:
- β,三极管的放大倍数通常用β来表示
参数计算
我们一般计算一个放大电路的参数,会把里面的电流都控制到一个静态的点上去计算,这样可以避开复杂的电流变化带来的计算上的麻烦。而我们输入端有个阻隔直流的电容C,所以信号静止不变时,能够输入放大电路的电压就为0v了,这就引入了静态工作点的参数估算,习惯上也把它称作Q点。
静态工作点
因为输入放大电路的电压为0v,所以这个时候在三极管基极b(阀门端)上输入的电压就只有电阻Rb上的电压Vb了,此时我们就知道了流入三极管基极b(阀门端)的电流Ib
Ib = Vcc / Rb
进而由三极管VT放大后输出的电流Ic为
Ic = β * Ib = β * Vcc / Rb
所以三极管VT输出的电压Vce为
Vce = Vcc - Ic * Rc
一般情况下,Vcc和VT的放大倍数β都已经事先确定,所以接下来要确认的是分压电阻Rc和偏置电阻Rb。
- 调整Rc可以调节VT输出的最大电压
- 调整Rb可以调节对输入信号施加的偏置电压,使信号的负半周全部提高到0v以上
偏置电阻Rb
电源电流通过偏置电阻Rb流入三极管VT基极b(阀门端)的电流是Ib = Vcc / Rb,在三极管VT的集电极c和发射极e之间就会产生一个β * Ib*倍的电流,经过电阻Re的转换,在电阻Re两端就会得到一个电压Ve,这就是偏置电压。
偏置电压负责处于正负半周上的信号提高到正半周,使信号在任何时候都不会有电压为负的情况出现。
所以我们调整偏置电阻Rb的目的也就明了了,我们要调整一个足够的偏置电压,使得信号在任何时候都不会有负电压,但也不能调整得太大,使信号的最高电压超过三极管VT的放大极限,出现饱和的情况(因为饱和部分其实会被“削顶”,而不是像下面的示意图一样好好活着~)
稳定Q点
因为三极管VT的放大系数β会随着温度的升高而升高,即通过集电极c与发射极e之间的电流Ice会增加,从而流向基极b的电流Ib会减少,这就造成偏置电压降低。
这会让偏置并放大后的音频信号上下浮动,而且可能造成"削顶"失真。
要解决这个问题,我们需要改良放大电路,为分压式偏置共射极放大电路,如下图。
我们添加了电阻Rb2和电阻Re来平衡偏置电压。
偏置电阻Rb1和Rb2把电源电压Vcc按电阻比例稳定的分为两部分,输入三极管VT基极b(阀门端)的电压Vb也由偏置电阻Rb1和Rb2的分压值决定,所以Vb是稳定的。
此时,如果三极管VT温度上升,通过集电极c与发射极e之间的电流Ice会增加,那么电阻Re的电压Ve也会上升,三极管VT的基极b和发射极e之间的压降就下降了,所以流入三极管基极b的电流Ib也降低了,从而降低了偏置电压,使偏置电压处于稳定状态。
计算各电阻的值
三极管VT的基极b的电压Vb为
Vb = (Rb2 / (Rb1 + Rb2)) * V~cc
三极管VT的发射极b的电流Ie为
Ie = (Vb - Vbe) / Re
三极管VT的集电极c与发射极e之间压降Vce为
Vce = Vcc - Ic * (Rc + Re) ≈ Vcc - Ie * (Rc + Re)
[未完,但要不要待续咧~←_←]
运算放大器
运放输入阻抗高,输出阻抗低,放大倍数高,做ADC的信号匹配再合适不过了~
如果使用运放来适配ADC采集交流电信号,做到如下两级就通常就足够了:
加法器 → 反向放大器
- 加法器,用于把交流信号偏置到正电压上,进入ADC的电压采集范围
- 反向放大器,把交流电信号适配到ADC的最大量程上,提高ADC采集的分辨率