DallasTemperature Library - sensor failure alarm?


i need read out 7 ds18b20 temperature sensors , working pretty well. if unplug 1 or more of these sensors output (serial monitor) still ok, there still value written , looks last value before being unplugged. if plug sensor in measurement working again.
somebody idea how can implement error message if 1 of sensors not behaving should (breakdown, wire break, etc..)?
thx


i'm using 1 of (modified) examples dallastemperature library..

code: [select]
#include <onewire.h>
#include <dallastemperature.h>

// data wire plugged port 3 on arduino
#define one_wire_bus 3

// setup onewire instance communicate onewire devices (not maxim/dallas temperature ics)
onewire onewire(one_wire_bus);

// pass our onewire reference dallas temperature.
dallastemperature sensors(&onewire);

void setup(void)
{
 // start serial port
 serial.begin(9600);

 // start library
 sensors.begin();
}

void loop(void)
{
 requesttemp();// call sensors.requesttemp() issue temperatures
 delay(10);
 
 
}

void requesttemp(){
 
 sensors.requesttemperatures(); // send command temperatures
 for (int i=0 ;i<=6; i++){
 serial.print("sensor : ");
 serial.println(i);
 serial.println(sensors.gettempcbyindex(i));
 delay(150);
 }
}  

rather use device index, better off using device address each sensor. know you're explicitly addressing specific physical sensor rather whatever device happens @ index in list of devices present.

code: [select]

void discoversensors()
{
  byte addr[8];
 
  // 0 of addresses
  for(int = 0; < max_sensors; i++)
  {
    memset(sensoraddresses[i], 0, sizeof(deviceaddress));
  }
  sensorcount = 0;
 
  while((onewire.search(addr)) && (sensorcount < max_sensors))
  {
    if ( onewire::crc8(addr, 7) != addr[7])
    {
        printf("crc not valid!\n");
        return;
    }
    else
    {
      memcpy(sensoraddresses[sensorcount], addr, sizeof(deviceaddress));
      printf("discovered sensor @ ");
      printdeviceaddress(sensoraddresses[sensorcount]);
      printf("\n");
      sensorcount ++;
    }
  }
  onewire.reset_search();
}

void configuresensors()
{
  for(int = 0; < sensorcount; i++)
  {
    dallas.setresolution(sensoraddresses[i], 12); // select maximum supported resolution
  }
}

void handlesensors()
{
  dallas.requesttemperatures();

  for(int = 0; < sensorcount; i++)
  {
    float tempc = dallas.gettempc(sensoraddresses[i]);
   
    if((tempc > 0) && (tempc < 85.0))
    {
      // handle temperature value
    }
    else
    {
      // handle bad temperature value
    }
  }
}


Arduino Forum > Using Arduino > Programming Questions > DallasTemperature Library - sensor failure alarm?


arduino

Comments

Popular posts from this blog

Thread: PKI Client 5.00 install (for eToken Pro)

ATmega2560-Arduino Pin Mapping

Crossfader Arduino Tutorial