lamaPLC Communication: 1-Wire

1-Wire is a device communications bus system designed by Dallas Semiconductor that provides low-speed (16.3 kbit/s) data, signaling, and power over a single conductor.

1-Wire is similar in concept to I²C but has lower data rates and longer range. It is typically used to communicate with small, inexpensive devices such as digital thermometers and weather instruments. A network of 1-Wire devices with an associated master device is called a MicroLAN

One distinctive feature of the bus is the possibility of using only two wires — data and ground. To accomplish this, 1-Wire devices include an 800 pF capacitor to store charge and power the device during periods when the data line is active.

The 1-Wire devices are specifically designed and optimized to read and write efficiently to 1-Wire devices and networks. Like UART/USART controller, they handle clocked operations natively using a buffer, offloading the processing load from the host processor (e.g., sensor gateway or microcontroller), thereby increasing accuracy. External pull-up resistors are also often not required.

Features of the 1-wire bus

  • Besides 64-bit addressing, the bus can query a maximum of 75 sub-units per second.
  • The transmission speed is approximately 16.3 kbit/s.
  • Two main modes: Parasitic/normal
  • A cable with a cross-section of at least 0.6 mm must be used. A shielded, twisted-pair cable is required for longer distances. The maximum length of the cable is 6 meters.
  • Each 1-Wire chip has a unique identifier code.
  • A 1-wire network consists of a single open-drain wire with a single pull-up resistor, which pulls the wire up to 3 or 5 volts.
  • Most UART/USARTs are perfectly capable of sustained speeds well above the 15.4kbps required of the 1-Wire bus in standard mode

Parasitic/normal mode by 1-wire bus

Normal modeParasitic mode
Normal mode by 1-wire busParasitic mode by 1-wire bus
With an external supply, three wires are required: the bus wire, ground, and power. The 4.7k pull-up resistor is still required on the bus wire. As the bus is free for data transfer, the microcontroller can continually poll the state of a device doing a conversion. This way, a conversion request can finish as soon as the device reports being done, as opposed to having to wait for conversion time (dependent on device function and resolution) in “parasite” power mode.When operating in parasite power mode, only two wires are required: one data wire, and one ground. The power line must be connected to ground in this mode, per the datasheet. A 4.7k pull-up resistor must be connected to the 1-wire bus at the controller. When the line is in a “high” state, the device pulls current to charge an internal capacitor.

The example above shows the application of the DS18B20 digital temperature sensor in parasitic/normal mode.

Addressing a 1-Wire device

Each 1-Wire device contains a unique 64-bit 'ROM' address, consisting of an 8-bit family code, a 48-bit serial number, and an 8-bit CRC. The CRC is used to verify the integrity of the data.

For example, the sample code below checks if the device being addressed is a DS18S20 temperature sensor by checking for its family code, 0x10. To use the sample code with the newer DS18B20 sensor, you would check for a family code of 0x28, instead, and for the DS1822, you would check for 0x22.

Single-device commands

Before sending a command to a single peripheral device, the controller must select that device using its unique ROM. If found, the selected device will respond to subsequent commands.

Multiple-device commands

Alternatively, you can address a command to all peripheral devices by issuing a 'Skip ROM' command (0xCC) instead. It is essential to consider the effects of issuing a command to multiple devices.

Sometimes, this may be intended and beneficial. For example, issuing a Skip ROM followed by a Convert T (0x44) would instruct all networked devices with a Convert T command to perform a temperature conversion.

This can be a time-saving and efficient way of performing the operations. On the other hand, issuing a Read Scratchpad (0xBE) command would cause all devices to report Scratchpad data simultaneously. Power consumption of all devices (for example, during a temperature conversion) is also essential when using a Skip ROM command sequence.

Sources

1-wire topics on lamaPLC




This page has been accessed for: Today: 2, Until now: 379