Le bus 1-WIRE

Présentation

Le bus 1-Wire (ou OneWire) est un bus conçu par Dallas Semiconductor.

Le niveau de tension utilisé sur ce bus est +5V (niveau TTL).

Ce bus supporte une topologie série, parallèle ou en étoile. Et fonctionne suivant le principe maître / esclave.

L’avantage de ce bus est qu’il peut être utilisé en mode « parasite » (alimentation à partir du fil de données).

Cela permet d’utiliser seulement 2 fils (et non un seul comme le nom le laisse supposer), un fil de données et un fil de masse.

Généralement utilisé pour des mesures de températures, il existe une gamme complète de composants compatibles (voir ci-dessous).

Chaque circuit possède une adresse physique unique, gravée dans la puce à la fabrication. C’est une des raisons expliquant la réticence de Dallas à permettre la création d’esclave 1-wire autres que ceux qu’il produit : avoir la maîtrise de l’identification des esclaves du bus.

Protocole

Ce paragraphe est très technique et ne concerne que les personnes souhaitant avoir des informations avancées sur le bus 1-wire

Si vous souhaitez juste utiliser cette technologie, vous pouvez passer directement à la présentation des composants DS18B20 et DS2405.

La communication sur le bus 1-wire est caractérisée par un ensemble de pulse « changement d’état du bus ».

Sachant que l’état par défaut de la ligne data est +5V, ce qui permet d’alimenter les différents composants à partir de la ligne data en mode parasite.

Avant toute communication, le maître met le bus à 0 pendant 480us pour faire un reset des composants connectés.

Le maître reçoit alors la liste des esclaves connectés sur le bus. Il pourra utiliser une commande particulière pour sélectionner l’esclave avec lequel il souhaite communiquer (commande ROM)

Pour émettre un bit sur le bus le maître force le bus à « 0 » pendant 1 à 15us, pour indiquer qu’il souhaite envoyer un bit de données, puis il doit positionner le bus suivant le bit qui doit être émis (0 ou 1) l’esclave « actif » va lire le bus entre 15us et 45us après la détection du front descendant initial.

La durée total d’un bit est donc de 60us, ce qui donne une vitesse de communication maxi d 16kbits/s.

Après la réception d’une commande du maître, l’esclave peut renvoyer des données.

Pour lire les données de l’esclave, le maître force le bus à 0 pendant 1us, et il lit ensuite l’état du bus entre 5 et 15us après ce front descendant.

Si l’esclave souhaite émettre un bit « 1 », il laisse le bus à « 1 », sinon il tire le bus à « 0 » pendant 15us.

Ceci est une description assez sommaire du protocole 1-wire. Il faut ensuite se reporter à la datasheet de chaque composant 1-wire pour connaître les fonctions qui sont supportées et les zones de données qui peuvent être lues pour obtenir les températures, niveaux de tensions…

Composants 1-wire : DS18B20 et DS2405

Il existe de nombreux composants 1-Wire, une liste (non exhaustive) peut être trouvée sur wikipédia : https://fr.wikipedia.org/wiki/1-Wire

Voici les principaux composants pouvant être utilisé en domotique :

DS18S20 – Thermomètre (sonde de température)

DS18B20 – Capteur de température avec résolution ajustable

DS2404 – Horloge temps-réel, timer et NVRAM (4 KO)

DS2405 – Interrupteur ou détecteur d’état (bascule)

DS2406 – Double bascule (équivalent à 2x DS2405)

DS2408 – Bascule 8 canaux

DS2415 – Horloge temps réelle (RTC)

DS2423 – Compteur d’impulsions / NVRAM 4KO

DS2438 – Capteur de température / Convertisseur A/N (utilisé dans nos capteurs de lumière, capteur de tension)

DS2760 – Capteur de température, courant et convertisseur A/N

DS2890 – Potentiomètre numérique

Parmi cette liste, nous allons regarder plus en détail le DS18B20 et le DS2405.

Le DS18B20 est une sonde de température, elle permet de mesurer avec une assez bonne précision des températures allant de -55°C à +125°C.

