KY-001 DS18B20 con Arduino: guía y proyecto | Electricneill
Compartir
El termómetro que habla en binario
Teoría, conexión y un proyecto completo con el KY-001 (DS18B20): cómo entrega la temperatura ya convertida en número por un solo cable, cómo saber si tu placa trae la pull-up y cómo armar un termómetro con alarma que no parpadea. Todo con simuladores que puedes tocar.
- Nivel inicial → medio
- 3,0 a 5,5 V
- Salida digital 1-Wire
- 9 simuladores
Las etiquetas del artículo te dicen de dónde sale cada número, igual que en el ebook: Dato documentado hoja de datos del DS18B20 · Verifica en tu módulo cambia según el fabricante · Hipótesis didáctica valor supuesto para el ejemplo · Resultado calculado obtenido con la fórmula indicada.
Parte A · 1Qué es el DS18B20
El KY-001 es una placa pequeña que lleva un DS18B20, un termómetro digital diseñado por Dallas Semiconductor (después Maxim Integrated, hoy parte de Analog Devices). Por fuera parece un transistor de tres patas en encapsulado TO-92. Por dentro tiene un sensor de temperatura, un convertidor analógico-digital, memoria y la lógica para comunicarse.
Esa es la gran diferencia con un sensor analógico: el DS18B20 mide, convierte y entrega la temperatura como un número binario. El Arduino no lee un voltaje; recibe el dato listo por un solo cable, con un protocolo llamado 1-Wire.
Mueve la temperatura y mira qué recibe el Arduino en cada caso. El termistor entrega un voltaje que tu programa debe convertir; el DS18B20 entrega el número ya hecho.
KY-013 · termistor → A0
Luego tu código aplica la ecuación de Steinhart-Hart. La exactitud depende de las resistencias y del ADC del Arduino. Curva NTC 10 kΩ, β = 3950 Hipótesis
KY-001 · DS18B20 → D2
Sin cálculos en tu programa: la librería entrega °C. ±0,5 °C entre −10 y +85 °C Dato documentado
Compara los dosMódulo KY-001 (DS18B20)$2.000 · ver →
Compara los dosMódulo termistor KY-013$2.000 · ver →
| KY-013 · termistor | KY-001 · DS18B20 | |
|---|---|---|
| Qué entrega | Un voltaje que cambia con la temperatura | Un número binario con la temperatura |
| Pin del Arduino | Entrada analógica (A0–A5) | Cualquier pin digital |
| Cálculo en el programa | Ecuación del termistor (Steinhart-Hart) | Ninguno: la librería entrega °C |
| Varios sensores | Un pin analógico por sensor | Muchos sensores en un mismo pin |
| Exactitud | Depende de las resistencias y del ADC | ±0,5 °C entre −10 y +85 °C Dato documentado |
Para recordar
Un sensor analógico entrega una magnitud eléctrica que hay que medir e interpretar. Un sensor digital como el DS18B20 hace ese trabajo adentro y entrega el resultado: tu programa solo lo pide y lo lee.
Dónde se usa: termostatos, salas de servidores, invernaderos, acuarios (con la versión en sonda de acero), control de procesos y registro de temperatura en varios puntos de un edificio, aprovechando que muchos sensores comparten un mismo cable.
Parte A · 2Ficha técnica verificada
Los valores del chip vienen de la hoja de datos oficial del DS18B20 (Maxim Integrated, documento 19-7487, rev. 6, julio de 2019). Los del módulo dependen del fabricante: compruébalos en tu placa.
| Parámetro | Valor | Fuente |
|---|---|---|
| Chip y encapsulado | DS18B20 · TO-92 de 3 patas | Documentado |
| Tensión de alimentación | 3,0 a 5,5 V | Documentado |
| Rango de medición | −55 a +125 °C (−67 a +257 °F) | Documentado |
| Exactitud | ±0,5 °C entre −10 y +85 °C · ±1 °C entre −30 y +100 °C · ±2 °C en todo el rango | Documentado |
| Resolución | 9 a 12 bits (0,5 a 0,0625 °C); al encender usa 12 bits | Documentado |
| Tiempo de conversión | Hasta 750 ms a 12 bits | Documentado |
| Comunicación | 1-Wire: un pin de datos (DQ) más GND | Documentado |
| Dirección | Código único de 64 bits grabado de fábrica | Documentado |
| Corriente al medir | 1 mA típico · 1,5 mA máximo (a 5 V) | Documentado |
| Pull-up del bus | 4,7 kΩ entre DQ y la alimentación | Documentado |
| Alarma interna | Límites TH y TL en memoria no volátil | Documentado |
| Tamaño del módulo | ≈ 18 × 15 mm | Verifica |
| Resistencia R1 de la placa | 331 (330 Ω) o 472 (4,7 kΩ), según la versión | Verifica |
| Orden de los pines | Guíate por los rótulos «S» y «−» impresos | Verifica |
¿Mito o dato? Toca cada tarjeta
Al revisar guías y fichas de este módulo encontramos errores que se repiten mucho.
Parte A · 3Pines y resistencia pull-up
El bus 1-Wire necesita unos 4,7 kΩ entre la línea de datos y la alimentación. Hay KY-001 que la traen y otros que no. Elige lo que dice R1 en tu placa y mide entre S y el pin central (con el módulo desconectado).
Código 331 = 33 × 10¹ = 330 Ω (resistencia del LED). Código 472 = 47 × 10² = 4.700 Ω. Verifica en tu módulo
Parte A · 4Cómo funciona el bus 1-Wire
En 1-Wire un solo cable lleva los datos en ambos sentidos. Ni el Arduino ni el sensor ponen 5 V en la línea: solo pueden tirarla a 0 V. Cuando nadie la tira, la resistencia pull-up la devuelve a nivel alto. Por eso esa resistencia es obligatoria: sin ella la línea queda flotando y la lectura falla.
Recorre los cinco pasos de una lectura. La línea naranja es cuando el Arduino tira la línea a 0 V; la verde, cuando la tira el sensor. Los tiempos están estilizados para que se vean.
Cada DS18B20 sale de fábrica con un código único: 8 bits de familia (28h), 48 bits de número de serie y 8 bits de verificación (CRC) Dato documentado. Agrega sensores al bus y prueba qué pasa si quitas la pull-up.
Modo parásito
El DS18B20 también puede alimentarse desde la línea de datos usando solo DQ y GND. En este artículo usamos siempre alimentación normal por el pin central: es más simple y confiable.
Parte A · 5Del dato binario a los grados
El sensor entrega la temperatura en 16 bits, en complemento a dos. A 12 bits de resolución, cada unidad vale 0,0625 °C. La librería hace esta conversión, pero entenderla te ayuda a leer la hoja de datos.
Ejemplo resuelto A.1 · positiva
Dato leído: 0191h Documentado (tabla 1 de la hoja de datos).
0191h = 1·256 + 9·16 + 1 = 401
401 × 0,0625 = 25,0625 °C Calculado
Ejemplo resuelto A.2 · negativa
Dato leído: FF5Eh Documentado. El bit más alto es 1: es negativo.
FF5Eh = 65.374 → 65.374 − 65.536 = −162
−162 × 0,0625 = −10,125 °C Calculado
Más bits = más detalle, pero cada lectura demora más. Elige la resolución y mira la barra de conversión.
Tiempos de la hoja de datos Documentado; lecturas por segundo = 1 ÷ tiempo Calculado. Para un termómetro de sala, 12 bits es suficiente.
Compatibilidad
- Arduino UNO, Nano, Mega: alimenta con 5 V.
- ESP32 y ESP8266: alimenta con 3,3 V para que la línea y la pull-up queden a 3,3 V.
- Raspberry Pi: 3,3 V y GPIO4, activando 1-Wire.
Hipótesis y dominio de validez
±0,5 °C es la exactitud del chip. La lectura es la temperatura de su encapsulado: tarda en seguir cambios rápidos y la afectan el LED cercano, tu mano o el sol. Para líquidos usa la versión en sonda de acero.
Parte BConexión simple y código
Tres cables y un programa corto para leer la temperatura en el computador. Alimentación: 5 V por el cable USB.
| Pin del KY-001 | Arduino UNO | Color del cable |
|---|---|---|
| S | D2 | ■ Azul · señal digital |
| Centro (+V) | 5V | ■ Rojo · 5 V |
| − | GND | ■ Negro · GND |
| Resistencia 4,7 kΩ (si R1 no dice 472) | Entre S y el pin central | — |
Elige a dónde va cada pin y presiona «Probar». El simulador te dice qué mostraría el Monitor Serie y, si algo está mal, qué revisar.
Arma esta conexiónPlaca compatible Arduino UNO R3Desde $4.990 · ver →
Arma esta conexiónCables Jumper DuPontDesde $2.000 · ver →
Arma esta conexiónResistencia 4,7 kΩ 1/4 W$100 · ver →
Instala las librerías
- Abre el IDE de Arduino 2 y entra a Herramientas → Administrar bibliotecas (Ctrl + Mayús + I).
- Busca OneWire e instala la de Paul Stoffregen.
- Busca DallasTemperature e instala la de Miles Burton.
- Selecciona Herramientas → Placa → Arduino UNO y el puerto COM correspondiente.
// KY-001 · Conexión simple: leer la temperatura en el Monitor Serie // Electricneill Chile SpA · Ebook KY-001 · Placa: Arduino UNO // Librerías: OneWire (Paul Stoffregen) y DallasTemperature (Miles Burton) #include <OneWire.h> #include <DallasTemperature.h> const byte PIN_SENSOR = 2; // S del KY-001 va al pin digital 2 OneWire bus(PIN_SENSOR); // crea el bus 1-Wire en el pin 2 DallasTemperature sensores(&bus); // la librería usa ese bus void setup() { Serial.begin(9600); sensores.begin(); // busca sensores en el bus Serial.print("Sensores encontrados: "); Serial.println(sensores.getDeviceCount()); } void loop() { sensores.requestTemperatures(); // ordena medir (espera hasta 750 ms) float t = sensores.getTempCByIndex(0); // lee el primer sensor del bus if (t == DEVICE_DISCONNECTED_C) { // la librería devuelve -127 Serial.println("Error: sensor no detectado"); } else { Serial.print("Temperatura: "); Serial.print(t, 2); // 2 decimales Serial.println(" °C"); } delay(1000); // una lectura por segundo }
Compilado para Arduino UNO con OneWire 2.3.8 y DallasTemperature 4.0.6: usa 7.490 bytes de memoria de programa (22,9 %).
Míralo en video: «¿Cómo programar el DS18B20 con Arduino?» · David Portilla · 13:29 · en español. Mismo montaje y misma librería DallasTemperature que esta parte.| Líneas | Qué hace |
|---|---|
| 5–6 | Incluye las dos librerías: OneWire maneja el bus y DallasTemperature habla con el sensor. |
| 8 | Guarda el pin de la señal en una constante. Si cambias el cable de pin, cambias solo esta línea. |
| 10–11 | Crea el bus en el pin 2 y le dice a la librería que use ese bus. |
| 14–17 | Inicia el Monitor Serie, busca sensores y muestra cuántos encontró (debe decir 1). |
| 21–22 | Ordena medir y lee el primer sensor del bus (índice 0) en grados Celsius. |
| 24–30 | Si la librería devuelve −127, avisa la falla; si no, muestra la temperatura con 2 decimales. |
| 31 | Espera un segundo antes de la siguiente lectura. |
Parte BMonitor Serie y diagnóstico
Mantén presionado «Tomar con los dedos» y mira cómo sube la lectura de a poco: el encapsulado necesita tiempo para calentarse. Después provoca las fallas típicas.
Gráfico tipo Serial Plotter de las últimas 40 lecturas. Valores ilustrativos Hipótesis: los tuyos dependen de la sala.
| Lo que ves | Causa probable | Qué hacer |
|---|---|---|
| «Sensores encontrados: 0» y luego −127 | Falta la pull-up, el cable S está suelto o en otro pin | Revisa R1, agrega 4,7 kΩ y confirma el pin D2 |
| 85.00 °C fijo | 85 °C es el valor de fábrica del registro al encender Documentado: se leyó antes de terminar una conversión o la alimentación es inestable | Revisa +V y GND; no acortes la espera de conversión |
| Símbolos raros | Velocidad distinta en el Monitor Serie | Ajústala a 9600 baudios |
| El sensor se calienta solo | +V y GND invertidos | Desconecta de inmediato y revisa los rótulos |
Alternativa sin hardware
Arma el circuito en Wokwi (wokwi.com), que incluye el DS18B20 y permite fijar la temperatura simulada. Rotula esos datos como simulación, no como medición. Y cuando quieras pasar al banco de trabajo, el kit de 37 sensores trae el KY-001 y los otros tres módulos del proyecto.
Parte C · 1La histéresis: una alarma que no parpadea
Si la alarma se enciende en 30,0 °C y se apaga apenas baja de 30,0 °C, una lectura que oscila entre 29,9 y 30,1 °C la haría encenderse y apagarse en cada lectura. La solución es usar dos umbrales: uno para encender y otro, más bajo, para apagar. La diferencia entre ambos se llama histéresis.
Fórmula
enciende si T ≥ Talarma · apaga si T ≤ Talarma − H
Lecturas generadas para el ejemplo Hipótesis didáctica. Cada punto es una lectura; las barras inferiores muestran la alarma encendida.
Ejemplo resuelto C.1
Con Talarma = 30,0 °C y H = 1,0 °C Hipótesis, la alarma se apaga en 30,0 − 1,0 = 29,0 °C Calculado. Para las lecturas 29,8 → 30,0 → 29,9 → 29,4 → 29,0 → 29,6 °C: apagada → enciende (llegó a 30,0) → sigue (29,9 no es ≤ 29,0) → sigue → apaga (llegó a 29,0) → sigue apagada (29,6 no llega a 30,0).
Parte C · 2Proyecto: termómetro con alarma, máximos y mínimos
Usamos cuatro módulos del kit más una pantalla LCD I2C. El Arduino pide una medición al KY-001 y, mientras el sensor convierte, sigue revisando el botón. A los 750 ms recoge el resultado y pide la siguiente. Con cada lectura actualiza máximo y mínimo, elige el color del KY-016, hace sonar el KY-012 durante la alarma y muestra todo en la LCD.
Diagrama de bloques animado: las entradas alimentan la decisión y el Arduino maneja tres salidas.
Este es el programa completo funcionando: lectura cada 750 ms sin detener el programa, histéresis, semáforo, pitido de 150 ms cada segundo y botón de reinicio de máximo y mínimo.
KY-001
| Estado | Condición | LED KY-016 | Zumbador | LCD |
|---|---|---|---|---|
| Normal | T < 26,0 °C | ● Verde | Apagado | Temperatura, mín. y máx. |
| Aviso | 26,0 °C ≤ T, sin alarma | ● Amarillo (R + G) | Apagado | Temperatura, mín. y máx. |
| Alarma | Desde 30,0 °C hasta bajar a 29,0 °C | ● Rojo | Pitido de 150 ms cada 1 s | «ALARMA» en la línea 1 |
| Falla | La librería devuelve −127 | ● Azul | Apagado | «Sensor no detectado» |
Conexiones del proyecto
| Dispositivo | Pin del dispositivo | Conecta a | Cable |
|---|---|---|---|
| Arduino UNO | 5V / GND | Riel + / riel − de la protoboard | Rojo / negro |
| KY-001 | S · VCC · GND | D2 · riel + · riel − | Amarillo · rojo · negro |
| KY-004 | S · VCC · GND | D4 · riel + · riel − | Azul · rojo · negro |
| KY-012 | S · NC · GND | D8 · sin conectar Verifica · riel − | Gris · — · negro |
| KY-016 | R · G · B · GND | D9 · D10 · D11 · riel − | Morado · verde · celeste · negro |
| LCD I2C | GND · VCC · SDA · SCL | Riel − · riel + · A4 · A5 | Negro · rojo · verde · naranja |
Arma este proyectoMódulo I2C para LCD (IIC/TWI)$1.990 · ver →
Arma este proyectoLCD1602 con controlador HD44780$3.990 · ver →
Arma este proyectoProtoboard MB-102$3.490 · ver →
Si tu KY-016 no las traeResistencias 220 Ω (pack de 3)$270 · ver →
Verifica en tus módulos
- KY-012: en muchos módulos el pin central no se usa. Si tu placa lo rotula «+», conéctalo al riel +.
- KY-016: revisa si trae tres resistencias pequeñas. Si no, pon 220 Ω en serie en R, G y B.
- KY-004: el programa lee el estado de reposo al encender. No lo presiones mientras arranca.
-
LCD: la dirección I2C suele ser
0x27o0x3F. Si no ves texto, ajusta el contraste del adaptador.
Errores de montaje que dañan componentes
- Invertir + y − en cualquier módulo: el KY-001 se calienta y puede dañarse.
- Unir el riel + con el riel −: es un cortocircuito del USB.
- Conectar el LED RGB sin resistencias si tu módulo no las trae.
Ver el código completo del proyecto (155 líneas, compilado)
// KY-001 · Proyecto: Termómetro con alarma, máximos y mínimos // Electricneill Chile SpA · Ebook KY-001 · Placa: Arduino UNO // Módulos del kit: KY-001 (temperatura), KY-016 (LED RGB), // KY-012 (zumbador activo), KY-004 (botón) // Complemento: pantalla LCD 1602 con adaptador I2C // Librerías: OneWire, DallasTemperature, LiquidCrystal_I2C #include <OneWire.h> #include <DallasTemperature.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> // ---------- Pines ---------- const byte PIN_SENSOR = 2; // S del KY-001 (bus 1-Wire) const byte PIN_BOTON = 4; // S del KY-004 const byte PIN_BUZZER = 8; // S del KY-012 const byte PIN_R = 9; // R del KY-016 const byte PIN_G = 10; // G del KY-016 const byte PIN_B = 11; // B del KY-016 // ---------- Ajustes (cámbialos a tu gusto) ---------- const float TEMP_AVISO = 26.0; // desde aquí el LED pasa a amarillo const float TEMP_ALARMA = 30.0; // desde aquí: rojo + zumbador const float HISTERESIS = 1.0; // la alarma se apaga en 29,0 °C o menos const unsigned long T_CONVERSION = 750; // ms que tarda una lectura a 12 bits OneWire bus(PIN_SENSOR); DallasTemperature sensor(&bus); LiquidCrystal_I2C lcd(0x27, 16, 2); // si no ves texto, prueba 0x3F float tMax = 0, tMin = 0, ultimaT = 0; bool hayLectura = false; // todavía no llega la primera lectura válida bool alarma = false; bool reposoBoton; // nivel del botón sin presionar unsigned long inicioConversion; // Enciende el LED RGB: cada argumento es true (encendido) o false (apagado) void color(bool r, bool g, bool b) { digitalWrite(PIN_R, r); digitalWrite(PIN_G, g); digitalWrite(PIN_B, b); } // Reinicia máximo y mínimo al presionar el botón (con antirrebote) void revisarBoton() { static bool anterior = false; static unsigned long tPulsacion = 0; bool presionado = (digitalRead(PIN_BOTON) != reposoBoton); if (presionado && !anterior && millis() - tPulsacion > 200) { tPulsacion = millis(); if (hayLectura) { tMax = ultimaT; tMin = ultimaT; } Serial.println(F("Maximo y minimo reiniciados")); } anterior = presionado; } // Muestra la temperatura, el estado y los extremos en la pantalla void mostrarLCD(float t) { lcd.setCursor(0, 0); lcd.print(F("T:")); lcd.print(t, 1); lcd.print((char)223); // símbolo de grado en la LCD lcd.print(F("C ")); // espacios: borran restos de la lectura anterior lcd.setCursor(10, 0); lcd.print(alarma ? F("ALARMA") : F(" ")); lcd.setCursor(0, 1); lcd.print(F("m:")); lcd.print(tMin, 1); lcd.print(F(" M:")); lcd.print(tMax, 1); lcd.print(F(" ")); } // Decide el color del semáforo y la alarma a partir de una lectura void procesarLectura(float t) { if (t == DEVICE_DISCONNECTED_C) { // -127: sensor desconectado alarma = false; color(false, false, true); // azul = falla del sensor lcd.setCursor(0, 0); lcd.print(F("Sensor no ")); lcd.setCursor(0, 1); lcd.print(F("detectado ")); Serial.println(F("Error: sensor no detectado")); return; } ultimaT = t; if (!hayLectura) { // primera lectura válida tMax = t; tMin = t; hayLectura = true; } if (t > tMax) tMax = t; if (t < tMin) tMin = t; // Alarma con histéresis: enciende en 30,0 y apaga recién en 29,0 if (!alarma && t >= TEMP_ALARMA) alarma = true; if (alarma && t <= TEMP_ALARMA - HISTERESIS) alarma = false; if (alarma) color(true, false, false); // rojo else if (t >= TEMP_AVISO) color(true, true, false); // amarillo (R + G) else color(false, true, false); // verde mostrarLCD(t); Serial.print(F("T=")); Serial.print(t, 2); Serial.print(F(" C min=")); Serial.print(tMin, 2); Serial.print(F(" max=")); Serial.print(tMax, 2); Serial.println(alarma ? F(" ALARMA") : F(" normal")); } void setup() { Serial.begin(9600); pinMode(PIN_BUZZER, OUTPUT); pinMode(PIN_R, OUTPUT); pinMode(PIN_G, OUTPUT); pinMode(PIN_B, OUTPUT); pinMode(PIN_BOTON, INPUT); reposoBoton = digitalRead(PIN_BOTON); // el botón no debe estar presionado al encender lcd.init(); lcd.backlight(); lcd.print(F("KY-001 DS18B20")); lcd.setCursor(0, 1); lcd.print(F("Iniciando...")); sensor.begin(); sensor.setResolution(12); // 0,0625 °C por paso sensor.setWaitForConversion(false); // no detener el programa mientras mide sensor.requestTemperatures(); // primera medición inicioConversion = millis(); } void loop() { revisarBoton(); // Cuando termina una conversión: leer, pedir la siguiente y procesar if (millis() - inicioConversion >= T_CONVERSION) { float t = sensor.getTempCByIndex(0); sensor.requestTemperatures(); inicioConversion = millis(); procesarLectura(t); } // Zumbador: pitido de 150 ms cada segundo mientras dure la alarma digitalWrite(PIN_BUZZER, alarma && (millis() % 1000 < 150)); }
Compilado para Arduino UNO con OneWire 2.3.8, DallasTemperature 4.0.6 y LiquidCrystal_I2C 1.1.4: 10.780 bytes de programa (32,9 %) y 539 bytes de RAM (26,3 %). Necesita la librería LiquidCrystal I2C de Frank de Brabander.
Medir sin detener el programa
En la parte B, requestTemperatures() dejaba el programa esperando hasta 750 ms. Aquí usamos setWaitForConversion(false): el Arduino da la orden, sigue trabajando y vuelve por el resultado cuando ya pasó el tiempo de conversión, controlado con millis(). Por eso el botón responde al instante.
RefuerzoVideos recomendados
Seleccionamos videos que muestran el DS18B20 funcionando en el banco de trabajo. Toca la miniatura para verlo aquí mismo o abre el enlace en YouTube. Los videos son de sus autores; los recomendamos como apoyo y no forman parte de Electricneill.
Conexión con Arduino UNO y lectura en °C con DallasTemperature. Complementa la parte B.
Presentación del sensor y de la comunicación 1-Wire. Complementa la parte A.
Usa la versión en sonda de acero para medir líquidos, la que recomendamos en la FAQ.
Explicación del bus 1-Wire, el circuito y el código para principiantes. Activa los subtítulos en español.
En 5 minutos: la resistencia pull-up y las librerías OneWire y DallasTemperature.
Lectura en pantalla LCD 16×2: el punto de partida del proyecto de la parte C.
CierrePonte a prueba
1. ¿Por qué el bus 1-Wire necesita una resistencia pull-up?
2. Con TEMP_ALARMA = 28,0 y HISTERESIS = 1,5, ¿a qué temperatura se apaga la alarma?
3. ¿Qué ventaja tiene setWaitForConversion(false) en el proyecto?
4. El Monitor Serie muestra 85.00 °C fijo. ¿Qué pasó?
Reto de ampliación
- Dos zonas: agrega un segundo DS18B20 en el mismo pin D2 y muestra «interior» y «exterior».
- Gráfico en vivo: abre el Serial Plotter del IDE mientras calientas el sensor.
- Ventilador: usa el relé KY-019 para encender un ventilador de 5 V en alarma (solo baja tensión).
Logro desbloqueado
Ya sabes leer un sensor digital 1-Wire, mostrar datos en una LCD por I2C y programar una alarma con histéresis que no parpadea.
FAQPreguntas frecuentes
¿El KY-001 sirve para medir agua o líquidos?
El módulo no: el TO-92 queda expuesto y la placa no es estanca. Para líquidos usa el DS18B20 en sonda de acero; el código es el mismo.
¿Funciona con ESP32?
Sí. Aliméntalo con 3,3 V para que la línea de datos y la pull-up queden a 3,3 V; el chip funciona desde 3,0 V. Usa cualquier GPIO digital y cambia PIN_SENSOR.
¿Cuántos sensores puedo poner en el mismo pin?
Varios: cada uno tiene una dirección única de 64 bits. En cables cortos de protoboard no tendrás problema con unos pocos; para tramos largos baja la pull-up y usa cable trenzado.
¿Cuál es la diferencia entre KY-001 y KY-028?
El KY-001 entrega la temperatura digital exacta por 1-Wire. El KY-028 usa un termistor con un comparador: su salida digital solo dice «sobre o bajo el umbral» que fijas con el potenciómetro.
¿Te quedó alguna duda o quieres armarlo en clase?
Somos profesores de electrónica en el Valle de Aconcagua. Te asesoramos para elegir los módulos correctos y armamos packs para liceos TP y talleres.
Sigue explorando
- Sensores y actuadores (Parte 1): transductores y principios de transducción
- Control automático de temperatura con NTC y 555
- Estación meteorológica con Arduino y DHT11
- Ver todos los artículos del blog →
Créditos y transparencia. Datos técnicos: hoja de datos DS18B20, Maxim Integrated (hoy Analog Devices), documento 19-7487, rev. 6, julio de 2019; los valores con la etiqueta «Dato documentado» provienen de ella. Referencias consultadas para comparar datos: guía KY-001 de Joy-IT (SensorKit X40, CC BY-NC-SA 3.0) y ficha del kit de UNIT Electronics; el texto, los diagramas, los simuladores y el código son propios. Videos de apoyo (de sus respectivos autores, enlazados desde YouTube): David Portilla, Cambatronics Online, LabVIEW Para Todos, Bas on Tech, DuinaBytes y DPV Technology. Código compilado para Arduino UNO sin errores ni advertencias; no se probó en hardware para esta edición. Los simuladores reproducen la lógica del programa con lecturas ilustrativas. Todas las prácticas usan 5 V CC por USB: no conectes ningún circuito a la red eléctrica.
Basado en el Ebook KY-001: sensor de temperatura DS18B20 con Arduino, módulo 01 de la serie Aprende Electrónica · Electricneill Chile SpA · San Felipe, Valle de Aconcagua, Región de Valparaíso.