迅维网

查看: 1714|回复: 0
打印 上一主题 下一主题

【STM32F411 Nucleo试用体验】+C~看看外面的模拟世界(一)

[复制链接]
跳转到指定楼层
1#
发表于 2016-8-4 07:39:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 中国 来自 中国

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
写在开篇:忙里偷闲来学习,顺带再发个贴。众所周知,处理器内部是完全的数字信号,二我们好多时候是需要来测量外部的模拟信号的,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℃左右。

总结:程序功能看似很简单,但是要组合起来也不是说分分钟就调的有多好,是需要试验的,我之前也没用过内部温度传感器,所以程序中有错误的地方还望高手不吝赐教

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索

快速回复