ADC设备

# 简介 ADC(Analog-to-Digital Converter) 指模数转换器。是指将连续变化的模拟信号转换为离散的数字信号的器件。 合宙Cat.1模块ADC接口主要用来检测模拟电压信号量,用于电池电压检测,温湿度检测,TDS检测等应用。 # ADC接口控制 ADC的库由底层core实现,相关API接口如下: |API接口| 描述| | --- | --- | | adc.open()| 打开ADC| | adc.read()| 读取ADC值| | adc.close()| 关闭ADC| > 详细的API介绍见[LuatOS-Air core API](https://doc.openluat.com/wiki/21?wiki_page_id=2242)章节 # 读取模块的供电电压值 模块的供电电压读取,原理上也是通过ADC来进行读取,但是此ADC通道为专用通道,无法通过ADC的API进行读取,需要通过misc.getVbatt()来读取底层上报的模块电压值。 >注意: >1. misc.getVbatt()为LuatOS-Air上层lib接口,使用时需要进行require "misc"加载. > 1. misc.getVbatt()读取的非瞬时值,底层进行过多次取样平均运算,返回的电压值时一个时间段内的平均值。 ### misc.getVbatt() * 功能:读取模块供电电压值。 * 语法:vb=misc.getVbatt() * 返回值: | 参数 | 类型 | 释义 | 取值 | | ------ | ------ | ----------------- | ------------------------ | | vb| number | 模块供电电压,单位mV | | * 示例: ```lua require "misc" local vb=misc.getVbatt() log.info("VBAT",vb); ``` ## ADC使用示例 ADC 的具体使用方式可以参考如下示例代码,示例代码的主要步骤如下: 1. 打开ADC通道2 和ADC通道3,默认最大量程 2. 分别起三个循环定时器,每秒读取ADC2和ADC3的值和模块的vbat电压值。 3. 读取并打印ADC2和ADC3的原始值和电压值和模块的供电电压vbat电压值。 ```lua module(...,package.seeall) --- ADC读取测试 -- @return 无 -- @usage read2() local function read2() --ADC2接口用来读取电压 local ADC_ID = 2 -- 读取adc -- adcval为number类型,表示adc的原始值,无效值为0xFFFF -- voltval为number类型,表示转换后的电压值,单位为毫伏,无效值为0xFFFF local adcval,voltval = adc.read(ADC_ID) log.info("testAdc2.read",adcval,voltval) end --- ADC读取测试 -- @return 无 -- @usage read3() local function read3() --ADC3接口用来读取电压 local ADC_ID = 3 -- 读取adc -- adcval为number类型,表示adc的原始值,无效值为0xFFFF -- voltval为number类型,表示转换后的电压值,单位为毫伏,无效值为0xFFFF local adcval,voltval = adc.read(ADC_ID) log.info("testAdc3.read",adcval,voltval) end -- 开启对应的adc通道 adc.open(2) adc.open(3) -- 定时每秒读取adc值 sys.timerLoopStart(read2,1000) sys.timerLoopStart(read3,1000) require"misc" sys.timerLoopStart(function () log.info("vbatt.read",misc.getVbatt()) end,1000) ``` # 硬件设计 见硬件设计指南 [ADC接口 章节](https://hmi.wiki.luatos.com/doc/65042949/e6zPC3k9/0JltteiC)