OpenWebinars

Robótica y Hardware

Tutorial Arduino: Uso de sistema OneWire

En este post, realizaremos un ejemplo de medición de temperatura con el sensor ds18b20. Este sensor, aparte de tener una buena precisión y una versión sumergible, funciona utilizando un sistema de conexionado muy particular. Este sistema se denomina OneWire.

Fernando Martínez

Fernando Martínez

Lectura 5 minutos

Publicado el 3 de junio de 2015

Compartir

    Tabla de contenidos

Ver Indice Tutorial

¿Qué es el sistema OneWire?

En este post, realizaremos un ejemplo de medición de temperatura con el sensor ds18b20. Este sensor, aparte de tener una buena precisión y una versión sumergible, funciona utilizando un sistema de conexionado muy particular. Este sistema se denomina OneWire .  Con él conseguimos enviar y recibir datos por un único cable. Esto tiene sus ventajas e inconvenientes, pero no deja de ser una opción muy a tener en cuenta cuando vamos justos de conexiones de control para nuestro proyecto, ya que nos ahorramos un cable en cada sensor.

En otro ejemplo, ya realizamos mediciones de temperatura con un sensor. Lo interesante de este ejemplo no es el medir la temperatura, si no aprender el funcionamiento del sistema OneWire, para poder usarlo en cualquier sensor que lo utilice, y la instalación e importado de librerías de terceros.

Existen muchos detractores de este sistema, que ponen de manifiesto que el usarlo exige unos códigos algo complicados…y que el conexionado no es demasiado intuitivo… La verdad es que ni son tan complicados los códigos, ya que las librerías propias y los ejemplos que traen estos sensores son una buena herramienta, ni es tan complicada su conexión, solo hay que seguir el esquema que os daremos posteriormente. Como veréis en Internet, la mayoría de errores y problemas de las personas que los usan radican en un mal conexionado.
 
Aprende a desarrollar apps para iOS y Android
Comienza 15 días gratis en OpenWebinars y accede cursos, talleres y laboratorios prácticos de Swift y Kotlin para crear tus propias aplicaciones.
Comenzar gratis ahora
 

¿Cómo usar las librerías y los ejemplos?

Esta vez, usaremos unas librerías en nuestro proyecto para controlar el sensor térmico con el sistema OneWire que os hemos comentado. En nuestro post 3, os definimos qué eran las librerías y ahora os explicaremos como usarlas. Arduino tiene una serie de librerías genéricas que podemos usar simplemente escribiendo al principio de nuestro código la sentencia #include < librería .h> repitiendo con todas las librerías que necesitemos.
 
Imagen 0 en Tutorial Arduino: Uso de sistema OneWire
Ilustración 1 Importación de librerías en IDE Arduino

En este ejemplo vamos a usar las librerías propias del sensor en cuestión, en nuestro caso usaremos las librerías DallasTemperature y OneWire . Para instalar las librerías propias, o de terceros, una vez descargadas existen 2 métodos:
1.    Método normal : Dentro del IDE, nos dirigimos a Sketch->Importar librería->Ad library …. Se nos abrirá una ventana de exploración en la que debemos buscar el archivo rar/zip que hemos descargado. Lo seleccionamos y ya la tendremos instalada.
 
Imagen 1 en Tutorial Arduino: Uso de sistema OneWire
Ilustración 2 Instalación de librerías en IDE Arduino

2.    Método manual : Si el método anterior no funciona, utilizaremos la instalación manual. Para proceder, descomprimiremos el rar/zip descargado y copiamos la carpeta de la librería en la ruta Documentos\Arduino\libraries . Quedando, por ejemplo, de la siguiente manera.
 
Imagen 2 en Tutorial Arduino: Uso de sistema OneWire
Ilustración 3 Ejemplo de carpeta de librería instalada

Una vez instaladas las librerías que vayamos a usar, podremos usar los ejemplos que traen cada una para probar sus accesorios. Es interesante echarles un ojo antes de ponernos a programar como locos, porque de estos ejemplos podemos aprovechar partes de código o ver cómo usa las funciones… y así ahorrarnos mucho trabajo. Para abrir estos ejemplos solo tendremos que dirigirnos dentro del IDE a Archivo->Ejemplos y ahí veremos todas las librerías disponibles y dentro de cada una, sus ejemplos correspondientes.
 
Imagen 3 en Tutorial Arduino: Uso de sistema OneWire
Ilustración 4 Cargar ejemplos

 

Ejemplo: Medición de temperatura con sensor ds18b20

 

Para empezar con este ejemplo detallaremos el material necesario.

