Volgorde meerdere DS18B20

Arduino specifieke Software
Gebruikers-avatar
Berichten: 43
Geregistreerd: 09 Jan 2015, 15:09

Volgorde meerdere DS18B20

Berichtdoor hv0805 » 12 Okt 2016, 14:33

Hallo,

Kan iemand mij zeggen in welke volgorde meerdere temp sensors DS18B20 (Onewire) uitgelezen worden.

Dit krijg ik als resultaat, ongeacht op welke locatie de sensors staan.
Maw. Als ik nu sensor 1 verwissel met sensor 5 en nadien alles terug opstart (hetzij via een reset hetzij via opnieuw laden van de code) worden de sensors terug in dezelfde volgorde uitgelezen.


Op het scherm: MAC adres en temp
1 sensor (bovenste) staat buiten en de reset binnen naast elkaar.

*************
Dallas Temperature IC Control Library Demo
Requesting temperatures...DONE
Device Address: 28FFB8A51515039F : 11.50
Device Address: 28FF6407511503E1 : 21.50
Device Address: 28FFF1BB501502F2 : 21.50
Device Address: 28FFD906520400E3 : 21.50
Device Address: 28FFA71A51150328 : 21.50
*************

(Code is gewoon copy en paste van stukken uit verschillende voorbeelden, dit gewoon om de werking van DS18B20 te leren kennen)

cpp code
‭‬
#include <OneWire.h>
#include <DallasTemperature.h>

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

// 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);

DeviceAddress DA[5];

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

// Start up the library
sensors.begin();

}

void loop(void)
{
delay(5000);
// 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");

for (int i=0;i <5;i++)
{
sensors.getAddress(DA[i], i);
Serial.print("Device Address: ");
printAddress(DA[i]);
Serial.print(" : ");
Serial.println(sensors.getTempCByIndex(i));
}

}

// function to print a device address
void printAddress(DeviceAddress deviceAddress)
{
for (uint8_t i = 0; i < 8; i++)
{
// zero pad the address if necessary
if (deviceAddress[i] < 16) Serial.print("0");
Serial.print(deviceAddress[i], HEX);
}
}

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Volgorde meerdere DS18B20

Berichtdoor nicoverduin » 12 Okt 2016, 17:53

De lib zoekt alle adressen op. Dat staat in de library. Dus is de volgorde altijd hetzelfde ongeacht te volgorde van aansluiten. zie verder : http://forum.arduino.cc/index.php?topic=6340.0
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Volgorde meerdere DS18B20

Berichtdoor Koepel » 12 Okt 2016, 18:41

Dit gaat over het search protocol : https://www.maximintegrated.com/en/app-notes/index.mvp/id/187.
Maar volgens mij betekent dat niet dat de DeviceAdresses in oplopende volgorde gevonden wordt.
De volgorde is wel steeds hetzelfde.

De DallasTemperature library kan met een index werken (...ByIndex) of met het DeviceAddress.

Als je ByIndex doet, en je vervangt een sensor, dan kan de nieuwe sensor overal er tussen terecht komen en de andere kunnen opschuiven in de lijst.
Als je met DeviceAddress doet, dan moet je dat steeds in de sketch zetten voor een nieuwe sensor, maar dan weet je wel welke sensor je aanspreekt.

Gebruikers-avatar
Berichten: 43
Geregistreerd: 09 Jan 2015, 15:09

Re: Volgorde meerdere DS18B20

Berichtdoor hv0805 » 13 Okt 2016, 10:02

Dank u allebei voor de info,

Ik ga gebruik maken van "deviceaddress", op die manier ben ik zeker dat ik de juiste tempIC uitlees.

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Volgorde meerdere DS18B20

Berichtdoor shooter » 13 Okt 2016, 17:57

Op een bus waar je parallel draadjes aanzet is er geen volgorde, dus je moet inderdaad met het adres werken.
bij een serieel waar ze allemaal achter elkaar hangen is dat natuurlijk anders, nou ja vaak.
paul deelen
shooter@home.nl

Berichten: 11
Geregistreerd: 24 Mei 2016, 11:59

Re: Volgorde meerdere DS18B20

Berichtdoor Looneyt » 26 Okt 2016, 12:38

Dit heb ik gebruikt om de individuele DS18B20's te benaderen:

http://hacks.ayars.org/2012_06_01_archive.html

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Bing [Bot], Google [Bot], GordonOccax en 99 gasten