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