跳转至

Air8101 工业引擎模组支持 4 路内部接口,描述如下:

测量 Air8101 工业引擎模组的 VBAT 电压

用 ADC 测量 VBAT 电压时,不需要外接任何硬件电路,Air780EPM 内部有一路 CH_VBAT,专门用于测量 Air8101 工业引擎模组的 vbat 电压,测量范围就是 Air8101 工业引擎模组可以正常工作的 VBAT 供电范围:2.5V-4.3V;

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

-- 读取VBAT供电电压, 单位为mVadc.open(adc.CH_VBAT)local vbat = adc.get(adc.CH_VBAT)adc.close(adc.CH_VBAT)-- adc.CH_VBAT,VBAT供电电压的通道id,内部通道,直接获取,不占用ADC 0-3,不外接任何电路

测量 ADC0/7/8/9 这四路内部 ADC,都不需要外部硬件支持,直接调用相应的 ADC 参数就行;

Air8101 工业引擎模组支持 10 路外部接口,管脚分布如下:

注意:

如果外部电压超过芯片 ADC 检测 0-3.6V 量程,需要设计电阻分压电路;

ADC 接口特性:

  • 分辨率:12bit
  • 量程:0~3.6V
  • VREF:Internal 1.1V // External VIO/3
  • 内部阻抗:Min 10 MΩ
  • 时钟频率(fc):0.2MHz~13MHz
  • 采样频率: fc / 16
  • 积分非线性 INL: +-5 LSB
  • 微分非线性 DNL: -1-+3 LSB
  • 功耗:200uA

待测电压超出 ADC0-3.6V 量程,需要增加设计电阻分压;如下图:

测量高于 3.6V 的电压时

  1. 首先,我们这里说的,还是使用 4 路外部 ADC 测量高于 3.6V 电压时的场景;
  2. 当被测电压高于 3.6V,使用 4 路外部 ADC 测量,就必须将外部电压使用电阻分压,使挂在 ADC 上的电压低于 1.5V;
  3. 那么,分压电阻怎么选择呢?

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

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

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

  1. 以上都是经验之谈,现在我们以被测电压为 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,满足量程要求。

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

1.47V/0.294=5V;

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

总电流: I=5V/(2.4MΩ+1.0MΩ)≈1.47μA

总功耗: P=5V×1.47μA=7.35μW

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

ADC 模拟键盘参考电路;

ADC 常用函数解释

常量

adc.setRange(range)

设置 ADC 的测量范围,就 Air8101 来说,有 ADC_RANGE_MAX 和 ADC_RANGE_MIN 两个常量;

参数

返回值

例子

adc.open(id)

打开 adc 通道

参数

返回值

例子

adc.get(id)

获取 adc 计算值

参数

返回值

例子

adc.close(id)

关闭 adc 通道

参数

返回值

例子