DS18S20和DS18B20的区别
时间: 2023-08-10 13:05:13 浏览: 132
DS18S20和DS18B20都是数字温度传感器,由Maxim Integrated公司生产。它们在功能和使用上有一些区别,下面是它们的主要区别:
1. 测量范围:DS18S20的测量范围为-55°C到+125°C,而DS18B20的测量范围更广,为-55°C到+125°C。
2. 分辨率:DS18S20的分辨率固定为12位,而DS18B20具有可配置的分辨率,可以选择9位、10位、11位或12位。
3. 供电电压:DS18S20的工作电压范围为3V到5.5V,而DS18B20可以在3V到5.5V的工作范围内供电。
4. 引脚数量:DS18S20具有3个引脚:供电引脚(VDD)、地引脚(GND)和数据引脚(DQ)。而DS18B20则有3个或4个引脚,其中一个是写保护引脚(DQ),可用于保护EEPROM数据。
5. EEPROM 存储:DS18B20具有内部EEPROM存储器,可以存储设备标识和用户可编程配置寄存器。而DS18S20没有内部EEPROM存储器。
需要注意的是,虽然它们有一些区别,但在通信协议和使用方法上,DS18S20和DS18B20是相同的。它们都使用1-Wire总线协议进行通信,并且可以通过读取温度寄存器来获取温度值。
在选择使用哪种传感器时,你可以根据具体的应用需求和功能要求进行选择。
希望这些信息对你有所帮助!如果你还有其他问题,请随时提问。
相关问题
ds18b20温度转换指令_STM32接口DS18S20温度传感器
DS18B20和DS18S20都是数字温度传感器,但两者在协议上略有不同。下面是关于如何在STM32上使用DS18S20的温度转换指令的步骤:
1. 配置GPIO引脚:将DS18S20的数据线连接到STM32的GPIO引脚上,然后在代码中配置该引脚为输入模式。
2. 重置DS18S20:发送一个初始化序列,即向DS18S20发送一个低电平脉冲,持续至少480微秒,然后等待DS18S20的响应。
3. 发送温度转换指令:向DS18S20发送一个温度转换指令,即向DS18S20发送一个高电平脉冲,持续不少于60微秒,然后等待DS18S20的响应。
4. 读取温度数据:等待DS18S20完成温度转换后,向DS18S20发送读取温度数据的指令,并从DS18S20接收温度数据,并进行计算和解码,以得到实际温度值。
下面是一个示例代码,演示如何在STM32上使用DS18S20的温度转换指令:
```c
#include "stm32f10x.h"
#define DS18S20_GPIO_PORT GPIOB
#define DS18S20_GPIO_PIN GPIO_Pin_12
void delay_us(uint32_t us)
{
uint32_t i;
for(i=0; i<us*8; i++);
}
void DS18S20_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = DS18S20_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(DS18S20_GPIO_PORT, &GPIO_InitStructure);
}
void DS18S20_Reset(void)
{
GPIO_ResetBits(DS18S20_GPIO_PORT, DS18S20_GPIO_PIN);
delay_us(500);
GPIO_SetBits(DS18S20_GPIO_PORT, DS18S20_GPIO_PIN);
delay_us(60);
GPIO_ResetBits(DS18S20_GPIO_PORT, DS18S20_GPIO_PIN);
delay_us(500);
}
void DS18S20_WriteBit(uint8_t bit)
{
GPIO_ResetBits(DS18S20_GPIO_PORT, DS18S20_GPIO_PIN);
delay_us(5);
if (bit)
{
GPIO_SetBits(DS18S20_GPIO_PORT, DS18S20_GPIO_PIN);
delay_us(90);
}
else
{
delay_us(90);
GPIO_SetBits(DS18S20_GPIO_PORT, DS18S20_GPIO_PIN);
}
delay_us(5);
}
uint8_t DS18S20_ReadBit(void)
{
uint8_t bit;
GPIO_ResetBits(DS18S20_GPIO_PORT, DS18S20_GPIO_PIN);
delay_us(5);
GPIO_SetBits(DS18S20_GPIO_PORT, DS18S20_GPIO_PIN);
delay_us(10);
bit = GPIO_ReadInputDataBit(DS18S20_GPIO_PORT, DS18S20_GPIO_PIN);
delay_us(80);
return bit;
}
void DS18S20_WriteByte(uint8_t byte)
{
uint8_t i;
for (i=0; i<8; i++)
{
DS18S20_WriteBit(byte & 0x01);
byte >>= 1;
}
}
uint8_t DS18S20_ReadByte(void)
{
uint8_t i;
uint8_t byte = 0;
for (i=0; i<8; i++)
{
byte >>= 1;
if (DS18S20_ReadBit())
{
byte |= 0x80;
}
}
return byte;
}
void DS18S20_StartConvert(void)
{
DS18S20_Reset();
DS18S20_WriteByte(0xCC);
DS18S20_WriteByte(0x44);
}
float DS18S20_ReadTemperature(void)
{
uint8_t temp[2];
int16_t raw_temp;
float cel_temp;
DS18S20_Reset();
DS18S20_WriteByte(0xCC);
DS18S20_WriteByte(0xBE);
temp[0] = DS18S20_ReadByte();
temp[1] = DS18S20_ReadByte();
raw_temp = ((int16_t)temp[1] << 8) | temp[0];
cel_temp = (float)raw_temp / 16.0f;
return cel_temp;
}
int main(void)
{
float temperature;
DS18S20_Init();
while (1)
{
DS18S20_StartConvert();
delay_us(750000);
temperature = DS18S20_ReadTemperature();
// do something with the temperature value
}
}
```
ds18b20工作原理
DS18B20是一种数字温度传感器,它基于热电偶效应工作原理。其内部包含一个温度传感器和一个8位存储器,能够以数字方式输出温度值,并且具有单总线接口,可以方便地与微处理器等其他数字系统连接。其工作原理具体如下:
1. 温度传感器:DS18B20采用的是温度传感器芯片DS18S20,其原理是基于热电偶效应。温度传感器由两个不同金属的导体组成,当两个导体的接触点处温度发生变化时,会产生一定的电压差。这个电压差与温度成正比,通过测量电压差就能得到温度值。
2. 存储器:DS18B20内部包含一个8位存储器,用于存储传感器的唯一序列号、温度数据和控制命令等信息。
3. 单总线接口:DS18B20采用单总线接口,即数据线、地线和电源线三根线都集成在一起,方便与其他数字系统连接。
4. 工作流程:DS18B20采样温度的流程如下:首先,主控芯片向DS18B20发送开始转换命令;然后DS18B20开始采样温度,并将温度值以数字信号的形式发送给主控芯片;最后,主控芯片读取并处理温度值。