Författare:
Per Stenebo
Skapad:
2014-07-12 14:07:26
Ändrad:
2022-10-22 12:21:27
sv

Temp sensor WP (DS18B20)

DS18B20| Lawicel |

Beskrivning: This sealed digital temperature probe lets you precisely measure temperatures in wet environments with a simple 1-Wire interface. The DS18B20 provides 9 to 12-bit (configurable) temperature readings over a 1-Wire interface, so that only one wire (and ground) needs to be connected from a central microprocessor.

Dimensions: Probe is 7mm in diameter and roughly 26mm long. Overall length (including wire) is about 1,8m.

Features:

  • 3.0-5.5V input voltage
  • Waterproof
  • -55°C to+125°C temperature range
  • ±0.5°C accuracy from -10°C to +85°C
  • 1 Wire interface (Dallas 1-wire)
  • Cable color alternatives:
    Red = Vcc, White = DQ & Black = GND
    Red = Vcc, Yellow = DQ & Green = GND
    Red = Vcc, Yellow = DQ & Black = GND
    Red = Vcc, Blue = DQ & Black = GND

DS18B20

 

Installation

| Adafruit tutorial | elinux gpio |

gpio_ds18b20

Anslut data till GPIO 4 (pin P1-07) vilket är standardpinne för 1-wire-bus på raspin.

4,7 K motstånd tillåter längre kabellängd än ett 10 K motstånd.

På Raspberry Pi med Raspbian och kärna 3.18 (och senare) måste följande text läggas in i /boot/config.txt

dtoverlay=w1-gpio

Om annan pinne än standard ska användas behöver texten i /boot/config.txt vara:

dtoverlay=w1-gpio,gpiopin=24
bcm2708.w1_gpio_pin=24

Aktivera ändringen med en omstart (reboot). Jag har testat GPIO 4, 18 och 24.

Tidigare versioner: dtoverlay=w1-gpio-pullup,gpiopin=4

Under uppstarten syns följande rader:

[    4.899571] Driver for 1-wire Dallas network protocol.
[    4.918653] w1-gpio onewire@0: gpio pin 4, external pullup pin -1, parasitic power 0
[    4.918706] w1_add_master_device: set_pullup requires write_byte or touch_bit, disabling
[    7.611662] w1_master_driver w1_bus_master1: w1_search: max_slave_count 64 reached, will continue next search.

Efter uppstarten kan man kolla dessa meddelanden med:

dmesg | grep '1-wire\|w1'

Ladda kärnmoduler (med vissa versioner behöver modprobe köras som root med sudo):

modprobe w1-gpio && modprobe w1-therm

Kolla om någon givare dykt upp med:

cd  /sys/bus/w1/devices && ls

cd 28-xxxx (ändra 28-xxxx till den ROM-kod som listats)

cat w1_slave

a3 01 4b 46 7f ff 0d 10 ce : crc=14 YES
a3 01 4b 46 7f ff 0d 10 ce t=26187

YES = Mätningen/kommunikationen lyckades
26187 = 26.187 °C

Skapa filen /opt/1wire/DS18B20.py, kopiera kod från Adafruit, exekvera med:

sudo python /opt/1wire/DS18B20.py 
(26.0, 78.8)

 

Problem

Inga mappar som startar på 28- finns under /sys/bus/w1/devices

dmesg | grep '1-wire\|w1' ger rader i stil med:

w1_master_driver w1_bus_master1: Family 0 for 00.200000000000.23 is not registered.

Kolla att givare är ansluten på rätt pinnar (!). Kolla kabelanslutningar. Kolla att modulerna är laddade med lsmod

...
w1_therm                4319  0 
w1_gpio                 4295  0 
wire                   31227  2 w1_gpio,w1_therm
...

 

Kommentarer till sidan DS18B20 Temp