多语言展示
当前在线:1470今日阅读:26今日分享:39

怎么实现多点温度采集?

在我们生活中,随处可见的是传感器。在众多传感器中,温度传感器与我们生活息息相关。我们在生活中几乎可以随处可见温度传感器的身影。常用的数字式温度传感器有DS18B20。我们在生活中往往是单点采集温度,那么多点采集温度是怎么样的呢?
工具/原料
1

器件DS18B20

2

STM32开发板

3

DS18B20数据手册

硬件设计:
1

采集电路设计分析:由其数据手册知,DS18B20支持多点采集设计,我们参考基本原理设计了多点采集。目前设计由两个DS18B20传感器构成的电路。

2

报警电路分析:一个温度采集系统,离不开温度报警。当所采集的温度超过所设定的温度时,我们可以立即对当前警告做出响应。比如当电饭煲中已经把饭煮好了,那么报警电路发出“滴滴滴”告诉人们饭已经做好了。道理是相同的。

3

时钟复位电路分析:在很多时候,一个系统并不是很稳定,常常容易出现程序跑飞的情况。那么我们应该通过复位来使得程序回归正常。就像我们常常在电脑出错时,把电脑还原了一样。

程序设计:
1

启动温度转换:DS18B20_Rst();    DS18B20_Check();  DS18B20_Write_Byte(0xcc);// skip romDS18B20_Write_Byte(0x44);// convert先发出温度转换命令,让所有温度传感器接收温度转换命令。此时并不会发生“与”错误,器件不会对命令做出回答,而执行命令。

2

匹配ROM://附ROM内存表static u8 DS18_ROM[2][8] = {{0x28,0x16,0xEB,0x67,0x05,0x00,0x00,0x7E}, {0x28,0x75,0x7F,0x68,0x05,0x00,0x00,0xD6}};DS18B20_Rst();DS18B20_Check();  DS18B20_Write_Byte(0x55);// skip romfor(i=0;i<8;i++){    DS18B20_Write_Byte(DS18_ROM[cnt][i]);}在发出温度转换命令之后,重新复位搜索DS18B20器件,然后匹配相同的ROM ,之后便是寄存器操纵。

3

读取数据:DS18B20_Write_Byte(0xbe);// convert     TL=DS18B20_Read_Byte(); // LSB    TH=DS18B20_Read_Byte(); // MSB tem=TH; //获得高八位 tem<<=8;     tem+=TL;//获得低八位 tem=(float)tem*0.625;//转换     扩大了10倍寄存器操作时,发出读命令,然后对数据的寄存器低、高字节进行数据读取。然后对所读到的数据进行处理。

注意事项
1

底层程序的编写请参考下面程序。https://jingyan.baidu.com/article/14bd256e606d52bb6d2612d4.html

2

如果本经验帮到了您,请点击右侧“双箭头”分享给您的朋友吧!想了解更多经验内容,请在右上角“关注”我吧!

推荐信息