Per Stenebo
2014-07-12 14:07:26
2022-10-22 12:21:27
Temp sensor WP (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

Installation
| Adafruit tutorial | elinux gpio |

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 ...