美文网首页我爱编程
[Arduino] ADC测量交流电*

[Arduino] ADC测量交流电*

作者: Cocoonshu | 来源:发表于2017-11-08 08:19 被阅读300次

    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,可看作是书管的出水端
    NPN晶体三极管

    三极管有两种半导体类型:

    • 硅管,集电极与发射极之间的压降为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采集的分辨率

    相关文章

      网友评论

        本文标题:[Arduino] ADC测量交流电*

        本文链接:https://www.haomeiwen.com/subject/exqemxtx.html