Lire la température d'un DS18B20 via le bus 1-WIRE en C
Catégorie : Commun à toute la gamme
Publié par dinastar le 13/06/2016

Je vous propose dans cet article, de mettre en œuvre le bus 1-WIRE afin de récupérer la température d’un ou de plusieurs capteur(s) numérique(s) DS18B20.

vue ds18B20vue2

Les principales choses à savoir

Sources de lecture

Je ne vais pas détailler ici le fonctionnement du bus en profondeur, mais forcement, pour aller plus loin, je vous conseille vivement de lire ces 2 documents :

« Le Bus 1-WIRE » de Daniel MENESPLIER en français …

http://daniel.menesplier.free.fr/Doc/BUS%201%20WIRE.pdf

… vous donnera déjà une bonne approche sur le fonctionnement de ce bus, et de quelques périphériques très connus aujourd’hui comme le DS18B20, la clé iButton DS1990 etc …

 

Après cela, il sera plus confortable, surtout pour ceux qui ont des difficultés en anglais, de lire la datasheet du capteur.

« DS18B20 Programmable Resolution 1-Wire Digital Thermometer » en anglais donc

http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf

 

Une autre réalisation d’un membre, et sur lequel je me suis également inspiré 

http://www.68hc08.net/articles.item.1 ... escale.html?keywords=wire

Les fichiers de code en C

 Voici un exemple d’utilisation de cette lib pour 3 capteurs DS18B20 :

Attention ! Dans mon application, les codes ROM de chaque capteur, uniques, ont été sauvegardés dans une mémoire EEPROM externe et dédiée à cela. En effet, il existe une méthode (lire le PDF de D.MENESPLIER) afin d’effectuer une recherche de tous les DS présents sur le bus (non codée dans ma lib).

Cela est spécifique dans le cas où plus d’un capteur est connecté sur le même bus. Là est la difficulté : gérer les code ROM et savoir où sont placés les capteurs !

Dans mon système, à la configuration initiale, je connecte les capteurs un à un afin d’affecter chaque code ROM à un emplacement physique (pour sonder 3 pièces de la maison par ex.), et donc un emplacement en mémoire EEPROM. Comme cela, le système reconnait tous les DS18B20 connectés sur le bus et ce, à chaque marche/arrêt de la carte.