请问利用stm32f030f4来对红外传感器传出的电压如何进行ADC转换

2019-07-14 14:06发布

问下大家,转换出来的数据对应的电压是多少,如何转换。谢谢


红外传感器距离不一样,所对应的电压不一样,

以下是红外静止状态,串口传出的数据17 16 16 16 19 19 18 17 16 16 19 15 17 16 16 15 1A 15 18 16 16 15 15 15 1A 16 17 16 15 16 18 16 17 15 16 15

以下是红外工作时的数据,红外传感器传出的电压为2.3V上下      80 99 A7 5F 41 5F 67 4B 3E 37 33 24 20 10 1F 10 0B C1 45 4A 44 38 2F 38 1C 24 1B 23 07 5D 1C 10 F5 10 09 30

麻烦会的朋友分析下,什么原因,怎么才能转换对应的电压值
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
鑫12345
1楼-- · 2019-07-14 19:52
鑫12345
2楼-- · 2019-07-15 00:41
AD值感觉小了点吧
60user60
3楼-- · 2019-07-15 00:58
红外传感器根据接收端距离的远近 其电压是变化的吧,你可以用示波器测一下,另 AD精度你设置是12位,但打印程序好像是只打出了8位,建议你修改成printf(“%d”,adc_data);打印试试adc_data得是uint16_t的。如果你想用红外测距,那么跟你的采样电压值有关,如果数据通信,那么用一个阈值作为高电平就可以了
lunkcer
4楼-- · 2019-07-15 04:23
 精彩回答 2  元偷偷看……
ke5627712
5楼-- · 2019-07-15 07:28
用printf函数进行数据格式转换就可以吧
jfsuwef
6楼-- · 2019-07-15 11:12
首先看你硬件上面的参考电压Vref是多少,然后把ad获取的值乘以参考电压(st的开发板一般都是3.3V),然后再除以软件设置的ad的精度(12位精度就是2^12)这样就可以算出ad测的电压是多少了

printf(“adc1当前获取的电压值为:%f ”,(3.3 * ADC_GetConversionValue(ADC1) )/4096);
代码随便写的 没有调试过 大概是这样

一周热门 更多>