你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32L1x 温度传感器应用举例

[复制链接]
STMCU小助手 发布时间:2022-7-17 21:59
前言
7 k* Z: O) a; ~5 x本应用笔记说明了使用 STM32L-DISCOVERY 和 32L152CDISCOVERY 板,实现简单温度测量应用的方法。本文讲解的解决方案使用 STM32L1x 微控制器集成的温度传感器。本文讲解了使用工厂或用户校准,提高温度传感器精度的方法。2 A0 I  _' l% K9 h8 W1 \$ N" T
演示应用不需要任何额外硬件。当使用相关固件更新 STM32L-DISCOVERY 和32L152CDISCOVERY,并通过连至主机 PC 的 USB 线给板子上电之后,应用即可显示STM32L1x 微控制器的温度。6 T- b6 a6 m$ T( z- p
温度传感器例程代码包含在 STM32L1x 探索固件包中 (STSW-STM32072),可从http://www.st.com 获得。) m& B4 s- U( p$ w6 C
参考文档% `; z3 s3 p1 ?1 M. [! Y, M- |8 c6 C' v
• STM32L-DISCOVERY 和 32L152CDISCOVERY 用户手册 (UM1079)
+ `2 |' g  i1 Y: k1 i• STM32L-DISCOVERY 和 32L152CDISCOVERY 板软件开发工具入门 (UM1451) ; W. \/ X: N8 Q
• STM32L1x 电流消耗测量和触摸感应演示 (AN3413) 7 P! Y6 @- y3 B  l1 x( K+ o$ ~
• 超低功耗 STM32L15xx6/8/B 数据手册
0 j2 }! H" e, Y! j& L' D• 超低功耗 STM32L151xC 和 STM32L152xC 数据手册
6 j7 |) V( ?' o& v5 S9 r3 Q• 超低功耗 STM32L151xD 和 STM32L152xD 数据手册
$ i9 r  x/ |/ `- R" w- n0 r5 [( J) V• 超低功耗 STM32L162xD 数据手册
& V* C; K$ s! K- A( b9 R# L. ?+ C• STM32L100xx、STM32L151xx、STM32L152xx 和 STM32L162xx 基于 ARM 内核的 32 位高级 MCU 参考手册 (RM0038)
* i- i" T4 X! a1 A% S0 o6 n
" c2 p9 M0 Z+ g7 o2 } FEC$YHLU6EMR0UIG)29OFCF.png 5 _" |3 x8 ?) x( c# t
" B, x& A# V5 v& i/ |
1 应用概述* f% Z. j  n) ~. E7 Y) o
本章说明了温度传感器的工作原理以及如何使用 STM32L-DISCOVERY 或32L152CDISCOVERY 上内置的 STM32L1x 微控制器进行温度测量。
$ J" J9 o* r+ b% k% l1 N5 s. o后面会简单说明如何实现示例温度测量应用。0 D) K9 A7 M! d! {0 Q  A
在整个文档中,使用 STM32L1xxDISCOVERY 表示 STM32L-DISCOVERY 或32L152CDISCOVERY 评估套件。
2 a* V# a/ s" K: y2 Y
$ [' g3 S  F$ _: P* C+ s
1.1 温度传感器
4 V/ M! F4 \) l  @* W" y集成于 STM32L1x 微控制器中的温度传感器可输出与器件芯片结温成正比的模拟电压。
; }0 A/ g0 M, r0 d# x注: 请注意,传感器提供的温度信息为芯片结温 (半导体表面的实际温度),它可能与环境温度不同。若需更详细信息,请参见产品数据手册的 热特性 一节。
. ^4 Q% z0 d( V1 l+ \! U集成的温度传感器提供了较好的线性特性,典型偏差为 ± 1%。其温度范围等于器件的温度范围 (–40 °C 到 85 °C),最大结温为 150 °C。$ s8 M0 N4 Q) @# W/ @0 }* b
传感器的线性很好,但可交换性很差,必须对其校准以得到较好的总体精度。若应用设计为仅测量温度的相对变化,则不需要校准温度传感器。
( A8 r: S$ l$ p7 T( B$ N# m* }/ g# x) X6 z! ~$ w3 a+ Q& C

* u; C% J) e5 k4 {; \- Z% g1.2 温度测量和数据处理3 u3 R2 }  i. H  l) t9 t
温度传感器的输出在芯片内部连至 STM32L1x 中 ADC (模数转换器)的通道 16(ADC_IN16), ADC 通道用于采样和转换温度传感器的输出电压。必须进一步处理原始ADC 数据,以便用标准温度单位显示温度 (摄氏度、华氏度、开氏温度)。
+ ^3 m" F2 H3 |* {: ~5 WADC 参考电压 (VDDA = VREF+)连至 STM32L1xxDISCOVERY 板的 3 V VDD 电源。若不知道 VDD 的精确值,则与使用电池工作的应用一样,必须对它测量以得到正确的总体 ADC转换范围 (见下节的详细信息)。
* j" m0 o& x& M) Z
5 p% |- g) d9 P0 v: k% _& e* @
电池供电设备上的温度测量. U$ h: w) {1 J  X) h" [
若器件直接用电池供电,则微控制器的供电电压会有变化。若 ADC 参考电压连至 VDDA,即低引脚数封装器件的连接方式,ADC 转换的值会随电池电压漂移。需要知道供电电压以补偿该电压漂移。可使用芯片的内部电压参考 (VREFINT)来确定实际供电电压 (VDDA)。
" u6 g/ Z  a" d/ P: uADC_IN17 内部参考输入上的 ADC 采样值 (Val_VREFINT)可由下式表示:2 D- E( ]2 b$ ]- K5 K; t
1 W8 z4 a0 i, s  v

! F% ^) ~  r8 @/ w6 |" D' L8 t7 q H2BX]JDU)BY[IPC3DRIHBM3.png 9 c4 t' s4 V  U/ w' m$ _; F& a' J5 t" ]
* ^4 D+ z( _- j+ C3 R
精确的芯片内部参考电压 (VREFINT)由 ADC 单独采样,在制造过程期间,将每个器件的对应转换值 (Val_VREFINT_CAL)储存于受保护的存储区,其地址为产品数据手册中规定的VREFINT_CAL。内部参考电压校准数据为 12 位的无符号数 (右对齐,存储于 2 个字节中),由用于参考的 STM32L1x ADC 获取
" S+ [: I' J2 u( i, a9 ~3 g2 q; b# K% K
3 ^; b- x6 k' ^' ^) D- o. W! p* A
BL}ONH[COVZ$B6]FONVW5@R.png 2 v4 M; P! ?! ~: U5 v6 A8 k3 p- t
+ L0 N) m8 T! C: {' B4 q# {
工厂测量的校准数据总体精度为 ± 5 mV (若需更详细信息,请参考数据手册)。
5 B2 F, T7 ], J6 R+ i我们可使用上式确定实际的 VDDA 电压,如下所示:: o2 E- l% H$ N+ S+ r9 Y
: P4 L9 o8 f  u6 l5 m, [
Z{T]$LI~`3DDN7SVRWID(Q9.png
/ A# U" `3 R% j1 |" m6 A7 m# x, H+ w: N: `$ V: \
当采样温度传感器数据 ValTS_bat 时,ADC 量程会参考前面步骤中确定的实际 VDDA 值。因为温度传感器工厂校准数据是在 ADC 量程设为 3 V 时获得的,所以我们需要归一化ValTS_bat,以得到 ADC 量程为 3 V 时应获得的温度传感器数据 (ValTS)。可使用下式归一化 ValTS_bat:
, j+ n; d5 }% L4 X3 p( y  q: l" ^  x1 @

* Z7 v+ ]6 m* e# \% C: H* o J}UA%}$JW4D22@T$KE19(BM.png
! S$ Z# {! O% p4 s; c5 X, _% {* `
( y  @  U) g& A! C  W9 ^* p
若 ADC 参考为 3 V 供电 (STM32L1 Discovery 的情况),则不需要这样归一化,可直接使用采样温度数据确定温度,如2.2.1 章节:温度传感器校准中所述。: }" ]" w# D$ V+ W. n1 r0 n& r: W

