Benötige Hilfe 18B20

Hallo,
ich habe ein großes Problem. Habe mehrere 18B20 auf einem Steckboard angeordnet, mittleren Pin über einen 4,7k Widerstand an +5V und am Arduino Port und die beiden äußeren auf Masse. Das hat mal so gelaufen, aber jetzt nicht mehr. Jeder einzelne 18B20 funktioniert, aber sobald ich den zweiten dazu stecke kommt entweder 85 Grad oder aber keiner wird mehr gefunden. Ich weiß mir langsam keinen Rat mehr
Gruß

noch ein Zusatz, der Befehl zum auslesen ist "sensors.requestTemperatures();"
kann es sein das es daran liegt, wenn ich den Reset Knopf auf dem Board drückt passiert es
schon mal, das einmal die Temperatur von zwei Sensoren korrekt angezeigt wird, dann aber wieder
85.00

Hallo,

Wie genau sprichst du denn die Sensoren an - am Besten postest du mal ein Stück Code - werden beide Sensoren mit dem Beispiel Sketch aus der DallasTemperature Library gefunden?

evtl. kannst du die Sensoren auch mit ihrer Adresse ansprechen (sensors.getTempC(sensor_addr_kt))

Viele Grüsse, Michi

Hallo Michi,
so sieht es aus, das ist eigentlich schon alles,

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 22
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int i, sensoranzahl;
sensors.begin();
sensoranzahl=sensors.getDeviceCount(), DEC;
void loop(void){
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
for(i=0; i<sensoranzahl; i++){
Serial.print("Temperature for Device ");
Serial.print(i+1);Serial.print(" :");
Serial.println(sensors.getTempCByIndex(i));
}}

Hallo maverick1509,

hab das mal ausprobiert. Dein Sketch geht so ohne weiteres nicht. Was hast Du denn für ein Bord ?
Ich habe das mal mit dem UNO ausprobiert und exte mal den + Anschluss für den DS18b20 auf Masse gelegt. Bei mir funktioniert der nachfolgende Sketch (im Prinzip der von Dir) erstmal mit bis zu 3 Sensoren problemlos. Hat denn Dein Bord 22 PIN ? (siehe Zeile 3 )

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int i, sensoranzahl;
void setup()
{
Serial.begin(9600);
  sensors.begin();
sensoranzahl=sensors.getDeviceCount(), DEC; 
}
void loop(void){
Serial.println("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
for(i=0; i<sensoranzahl; i++){
Serial.print("Temperature for Device ");
Serial.print(i+1);Serial.print(" :");
Serial.println(sensors.getTempCByIndex(i)); 
}}

Gruss Kalli

Hallo Kalli,
das mit Port 22 ist weil ichs auf einem Mega getestet habe.
Aber auch auf einem Uno an Pin 12 geht es leider nicht und ich möchte mindestens
6 18B20 auslesen können.
Hab deinen Sketch jetzt mal getestet, geht auch nicht weder an Port 22 noch an 8.
Der erste Sensor geht, stecke ich einen zweiten dazu und resete, kommen max einmal die zwei Temperaturen,
dann wieder nur die Temperatur vom ersten und die des zweiten ist 85.00 oder umgekehrt.
Bin mittlerweile völlig ratlos, vor allem weil ich ja auch schon das Mega und das Uno getestet habe.

gruß
Bernward

Hallo Bernward,
dann musste bei Dir weitersuchen. Bei mir geht es wirklich ohne Problem. Auf einem anderen Bord schliesse ich bis zu 7 Sensoren an, auch ohne Probleme. Benutze deshalb Port 2, weil es als einziges übrigbleibt, wenn man mSD-Shield mit Anzeige verwendet. Habe ansonsten keine besondere Umgebung.
(0022)

Du wirst es finden

Gruss Kalli