[Arduino] ADC测量交流电*

[Arduino] ADC测量交流电*,第1张

ADC(Analog to Digital Converter)是模拟转数字采样器。Arduino的ADC口只能测量直流电,即0.0v ~ REFv(REF ≥ 0.0),但有时我们需要测量-REFv ~ +REFv的交流电,如音频信号,那就变得尴尬了~= ̄ω ̄=

让交流音频信号可被Arduino测量:

在Arduino中对畸变的信号还原:

如下图所示咐大中:

共射极放大电路可以为信号添加一个固定的直流偏置电压,使信号完全偏移到正电压上,另外它也可以放大信号的电压,满足Arduino ADC接口衡山的测量标准。

上面的电路为固定偏置共射极放大电路。我们计算的共射极放大电路中使用到的三极管是NPN型三极管,它有三个极:

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

三极管的放大倍数:

我们一般计算一个放大电路的参数,会把里面的电流都控制到一个静态的点上去计算,这样可以避开复杂的电流变化带来的计算上的麻烦。而我们输入端有个阻隔直流的电容C,所以信号静止不变时,能够输入放大电路的电压就为0v了,这就引入了静态工作点的参数估算,习惯上也把它称作Q点。

因为输入放大电路的电压为0v,所以这个时候在三极管基极 b (阀门端)上输入的电压就只有电阻R b 上的电压V b 了,此时我们就知道了流入三极管基极 b (阀门端)的电流I b

进而由三极管VT放大后输出的电流I c 为

所以三极管VT输出的电压V ce 为

一般情况下,V cc 和VT的放大倍数β都已经事先确定,所以接下来要确认的是分压电阻R c 和偏置电阻R b 。

电源电流通过偏置电阻R b 流入三极管VT基极 b (阀门端)的电流是 I b = Vcc / R b ,在三极管VT的集电极 c 和发射极 e 之间就会产生一个 β * I b *倍的电流,经过电阻R e 的转换,在电阻R e 两端就会得到一仿唯个电压V e ,这就是偏置电压。

偏置电压负责处于正负半周上的信号提高到正半周,使信号在任何时候都不会有电压为负的情况出现。

所以我们调整偏置电阻R b 的目的也就明了了,我们要调整一个足够的偏置电压,使得信号在任何时候都不会有负电压,但也不能调整得太大,使信号的最高电压超过三极管VT的放大极限,出现 饱和 的情况(因为饱和部分其实会被“削顶”,而不是像下面的示意图一样好好活着~)

因为三极管VT的放大系数β会随着温度的升高而升高,即通过集电极 c 与发射极 e 之间的电流I ce 会增加,从而流向基极 b 的电流I b 会减少,这就造成偏置电压降低。

这会让偏置并放大后的音频信号上下浮动,而且可能造成"削顶"失真。

要解决这个问题,我们需要改良放大电路,为分压式偏置共射极放大电路,如下图。

我们添加了电阻R b2 和电阻R e 来平衡偏置电压。

偏置电阻R b1 和R b2 把电源电压V cc 按电阻比例稳定的分为两部分,输入三极管VT基极 b (阀门端)的电压V b 也由偏置电阻R b1 和R b2 的分压值决定,所以V b 是稳定的。

此时,如果三极管VT温度上升,通过集电极 c 与发射极 e 之间的电流I ce 会增加,那么电阻R e 的电压V e 也会上升,三极管VT的基极 b 和发射极 e 之间的压降就下降了,所以流入三极管基极 b 的电流I b 也降低了,从而降低了偏置电压,使偏置电压处于稳定状态。

三极管VT的基极 b 的电压V b 为

三极管VT的发射极 b 的电流I e 为

三极管VT的集电极 c 与发射极 e 之间压降V ce 为

[未完,但要不要待续咧~←_←]

运放输入阻抗高,输出阻抗低,放大倍数高,做ADC的信号匹配再合适不过了~

如果使用运放来适配ADC采集交流电信号,做到如下两级就通常就足够了:

加法器 → 反向放大器

  CD74HC4067 作用是选通一路对十灶山没六路模拟信号,就像一个单刀多掷开关,根据芯唯缓片上 S0-S3 四个不同管脚的组合,让SIG管脚和C0-C15导通(每次只能连接一个),它适用于数字和模拟信号,可以只用5针最多连接16传感隐纳器系统,也可以用它来管理多个设备。

有以下疑问:

1. SoftPWMSet 这是什么鬼? arduino的pwm输出,可以直帆蚂晌接使用analogwrite函数。若是你自己写的,;源文件丢出来给人看看是啥。

2. 还有"pins_arduino.h"也是,如果是自己写的,都把它贴出来。

3. arduino的中断,不是这样用的。直接使用<avr/interrupt.h>,会造成冲突.

4. 对你这个程序,你遇到的困难是?想跟网友求助那个问题?看了10多分钟,还是一头雾水。你这个我大概看了下,目测你的程序是这样的:3,5,10,9,这四个引脚来控制态锋两个直流电机,直接扩流来驱动电机,引脚8接的是一个LeD,用于显示状态,还有个11引脚,从注释的字面上理解,应该是超声波的相关引脚,但是一个引脚,超声波,我愚钝,看不出来的是干嘛。

看了10多分钟,还没搞懂你想要干物郑嘛,根据超声波测得的距离,来控制小车前进后退?还是前进过程中,超声波检测到障碍来做避障?

根据前面的分析,你这段代码,肯定是不通过编译的,错误提示呢?

你要网友帮你修正程序,但是又不知道你的需求,怎么改?

总之,分给我吧~~~


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12258707.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存