INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Temperatursensor DS18B20 funzt nicht
07.10.2014, 21:55
Beitrag #1
Temperatursensor DS18B20 funzt nicht
Hallo,
bin relativ neu im Arduino-Programmieren.
Die 2 Sensoren habe ich mit einem 4,7kOhm Widerstand an Pin2 angeschlossen.

Habe folgenden Code benutzt:

Code:
#include <OneWire.h>

// OneWire DS18S20, DS18B20, DS1822 Temperature Example
//
// http://www.pjrc.com/teensy/td_libs_OneWire.html
//
// The DallasTemperature library can do all this work for you!
// http://milesburton.com/Dallas_Temperature_Control_Library

OneWire  ds(10);  // on pin 10

void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius, fahrenheit;
  
  if ( !ds.search(addr)) {
    Serial.println("No more addresses.");
    Serial.println();
    ds.reset_search();
    delay(250);
    return;
  }
  
  Serial.print("ROM =");
  for( i = 0; i < 8; i++) {
    Serial.write(' ');
    Serial.print(addr[i], HEX);
  }

  if (OneWire::crc8(addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
      return;
  }
  Serial.println();

  // the first ROM byte indicates which chip
  switch (addr[0]) {
    case 0x10:
      Serial.println("  Chip = DS18S20");  // or old DS1820
      type_s = 1;
      break;
    case 0x28:
      Serial.println("  Chip = DS18B20");
      type_s = 0;
      break;
    case 0x22:
      Serial.println("  Chip = DS1822");
      type_s = 0;
      break;
    default:
      Serial.println("Device is not a DS18x20 family device.");
      return;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);         // 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("  Data = ");
  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();

  // convert the data to actual temperature

  unsigned int raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // count remain gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw << 3;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms
    // default is 12 bit resolution, 750 ms conversion time
  }
  celsius = (float)raw / 16.0;
  fahrenheit = celsius * 1.8 + 32.0;
  Serial.print("  Temperature = ");
  Serial.print(celsius);
  Serial.print(" Celsius, ");
  Serial.print(fahrenheit);
  Serial.println(" Fahrenheit");
}

Es kommt aber nur die Fehlermeldung "No more addresses."
Ich habe schon mehrere PINs getestet, aber immer das gleiche Ergebnis.
Dabei verstehe ich die PIN-Bezeichnung nicht wirklich. Im Sketch wird Pin10 definiert, aus der Doku zu dem Sketch sehe ich, dass damit wohl der Pin4 am Arduino Duemilanove gemeint sein muss.
Oder sehe ich das falsch?

Übrigens: Ich habe die Sensoren mit meinem RasPi getestet, sie funktionieren (zumindest mit 3,3V).

VG Tom
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.10.2014, 08:24
Beitrag #2
RE: Temperatursensor DS18B20 funzt nicht
Hi,
lass' mal den Widerstand und den zweiten Sensor weg und schließe alle drei Kontakte vom Sensor an, also Vcc an +5V, GND an GND und Data an Pin 10.
Ja, mit diesem Sketch ist Pin 10 sicher richtig.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.10.2014, 17:10
Beitrag #3
RE: Temperatursensor DS18B20 funzt nicht
Hi,
der Widerstand muss rein.
Ggf. hilft dir dieser Artikel weiter ...

http://fluuux.de/2012/09/arduino-mysql-t...-auslesen/

Gruß Sepro
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.10.2014, 17:17
Beitrag #4
RE: Temperatursensor DS18B20 funzt nicht
Hi,
oh, ja, sorry.
...aber der Begriff "Vorwiderstand" is irreführend. Es ist ja eher ein Pullup für den Data-Pin. D.h. der Widerstand gehört zwischen +5V und Pin 10. (In dem Fall hier.)
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.10.2014, 20:54
Beitrag #5
RE: Temperatursensor DS18B20 funzt nicht
Hallo, danke schon mal für die vielen Rückmeldungen.
Heute ist es mir schon etwas spät und ich habe heute nicht mehr die Energie dafür, ich werde morgen mal die Vorschläge checken.
Wobei ich nicht glaube, dass es an dem Pullup-Widerstand liegt, den diese Schaltung hat auch bei meinem RasPi funktioniert.
Grüße
Tom
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.10.2014, 20:11
Beitrag #6
RE: Temperatursensor DS18B20 funzt nicht
(08.10.2014 17:10)sepro schrieb:  Hi,
der Widerstand muss rein.
Ggf. hilft dir dieser Artikel weiter ...

http://fluuux.de/2012/09/arduino-mysql-t...-auslesen/

Gruß Sepro

Hallo Sepro,
danke für die Hilfe, dein Link hat die Lösung gebracht.
Bei den von mir verwendeten Vorlagen hat der Sketch nicht zu den Abbildungen gepasst, d.h. ich habe den falschen PIN angesprochen.
Hatte ich ja schon vermutet.
Nun den Sketch auf Pin 2 geändert und schon läufts.
IdeaSmile

Gruß
Tombir
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  USB-Gerät wird nicht erkannt kpc 1 58 06.12.2016 09:22
Letzter Beitrag: hotsystems
  Bluetooth-Steuerung mit elegoo uno funktioniert nicht Matthias_Arduino 0 154 01.11.2016 19:47
Letzter Beitrag: Matthias_Arduino
  Probleme mit mehreren DS18B20 Fühlern Uwa 12 332 15.10.2016 15:26
Letzter Beitrag: ardu_arne
  Pin 5 an Pro Micro funktioniert nicht scritch 1 170 07.09.2016 13:54
Letzter Beitrag: ardu_arne
  Nema 17 Schrittmotor läuft an a4988 nicht fagus 9 585 04.08.2016 20:12
Letzter Beitrag: fagus
  LCD 1602 mit HD44780 TWI Controller funktioinert nicht mehr emduino 2 230 26.07.2016 20:42
Letzter Beitrag: hotsystems
  Uno gehen zwei digital Pins nicht edlosijagen 15 595 07.07.2016 19:22
Letzter Beitrag: Bitklopfer
  IFLZ44N schaltet nicht korrekt? torsten_156 22 1.019 25.04.2016 13:53
Letzter Beitrag: Bitklopfer
  HC-06 Bluetooth verbindung geht nicht BennIY 0 658 21.03.2016 20:32
Letzter Beitrag: BennIY
  Pro Micro bootet nicht richtig. linuxpaul 3 623 02.03.2016 18:45
Letzter Beitrag: linuxpaul

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste