Question
New raspbian kernel does not detect DS18B20 sensor
Answer
DS18B20 can be detected with the following configuration:
Raspbian stretch 2019apr08
Python 3.5.3
W1ThermSensor V0.3.0
Program and sample output
# DS18B20_test28 tlfong01 2019may10hkt2137 ***
# Raspbian stretch 2019apr08, Python 3.5.3
# W1ThermSensor V0.3.0
# dtoverlay=w1-gpio,gpiopin=14
from w1thermsensor import W1ThermSensor
def findSensor():
for sensor in W1ThermSensor.get_available_sensors():
print(' Sensor ID =', sensor.id)
return
def getTemperature():
sensor = W1ThermSensor()
temperature_in_celsius = sensor.get_temperature()
print(' Temperature in Celsius =', temperature_in_celsius)
return
# *** Main Test ***
print('Begin Testing Ds18B20, ...')
findSensor()
getTemperature()
print('End Testing DS18B20, ...')
'''
Sample Output - tlfong01 2019may10hkt2150
>>>
RESTART: /home/pi/Python Programs/Python_Programs/test1198/ds18b20_test27_2019may1001.py
Begin Testing Ds18B20, ...
Sensor ID = 021312ca3baa
Temperature in Celsius = 25.562
End Testing DS18B20, ...
>>>
'''
# *** End of program ***
References
DS18B20 datasheet
AdaFruit DS18B20 Temperature Sensor - US$9.95
Description
This is a pre-wired and waterproofed version of the DS18B20 sensor.
Handy for when you need to measure something far away, or in wet
conditions. While the sensor is good up to 125°C the cable is jacketed
in PVC so we suggest keeping it under 100°C. Because they are digital,
you don't get any signal degradation even over long distances!
These 1-wire digital temperature sensors are fairly precise (±0.5°C
over much of the range) and can give up to 12 bits of precision from
the onboard digital-to-analog converter. They work great with any
microcontroller using a single digital pin, and you can even connect
multiple ones to the same pin, each one has a unique 64-bit ID burned
in at the factory to differentiate them. Usable with 3.0-5.0V systems.
The only downside is they use the Dallas 1-Wire protocol, which is
somewhat complex, and requires a bunch of code to parse out the
communication. If you want something really simple, and you have an
analog input pin, the TMP36 is trivial to get going.
We toss in a 4.7k resistor, which is required as a pullup from the
DATA to VCC line when using the sensor. We don't have a detailed
tutorial up yet but you can get started by using the Dallas
Temperature Control Arduino library which requires also the OneWire
Library.
Technical Details
Not for use in salt water or other corrosive environments.
Cable specs:
Stainless steel tube 6mm diameter by 30mm long
Cable is 36" long / 91cm, 4mm diameter
Contains DS18B20 temperature sensor
If your sensor has four wires - Red connects to 3-5V, Black connects
to ground and White is data. The copper wire is soldered to the wire
shielding
If your sensor has three wires - Red connects to 3-5V, Blue/Black
connects to ground and Yellow/White is data
DS18B20 Technical specs:
Usable temperature range: -55 to 125°C (-67°F to +257°F)
9 to 12 bit selectable resolution
Uses 1-Wire interface- requires only one digital pin for communication
Unique 64 bit ID burned into chip
Multiple sensors can share one pin
±0.5°C Accuracy from -10°C to +85°C
Temperature-limit alarm system
Query time is less than 750ms
Usable with 3.0V to 5.5V power/data