Schlagwort DallasTemperature.h

DS18s20 parallel messen

Der DS18s20 bietet dank der „1-Wire“ Technologie die Möglichkeit mehrer Sensoren an einem PIN abzufragen. Dazu werden alle DS18s20 einfach parallel geschalten. Unterscheiden kann der Arduino die einzelneren Sensoren dank der HEX Adressen. 

Wie kann man die Adressen auslesen?

Der Sketch zum auslesen der Daten ist auch sehr übersichtlich.

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

float wert_sensor_1;
float wert_sensor_2;
float wert_sensor_3;
long vorhermillis = millis();

#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

/*
Sensoradressen eingeben
*/

DeviceAddress Adresse_Sensor1 = { 0x28, 0xFF, 0xFE, 0x3E, 0xA1, 0x16, 0x04, 0x6B }; 
DeviceAddress Adresse_Sensor2 = { 0x28, 0xFF, 0x3B, 0x91, 0xA1, 0x16, 0x05, 0xF6 }; 
DeviceAddress Adresse_Sensor3 = { 0x28, 0xFF, 0x7F, 0x77, 0xA1, 0x16, 0x05, 0x40 }; 


void setup () 
{        
    Serial.begin(9600);
    sensors.begin();
             
    sensors.setResolution(Adresse_Sensor1, 12); // set the resolution
    sensors.setResolution(Adresse_Sensor2, 12); // set the resolution
    sensors.setResolution(Adresse_Sensor3, 12); // set the resolution
}

void loop () 
{  
 if (millis() - vorhermillis > 1000)
 {  
   vorhermillis = millis();
   sensors.requestTemperatures();
   wert_sensor_1 = sensors.getTempC(Adresse_Sensor1);
   wert_sensor_2 = sensors.getTempC(Adresse_Sensor2);
   wert_sensor_3 = sensors.getTempC(Adresse_Sensor3);
   Serial.print("Sensor 1 : ");
   Serial.println(wert_sensor_1);
   Serial.print("Sensor 2 : ");
   Serial.println(wert_sensor_2);
   Serial.print("Sensor 3 : ");
   Serial.println(wert_sensor_3);   
 }
}