Go Down

Topic: Ds18b20 no consigo que funcione (Read 636 times) previous topic - next topic

Jossema106

Hola! Estoy intentando conectar este termometro y no lo consigo.

Tengo  conectado negativo, positivo y datos respectivamente.
y el codigo es este:
Code: [Select]
#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into pin 3 on the Arduino
#define ONE_WIRE_BUS 3

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

// Assign the addresses of your 1-Wire temp sensors.
// See the tutorial on how to obtain these addresses:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html

DeviceAddress insideThermometer = { 0x28, 0x94, 0xE2, 0xDF, 0x02, 0x00, 0x00, 0xFE };
DeviceAddress outsideThermometer = { 0x28, 0x6B, 0xDF, 0xDF, 0x02, 0x00, 0x00, 0xC0 };
DeviceAddress dogHouseThermometer = { 0x28, 0x59, 0xBE, 0xDF, 0x02, 0x00, 0x00, 0x9F };

void setup(void)
{
  // start serial port
  Serial.begin(9600);
  // Start up the library
  sensors.begin();
  // set the resolution to 10 bit (good enough?)
  sensors.setResolution(insideThermometer, 10);
  sensors.setResolution(outsideThermometer, 10);
  sensors.setResolution(dogHouseThermometer, 10);
}

void printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00) {
    Serial.print("Error getting temperature");
  } else {
    Serial.print("C: ");
    Serial.print(tempC);
    Serial.print(" F: ");
    Serial.print(DallasTemperature::toFahrenheit(tempC));
  }
}

void loop(void)
{
  delay(2000);
  Serial.print("Getting temperatures...\n\r");
  sensors.requestTemperatures();
 
  Serial.print("Inside temperature is: ");
  printTemperature(insideThermometer);
  Serial.print("\n\r");
  Serial.print("Outside temperature is: ");
  printTemperature(outsideThermometer);
  Serial.print("\n\r");
  Serial.print("Dog House temperature is: ");
  printTemperature(dogHouseThermometer);
  Serial.print("\n\r\n\r");
}
Proyecto:
http://duinoblog.blogspot.com.es/

curro92

Hola,
tu chip tendrá otro address (esos tres están como ejemplo). Esa forma de leer la temperatura es para cuando sabes la dirección o direcciones, que no es tu caso.  Mira el ejemplo de la librería.

chinchu

Tienes que poner una resistencia pull-up. Es decir, conectado como lo tienes (gnd a gnd, 5 voltios a 5 voltios, y el pin de datos al pin digital de arduino que estes usando), pones una resistencia de 4,7 kohm desde el pin de alimentacion (5 voltios) al pin donde esta conectado el cable de datos, en tu caso, segun veo en el código, el pin digital 3. La pones tal cual, y verás como funciona.

Go Up