La précision du capteur est configurable, mais cela s’effectue au détriment de la vitesse d’acquisition.

Par exemple, pour une précision de 0.0625°C (sur 12 bits) le temps de conversion est de 750ms. Autant dire que si vous avez beaucoup de sondes sur votre bus, ce temps devient non négligeable.

Une des solutions est alors de créer plusieurs bus 1-wire, le premier servant pour la mesure de température, et le second pour des processus prioritaires (circuit de délestage par exemple)

La sonde de température DS18B20 se présente sous la forme d’un composant électronique en boitier TO92 :

La sonde peut être utilisée en mode alimentée (1=masse / 2=data / 3=power) avec une tension d’alimentation power comprise en 3 et 5V

Ou en mode parasite, dans ce cas, les bornes 1 et 3 (GND/VCC) devront être reliées entre elles.

Le DS18B20 permet ainsi pour un coût réduit (env. 3Eur) et en utilisant du simple câble téléphonique, avec une paire torsadée de faire un maillage de mesure de température dans toutes les pièces de la maison.

Un autre composant très utile en domotique est le DS2405, il nécessite cependant un peu plus de travail pour pouvoir l’utiliser que le DS18B20.

Ce composant est un interrupteur « 1-Wire », il permet ainsi de piloter à distance la commutation d’un signal 5V.

Ce signal pourra ensuite être utilisé pour commuter des relais ou une gestion de commande de type TOR (Tout Ou Rien).

Une résistance de « pull-up » sur la sortie permettra de positionner le signal par défaut à 5V, et il sera possible de piloter le composant pour positionner la sortie à 0.

Le DS2438 est lui aussi très complet, c’est le composant qui est utilisé dans tous les capteurs iButtonLink et qui permet de mesurer une température et une valeur analogique. On pourra (en utilisant le bon capteur) s’en servir pour mesurer des niveaux de lumière, des niveaux de tension …

Les contrôleurs pour bus 1-wire

Il existe plusieurs contrôleurs pour le bus 1-wire et Dallas Semiconductor fournit les composants électroniques permettant de créer des maîtres 1-wire à des coûts assez réduit.

Nous allons présenter ici les différents contrôleurs (maîtres) que nous vendons sur Planète Domotique.

De gauche à droite : le DS9097U, le DS9490R, le LinkTH et le HA7E

Derrière ces noms un peu barbare, ce cache 3 fonctionnements complètement différents.

Les 2 premiers (le DS9097U et le DS9490R) sont des contrôleurs officiels de Dallas, le premier permet de piloter le bus à partir d’un port RS232, le second à partir d’un port USB.

Les drivers et les explications pour utiliser ces deux modules sont données directement sur le site de Dallas.

Nous avons traduit la documentation du module USB DS9490R, vous pouvez la télécharger ici : https://www.planete-domotique.com/notices/1wire/DS9490R.pdf

Le troisième module de la liste est le contrôleur 1-Wire de la société iButtonLink, il permet de gérer le bus 1-wire de manière totalement autonome.

Les mesures de températures peuvent alors être lues de manière asynchrone, elles sont envoyées périodiquement sur le port série de l’ordinateur.

Il est vraiment très facile de créer un réseau ayant une longueur assez élevée ou une topologie complexe.

Le module permet de gérer les timming de manière optimisée afin de limiter les erreurs.

La lecture asynchrone permet aussi de ne pas s’occuper de la lecture périodique des mesures (polling), mais uniquement de récupérer les données reçues.

Le contrôleur iButtonLink est optimisé pour la lecture de température à partir de capteur DS18B20 ou pour les capteurs iButtonLink, par contre, il ne sait pas gérer d’autres composants 1-wire.

La société iButtonLink fournit un logiciel gratuit qui permet d’enregistrer les températures et faire une représentation graphique facilement.

Le logiciel permet aussi de déclencher des actions sur le dépassement de seuil de température (alerte), comme l’envoi d’un e-mail par exemple.

Le manuel de ce logiciel est disponible (en anglais) ici : Manuel THMon

