Le capteur de température DS1821
Le capteur de température Dallas DS1821 est un capteur fonctionnant aussi bien en mode conversion qu’en mode thermostat.
Il utilise le protocole One-Wire pour assurer sa communication.
Il permet des mesures de températures de -55°C à +125 °C avec une précision de 8 bits.
Il nécessite l’utilisation d’une résistance de 4,7K Ohms entre Vdd (l’alimentation) et DQ (le câble de communication).
Ce capteur permet également des mesures d’une précision de 9 bits, la documentation est explicite sur le sujet.
Dans notre cas, nous utilisons la conversion sur 8 bits. Le premier bit, le bit de poids fort indiquant le signe de l’entier.
La carte micro-contrôleur PyMCU
Nous utilisons pour exploiter ce capteur la carte contrôleur PyMCU.
Elle permet de contrôler l’électronique à l’aide du langage de programmation Python.
Le code du programme
#-------------------------------------------------------------------
# Name: pymcu lcd
# Purpose: Dallas 1821 & PyMCU
#
# Author: julien[]hautefeuille.eu
#
# Created: 13/04/2012
#-------------------------------------------------------------------
#!/usr/local/bin/python
#*-encoding:utf8-*
import pymcu
import time
def initLCD(sleep):
mb.lcd()
time.sleep(sleep)
def displayTemp(line, sleep, temp):
mb.lcd(line, "Temp %s C @home " % (str(temp).zfill(2)))
time.sleep(sleep)
def startTemp(pin, command):
mb.owWrite(pin, 1, command)
def checkBusy(pin):
return mb.owRead(pin, 5, 1)
def readTemp(pin, command):
mb.owWrite(pin, 1, command)
return mb.owRead(pin, 2, 1)[0]
def getTemp():
if checkBusy(5) != 0:
t = readTemp(5, 0xAA)
tt = None
if t >> 7 == 1: # negative value
r = t ^ 0xFF # bit inversion OR
tt = r + 1 # add 1
else: # positive value
tt = t
startTemp(5, 0xEE)
mb.pausems(500)
return tt
if __name__ == "__main__":
mb = pymcu.mcuModule(port = 'COM9', baudrate = 9600)
mb.mcuSetBaudRate(2)
initLCD(sleep = 1)
startTemp(5, 0xEE) # start DS1821 in conversion mode
while mb.active:
displayTemp(line = 1, sleep = 0.1, temp = getTemp())
exit()
Conclusion
L’exploitation de ce capteur est simple, il faut néanmoins faire attention à 2 choses : respecter les délais du capteur et effectuer la conversion de température proprement afin d’obtenir les températures négatives. La documentation donne des indications à ce sujet.