Sensor de temperatura DS18B20
Sensor digital de temperatura: manda o valor já convertido, conferido por CRC, por um único fio de dados (barramento 1-Wire). Cada sensor tem um número de série de 64 bits gravado na fábrica, então vários podem dividir o mesmo pino. Usa os módulos onewire e ds18x20, que já vêm no firmware. Peça a conversão, espere 750 ms e leia. Precisa de um resistor de 4,7 kΩ entre o DQ e o 3V3.
Pinagem
| Pino | Ligar em | Observação |
|---|---|---|
| GND (1) | GND | olhando a face chata, com as pernas para baixo, é a da esquerda |
| DQ (2) | GPIO (ex.: 4) e resistor de 4,7 kΩ para o 3V3 | dados 1-Wire; vários sensores podem ir no mesmo GPIO |
| VDD (3) | 3V3 | aceita de 3,0 a 5,5 V |
Da ementa ao semestre planejado
- Plano de ensino e calendário montados sozinhos
- Diário de aulas pronto para colar no SIGA
- Slides e listas de exercícios com gabarito
Versão Community grátis · Windows
Exemplo em MicroPython
import onewire, ds18x20
from machine import Pin
import time
# DQ no GPIO4, com resistor de 4,7 kΩ do DQ para o 3V3
ds = ds18x20.DS18X20(onewire.OneWire(Pin(4)))
roms = ds.scan() # um ROM (8 bytes) para cada sensor no fio
print("sensores:", len(roms))
while True:
ds.convert_temp() # todos os sensores medem ao mesmo tempo
time.sleep_ms(750) # 12 bits: até 750 ms para converter
for rom in roms:
print(ds.read_temp(rom), "°C")
time.sleep(1)
Especificações
| Item | Valor | Fonte |
|---|---|---|
| Alimentação (VDD) | 3,0–5,5 V | Datasheet DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf |
| Faixa | −55 a +125 °C; ± 0,5 °C de −10 a +85 °C | Datasheet DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf |
| Resolução | 9 a 12 bits (0,5 a 0,0625 °C); de fábrica, 12 bits | Datasheet DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf |
| Tempo de conversão (máx.) | 93,75 / 187,5 / 375 / 750 ms em 9 / 10 / 11 / 12 bits | Datasheet DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf |
| Ao ligar | lê +85 °C (0550h) até a primeira conversão | Datasheet DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf |
| Pull-up do DQ | ~4,7 kΩ para o VDD (o texto fala em ~5 kΩ) | Datasheet DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf |
| Ordem dos pinos (TO-92, face chata) | 1 GND, 2 DQ, 3 VDD | Datasheet DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf |
| ROM de 64 bits | família 28h + 48 bits de série + CRC | Datasheet DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf — no simulador o número de série sai do id da peça (não é de um sensor real) |
| Bytes 5 a 7 do scratchpad | FFh, 0Ch, 10h (figura do mapa de memória) | Datasheet DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf — TODO(fidelidade): o texto diz "all 1s"; conferir num sensor do laboratório |
| TH e TL de fábrica | 75 e 70 °C (4Bh e 46h) | shared/componentes/catalogo.js — TODO(fidelidade): o datasheet não dá; valores das leituras publicadas de sensores novos |
| Modo parasita (VDD no GND) | não simulado | TODO(fidelidade): precisa do "strong pull-up" na conversão |
| Driver | onewire e ds18x20 (congelados no firmware) | MicroPython v1.29.0: ports/esp32/boards/manifest.py e micropython-lib (onewire.py, ds18x20.py) |
Valores marcados com TODO(fidelidade) ainda vão ser conferidos nas peças do laboratório.