Le dernier maître 1-wire que nous vendons sur Planète Domotique est le HA7E de la société Embedded System.

Le contrôleur HA7E est très complet, il permet de piloter l’ensemble des composants 1-wire en utilisant des commandes « textes » envoyées sur le port série.

Par exemple, une simple commande texte « S » permet de lister l’ensemble des ID des composants présents sur le BUS.

N’importe quelle application peut alors piloter le bus 1-wire avec une simple communication série.

Il est à noter que comme le LinkTH, le module HA7E dispose d’une gestion électronique intelligente du bus qui lui permet d’optimiser au maximum la gestion de la communication et donc d’améliorer le fonctionnement de bus 1-wire ayant une topologie complexe.

Les contrôleurs LinkTh et HA7E étant des modules RS232, il est possible de les connecter sur un PC n’ayant pas de port de ce type avec un adaptateur USB/Série.

Le modèle 2 ports séries que nous vendons ICI a été testé et fonctionne correctement avec le LinkTH et le HA7E.

Les logiciels pour utiliser le bus 1-wire

Le nombre de logiciel permettant de communiquer avec le bus 1-wire est assez restreint, et ils sont pour la plupart en Anglais.

Pour commencer, le logiciel fournit par Dallas, OneWireViewer. Ce logiciel permet d’avoir un aperçu rapide du réseau, et donc de tester le fonctionnement de celui si.

Une colonne affiche la liste des composants, et un click sur le composant permet d’avoir le détail des informations sur celui-ci.

Même si ce logiciel est parfait pour tester une installation, il ne permet pas une utilisation en continue (pour enregistrer des températures par exemple)

Ensuite, on pourra citer THMon, présenté ci-dessus, ce logiciel s’interface avec le contrôleur 1-wire LinkTH, et il permet d’enregistrer les mesures, de définir des alertes …

On continu avec l’excellent projet OWFS qui permet de voir le réseau 1Wire comme un système de fichier, il est alors très facile de parcourir ce système pour lire les valeurs des différents composants…

Ce logiciel est avant tout conçu pour Linux (même si une version Windows existe), et il est possible de l’utiliser sur des systèmes très réduits, comme par exemple un routeur avec OpenWRT.

La gestion du 1-wire s’en trouve alors fortement simplifié.

On retrouve sur le web des outils pour communiquer avec owfs et mettre en forme les données qui sont lues.

En particulier, le très beau site de Raphael : Aquariym Automation

Pour finir, le logiciel Logtemp, il permet l’acquisition de données et la sauvegarde de celle ci dans des fichiers textes.

Il est possible de transférer automatiquement ces fichiers sur un serveur FTP, afin de les utiliser par exemple sur un serveur web pour tracer des courbes de températures…

Vous trouverez d’autres logiciels plus ou moins avancés assez facilement sur Google…

Adresses utiles

Présentation 1-Wire par Daniel Menesplier

Le 1-wire sur Wikipédia

Quelques réalisations intéressantes (1wire.fr)

Introduction au 1-Wire (EN)

A propos Mickael

Je suis passionné de Domotique depuis des années. J'ai fait du développement en informatique industrielle pendant 12 ans, et un jour ... je me suis lancé ! J'ai créé ma boutique de vente en ligne : https://www.planete-domotique.com

A voir aussi

EDF Pulse 2016 : l’innovation récompensée !

Nous vous présentions fin avril trois des six start-up finalistes de la troisième édition des Prix EDF Pulse. Les …

3 commentaires

  1. Merci! Très bien expliquer

  2. Bonjour, j’ai un projet et celui-ci consiste a présenter le DS18B20, j’ai tout compris mis à part une petite chose. J’ai un programme qui me permet de traduire un code hexadecimal de 10 bits en une température, par exemple: 1 72 1 ab 46 7f ff e 10 57. Ce code correspond à la température 23.12 degré celsius. Comment je sais que ce code correspond à cette température. Merci d’avance !!

  3. sans oublier le pilote tres complet et tres stable OWFS sous Linux

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *