资料来源:白文网_嵌入式Linux Wiki _ JZ 2440新一期视频Wiki教程(视频文字版)
作者:贝东山
正文字数:1322,阅读时间:2分钟
精度比DHT11温度和湿度传感器高得多
DS18B20只通过一根数据线传输数据,控制器通过芯片传输数据,通过芯片向控制器传输数据,因此是双向数据传输。
如何在一个引脚上双向传输数据:参考视频19分钟后的内容3360和19以及第_ 001节_I2C协议和EEPROM
需要主芯片来检测温度。
如果有多个温度传感器,当主控制器对其进行管理并发送命令来发送数据时,每个设备在芯片内部都有固化的64位ID ROM,以便区分不同的设备。
主控制器必须发送带有ID返回值的命令才能访问设备
访问指定的DS18B20
发送0低脉冲到准备工作: initialization1,ID命令:ROM Command2执行功能命令: Function Command a转换温度b读取温度,每次进行数据读取工作时,此过程都会重叠
内部箱子
模板传感器温度ADC
scratchpad实际上是9字节内存9位。如下图所示
温度值存储在9byte内存中的BYTE0和BYTE1中。也就是说,在发出温度值的命令后,要读取温度值,还必须发送读取内存的命令
最后一位是CRC检查代码。将前8位数据与最后一位检查代码进行比较,64位数据中的8位是检查代码。
如何取样温度?
1初始化2 ROM命令3 FunctionCommand转换温度4等待完成5 init6 R om cmd7 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
p>关于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套
1.《【ds18b20为什么发烫】DS18B20温度传感器介绍》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《【ds18b20为什么发烫】DS18B20温度传感器介绍》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/auto/3306367.html