迅维网
标题:
【STM32F411 Nucleo试用体验】+C~看看外面的模拟世界(一)
[打印本页]
作者:
バ幸福De右岸
时间:
2016-8-4 07:39
标题:
【STM32F411 Nucleo试用体验】+C~看看外面的模拟世界(一)
写在开篇:忙里偷闲来学习,顺带再发个贴。众所周知,处理器内部是完全的数字信号,二我们好多时候是需要来测量外部的模拟信号的,such as:vlotage,current,temperature,light,humidity,etc.但好多的各种模拟量,我们最终都会通过各种方法转换成电压或是频率来进行测量,我们最常用的还是电压转换法。这正好完全可以使用STM片内自带的12高精度ADC.
一:“听说我啥都不用接就可以测温度":
没错,STM32片内自带温度传感器,在adc的channel16,因此,我们可以先来个简单好玩的,用它来测测温度耍耍。
对于此次编程,我们依旧采取最简单原则,用到什么看什么写什么。
二:前提准备:
芯片
的datasheet是必不可少的,这要用来提供我们查找需要使用的资源资料。之前的帖子因为太简单,就没作如此说明。大家都说stm的温度传感器是在ADC1 的16通道上,我这个是不是呢?听说别人的不一定正确,自己眼见为实,试验过后才是自己所掌握的。所以凡事我们要多看多做。而不是只听不做。
打开pdf, ctrl+f ,找到温度传感器:
登录/注册后看高清大图
根据文档说明,发现其实是16和18通道都可以。那温度怎么计算呢?
登录/注册后看高清大图
计算方法这里也有详细说明,如此我们便可以进入编程阶段了。
三:软件编写
1、依旧使用STM32CubeMX
登录/注册后看高清大图
只选中我们使用的温度传感器通道。另外串口之前已设置过,这里不再叙述。
最后生成工程文件打开编译无任何问题。
2、串口的重定向
因为在串口使用中,我们更习惯使用printf来输出串口调试信息或者结果,于是添加如下代码:
登录/注册后看高清大图
登录/注册后看高清大图
3、温度传感器的使用
重定向做好后,就需要去看看软件是否将温度传感器的初始化等配置好
找到如下图所示程序,我们发现在通道配置哪里使用的是ADC_CHANNEL_TEMPSENSOR;
登录/注册后看高清大图
这是不是就是16通道呢?我手动改为16通道行不行呢?答案是不行的,为什么?看截图:
软件已配置好默认使用18通道作为温度传感器通道,而16通道是作为普通adc来使用的
登录/注册后看高清大图
登录/注册后看高清大图
关于计算,由于参考PDF文档,程序如下:
登录/注册后看高清大图
这里为什么是使用3.3V来计算呢?而不是3300来计算?这个留给感兴趣的自行思考。。
4、软件滤波
这里参考了网速的滤波程序,选用了两种试验,程序如下:
登录/注册后看高清大图
即一阶滤波和中值滤波。
效果感觉都差不多(一阶滤波调整参数变化明显),不用的话,波动会大一些,
好像到此所要做的就完成了,下面就是结果检验了。
四:结果验证
其实这都是调试了好几回的才达到如下截图效果,挺稳定的了
登录/注册后看高清大图
测得也差不多是环境温度,和公司空调显示环境温度一致,误差根据文档,+-1.5℃
分辨率的话,12位AD(2.5mV/℃),在0.4℃左右。
总结:程序功能看似很简单,但是要组合起来也不是说分分钟就调的有多好,是需要试验的,我之前也没用过内部温度传感器,所以程序中有错误的地方还望高手不吝赐教
欢迎光临 迅维网 (https://www.chinafix.com/)
Powered by Discuz! X3.4