Páginas

lunes, 14 de enero de 2013

Sensor de temperatura DS18S20 Arduino



 

  

 

 

 

Sensor de temperatura DS18S20



Para medir la temperatura con un Arduino una de las mejores opciones es utilizar un sensor Dallas DS18S20. Lo más interesante de este sensor en concreto es que utilizando una única entrada Digital del Arduino podemos conectar varios sensores. 



El sensor viene con 3 pins, hay varias formas de conectar dicho sensor pero una de las más sencillas es conectar GND y Vdd (o sea las 2 laterales) al pin de tierra del Arduino y la central DQ o de Datos a una entrada digital del Arduino y al pin de 5V poniendo entre medias una resistencia de 4,7K 




Este tipo de conexión es mediante alimentación parásita. Es la que yo utilizo personalmente, ya que simplifica bastante a la hora de luego integrarlo en un circuito impreso complejo.

La forma que se recomienda por el fabricante la conexión es el siguiente:




La única diferencia es que hay que alimentar a sensor con 5V por patilla Vdd, a nivel de programación no hay ninguna diferencia.

Para poder utilizar el Dallas DS18S20 necesitamos 2 librerías muy interesantes las OneWire y DallasTemperature. Se pueden descargar de aquí:



DallasDescargar (URL Alternativa Descargar)




OneWire: Descargar (URL Alternativa Descargar)

  

Las descomprimimos en el directorio del IDE -> libraries.



Una vez conectado podemos utilizar este código para ver su buen funcionamiento.

Ejemplo de Código:


   // Sensor temperatura DS18S20



   // Conectamos el sensor de la siguiente forma:

   // GND -> GND

   // VDD -> GND

   // DQ  -> D2

   // Por ejemplo conectamos a la entrada Digital 2

   // http://arubia45.blogspot.com.es/



   // Librerias necesarias

   #include <OneWire.h>

   #include <DallasTemperature.h>



   // Direcciones de los sensores de temperatura

   DeviceAddress Temperatura1;


   // Temperatura

   int DS18S20_Pin = 2; //Pin de entrada donde conectamos el   
   sensor

   OneWire ds(DS18S20_Pin); 

   DallasTemperature sensors(&ds);

   float TemperaturaA;





   void setup(){

     Serial.begin(9600);

     // Buscamos el sensor,

     if (sensors.getDeviceCount() < 1) Serial.println ( "Falta 
     sensor de temperatura");     

     if (!sensors.getAddress(Temperatura1, 0)) Serial.println ( 
     "Falta el sensor de temperatura1");

   }



   void loop(){

     TemperaturaA = sensors.getTempC( Temperatura1 );

     Serial.println (TemperaturaA);

     delay (1000);

   }








Bajar ejemplo

 
Si queremos conectar varios sensores podemos hacerlo de la misma forma y utilizando los mismos pins donde habíamos conectado el anterior.


Añadimos los dispositivos que queramos utilizar,  descarga el ejemplo con varios sensores.



Estos sensores se pueden comprar por menos de 2€, por ejemplo en eBay: Comprar eBay