Utilisation du capteur DS18B20 pour la mesure de température

Prérequis:

Avoir un Raspberry Pi avec Raspbian installé.

Un capteur DS18B20 de chez Dallas.

Une résistance de 4,7KΩ.


Raccordement:


Configuration:


Taper les commandes:


sudo nano /boot/config.txt


Et ajouter dans le fichier le texte suivant:


dtoverlay=w1-gpio




Faire un crtl+o et crtl+x.


Puis un reboot.


sudo reboot


Test:


Taper les commandes suivantes:


sudo modprobe w1-gpio

sudo modprobe w1-therm

cd /sys/bus/w1/devices

ls


Aller dans le répertoire qui commence par 28-xxxx.



Dans mon cas 28-000006a34cd5.


cd 28-000006a34cd5

cat w1_slave



Programme de lecture:


# Import Libraries

import os

import glob

import time

# Initialize the GPIO Pins

os.system('modprobe w1-gpio')  # Turns on the GPIO module

os.system('modprobe w1-therm') # Turns on the Temperature module

# Finds the correct device file that holds the temperature data

base_dir = '/sys/bus/w1/devices/'

device_folder = glob.glob(base_dir + '28*')[0]

device_file = device_folder + '/w1_slave'

# A function that reads the sensors data

def read_temp_raw():

 f = open(device_file, 'r') # Opens the temperature device file

 lines = f.readlines() # Returns the text

 f.close()

 return lines

# Convert the value of the sensor into a temperature

def read_temp():

 lines = read_temp_raw() # Read the temperature 'device file'

 # While the first line does not contain 'YES', wait for 0.2s

 # and then read the device file again.

 while lines[0].strip()[-3:] != 'YES':

   time.sleep(0.2)

   lines = read_temp_raw()

 # Look for the position of the '=' in the second line of the

 # device file.

 equals_pos = lines[1].find('t=')

 # If the '=' is found, convert the rest of the line after the

 # '=' into degrees Celsius, then degrees Fahrenheit

 if equals_pos != -1:

   temp_string = lines[1][equals_pos+2:]

   temp_c = float(temp_string) / 1000.0

   return temp_c

# Print out the temperature until the program is stopped.

while True:

 print ('temp\xe9rature :'),

 print (read_temp()),

 print ('\xb0C')

 time.sleep(1)


Programme complet ici.


Lancement du programme:


sudo python ds18b20.py




Pour arrêter le programme faire un crtl+c.


Mise à jour 26/04/2015

Créé avec HelpNDoc Personal Edition: Générateur d'aides CHM gratuit