今天跟大家一起分享下Air780EPM的ADC的相关内容。在设计ADC硬件电路之前,请务必先查看LuatOS二次开发ADC相关库函数的描述。

1、前言

我们先回顾一段核心内容:

Air780EPM共有4路外部ADC硬件通道,其通常的作用是用来测试电压数值。

02 ADC管脚.png

Air780EPM-ADC管脚参数25031801.png

ADC硬件连接被测电压的方式有两个:

  • 当被测电压低于3.6V时,被测电压可以直连ADC;

  • 当被测电压大于3.6V时,被测电压需先经过外部电阻分压,且经过分压后接在ADC的电压值需小于1.5V。

以上ADC的两种硬件连接方式,对应不同的软件设置,下文会提到。

除4路外部ADC通道外,Air780EPM还有2路内部ADC通道:

  • 一路是CH_CPU,用来测量Air780EPM的CPU温度;

  • 一路是CH_VBAT,用来测量Air780EPM的vbat电压(vbat,或者写为VBAT,也就是Air780EPM工作时的供电电压,对应Air780EPM的PIN42/PIN43)。

接下来,将按照大家在实际应用中常见的场景,分类描述如何设计ADC硬件电路。

2、 - 测量Air780EPM的VBAT电压 - 

用ADC测量VBAT电压时,不需要外接任何硬件电路。

Air780EPM内部有一路CH_VBAT:
专门用于测量Air780EPM的VBAT电压,测量范围就是Air780EPM可以正常工作的VBAT供电范围(3.3V-4.3V)。

可以使用如下代码读取VBAT电压:

D01.png

3、- 测量低于3.6V的电压时 - 

我们这里讨论的是使用Air780EPM的4路外部ADC,测量低于3.6V电压时的场景。

为社么要提到3.6V这个数字?
如本文最前面所说,当被测电压低于3.6V时,被测电压可以直连ADC,不需要外接电路。

是的,不需要外接电路的意思就是——被测电压可以直接接在ADC上,不做任何处理。但是,需要保证被测电压不高于3.6V。

相应的,软件应该这么做:

D03.png

核心就是,软件在低于1.5V和大于1.5V且小于3.6V时的处理时不一样的。

如果你觉得比较懵,很正常。你需要先查看LuatOS二次开发ADC相关库函数的描述,详见:

https://docs.openluat.com/osapi/core/adc/

或者,你就把握一个原则:

当被测电压低于3.6V时,直连ADC就可以,剩下的交给软件同事去负责。

4、- 测量高于3.6V的电压时 -  

我们这里说的还是使用Air780EPM的4路外部ADC,测量高于3.6V电压时的场景。

当被测电压高于3.6V,使用4路外部ADC测量:
必须将外部电压使用电阻分压,使挂在ADC上的电压低于1.5V。

那么,分压电阻怎么选择呢?

  • 首先,取决于被测电压的值,测量最大电压5V和最大电压12V时的分压电阻肯定是不一样的;

  • 其次,电阻一定要使用1%精度,这样才能尽可能的使分压比符合要求;

  • 再次,可以在ADC输入处增加1个滤波电容,抑制高频噪声,避免ADC读数波动。

以上都是经验之谈,现在我们以被测电压为5V时来举例说明:

分压比要求:

Vout/Vin=1.5V/5V=0.3,

即:R2=0.3×(R1+R2),

解得 R1:R2≈2.33:1。

推荐电阻值:

上拉电阻 R1=2.4MΩ(±1%精度)

下拉电阻 R2=1.0MΩ(±1%精度)

实际分压比:

1.0MΩ/(2.4MΩ+1.0MΩ)≈0.294,

5V分压后为 5V×0.294≈1.47V,满足量程要求。

adc234.png

相应的,假设通过ADC测得的电压值是1.47V,则可以换算出来被测电压值为:

1.47V/0.294=5V

需要特别指出的是,即便使用MΩ级别的电阻,系统也会存在固定的功耗浪费:

总电流: I=5V/(2.4MΩ+1.0MΩ)≈1.47μA
总功耗: P=5V×1.47μA=7.35μW

功耗极低,适合电池供电的低功耗场景。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