DS18B20温度传感器在非实时操作系统下的应用

84
M i c r o c o n t r o l l e r s &E m b e d d e d S y s t e m s  2021年第5期w w w .m e s n e t .c o m .c n
D S 18B 20温度传感器在非实时操作系统下的应用
张旭伟1,苏涵彬2
(1.中国电子科技集团公司第十研究所,成都610036;2.
西安诚全蓝创测控技术有限公司)摘要:本文研究了在非实时操作系统下温度传感器D S 18B 20的应用㊂在非实时操作系统下,
各个进程严格按照时间片轮转的方法来调度,而D S 18B 20是单总线传输的数字温度传感器,在没有时钟线且C P U 繁忙的情况下,很容易导致读数错误㊂本文提出了一种软件优化方法,屏蔽掉错误读数,使得上层应用总是可以读到正确的温度值㊂关键词:D S 18B 20;
非实时操作系统;温度传感器中图分类号:T H 89    文献标识码:A
A p p l i c a t i o n o f D S 18
B 20T e m p e r a t u r e S e n s o r i n N o n R e a l -t i m e O p e r a t i n g S y
s t e m Z h a n g X
u w e i 1
,S u H a n b i n 2
(1.T h e 10t h R e s e a r c h I n s t i t u t e o f C h i n a E l e c t r o n i c s T e c h n o l o g y G r o u p C o r p o r a t i o n ,C h e n g
d u 610036,C h i n a ;2.X i 'a n C h
e n g q u a n L a n c h u a n g M e a s u r e m e n t a n d C o n t r o l T e c h n o l o g y C
o .,L t d .)A b s t r a c t :I n t h e p a p e r ,t h e a p p l i c a t i o n o f t e m p e r a t u r e s e n s o r D S 18B 20i n n o n r e a l -t i m e o p e r a t i n g s y
s t e m i s s t u d i e d .B e c a u s e i n t h e n o n r e a l -t i m e o p e r a t i n g s y s t e m ,e a c h p r 风险投资退出机制
o c e s s i s s c h e d u l e d s t r i c t l y a c c o r d i n g t o t h e m e t h o d o f t i m e s l i c e r o t a t i o n ,D S 18B 20i s a d i g
i t a l t e m -p e r a t u r e s e n s o r w i t h s i n g l e b u s t r a n s m i s s i o n .I t i s e a s y t o c a u s e r e a d i n g e r r o r w h e n t h e r e i s n o c l o c k l i n e a n d C P U i s b u s y
.I n t h i s a r t i c l e ,a s o f t w a r e o p t i m i z a t i o n m e t h o d i s p r o p o s e d t o s h i e l d t h e w r o n g r e a d i n g ,s o t h a t t h e u p p e r a p p l i c a t i o n c a n a l w a y s r e a d t h e c o r r e c t t e m p
e r -a t u r e v a l u e .
K e y
w o r d s :D S 18B 20;n o n r e a l -t i m e o p e r a t i n g s y s t e m ;t e m p e r a t u r e s e n s o r 0 引 言
随着科技的发展,各种各样的传感器投入应用中㊂传
感器成了机器的感官,用来感受周围环境的变化,从而做出相应的反应㊂特别是随着嵌入式设备的发
展与广泛应用㊁机器智能化的普及,大量的传感器镶入嵌入式系统使用㊂因此,如何正确高效地使用传感器是实现嵌入式设备智能化的一个重要手段㊂在多传感器网络的应用中,可以使用M C U 来对多传感器进行控制与数据采集,
但是在少量甚至单个传感器应用的情况下,使用M C U 就得不偿失,会占用电路板可用面积,增加不必要的成本㊂因此在面对不同传感器不同特性的情况下,使用软件优化的方法对传感器功能进行优化,并且以动态库的形式附加到应用程序中,便于后期修改㊁移植与扩展,减小了代码的体积㊂本文在某型机测试设备上使用D S 18B 20温度传感器
来对此设备的主控制器及数字信号处理单元的温度进行监控㊂温度值会实时显示在用户界面上,每隔一段时间将更新温度值,并在电路板的温度过高时发出警告㊂
1 D S 18B 20特性
D S 18B 20是一种单总线数字温度传感器,
其最大的特点就是采用单总线的形式,只有一条数据线(及地)与控制线相连,并且此传感器还可以由数据线直接供电而不使用外部供电㊂同时,单总线的特性使其对控制器的读取时间要求很严格㊂
D S 18B 20采用的是M a x i m 公司专有的1w r i t e 总线协议,该总线仅需要一个控制信号进行通信㊂
D S 18B 20有
9字节的暂存寄存器:B y t e 1与B y
t e 0作为温度寄存器的高字节和低字节,这两个字节是只读的,是当前传感器测得的温度值;B y t e 2和B y
t e 3作为过温和低温温度报警寄存器;B y t e 4保存着配置寄存器的数据;B y t e 5㊁B y t e 6㊁B y
猪肉价格趋于稳定t e 7作为内部使用字节保留;B y
夏目漱石从此以后
t e 8为只读字节,为前8个字节的C R C 校验结果㊂图1为传感器的寄存器分布图㊂
D S 18B 20的读温度步骤很复杂,首先要向温度传感器发送温度转换指令,温度传感器才会将采集到的温度值转换到暂存寄存器中,这一过程需要750m s (12位精度
时),待转换完成之后,要再次向传感器发送读取暂存寄存器指令㊂此传感器的读时序也很特殊,因为没有时钟线,所以需要告知传感器何时读,以总线电平拉低超过1μs 来实现,传感器收到后会调整总线高低电平来传输数据,但
是此数据只在15μs 内有效,15μs 后传感器会释放总线,
敬请登录网站在线投稿
(t o u g
a o .m e s n e t .c o m.c n )
2021年第5期
85
图1 D S 18B 20暂存寄存器
线被上拉电阻拉至高电平㊂图2为温度传感器的读时序图
图2 D S 18B 20读时序图
2 温度跳变问题
在单传感器应用时,由于配套M C U 成本过高,
开销过大,因此选择将D S 18B 20直连到主控C P U 上㊂在实际应用中发现,运行进程较少时,C P U 相对空闲,
读数正常㊂当进程较多㊁C P U 负载较高时,读数错误概率较大,出现较大幅度的温度跳变㊂主要原因是非实时操作系统使用的是时间片轮转的方式,与实时操作系统不一样,实时操作系统的调度规则是优先级调度,当一个高优先级的进程就绪之后,会立刻转到高优先级进程,而非实时操作系统则严格按照时间片轮转的方式来进行,当一个进程时间片结束后就会被挂起,转去运行下一个程序
[1]
㊂而D S 18B 20
温度转换时间较长,达到750m s ,这个时间对于C P U 来说是一个很长的时间㊂转换结束后,还需要逐位进行读取㊂由上文所述可知,由于没有时钟线,无法做到同步,每
一位只有15μs 的时间去读取,
如果当前运行进程过多,C P U 繁忙则会导致读取数据不及时,
从而读到的是一个错误的数据㊂
3 解决思路
在此设备上,短时间内电路板的温度不会出现大幅度的跳变,且数据仅仅只是为了给一个参考值,不会为了正确的温度值而去减少其他重要进程的资源,因此可以在软件方面提出部分优化方案,使得送到应用程序的温度值是
正确的[牵引力控制系统
2]
㊂主要思路是采用一个基准值比较法,想办法读取到两个正确的值,然后用每次读到的值与正确的值进行比较㊂如果差值不超过4ħ,则采用并替代基准值;如果超过了
4ħ,
则认为是错误的读数,将这个读数抛弃,将基准值送给用户程序㊂其中,初始化基准值的流程如图3所示
图3 基准值的初始化
读温度时采用类似的逻辑,因为我们已经得到了两个基准值,对于新得到的温度,也与这两个基准温度进行比较,此时采集到的温度只需要与这两个基准值的任意一个相差小于预设误差,就认为此采集值是正确的㊂并且用当前采集的温度值代替其中一个基准值,这样可以使得基准值是实时更新的㊂如果说采集到的温度值与两个基准值差值都超过了预设误差,则认为读数错误,丢掉此次读数并且将基准值交给应用程序㊂
以下是实现主要功能的部分代码:
格伦 莱斯t e m p =g e t _t e m p
e r a t u r e (
f d );i f ((f a b s (d a t a [0]-t e m p )<=E R R O R )||(f a b s (d a t a [1]-t e m p
)<=E R R O R ));{  d a t a [(*m a i n c o u n t %2)]=t e m p
;  P r i n t f ("d a t a [%d ]",*m a i n c o u n t %2
);  r e t u r n t e m p
;}
e l s e
{  p r i n t f ("e r r o r ");  p r i n t f ("d a t a [%d ]",((*m a i n c o u n t )%2+1)%2;
r e t u r n d a t a [((*m a i n c o u n t )%2+1)%2
];}
程序写好之后,为了方便使用,采取动态库形式嵌入
到应用程序中㊂动态库只包含所需函数的引用表,即函数
86
M i c r o c o n t r o l l e r s &E m b e d d e d S y
s t e m s  2021年第5期w w w .m e s n e t .c o m .c n
地址,只有在需要时才会将函数拷贝到内存㊂因此,使用期间发现问题和不足时,只需要用新的动态库覆盖旧的动态库即可,不需要复杂的操作,方便后期的移植㊁更新和维护㊂
4 测试结果
使用上文提出的方法在系统内进程数量正常时进行测试,根据后台打印信息来查看应用程序所得到的温度值,结果如图4所示
图4 测试结果
此次测试在C P U 负载50%左右的情况下,
每3秒采集一次温度㊂由结果可以看出,在读数发生错误时,会将上一次读到的温度打印出来,交给应用程序,解决温度的跳变问题,使得用户的使用体验更佳㊂
5 结 语
此方法可以有效解决偶尔出现的温度跳变问题,在
C P U 负载不超过70%的情况下可以保证98%的正确率,并且采用动态库的方式便于发现B U G 之后的修改维护问题,减少应用程序的代码冗余㊂但是仍然存在一些问题,
在C P U 繁忙时,很难保证读到的基准值是正确的,有可能会导致读到的两个基准值都是错误的,从而使得后面所上报温度全部为错㊂对于此问题,打算在程序中加入自动纠错处理,在错误数超过一定情况下重新进行初始化来调整基准值,保证基准值是正确的,并且可以对程序进行部分优化,使得在读温度时减少C P U 的占用率以提高整体工
作效率[
3]
㊂参考文献
[1]王腾飞.对计算机嵌入式实时操作系统的研究及分析[J ].
科技创新与应用,2020(36):6667.
[2]李欣,白兴武.基于L i n u x 的嵌入式实时操作系统任务调度7月份CPI同比上涨
算法优化[J ].自动化与仪器仪表,2020(9):4851.[3]王博文.单总线通信技术在手持报警仪调校中的应用[J ].
计算机与现代化,2019(8):5762.
张旭伟(工程师),主要从事系统测试方面的研究㊂通信作者:张旭伟,w h y w h y
k i s s s @s i n a .c o m ㊂(责任编辑:薛士然 收稿日期:2021-01-25
)
4 系统连接实物图
基于H L W 8032的双路电能测量与控制系统连接实
物图如图9所示㊂
图9 系统连接实物图
5 结 语
本设计针对安装空调的高校集体宿舍进行独立双路电
能采集和控制,可对宿舍中的空调专线控制,或对特定时段
进行功率控制,可灵活管理用电㊂选用S T C 8A 8K 64S 4A 12芯片和H L W 8032电能计量芯片,
具有测量精度高㊁稳定性强和M C U 通信电路简单等特点,可以保障用电安全,智能节能用电,提高管理效率㊂
参考文献
[1]江苏国芯科技有限公司.S T C 8系列单片机技术参考手册
[E B /O L ].[202102].h t t p ://w w w.s t c m c u .c o m.[2]赵晓阳.学生公寓防限电装置及违规负载的识别[J ].
科技创新与应用,2015(8):3940.
[3
]陆泉森,李军,鲍鸿.光耦隔离技术在智能测控系统中的应用[J ].机械与电子,2008(2):5356.
[4]合力为科技.H L W 8032用户手册,2019.
王大珅(硕士研究生),主要研究方向为通信工程等㊂通信作者:王大珅,w d s @t m u .e d u .c n
㊂(责任编辑:薛士然 收修改稿日期:2021-02-03
)

本文发布于:2024-09-24 08:32:24,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/96212.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:温度   传感器   进行   基准值   使用   读数   错误   优化
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议