•    1 x Arduino UNO R3
•    1 x Protoboard
•    1 x Sensor de Temperatura ds18b20 (versión sumergible)
•    1 x Resistencia de 4,7kΩ
•    Cables para conectar todo

En esta ocasión, es muy importante que prestéis atención al montaje del circuito. No es para nada difícil, pero si no está correcto el sensor dará medidas erróneas o incluso puede estropearse. El esquema es el siguiente:
 

 

Imagen 4 en Tutorial Arduino: Uso de sistema OneWire
Ilustración 5 Montaje para el sensor ds18b20

Como observamos en el circuito, alimentaremos a través del pin DATA, por medio de la resistencia de 4,7kΩ, y los pines VCC y GND van conectados entre sí y a tierra. Aquí en el datasheet del sensor podéis ver cómo va el patillaje, o bien si usáis la versión sumergible, como nosotros, la correspondencia de los 3 cables sería: [Rojo]=VCC, [Azul o Negro] = GND y [Amarillo o Blanco] = DATA.
Una vez conectado todo correctamente, nos dirigiremos al IDE y escribiremos el siguiente código.
 
/******************************/
/*  Medir Temperatura ds18b20 */
/******************************/

/*** Librerías ***/

#include <OneWire.h>                 //Se importan las librerías
#include <DallasTemperature.h>

//** Definiciones **//
 
#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 llama a la librería DallasTemperature

//** Programa **//

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 Centigrados
Serial.println(" Grados Centigrados");
 
delay(1000);                         //Se provoca una parada de 1 segundo antes de la próxima lectura
 
}

(Panama hiteck)

 


En el programa, simplemente comenzaremos importando las librerías, OneWire y DallasTemperature, de la forma que comentábamos más arriba. Continuaremos definiendo el pin que utilizaremos como bus de datos. Para ello usaremos la sentencia #define , la cual nos permite crear un valor constante pero con la ventaja de no consumir la RAM que usaría, al compilar, la creación de una variable. Hay que tener la precaución de escribir correctamente las definiciones por que pueden provocar el lastrado de errores a lo largo de todo el código si no se hace bien. En nuestro caso asignaremos el pin 2 para el bus.
 
Acelera tus desarrollos de software
Formaciones prácticas, avanzadas y actualizadas para que tu equipo domine las herramientas más relevantes para crear aplicaciones móviles en iOS y Android con Swift, Java y Kotlin.
Solicitar más información

Con la línea OneWire ourWire(Pin) , le decimos al sensor a través de que pin se debe comunicar con Arduino y con DallasTemperature sensors(&ourWire) llamaremos a la librería de Dallas para que interprete los datos enviados y recibidos por nuestro bus.
Seguidamente, en nuestra función de setup, iniciaremos la comunicación serial a 9600 bits/seg y con la sentencia sensors.begin() activaremos los sensores que estemos usando.

Nuestro código en bucle, lo que hará será primero preparar al sensor ds18b20 para medir, usando la función sensors.requestTemperatures() y con la línea Serial.print(sensors.getTempCByIndex(0)) tomará la medida y la imprimirá, por el monitor serial y en grados centígrados, en una única sentencia. Finalmente añadiremos la impresión del texto “ Grados Centígrados ” y haremos una pausa de 1 segundo para que el sensor no esté realizando miles de medidas constantemente.
 

 


Imagen 5 en Tutorial Arduino: Uso de sistema OneWire
Ilustración 6 Visualización de la temperatura en el monitor serial

Como habéis podido comprobar, es muy sencillo y práctico utilizar este sistema. Solo hay que familiarizarse con las funciones específicas de la librería de cada sensor para sacarles el máximo provecho. Os recomendamos que leáis que funciones específicas trae cada librería y juguéis un poco con ellas antes de poneros a programar vuestro proyecto, seguro que encontraréis algunas funciones o ejemplos propios que os simplifican el código bastante.
 
Imagen 6 en Tutorial Arduino: Uso de sistema OneWire
Ilustración 7 Montaje para el sensor ds18b20
 

 

 

 

Compartir este post

También te puede interesar

Tutorial Arduino: Introducción
Blog

Tutorial Arduino: Introducción

Te mostramos los primeros pasos de este tutorial de Arduino, donde podrás descubrir el mundo de posibilidades que ofrece este Hardware Libre...

Guillermo Pérez
Tutorial Arduino: Pantalla LCD
Blog

Tutorial Arduino: Pantalla LCD

En este último post del primer tutorial veremos cómo mostrar a través de una pantalla LCD la temperatura medida con el sensor...

Guillermo Pérez
Icono de la tecnología
Curso

Arduino

Intermedio
3 h. y 59 min.

Curso para aprender a programar en Arduino desde cero de manera practica para que puedas crear tu propios...

Varios profesores
4.3