核心代码
while 1 do
adc.open(3) -- 模块上的ADC3脚-PA3, 0~2.4v,不要超过范围使用!!! 仅air103
sys.wait(500)
log.debug("adc","adc3-read", adc.read(3))
log.debug("adc","adc3-get", adc.get(3))
sys.wait(500)
end
测试过程
只使用ADC3,LED1引线前端加ESD器件(1K电阻),做分压保护。
采用数字万用板实测各部件分压的方法做对比。
测试结果
前端ESD器件,万用表实测995欧,工作分压4mv,LED(黄色)两端实测电压1.905V,电位器2.37KOmega,电压1.346V。板载3v3接口(实测3.301V)。结果: adc.read:2079,adc3-get:2078。
测试LOG数据片段
[2022-11-21 14:20:53.502] AT+RESET
[2022-11-21 14:20:53.502]
[2022-11-21 14:20:53.502] OK
[2022-11-21 14:20:53.750] I/main auth ok 851042503039383735120079EE145606AIR103
[2022-11-21 14:20:53.750] I/main LuatOS@AIR103 base 22.10 bsp V0013
[2022-11-21 14:20:53.750] I/main ROM Build: Oct 31 2022 11:22:26
[2022-11-21 14:20:53.750] D/main loadlibs luavm 180208 12184 12208
[2022-11-21 14:20:53.751] D/main loadlibs sys 12288 5184 5184
[2022-11-21 14:20:53.751] I/user.main adcdemo 1.0.0
[2022-11-21 14:20:54.276] D/user.adc adc3-read 113064 2078
[2022-11-21 14:20:54.276] D/user.adc adc3-get 2078
[2022-11-21 14:20:55.286] D/user.adc adc3-read 113068 2078
[2022-11-21 14:20:55.286] D/user.adc adc3-get 2078
[2022-11-21 14:20:56.299] D/user.adc adc3-read 113068 2078
[2022-11-21 14:20:56.299] D/user.adc adc3-get 2078
[2022-11-21 14:20:57.307] D/user.adc adc3-read 113063 2078
[2022-11-21 14:20:57.307] D/user.adc adc3-get 2078
[2022-11-21 14:20:58.323] D/user.adc adc3-read 113048 2078
[2022-11-21 14:20:58.323] D/user.adc adc3-get 2079
[2022-11-21 14:20:59.317] D/user.adc adc3-read 113065 2078
[2022-11-21 14:20:59.317] D/user.adc adc3-get 2078
[2022-11-21 14:21:00.344] D/user.adc adc3-read 113047 2078
[2022-11-21 14:21:00.344] D/user.adc adc3-get 2078
结论
ADC3程序adc.read与adc3-get结果一致,开发版内部测试值与万用表实测值存在相关关系,达到了ADC的目的。
根据官方解答:
为什么用合宙开发板测试打印出来的电压值与实际用万用表测量的电压值误差较大?
由于标准开发板设计目的主要为了方便功能性演示,内部还没有做有相应的优化处理,需要客户在使用时,按照实际的板子走线,阻抗,以及压降等添加相应的压差补偿。