|
[BlueNRG-1挑战赛] 测电源电压误差原因调查
[复制链接]
挑战赛内容要求测量电源(超级电容)的电压,并包含在广播数据中发送。
我在编写ADC测量电源电压程序的时候,发现算出来的值还挺靠谱的,虽然ADC读数每次都不一样,换算出来波动远不到0.1V. 同时用万用表监测了板子上3.3V电源的电压,确实和MCU采集结果接近。
但是当我用超级电容作为电源进行最终的实验时,发现电压读数有时会不稳定,比如大多数转换为2.5V时突然有一次出来2.4V,后一次又测得2.5V. 我起初以为是ADC转换的值在 2.45V附近,本身波动导致这 0.1V 的跳变。还有一个趋势是ADC测出来的电压比万用表量要低一点,但是调试时(用的3.3V LDO输出)并没觉得有明显偏差。我也怀疑过是否是电压低时 ADC基准2.4V电压达不到所致,为此发过一个帖子 https://bbs.eeworld.com.cn/thread-611915-1-1.html 讨论。虾哥表示用可调电源测试过没有这方面问题。
我曾在代码里面加入处理避开这种突然的一个“非常低”的测量结果,效果不够好。后来又改进了ADC采集的策略,才得到改善。今天的完整测试过程我发现整体上ADC测算的电源电压比万用表实时量到的总体上还是偏低一些(好在还在0.1V要求之内),引起我重新思考是否是电源本身瞬间的波动带来的影响。毕竟,超级电容的ESR比较大。
晚上回家使用了数字示波器来监测电源电压,果然发现下面的现象:
系统从休眠到启动运行片刻,再休眠的过程中,瞬间电流使超级电容两端的电压下降,而且最大的峰值是可以超过0.1V的。既然ADC采集时要能工作,系统不能处在休眠模式,测出来偏低一点也就有原因了。
|
赞赏
-
1
查看全部赞赏
-
|