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 的电压时
- 首先,我们这里说的,还是使用 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,满足量程要求。
- 相应的,假设通过 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
功耗极低,适合电池供电的低功耗场景。
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 通道
参数
返回值
无
例子