7 Q+ r& n( T8 d0 `, q
1.3 应用程序示例说明
3 }% @, r9 Z0 W! ?) ]9 W2 k每 2 秒,应用从温度传感器电压获取 16 个采样。使用四分均值算法,对 ADC 原始数据滤波、平均,以降低电源系统的噪声。将结果重新计算为标准的温度测量单位下的数值 (在本例中为 °C)。* c# o( j2 t/ `& l' k* \9 k$ n
ADC 原始数据或当前温度值每 2 秒更新一次 LCD 显示,单位为摄氏度。用户可通过按用户按钮在两种温度数据表示之间切换。
5 e3 |  q# @) ?5 f) s, ~为演示 STM32L1x 超低功耗微控制器的低功耗能力,在温度传感器数据测量间歇期, CPU切换至停止模式, RTC (实时时钟)唤醒设为 2 秒。 ADC 数据获取和数据传输由直接存储器访问 (DMA)管理在此阶段 CPU 处于低功耗睡眠模式。仅在初始化阶段和数据处理期间, CPU 才处于运行模式,其频率为 16 MHz (基于 HSI 振荡器时钟)。
. C, ?+ a. N7 @3 o  S- {2 q9 S
( A, O. F8 @, e2 h: i0 b

- S0 p8 h$ y4 X/ T9 H ZY4D5`$TCPVMXXD8%CI_$MD.png
+ n* D* J1 ~( e8 v! W. m6 K7 \: m6 t; i- |
* j6 p+ q" n/ U4 P, U- \5 V5 B# m( @
2 起始
# [# W7 c, S/ n5 v* [* D3 W在开始运行例程之前,必须如下节中所述更新固件和配置硬件。
" M8 E; j; @. y2.1 搭建板子运行环境
9 h# ]8 z$ X( x# g& A+ E, c9 ^更新固件& _1 Q! w( F  ?+ _
需要使用本应用笔记相关的固件更新 STM32L1x 程序存储器。若需如何更新固件的信息,请阅读项目目录中的 ‘readme.txt’ 文件。
8 E. i3 l; x; H* I/ e. h: l1 J; \9 b& Y* M
例程会用到的硬件元件
  y0 V/ K9 Q, J1 a$ z: [本应用例程使用 STM32L1xxDISCOVERY 板上现成的硬件元件:STM32L1x 微控制器上集成的外设、 6 位 LCD 玻璃显示器、用户按钮。不需额外元件。
4 z" r* q0 _5 A7 `& x
- W2 m6 ^8 h! y4 _
STM32L1xxDISCOVERY 硬件设置( i$ T- Z% z8 ^) S
IDD 跳线 JP1 必须置于 ON 位置。% s9 u9 H; M( L' R! `
必须安装 CN3 上的两个跳线,以通过串行线调试 (SWD)接口启用 STM32L1x 微控制器和 ST-Link 调试工具之间的通信。
5 ~  ]7 f' [! s% A% r: U. i7 @注: 所有焊桥必须为 UM1079 中所述的默认状态。
- P3 X+ g1 r# S$ V" @* M/ _- N2.2 运行演示例程
( ?# P( k. ^8 I9 X运行演示例程很简单。
1 S4 M& h: B4 ^$ ]/ I开机后,例程首先会显示欢迎消息,然后立即显示电流温度,单位为摄氏度,刷新率为 2秒。当按下用户按钮后,显示屏会显示 ADC 获取的一组 16 个样例的平均值。再按一下用户按钮会在显示当前摄氏度温度和均值之间切换。均值可在之后用作校准点,作为已知温度来提高温度测量的整体精度4 ^) r! Y. X7 S6 m
8 q+ g' e" Z1 p6 i' C# v$ x

+ M; m1 a, n( e( r6 x2.2.1 温度传感器校准
" z% P( Q. h) _( S+ X5 i1 e在制造过程期间,温度传感器校准数据存储于受保护的存储区中,用户可从该处读取并使用该数据以提高温度测量的精度。生产过程中测量两个点的校准数据:" H; c/ K" m8 n0 W9 p% n
室温 (30 °C ± 5°C):TS_CAL1. O6 o1 W2 F+ @) C$ D! u% P
高温 (110 °C ± 5°C):TS_CAL2。$ D7 s* H$ c) m* I
若需获取校准数据所存储的存储器地址,请参考产品数据手册。" p8 b+ e" U( }8 R# c8 I0 s
温度传感器校准数据为 12 位的无符号数 (存储于 2 个字节中),由 STM32L1x ADC 在使用3 V (± 10 mV)参考电压时获得。* j4 p. q) Q! u) R
例程初始化时,会检查工厂校准数据的有效性。若存储器中存在数据,则用它做温度计算。
2 R: o9 e9 U. H3 R" V否则,则验证并使用用户校准期间存储在 EEPROM 存储区中的校准数据。若用户校准数据也不可用,则使用默认值计算。工厂校准或用户校准数据为温度测量提供了较好的精度。
: D, e+ S4 z  J/ |0 H7 W/ j默认校准数据基于典型温度传感器特性的统计数据,由于制造过程期间温度传感器特性变化较大,所以使用默认值可能会导致温度估计的精度较差。建议使用工厂校准数据或对温度传感器执行两点校准,这代表了温度传感器的个体特性,可得到较好精度的测量。4 I5 Q/ @  Q. P% b0 v" A

