El sensor de temperatura DS18B20 es un dispositivo que se comunica de forma digital. Cuenta con tres terminales, los dos de alimentación y el pin «data».
Con Arduino podemos «leer» la temperatura que registra este sensor que posee una característica muy peculiar. Utiliza la comunicación OneWire, la cual es un poco complicada para los que no tienen mucha experiencia en el área de electrónica digital.
Básicamente se trata de un protocolo especial que permite enviar y recibir datos utilizando un solo cable, a diferencia de la mayoría de los protocolos que requiere dos vías. De hecho, Arduino posee los pines RX y TX que son los encargados de enviar y recibir información.
Para muchas personas que intenten aprender a utilizar el sensor DS18B20 probablemente sea un poco difícil encontrar información precisa y concisa, debido a que se habla mucho de este protocolo de comunicación de un solo cable y los códigos de ejemplo normalmente están «ahogados» entre los párrafos que tratan de explicar al usuario una serie de conceptos que para nuestros propósitos no tienen relevancia.
Hoy les mostraré como leer la temperatura que registra este sensor, rápido y fácil.
Primero, las conexiones que se deben realizar:
La mayoría de las personas que no consiguen leer este sensor es debido a una mala conexión. El código requiere de la utilización de dos librerías, que deben ser instaladas antes de cargar el código a la placa. Estas son:
Una vez descargadas e instaladas ambas librerías, se debe cargar el siguiente código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <OneWire.h> //Se importan las librerías #include <DallasTemperature.h> #define Pin 2 //Se declara el pin donde se conectará la DATA OneWire ourWire(Pin); //Se establece el pin declarado como bus para la comunicación OneWire DallasTemperature sensors(&ourWire); //Se instancia la librería DallasTemperature void setup() { delay(1000); Serial.begin(9600); sensors.begin(); //Se inician los sensores } void loop() { sensors.requestTemperatures(); //Prepara el sensor para la lectura Serial.print(sensors.getTempCByIndex(0)); //Se lee e imprime la temperatura en grados Celsius Serial.println(" grados Centigrados"); Serial.print(sensors.getTempFByIndex(0)); //Se lee e imprime la temperatura en grados Fahrenheit Serial.println(" grados Fahrenheit"); delay(1000); //Se provoca un lapso de 1 segundo antes de la próxima lectura } |
Ahora solo se necesita cargar el código a la placa y los resultados serán inmediatos.
Sobre el sensor DS18B20…
- Es un termómetro digital de alta precisión, entre 9 y 12 bits de temperatura en grados Celsius (el usuario puede escoger la precisión deseada).
- Su temperatura operativa se encuentra entre -50 y 125 grados Celsius. La precisión, en el rango comprendido entre -10 y 85 grados es de ±0.5 grados.
- Su precio es económico, su interfaz de funcionamiento es sencilla y su uso es muy provechoso para proyectos que requieran mediciones precisas y confiables.
- Para más información, consultar la hoja de datos(datasheet) del dispositivo (está en inglés): http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
- Se puede escoger entre el modelo sumergible y los modelos para uso en placas de circuitos.
Espero que la información suministrada sea de su completo agrado y comprensión.
Saludos.
Buenos dias, quisiera hacerle una consulta, me puede por favor enviar un numero donde contactarles
+507 67347398 (whatsapp)
Hola buenas tardes, estoy iniciándome en esto de la electrónica y me resulta confuso, me permitirías tomar tu numero para ponerme en contacto contigo de manera directa????
A qué se debe la confusión?
Hola buenas tardes, estoy iniciándome en esto de la electrónica y me resulta confuso, me permitirías tomar tu numero para ponerme en contacto contigo de manera directa????
buenos dias donde puedo descargar la libreria de este sensor?
programa>incluir librería>gestionar librería
Es de dominio público en Internet
tengo una duda, ya conecte el sensor y cargue el programa, pero no sé donde debería ver los datos que da el sensor. debo crear un programa que lo lea o como?
Monitor Serial en Arduino IDE
Monitor Serial
buenas tardes, una pregunta mi amigo, se puede conectar varios sensores?
tengo el sensor solo… el componente de tres patas es un transistor? me podrias decir que componente es y que valor tiene. muchas gracias
El sensor es el componente de 3 patas. Luce como transistor
Es el modo parásito del sensor
disculpa para la implementación con pic también se hace la misma conexión?
si, el DS18B20 tiene 3 salidas, una a voltaje, otra a tierra y la última al pin digital para conectar por onewire
no debería cambiar mas si vas a usar el mismo diseño
NO manejamos PIC
no lo están.
el proto en la imagen tiene los puntos en vertical unidos
Por favor corrige el esquema, porque está en cortocircuito. No hace falta interconectar 5v y GND (mas que nada porque te cargas el regulador de tension, y eso si no se va el arduino entero)
Testeado sin conectar las susodichas lineas y con la pullup de 10K y funciona perfectamente.
Un saludo.
Como está funciona bien. No se publica nada que no haya sido probado antes.
Necesitas utilizar funciones especiales de la librería del sensor. No he tenido la oportunidad de investigar y escribir sobre el tema
Buenas tardes, ya conecte el sensor y cargue el codigo a la tarjeta; pero a la hora de ver las mediciones en el monitos, todas salen a -127 °C y 196 F. ¿Cual puede ser el error?
Mala conexión
hola he colocado lo mismo que has hecho pero al ver el monitor serial me da temperaturas de -127 en centigrados y 196 en fahrenheit por que pongo la sonda en agua caliente sigue igual, es una sonda nueva
Eso es un problema de conexión entre el sensor y Arduino
¿Cómo se arregla el problema? Eh metido todo tal cual esta en tu post y no entiendo
Es un falso contacto. Trata de usar otro protoboard o cambiar los cables
hola he colocado lo mismo que has hecho pero al ver el monitor serial me da temperaturas de -127 en centigrados y 196 en fahrenheit por que pongo la sonda en agua caliente sigue igual, es una sonda nueva https://uploads.disquscdn.com/images/1ef0151b989561332ee14b62a55d7cb863cfc1ed396bdfdbe88a6cddd6fd19d1.png
Es un problema de mala conexión. Verifica lo que estás haciendo
¿Pudiste arreglarlo?
Buenas noches, pudieron solucionarlo?
Yo tengo el mismo problema con la conexión de un arduino lilypad.
Gracias y saludos
Buenas,tengo un problema el sensor solo me da temperatura cero, y pues lo tengo conectado igual que en la imagen que tiene el post
me aparece este error, no se que esta mal, acabo de iniciar con esto de arduino https://uploads.disquscdn.com/images/9e702d45d47fb961c58e2015da1deb260f99a0b350a4501e7cd8cb3394e9c82f.png
Parece que la librería no ha sido instalada
Hola. Algun otro sensor sumergible (compatible con arduino) pero con mayor precision (< de +- 0.2°)?. Gracias
hola amigo oye puedo ponder una resistencia de 220
No. Debe ser de más de 4.7 kOhm
La verdad sos un gordo forro hiciste que toda esta pobre gente quemara sus ds18b20. El diagrama que publicaste esta mal kpo, el positivo esta puenteado con el negativo
Si eres un poco obsrvador, hay una resistencia que conecta al positivo con el negativo, lo cual limita la corriente que entrega el Arduino y se evita el corto circuito. Esta conexión es en modo parásito, la cual es perfectamente funcional y ha sido probada antes de publicarse. Creo que el gordo forro eres tu que eres incapaz de darte cuenta de algo tan simple. Saludos.