Pages: [1]   Go Down
Author Topic: DS18B20+ issue  (Read 1037 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 84
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,

UPDATE: issue solved by using another program with DallasTemparature/Simple ...

I am new to Arduino and thus I was trying the basics... I succeeded in reading a RTC clock, but I am desperately failing in reading a temperature from my ds18b20+. So I am using the code I found:
Code:
#include <OneWire.h>

/* DS18S20 Temperature chip i/o */

OneWire  ds(10);  // on pin 10

void setup(void) {
  Serial.begin(9600);
  //delay(1000);
}

void loop(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];
  
  if ( !ds.search(addr)) {
    Serial.print("No more addresses.\n");
    ds.reset_search();
    delay(750);
    return;
  }
  
  Serial.print("R=");
  for( i = 0; i < 8; i++) {
    Serial.print(addr[i], HEX);
    Serial.print(" ");
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.print("CRC is not valid!\n");
      return;
  }
  
  if ( addr[0] != 0x10) {
      Serial.print("Device is not a DS18S20 family device.\n");
      return;
  }

  // The DallasTemperature library can do all this work for you!

  ds.reset();
  ds.select(addr);
  ds.write(0x44);         // start conversion, with parasite power on at the end
  
  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.
  
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad

  Serial.print("P=");
  Serial.print(present,HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");
  Serial.print( OneWire::crc8( data, 8), HEX);
  Serial.println();
}


But I always get the message:
"No more addresses"

Which makes me think that I either made a mistake while wiring ... or that my sensor is dead.
I replaced the 0x10 by 0x28 since I have a DS18B20 and not a S...
I a using this wiring:
Gnd -> Gnd
Data->4k7Ohm->5V
Data->pin 10 (where it is written 10 on the arduino board)
V+ -> +5V
If this is correct, how can I check if my sensor is dead or not with a multi-meter?

Thanks
« Last Edit: February 10, 2010, 11:15:31 pm by strus_fr » Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 83
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

The connections sound right.

When you say that you get the "no more addresses" message, are you saying that's ALL that you get from the program? I ask because the program will print that message after it runs correctly with a working sensor - the address of the sensor appears first, and then the "no more addresses" message. Are you getting a string of hex numbers first, and then the message, or just the message?

Do you have the DS1820 plugged in the correct way? When you're facing the flat surface of the device, the ground pin is on your left, data in the middle, and Vcc on the right. If it's plugged in backwards, I think you might fry it - I've had the smell of burning DS1820 in the air from doing that, and I believe I fried that sensor.
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 84
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,
As I said in my previous post, the issue is solved. The sensor is working fine now. I am not sure waht was wrong before...
Thanks for the reply.
Logged

Pages: [1]   Go Up
Jump to: