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

STM32L1x 温度传感器应用举例

[复制链接]
STMCU小助手 发布时间:2022-7-17 21:59
前言8 U) u) L7 l4 _4 V. s
本应用笔记说明了使用 STM32L-DISCOVERY 和 32L152CDISCOVERY 板,实现简单温度测量应用的方法。本文讲解的解决方案使用 STM32L1x 微控制器集成的温度传感器。本文讲解了使用工厂或用户校准,提高温度传感器精度的方法。1 S5 W8 I" B2 u  q4 i4 r
演示应用不需要任何额外硬件。当使用相关固件更新 STM32L-DISCOVERY 和32L152CDISCOVERY,并通过连至主机 PC 的 USB 线给板子上电之后,应用即可显示STM32L1x 微控制器的温度。
- p2 k  G: e* y. Y* E温度传感器例程代码包含在 STM32L1x 探索固件包中 (STSW-STM32072),可从http://www.st.com 获得。5 I: O! q1 Q, M, l* E
参考文档
. b5 L( [  G9 T* E9 `' ?/ k• STM32L-DISCOVERY 和 32L152CDISCOVERY 用户手册 (UM1079)
' R; M0 D/ E7 A• STM32L-DISCOVERY 和 32L152CDISCOVERY 板软件开发工具入门 (UM1451) % j% J# c5 f/ U
• STM32L1x 电流消耗测量和触摸感应演示 (AN3413) : P  \* u+ t& F+ x
• 超低功耗 STM32L15xx6/8/B 数据手册, K- _0 E- Z' `+ b! P
• 超低功耗 STM32L151xC 和 STM32L152xC 数据手册
2 d- m2 n0 ^3 f) B! t5 C/ F) B% h• 超低功耗 STM32L151xD 和 STM32L152xD 数据手册" ^% c* K) d& S  v
• 超低功耗 STM32L162xD 数据手册/ i; ?% q9 E( ?4 u
• STM32L100xx、STM32L151xx、STM32L152xx 和 STM32L162xx 基于 ARM 内核的 32 位高级 MCU 参考手册 (RM0038)
$ I7 K# A8 l% R7 M8 g% k
  r- t: h4 o# p- m. r FEC$YHLU6EMR0UIG)29OFCF.png 9 S  L6 u& y/ l1 M% Y5 B0 \$ X9 ]4 D: Q

, ^% m3 E( M2 H  V9 j4 b/ u* h: c1 应用概述
' O4 y6 J  M; w, |6 E9 i本章说明了温度传感器的工作原理以及如何使用 STM32L-DISCOVERY 或32L152CDISCOVERY 上内置的 STM32L1x 微控制器进行温度测量。
" \3 F) y% t( R/ {6 a! u' f3 k后面会简单说明如何实现示例温度测量应用。
% e8 ~7 b: d  L在整个文档中,使用 STM32L1xxDISCOVERY 表示 STM32L-DISCOVERY 或32L152CDISCOVERY 评估套件。
+ y1 J' S8 o6 w$ m" D& N
6 }$ y( g# M8 G; G" S
1.1 温度传感器) f8 Z0 D1 G8 x/ l! m) V7 N
集成于 STM32L1x 微控制器中的温度传感器可输出与器件芯片结温成正比的模拟电压。' ^" C$ s$ N9 |5 H5 a
注: 请注意,传感器提供的温度信息为芯片结温 (半导体表面的实际温度),它可能与环境温度不同。若需更详细信息,请参见产品数据手册的 热特性 一节。
1 @. j0 H+ B) e5 I( T+ E' z集成的温度传感器提供了较好的线性特性,典型偏差为 ± 1%。其温度范围等于器件的温度范围 (–40 °C 到 85 °C),最大结温为 150 °C。
: P# w8 Z$ r- K2 s传感器的线性很好,但可交换性很差,必须对其校准以得到较好的总体精度。若应用设计为仅测量温度的相对变化,则不需要校准温度传感器。" K, |! W2 r0 A2 g) b+ O
. z* z/ O8 x3 y2 Q/ H

' w$ a( I3 {9 i/ P" S* Y+ @( F1.2 温度测量和数据处理9 ]: g1 z4 q; \" h9 ^: V
温度传感器的输出在芯片内部连至 STM32L1x 中 ADC (模数转换器)的通道 16(ADC_IN16), ADC 通道用于采样和转换温度传感器的输出电压。必须进一步处理原始ADC 数据,以便用标准温度单位显示温度 (摄氏度、华氏度、开氏温度)。
* n2 B7 c4 D$ q2 z+ K: P; w+ kADC 参考电压 (VDDA = VREF+)连至 STM32L1xxDISCOVERY 板的 3 V VDD 电源。若不知道 VDD 的精确值,则与使用电池工作的应用一样,必须对它测量以得到正确的总体 ADC转换范围 (见下节的详细信息)。3 I" F' Y# l$ Y" X$ n" H
3 N/ f6 v1 e# U4 G: R" d# r0 h7 y" @9 M3 h
电池供电设备上的温度测量, K5 O- H" i; q; v+ y
若器件直接用电池供电,则微控制器的供电电压会有变化。若 ADC 参考电压连至 VDDA,即低引脚数封装器件的连接方式,ADC 转换的值会随电池电压漂移。需要知道供电电压以补偿该电压漂移。可使用芯片的内部电压参考 (VREFINT)来确定实际供电电压 (VDDA)。
2 x+ H4 m7 \# j7 B4 C5 j+ P: lADC_IN17 内部参考输入上的 ADC 采样值 (Val_VREFINT)可由下式表示:# f7 T# n. [/ ^) o5 Y0 Z, X

4 l8 e- _: R" L* I! q7 |
) k  M7 h( Z: n; ~6 C4 t* ]6 }- a
H2BX]JDU)BY[IPC3DRIHBM3.png ) J/ s$ K! Z4 a/ H! G/ g

