Hallo,
ich habe mir mal digital Tempsensoren besorgt, leider krieg ich das irgendwie nicht hin.
Habe wie in diesem Dallas Temperature Control Library - MilesBurton.com aufgeführt 2 sensoren verbunden:
- mittleren PIN an d10 und mit nem 4,7kOHm Widerstand an 5v
- linken pin an gnd
- rechten leer (also per one wire)
=> passt eigentlich und ich erhalte auch etwas über die serial ausgabe,allerdings keine temperatur:
o more addresseR=28 80 65 9C 3 0 0 20 Device is a DS18B20 family device.
P=1 B9 1 4B 46 7F FF 7 10 D1 CRC=D1
R=28 18 55 9C 3 0 0 B4 Device is a DS18B20 family device.
P=1 C1 1 4B 46 7F FF F 10 38 CRC=38
No more addresses.
R=28 80 65 9C 3 0 0 20 Device is a DS18B20 family device.
P=1 B9 1 4B 46 7F FF 7 10 D1 CRC=D1
R=28 18 55 9C 3 0 0 B4 Device is a DS18B20 family device.
P=1 FF FF FF FF FF FF FF FF FF CRC=C9
No more addresses.
R=28 80 65 9C 3 0 0 20 Device is a DS18B20 family device.
P=1 0 0 0 0 0 0 0 0 0 CRC=0
No more addresses.
No more addresses.
R=28 0 0 0 0 0 0 0 CRC is not valid!
No more addresses.
R=28 80 65 9C 3 0 0 0 CRC is not valid!
R=28 80 65 9C 3 0 0 80 CRC is not valid!
R=28 80 65 9C 3 0 0 40 CRC is not valid!
R=28 80 65 9C 3 0 0 C0 CRC is not valid!
R=28 80 65 9C 3 0 0 20 Device is a DS18B20 family device.
P=1 0 0 0 0 0 0 0 0 0 CRC=0
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
No more addresses.
Diesen Code nutze ich:
#include <OneWire.h>
// DS18S20 Temperature chip i/o
OneWire ds(10); // on pin 10
void setup(void) {
// initialize inputs/outputs
// start serial port
Serial.begin(9600);
}
void loop(void) {
byte i;
byte present = 0;
byte data[12];
byte addr[8];
if ( !ds.search(addr)) {
Serial.print("No more addresses.\n");
ds.reset_search();
return;
}
Serial.print("R=");
for( i = 0; i < 8; i++) {
Serial.print(addr[i], HEX);
Serial.print(" ");
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.print("CRC is not valid!\n");
return;
}
if ( addr[0] == 0x10) {
Serial.print("Device is a DS18S20 family device.\n");
}
else if ( addr[0] == 0x28) {
Serial.print("Device is a DS18B20 family device.\n");
}
else {
Serial.print("Device family is not recognized: 0x");
Serial.println(addr[0],HEX);
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("P=");
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();
}
Wo ich mir unsicher bin, kann ich die Library überhaupt nutzen oder ist die nur für den ds18S20?
Was ist genau der Unterschied?
Gruß
Thorsten