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
DS18b20
16.11.2014, 20:05
Beitrag #1
DS18b20
Hallo

Ich hoffe ich bin hier in der Hardware ecke richtig da ich verschiedene Beispiel Programme versucht habe und es bei allen gleich ist.

versuche 12 Sensoren auszulesen.
Klappt immer nur Sporadisch.
Mal zeigt mir der Serial Monitor 5 Sensoren dann mal 3 mal alle 12.

Es sind jeweils 4 Sensoren mit unterschiedlichen Kabellängen an den Arduino angeschlossen.

Kabellängen zwischen 1m und 1,50m.

Woran kann das liegen das nie alle ausgelesen werden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.11.2014, 21:47
Beitrag #2
RE: DS18b20
Stromversorgung ist über die Pins also gnd vcc und data an Pin 10 und über 4,7k gegen 5v vom arduino.

Beschaltung sieht so aus ( bitte nicht hauen Sitze am handy)

S--
S-- P-------
S--
S--

S--
S-- P------- P----------- Arduino p10
S--

S--
S--
S-- P--------
S--

S-------------------


S= Sensor
P= Platine
---- = Kabel.

4 bzw einmal 3 sensoren gehen über Kabel ca 40cm auf eine Platine.
Von da aus geht es mit ca 120cm Kabel zu ner Platine.
Von da aus mit 10cm Kabel zum arduino.

Musste so machen da die Sensoren auf 4 Ebenen in meinem zuchtregal in die Becken gehen.

Hoffe ist verständlich.

Mfg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.11.2014, 10:26
Beitrag #3
RE: DS18b20
Hab die Beispiele von onewire und der dallas lib durch. Hab auchnen sSketch von fluxx ausprobiert aber das gleiche.
An der verdrahtung liegt es nicht oder?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.11.2014, 10:42
Beitrag #4
RE: DS18b20
Ich füge heute abend einen code ein bin auf der Arbeit. Die Sachen sind am PC zu hause.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.11.2014, 19:58
Beitrag #5
RE: DS18b20
Hi

So die bit hab ich alle durch von 9 - 12
Was mir noch auffällt ist das manchmal. "Found ghost device at 5 but could not detect address."
Wobei die device nummer sich ändert wenn ich den Serial monitor schließe und wieder öffne.

Was mir nicht ganz klar ist was du mit zeit meinst die ich den sensoren geben solle.

Hier mal der sketch aus der dallas lib den ich zum testen verwende.

Code:
#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 10
#define TEMPERATURE_PRECISION 11

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

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

int numberOfDevices; // Number of temperature devices found

DeviceAddress tempDeviceAddress; // We'll use this variable to store a found device address

void setup(void)
{
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");

  // Start up the library
  sensors.begin();
  
  // Grab a count of devices on the wire
  numberOfDevices = sensors.getDeviceCount();
  
  // locate devices on the bus
  Serial.print("Locating devices...");
  
  Serial.print("Found ");
  Serial.print(numberOfDevices, DEC);
  Serial.println(" devices.");

  // report parasite power requirements
  Serial.print("Parasite power is: ");
  if (sensors.isParasitePowerMode()) Serial.println("ON");
  else Serial.println("OFF");
  
  // Loop through each device, print out address
  for(int i=0;i<numberOfDevices; i++)
  {
    // Search the wire for address
    if(sensors.getAddress(tempDeviceAddress, i))
    {
        Serial.print("Found device ");
        Serial.print(i, DEC);
        Serial.print(" with address: ");
        printAddress(tempDeviceAddress);
        Serial.println();
        
        Serial.print("Setting resolution to ");
        Serial.println(TEMPERATURE_PRECISION, DEC);
        
        // set the resolution to TEMPERATURE_PRECISION bit (Each Dallas/Maxim device is capable of several different resolutions)
        sensors.setResolution(tempDeviceAddress, TEMPERATURE_PRECISION);
        
         Serial.print("Resolution actually set to: ");
        Serial.print(sensors.getResolution(tempDeviceAddress), DEC);
        Serial.println();
    }else{
        Serial.print("Found ghost device at ");
        Serial.print(i, DEC);
        Serial.print(" but could not detect address. Check power and cabling");
    }
  }

}

// function to print the temperature for a device
void printTemperature(DeviceAddress deviceAddress)
{
  // method 1 - slower
  //Serial.print("Temp C: ");
  //Serial.print(sensors.getTempC(deviceAddress));
  //Serial.print(" Temp F: ");
  //Serial.print(sensors.getTempF(deviceAddress)); // Makes a second call to getTempC and then converts to Fahrenheit

  // method 2 - faster
  float tempC = sensors.getTempC(deviceAddress);
  Serial.print("Temp C: ");
  Serial.print(tempC);
  Serial.print(" Temp F: ");
  Serial.println(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit
}

void loop(void)
{
  // call sensors.requestTemperatures() to issue a global temperature
  // request to all devices on the bus
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println("DONE");
  
  
  // Loop through each device, print out temperature data
  for(int i=0;i<numberOfDevices; i++)
  {
    // Search the wire for address
    if(sensors.getAddress(tempDeviceAddress, i))
    {
        // Output the device ID
        Serial.print("Temperature for device: ");
        Serial.println(i,DEC);
        
        // It responds almost immediately. Let's print out the data
        printTemperature(tempDeviceAddress); // Use a simple function to print out the data
    }
    //else ghost device! Check your power requirements and cabling
    
  }
}

// function to print a device address
void printAddress(DeviceAddress deviceAddress)
{
  for (uint8_t i = 0; i < 8; i++)
  {
    if (deviceAddress[i] < 16) Serial.print("0");
    Serial.print(deviceAddress[i], HEX);
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.11.2014, 20:43
Beitrag #6
RE: DS18b20
Hi,

ich kann mich auch täuschen, aber in der Regel wird der PIN 10 von Ethernet-Modul verwendet.
Daher lasse ich diesen immer außen vor. (Zumal bei mir immer ein Ethernet-Board aktiv ist)

Versuche es doch mal mit 6,7,8 oder 9

Gruß Sepro
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.11.2014, 20:59
Beitrag #7
RE: DS18b20
Hmm werde ich mal versuchen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.11.2014, 19:26
Beitrag #8
RE: DS18b20
also das bringt keine veränderung. muss ich evtl eine ext. Spannungsversorgung machen weil momentan läuft alles über usb.
11x ds18b20
1x ultraschall
1x lcd
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Probleme mit mehreren DS18B20 Fühlern Uwa 12 331 15.10.2016 15:26
Letzter Beitrag: ardu_arne
  ds18B20 eddykett 11 1.138 01.02.2016 11:34
Letzter Beitrag: hotsystems
  DS18B20 Stefan 1 664 12.09.2015 09:50
Letzter Beitrag: Bitklopfer
  Welchen Wert zeigt ein DS18B20 über 125 Grad? Jetiman 3 826 02.08.2015 11:29
Letzter Beitrag: Jetiman
  Temperatursensor DS18B20 umprogrammiert? DaniDD 2 694 12.06.2015 10:42
Letzter Beitrag: DaniDD
  Temperatursensor DS18B20 funzt nicht Tombir 5 1.689 12.10.2014 20:11
Letzter Beitrag: Tombir

Gehe zu:


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