: r$ q' H4 v; p  o. r
精确的芯片内部参考电压 (VREFINT)由 ADC 单独采样,在制造过程期间,将每个器件的对应转换值 (Val_VREFINT_CAL)储存于受保护的存储区,其地址为产品数据手册中规定的VREFINT_CAL。内部参考电压校准数据为 12 位的无符号数 (右对齐,存储于 2 个字节中),由用于参考的 STM32L1x ADC 获取4 p3 J; c4 ?% O3 f9 ]
3 O4 z. ?0 R: N2 e: m) L$ c! G4 w

: B. E# d( o3 d  d+ [3 ~4 | BL}ONH[COVZ$B6]FONVW5@R.png $ r6 m2 h+ G" o% ?

3 j5 |2 W, F" ]0 V& E, J; B1 P
工厂测量的校准数据总体精度为 ± 5 mV (若需更详细信息,请参考数据手册)。- d' t: P0 D, K, \) _
我们可使用上式确定实际的 VDDA 电压,如下所示:
. }- S( v! m, E8 f" P# P+ R1 ~9 @: c6 W
Z{T]$LI~`3DDN7SVRWID(Q9.png
6 Q* D4 l) U9 m. I: D" d& p6 M6 C6 v1 ^9 d$ ~
当采样温度传感器数据 ValTS_bat 时,ADC 量程会参考前面步骤中确定的实际 VDDA 值。因为温度传感器工厂校准数据是在 ADC 量程设为 3 V 时获得的,所以我们需要归一化ValTS_bat,以得到 ADC 量程为 3 V 时应获得的温度传感器数据 (ValTS)。可使用下式归一化 ValTS_bat:
8 m- U8 A) C! l% j7 z# R9 @( w- \' q
) J8 L: T4 W$ g$ B. X  _
J}UA%}$JW4D22@T$KE19(BM.png
1 t- N9 L* ~  d4 K3 @
2 |6 ~9 w+ b0 p9 ~4 F
若 ADC 参考为 3 V 供电 (STM32L1 Discovery 的情况),则不需要这样归一化,可直接使用采样温度数据确定温度,如2.2.1 章节:温度传感器校准中所述。
+ c9 \7 E3 e- x9 s3 D1 O8 W1 {! H2 o3 J& d! L0 A6 _( C
1.3 应用程序示例说明
! v+ y, J$ @& j: _每 2 秒,应用从温度传感器电压获取 16 个采样。使用四分均值算法,对 ADC 原始数据滤波、平均,以降低电源系统的噪声。将结果重新计算为标准的温度测量单位下的数值 (在本例中为 °C)。
3 P% k, o* O5 P: R, ?9 D/ q, EADC 原始数据或当前温度值每 2 秒更新一次 LCD 显示,单位为摄氏度。用户可通过按用户按钮在两种温度数据表示之间切换。6 k- I& J2 x( j
为演示 STM32L1x 超低功耗微控制器的低功耗能力,在温度传感器数据测量间歇期, CPU切换至停止模式, RTC (实时时钟)唤醒设为 2 秒。 ADC 数据获取和数据传输由直接存储器访问 (DMA)管理在此阶段 CPU 处于低功耗睡眠模式。仅在初始化阶段和数据处理期间, CPU 才处于运行模式,其频率为 16 MHz (基于 HSI 振荡器时钟)。& i  D0 e6 q( M2 f3 z7 ?" E' |
  }' M) C% g' c' K
& k, o! k% u  d- W' Q! |% f
ZY4D5`$TCPVMXXD8%CI_$MD.png ' l; c/ y: a+ x9 O1 J* b7 ^
# u2 B% g& |8 W2 Y8 G" C" F
3 h. ^: W' F3 [4 i: [
2 起始" p1 z5 {; [/ O2 i! ~4 j9 _
在开始运行例程之前,必须如下节中所述更新固件和配置硬件。
  q3 R- W+ o: w0 y2.1 搭建板子运行环境
" Q$ H( x% g1 x  B* E9 o$ N6 r# ^5 v更新固件4 i0 t: ]' W4 J" W4 K" m& d2 G
需要使用本应用笔记相关的固件更新 STM32L1x 程序存储器。若需如何更新固件的信息,请阅读项目目录中的 ‘readme.txt’ 文件。
; {) F' A4 Z6 y1 O3 ^8 l: M* q1 \, j/ p1 v+ F& o
例程会用到的硬件元件* b5 y) }9 z3 P1 c9 ~* v
本应用例程使用 STM32L1xxDISCOVERY 板上现成的硬件元件:STM32L1x 微控制器上集成的外设、 6 位 LCD 玻璃显示器、用户按钮。不需额外元件。+ x+ U* e  w! E) x' `5 Z' W4 @
' E7 V" ?4 q3 {! m+ B0 T/ Q
STM32L1xxDISCOVERY 硬件设置. w$ d, e+ i# T' t9 {0 @3 }" X
IDD 跳线 JP1 必须置于 ON 位置。" F  I2 r8 h1 V& U
必须安装 CN3 上的两个跳线,以通过串行线调试 (SWD)接口启用 STM32L1x 微控制器和 ST-Link 调试工具之间的通信。
) t8 @+ I* d8 ~1 w8 v9 I5 K/ m7 g注: 所有焊桥必须为 UM1079 中所述的默认状态。  n6 E, H+ K+ C) g" e) o7 K
2.2 运行演示例程7 @8 [* o2 _% |! z$ E$ w5 g
运行演示例程很简单。9 s& w; E5 V2 _% o* [& b0 L) O5 C$ ~
开机后,例程首先会显示欢迎消息,然后立即显示电流温度,单位为摄氏度,刷新率为 2秒。当按下用户按钮后,显示屏会显示 ADC 获取的一组 16 个样例的平均值。再按一下用户按钮会在显示当前摄氏度温度和均值之间切换。均值可在之后用作校准点,作为已知温度来提高温度测量的整体精度2 k1 T, r0 g' t2 t2 v8 V' J
, h  c. p4 H& N5 b! E
( E( `" n; D' E4 F
2.2.1 温度传感器校准
4 k2 i: j; ]/ y在制造过程期间,温度传感器校准数据存储于受保护的存储区中,用户可从该处读取并使用该数据以提高温度测量的精度。生产过程中测量两个点的校准数据:1 }- b( T- T7 R% R4 M; m
室温 (30 °C ± 5°C):TS_CAL13 g; J/ I9 P0 M8 h! L
高温 (110 °C ± 5°C):TS_CAL2。
6 E) [( Q& I$ q1 r, m& c* r- [若需获取校准数据所存储的存储器地址,请参考产品数据手册。
7 m2 Y& O4 _: Y* d, }温度传感器校准数据为 12 位的无符号数 (存储于 2 个字节中),由 STM32L1x ADC 在使用3 V (± 10 mV)参考电压时获得。- z/ ]6 G) I; v5 m5 E, F, f
例程初始化时,会检查工厂校准数据的有效性。若存储器中存在数据,则用它做温度计算。
! L2 {! P$ F3 `否则,则验证并使用用户校准期间存储在 EEPROM 存储区中的校准数据。若用户校准数据也不可用,则使用默认值计算。工厂校准或用户校准数据为温度测量提供了较好的精度。
; R& r) H- m$ x  G默认校准数据基于典型温度传感器特性的统计数据,由于制造过程期间温度传感器特性变化较大,所以使用默认值可能会导致温度估计的精度较差。建议使用工厂校准数据或对温度传感器执行两点校准,这代表了温度传感器的个体特性,可得到较好精度的测量。
( {$ S# Z% S( F2 K: L% [0 ]" u0 I
/ x: e' W2 x  K* B8 u

9 n8 V, \) \; B5 A1 g! v  j Y1[)6I_7I1HDZ7WAIJYV99O.png 4 ~6 V+ U1 T$ _

* j) O) N# r/ i! t, b8 k  Z可由 ADC 使用线性估计采样,从数字值 ValTS 计算温度。若两个校准点 C1 和 C2 的坐标已知,则可使用此方法,如 2 中所示。% l9 W( x' i% G$ P( I
当前温度可如下计算,其中低温坐标对表示为(TC1, ValC1),高温对为(TC2, ValC2):
9 W$ H  v7 C/ I( W+ X3 p* B/ V  i6 T4 `9 k* T! U! u$ a
" \& \' ~3 \9 o; H% P8 ]( O; S
~RRKJBLTYNLCM{`5(SRRRZ2.png ; A/ h7 m- j' o1 n9 h. [; ?. U; h1 B
3 ^; g2 z* ]9 `. @0 i/ j) F: {
, W* L  ^: i7 {6 m/ P  _! M
使用工厂校准数据,公式可重写如下:9 ~) B, T2 O/ n- E

. ^6 [% L4 O5 }* N3 d
# f- C5 D5 ]. m7 |! x* i
QJFDXRUSKO`}H9R%8WPF)`Q.png 3 r4 a* G" b2 L+ H! C
5 t; u( F0 ]: Q3 \4 [

4 r! W( ~" M0 L  `4 @9 Q& w2.3 温度传感器估计的工程容差& h& E4 y, H. v. W( b& f
2 中可以看到,两点校准方法极大提高了测量精度。温度测量的偏移主要有两个原因:校准点的温度裕度及传感器的线性。其它造成偏移的原因,例如 ADC 参考电压裕度可被有效降低。对于使用 3 V (± 10 mV)参考电压测量的工厂校准值则可忽略。
$ c! r- }- m9 j" N7 K* e* G/ m温度估计的工程容差示于 2 中,它有两个边界线:最小偏移值 (绿色)和最大偏移值(蓝色)。校准点之间的区域具有恒定的容差,比外面的容差稍微增加。因此,校准点的建议位置应与测量范围的最大和最小值尽量接近。
0 n! |! E# a9 a# _2 Q( D; l9 `/ i0 E6 l
9 z. K6 R) r$ G# d: o
4 h, W- E% O& a
完整版请查看:附件

# m7 X/ K) W+ Z* c
- d! Y2 d: G0 a) H- S. @4 e  P3 j* ?; p

DM00035957_ZHV3.pdf

下载

438.29 KB, 下载次数: 1

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

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版