AD转换问题
-
我用stm32来驱动超声波,然后把超声波测到的数值进行da转化,然后传给openmv进行ad转化。其中,stm32的da引脚输出的电压与串口调试助手得到的电压相同,且随着超声波检测的距离变化而变化,且变化正确。用openmv的p6引脚接stm32的da引脚且共地后,用的代码是上手教程里的代码。openmv进行ad转换, 通过串行终端看openmv的数据与stm32串口调试的数据差别很大,这是为什么?
-
你应该先用万用表,测量引脚的电压。才知道是哪里的问题。
-
随着超声波位置的移动,stm32串口调试的变化正常,用万用表测da的电压的变化也正常,但用stm32的da引脚接到openmv的ad引脚,观察IDE串行终端时,openmv的数据不对,且变化幅度不够,stm32的串口调试看到的数据依旧正常
-
@kidswong999 已经测了,stm32的da引脚电压正常
-
此回复已被删除!
-
此回复已被删除!
-
@kidswong999 不对,我在实验中能得到一个4000多的数据,那就是12bit的对吗
-
@kidswong999 哦,对了,还有,我用上手教程代码是,给p6接GND时,它好像也读到0.4V电压,给他3.3v时,ad转换出电压为1.5v
-
http://book.openmv.cc/example/02-Board-Control/read-adc.html
经过测试,P6引脚短接GND,输出是ADC = 0.0000v;P6引脚短接3.3V,输出是ADC = 3.299194v。
OpenMV的ADC没有问题,建议你拔掉所有电路,测试OpenMV的ADC功能。
-
@kidswong999 你好,我就直接用上手教程的代码,就只是让它接本身的GND,经AD转换得到电压为0.3v,接本身的3.3v,得到的是2.03v,请问是坏了吗
-
我不知道你说的上手教程的代码是什么代码。看我上面的链接里的代码。
-
@kidswong999 # 读取ADC例子
这个例子展示了如何使用OpenMV的ADC
import time
from pyb import ADCadc = ADC("P6") # Must always be "P6".
while(True):
# ADC 12-bits 精度,4096个值
print("ADC = %fv" % ((adc.read() * 3.3) / 4095))
time.sleep(100)
-
你拔掉所有电路了?
如果你觉得OpenMV坏了,那就送回检修。
-
@kidswong999 是的,就和本身的GND与3.3v测试。如果测试结果像上面一样是不是就是坏了