假设MCU的供电电压是3.3V,而ADC的测量范围是0-3.3V。在需要测量高于这个范围的场景中,比如电池电压为6V,我们可以采取一些方法来解决这个问题。
一个常见的解决方案是使用电阻分压来将高于3.3V的电压缩小到ADC能够接受的范围内,然后再进行采集和转换。但是,这会带来一个问题:分压电路中的电阻值应该选择多大?例如,如果选择1/2的分压比例,应该是两个1KΩ串联还是两个1MΩ串联?电阻值是否可以随意选择呢?
先说结论:电阻不能随意选,首先它不能太大!
以STM32F103为例子,在数据手册中可以看到外部输入阻抗有一个最大值50kΩ的要求。
这个值是由下面的计算公式算出来的,
需要注意的是输入阻抗的最大值并不是固定不变的,不是说只要小于50kΩ就可以,因为它和ADC时钟频率、采样周期、转换位数都有关系。比如上面表格中,当ADC时钟频率14Mhz,采样周期1.5 cycels,转换位数12时,最大输入阻抗就是0.4kΩ。
Tab 46标称的最大输入阻抗50kΩ,是在ADC时钟频率14Mhz,采样周期55.5 cycles,转换位数12时计算出来的值,它同时也是ADC模块所能接受的最大值 (受硬件决定,这也是为什么Tab 47最后两行写NA的原因,虽然根据公式也能算出来一个比50更大的值)。
简单来说,可以这么理解:因为ADC内部的采样保持电路(电容组成),如果外面的电阻大,就会导致RC电路充电时间长,如果采样周期小,就会引起电容在没完全充满电的情况下就被采集,自然ADC得到的数就不准。
从提高ADC采样速率的角度来说,电阻越小,RC充放电速度快,ADC的采样速率就能更高。不过电阻小,会增大功耗,在对功耗有要求的场合,这个电阻还不能选的太小。
对于必须低输入阻抗,同时又需要低功耗的场合,可以先用大电阻分压,后面再用运放跟随器的方式。
电阻大小的问题说完了,还有最后一个问题,等效输入阻抗和第一幅图里的两个串联分压电阻是什么关系?等效输入阻抗是R1、还是串联值R1+R2,还是并联值R1*R2/R1+R2 呢?这个问题曾困惑了我好久,当年上学时学的理论知识全交给老师了




微信扫一扫打赏
支付宝扫一扫打赏
