大家好呀,今天这条帖子其实是想和大家讨论,向大家请教的。
PikaPython已经适配了BL618芯片的ADC,我们查看PikaPython的模块API文档,可以看到相关信息。
看起来比较简单,只需要给定一个有ADC输入通道的管脚,对其使能即可。
具体管脚可以查看Ai-M62-32S的数据手册。
在翻阅了博流官方的数据手册之后,我找到下面的信息:
我们都知道,ADC的测量范围是VRef-~VRef+。这里提到可以支持2.0V和3.2V的参考电压,而在PikaPython文档中却没有选择参考电压的相关函数。
我在后面的测试中对芯片施加0~3.3V的输入电压来反推其参考电压。
假定其参考电压为2V,那么它的分辨率是2/2^12=0.00048V,即1LSB=0.00048V
由于没有给出更多的信息,比如积分非线性(INL)和微分非线性(DNL)等信息,这里我无法估计ADC的精度。
这里可以参考ESP32-S3数据手册给出的数据
简单的测试代码
- import PikaStdLib
- import machine
- import time
- adc = machine.ADC()
- adc.setPin('P28')
- adc.enable()
- while True:
- val = adc.read()
- print(val)
- time.sleep(5)
复制代码 通过电位器分压,给芯片提供输入电压,同时万用表也测量该点电压做对比。
看看效果:
1.
2.
3.
4.
5.
6.
对比print出来的ADC测得的电压和我的万用表测得的电压,发现误差非常之大。除此之外,ADC测得值最高不超过2V,我因此认为默认参考电压是2V.
请问各位老师应该如何减小误差?
|
|