Sensor de temperatura DS18B20
Sensor digital de temperatura: envía el valor ya convertido, comprobado por CRC, por un único cable de datos (bus 1-Wire). Cada sensor tiene un número de serie de 64 bits grabado en fábrica, así que varios pueden compartir el mismo pin. Usa los módulos onewire y ds18x20, que ya vienen en el firmware. Pide la conversión, espera 750 ms y lee. Necesita una resistencia de 4,7 kΩ entre el DQ y el 3V3.
Distribución de pines
| Pin | Conectar a | Observación |
|---|---|---|
| GND (1) | GND | mirando la cara plana, con las patas hacia abajo, es la de la izquierda |
| DQ (2) | GPIO (p. ej., 4) y resistencia de 4,7 kΩ al 3V3 | datos 1-Wire; varios sensores pueden ir en el mismo GPIO |
| VDD (3) | 3V3 | acepta de 3,0 a 5,5 V |
Del programa al semestre planificado
- Plan de enseñanza y calendario montados solos
- Diario de clases listo para pegar en el SIGA
- Diapositivas y listas de ejercicios con solucionario
Versión Community gratis · Windows
Ejemplo en MicroPython
import onewire, ds18x20
from machine import Pin
import time
# DQ en el GPIO4, con resistencia de 4,7 kΩ del DQ al 3V3
ds = ds18x20.DS18X20(onewire.OneWire(Pin(4)))
roms = ds.scan() # un ROM (8 bytes) por cada sensor del cable
print("sensores:", len(roms))
while True:
ds.convert_temp() # todos los sensores miden a la vez
time.sleep_ms(750) # 12 bits: hasta 750 ms para convertir
for rom in roms:
print(ds.read_temp(rom), "°C")
time.sleep(1)
Especificaciones
| Elemento | Valor | Fuente |
|---|---|---|
| Alimentación (VDD) | 3,0–5,5 V | Hoja de datos DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf |
| Rango | −55 a +125 °C; ± 0,5 °C de −10 a +85 °C | Hoja de datos DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf |
| Resolución | 9 a 12 bits (0,5 a 0,0625 °C); de fábrica, 12 bits | Hoja de datos DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf |
| Tiempo de conversión (máx.) | 93,75 / 187,5 / 375 / 750 ms en 9 / 10 / 11 / 12 bits | Hoja de datos DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf |
| Al encender | lee +85 °C (0550h) hasta la primera conversión | Hoja de datos DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf |
| Pull-up del DQ | ~4,7 kΩ al VDD (el texto habla de ~5 kΩ) | Hoja de datos DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf |
| Orden de los pines (TO-92, cara plana) | 1 GND, 2 DQ, 3 VDD | Hoja de datos DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf |
| ROM de 64 bits | familia 28h + 48 bits de serie + CRC | Hoja de datos DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf — en el simulador el número de serie sale del id de la pieza (no es de un sensor real) |
| Bytes 5 a 7 del scratchpad | FFh, 0Ch, 10h (figura del mapa de memoria) | Hoja de datos DS18B20 (Maxim Integrated), user-web.icecube.wisc.edu/~kitamura/NK/Datasheets/Dallas_1Wire/DS18B20.pdf — En verificación: el texto dice "all 1s"; comprobar en un sensor del laboratorio |
| TH y TL de fábrica | 75 y 70 °C (4Bh y 46h) | Catálogo de componentes de PyPlaca — En verificación: la hoja de datos no lo da; valores de lecturas publicadas de sensores nuevos |
| Modo parásito (VDD en GND) | no simulado | En verificación: necesita el "strong pull-up" en la conversión |
| Driver | onewire y ds18x20 (congelados en el firmware) | MicroPython v1.29.0: ports/esp32/boards/manifest.py y micropython-lib (onewire.py, ds18x20.py) |
Los valores con "En verificación" todavía se comprobarán en las piezas del laboratorio.