- j" P# h1 W+ s# X, S5 K6 b
, n1 f* e# q4 t- G* g4 J9 j- d" z
Y1[)6I_7I1HDZ7WAIJYV99O.png ) v& R9 O, L/ q& B: F3 f

, Z2 D2 h9 K( u/ X& `可由 ADC 使用线性估计采样,从数字值 ValTS 计算温度。若两个校准点 C1 和 C2 的坐标已知,则可使用此方法,如 2 中所示。
& ~8 o1 r+ Z  Q: Z当前温度可如下计算,其中低温坐标对表示为(TC1, ValC1),高温对为(TC2, ValC2):2 n$ V% P, C0 n
* Y# a+ g* j4 P& b' j/ z, f
& b6 e' Q. T7 b, l4 F
~RRKJBLTYNLCM{`5(SRRRZ2.png
* p: d7 X7 ]  x0 v3 Q7 r9 j- s! }( G: `; Z& q# `" g+ \

0 D; ?: |* R6 d6 C1 e使用工厂校准数据,公式可重写如下:
3 _1 Z! [  S! B7 }$ i
% x+ R  s9 K; q) e

; K) d+ P  y" `8 @$ F1 X& F: V; B QJFDXRUSKO`}H9R%8WPF)`Q.png " K- p. o- N( L

. P- E) L" @: F2 K' w2 q1 j4 U
3 N4 r$ D7 ^" o
2.3 温度传感器估计的工程容差
5 T5 Q) s2 Z$ E, @1 I# D" F 2 中可以看到,两点校准方法极大提高了测量精度。温度测量的偏移主要有两个原因:校准点的温度裕度及传感器的线性。其它造成偏移的原因,例如 ADC 参考电压裕度可被有效降低。对于使用 3 V (± 10 mV)参考电压测量的工厂校准值则可忽略。
7 Y; h7 x5 y8 v* ^" \温度估计的工程容差示于 2 中,它有两个边界线:最小偏移值 (绿色)和最大偏移值(蓝色)。校准点之间的区域具有恒定的容差,比外面的容差稍微增加。因此,校准点的建议位置应与测量范围的最大和最小值尽量接近。
  i, Q( z$ k! E) @0 ~  O' U* h/ o" v; @3 k! W% B! o

! Y! F: e& S8 {
  o* }6 {9 [+ }0 m  N完整版请查看:附件
5 X: o  w3 z& L7 ^% c6 \
4 L. l' {' t5 `5 }

" q5 ~. u. l  ]2 g8 `; H

DM00035957_ZHV3.pdf

下载

438.29 KB, 下载次数: 1

收藏 评论0 发布时间:2022-7-17 21:59

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版