DS18B20温度传感器先容
泉源:百问网_嵌入式Linux wiki_jz2440 新1期视频维基教程 (视频笔墨版)
作者:韦东山
本笔墨数:1322,阅读时长:2分钟
比DHT11温湿度传感器精度高很多
DS18B20只经过一条数据线传输数据,既要控制器发送数据给芯片,又要经过芯片发送数据给控制器,以是这个是双向传输数据的
怎样在一个引脚上完成数据的双向传输 : 参考这视频的第19分钟之后的内容: 第19课_第001节_I2C协议与EEPROM
检测温度,我们必要一个主控芯片
假如有多个温度传感器,则必要一个主控制器去办理它们,经过发送下令传输数据,每个装备都市有固化在芯片内里的64bit ID的ROM来用于区分不同的装备
假如主控制器想拜候装备,必需发送下令,这个下令中带有ID前往值
怎样拜候指定的DS18B20
- 0 发射低脉冲,提示准备事情: initialization
- 1 发射ID下令:ROM Command
- 2 发射功效下令: Function Command a转换温度 b读温度,读数据
每次利用,都要重重上述历程
内里框图
TEMPERATURE SENSOR温度ADC
SCRATCHPAD实践上是一个9 byte的内存 9byte的分析如下图所示
温度值会保存在9byte内存中的 BYTE0 和 BYTE1 也就是当我们发射一个温度值的下令之后,还必要发送一个读内存的下令才干把温度值读取出来
最初一位是CRC校验码,经过前8位的数据和最初一位的校验码比力 64位数据中有8位是校验码,
怎样采样温度?
- 1 初始化
- 2 ROM下令
- 3 FunctionCommand 设置某些值,好比转换温度
- 4等候完成
- 5 init
- 6 R om cmd
- 7 Function Command 读RAM中的值
关于EEPROM存放器 前方两个字节可以用来设置用户本人的目标,也可以用来设置Th Tl 存放器 Th Tl 存放器就是用来设置警报,温度的极限大概底限,当温度凌驾某个值时它会发射警报 所谓警报只不外是在DS18B20中设置形态罢了,并不克不及主动关照主芯片 主芯片可以发射某些下令来确定哪些芯片发射了警报 设置存放器,用于设置精度,精度越高转换时间越长
EEPROM使用
- 1 上电
EEPROM主动放入RAM用于控制精度这些
- 2 写EEPROM
a 发射下令先写RAM
b从RAM转到EEPROM
- 3 读出EEPROM的值
a EEPROM值保存到RAM
b 发射下令读RAM
关于ROM下令和功效下令整理成一个表格
信号传输
- 1怎样initialization(初始化)
- 2 怎样发数据,怎样发射1bit
怎样发射bit0
怎样发射bit1
- 3怎样读数据==>怎样读1bit
怎样判读读到0
怎样推断读到1
初始化时序
一开头是高电平,想要开头传输信号,必必要拉低最少480us开释总线 颠末15~60us之后 DS18B20会把这条线拉低60~240us
2 怎样发数据,怎样发射1bit
- 怎样发射bit0
- 怎样发射bit1
写数据时序
不管是写0照旧写1时序都是大于60us 写0拉低总线维持60us以上 写1时,信号线拉低1us时间,提示要写数据了,然后回高,写1位之间的时间距离1us
读数据时序 也是由主机倡导 提示脉冲大于1us,主机立刻开释总线 在15us之内读信号,一个读周期最少是60us,每位的距离也是1us
DS18B20提供了编程图
供电办法
「新品首发」STM32MP157开发板火爆预售!首批仅300套