ADC接口 ======= 作者:金艺 概述 ---- Air724UG模块内置两路通用ADC,可以用来做电池电压检测,温湿度检测,TDS检测等应用。ADC精度为12bit,测量输入范围为0到VBAT电压。若测量的电压输入范围大于模块的VBAT电压则需要进行分压后再输入ADC。 注意: 1. AT版本不支持ADC功能。 2. 如果ADC的输入电压超过VBAT电压,测试出的值不准确,所以一定要确认ADC的输入范围 3. 模块内部集成模块VBAT供电电压的检测ADC,LUAT开发方式下只需要调用misc.getVbatt()获取电压值,单位mV。无需要再用外部ADC检测。 管脚定义 -------- ==== ==== ==== ==== ============ 接口 名称 复用 管脚 作用 ==== ==== ==== ==== ============ ADC2 ADC2 无 63 数模转换输入 ADC3 ADC3 无 64 数模转换输入 ==== ==== ==== ==== ============ 参考设计 -------- .. figure:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20201212155239678_20200811152635908_ADC.png.png :alt: undefined undefined 注意: 1. 由于ADC的量程为0到VBAT,因此如果待测电压低于模块端供电电压VBAT,直连即可,如上图AD2;如果待测电压高于模块端供电电压VBAT,需要用电阻分压,如上图ADC3; 1. R1 和 R2用于做ESD防护 1. ADC走线时需要远离数字高速信号走线,且需要包地保护。 相关AT指令 ---------- AT版本不支持ADC操作 LUAT开发相关接口 ---------------- 相关的I2C控制接口可以参考LUAT_API ADC章节(未完成) 相关示例,请参考:raw-latex:`\script`\_LuaTask_VX.X.X:raw-latex:`\demo`:raw-latex:`\adc` adc.open() ^^^^^^^^^^ 打开对应ID的ADC通道 - 语法 ``result = adc.open( id )`` - 参数 ==== ========= 参数 释义 ==== ========= id adc通道id ==== ========= - 返回值 1:成功打开adc通道 0:其他 - 例子 .. code:: lua --adc id local ADC_ID = 0 --打开adc adc.open(ADC_ID) -------------- adc.read() ^^^^^^^^^^ 读取原始测量数据和电压值,电压值单位为mv - 语法 ``adcValue,voltValue = adc.read( id )`` - 参数 ==== ========= 参数 释义 ==== ========= id adc通道id ==== ========= - 返回值 ============= ==================================== adcValue 原始数据ad值,无效值为0xFFFF ============= ==================================== **voltValue** **电压值,单位为mv,无效值为0xFFFF** ============= ==================================== - 例子 .. code:: lua --adcval为number类型,表示adc的原始值,无效值为0xFFFF --voltval为number类型,表示转换后的电压值,单位为毫伏,无效值为0xFFFF;adc.read接口返回的voltval放大了3倍,所以需要除以3还原成原始电压 local adcval,voltval = adc.read(ADC_ID) -------------- adc.colse() ^^^^^^^^^^^ 关闭adc - 语法 ``adc.close(id)`` - 参数 ==== ======== 参数 释义 ==== ======== id adc id号 ==== ======== - 返回值 无 相关资料以及购买链接 -------------------- 相关开发板购买链接 `Air724UG开发板 `__ `Air724 开发板使用说明 `__ `相关软件资料下载 `__ 常见问题 -------- https://luatdoc.papapoi.com/638/