|
6.10.f OneWire |
Principe du Protocole OneWire (1-Wire)
La communication sur le bus 1-Wire est caractérisée par un ensemble de « pulse » ou changement d’état. 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 à l’état bas (0V) pendant 480 μs pour faire une initialisation (reset) des composants connectés. Après un délai de 15 à 60 μs, le ou les esclaves connectés, forcent le bus à l’état bas pendant 60 à 240 μs pour signaler leur présence. Le maître est alors informé des esclaves connectés sur le bus.

Toute transaction entre un maître et un ou plusieurs esclaves, débute par une initialisation, constituée par l’envoi du pulse de Reset par le maître. Le maître doit ensuite envoyer une commande de type ROM qui est propre au protocole 1-Wire, et que tous les circuits de ce type vont reconnaître. Cela va permettre entre autre de sélectionner un circuit parmi les différents esclaves qui ont répondu présents au pulse de Reset. Le dialogue et l’échange de données pourra ensuite commencer, entre le maître et l’esclave sélectionné. Pour émettre un bit sur le bus, le maître force le bus à « 0 » pendant 1 à 15 μs. L’esclave va lire le bus entre 15 et 45 μs après le front descendant ( valeur typique 30 μs). Si on veut émettre un « 1 », il faut repasser le bus à « 1 » immédiatement, et ne plus rien faire jusqu’à t = 60 μs. Pour émettre un « 0 » il faut laisser le bus à « 0 » jusqu’à t = 60 μs, puis repasser le bus à « 1 ». La durée total d’un bit est donc de 60us, ce qui donne une vitesse de communication maximale de 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 au moins 1 μs. Si l’esclave veut émettre un « 1 », il laisse le bus libre, donc tiré à « 1 ». Pour émettre un « 0 », l’esclave doit tirer le bus à « 0 » pendant 15 μs au minimum. Le maître devra donc dans tous les cas lire le bus 15 μs maximum après avoir tiré le bus à « 0 » pendant 1 μs. L’état du bus donnera alors le bit transmis par l’esclave.

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…
Vous trouverez toutes les informations liées aux commandes ROM sur le document de Daniel Menesplier.
|
Sous Flowcode |
Sous Flowcode, pour utiliser le Bus OneWire à l'aide d'un microcontrôleur, il faut ajouter au "Panneau tableau de bord" un composant de type "One Wire"
qui se trouve dans la "Boîte Outils Composants" pictogramme "Comms"
|
|
|
Aide du Composant OneWire: https://www.flowcode.co.uk/wiki/index.php?title=Component:_One_Wire_(Comms:_Interface)
Device Scanning
To get started with one wire devices it is often useful to collect the unique device serial number for each and every one wire device you are going to connect to your bus.
For example if you have a bus with two temperature sensors connected it is useful to know which sensor is which. Sensor A is monitoring temperature A and sensor B is monitoring temperature B. The only way to tell which is which is to use the serial number.
Here is a program that scans for devices on a one wire bus and outputs the device count and serial numbers using a LCD.
Here is the same program but this time the device count and serial numbers are output using a UART such as on an Arduino or ESP32.
To use the examples simply connect a single device to the one wire bus and make a note of the reported serial number.
This serial number can then be entered into the specific one wire component and used to ensure you are communicating with the device you think you are.
A pull up resistor of between 1K and 10K is required between the data I/O pin and VCC.
Further Examples
The One Wire component is a key building block required by a number of other components. Some of which are included below.
|
Sous Arduino |
Voir l'activité Le Bus OneWire

Librairie: OneWire Library
https://github.com/PaulStoffregen/OneWire
Créé avec HelpNDoc Personal Edition: Comment protéger vos PDF avec le cryptage et les mots de passe

