Files
ESPEasy/docs/source/Plugin/P004_DS18b20.rst
T

148 lines
6.1 KiB
ReStructuredText

.. include:: ../Plugin/_plugin_substitutions_p00x.repl
.. _P004_DS18b20_page:
DS18b20
=======
|P004_typename|
|P004_status|
.. image:: P004_DS18b20_1.jpg
Introduction
------------
The DS18B20 manufactured by Dallas and Maxxim is a very simple to use temperature sensor with a tolerance of +/- 0.5°C.
.. note:: Cheap remakes from Chinese market might have bigger tolerance and also might have different pinouts.
It's advantages: very simple to use due to "1-wire" data protocol. Chainable, it is possible to chain up to 100
sensors on one cable (remember ESP Easy has 12 tasks max...). No calibration necessary if the tolerance fits your
needs as the sensor gives digital data directly. Many forms available from bare chip to waterproof and tube sensors.
Specifications:
* Temperature (-55C to +125C)
* Voltage requirements: 3.3-5V
.. note:: The DS18B20 runs well on 3.3V so no level shifter or special power supply is needed. But the official
statement is that you should use 5V and a level shifter if you have multiple sensors on a long wire.
Wiring
------
.. image:: P004_DS18b20_5.jpg
.. code-block:: none
ESP DS18b20
GPIO (14) <--> 1-wire/D (yellow)
Power
3.3/5.0V <--> VDD (red)
GND <--> GND (black)
The sensor needs a pull up resistor. If you use the breakout board type the resistor usually is already on the board.
This gets you into problems if using several DS18B20 breakout boards. There should be **only one resistor for the entire line**
so you might have to remove resistors leaving just one at one end of the line.
Typical value for the pull up resistor is 4k7. For multiple sensors on the same wire this value may need to be lowered a bit.
Do not use very thin cabling! Tested with a 3x0.14mm² cable the length with 5 Sensors was 10 meters, longer cabling did not work.
Use a phone line cable (2x2x0.6mm²) instead if you need long distances up to 50..100 meters. remember: One (!) pull-up resistor for the whole line!
The preferred structure is a straight line. If possible avoid "stubs". If necessary it can be cabled in a "star" infrastructure.
But be aware that stubs and star form reduce the possible cable length.
Setup
-----
.. image:: P004_Setup_DS18b20_1.png
Task settings
~~~~~~~~~~~~~
* **Device**: Name of plugin
* **Name**: Name of the task (example name **TempN**, where N is a number).
* **Enable**: Should the task be enabled or not
Sensor
^^^^^^
* **GPIO <--> 1-wire**: Pulse input is generally set to **GPIO 14 (D5)**.
after pressing submit the following settings are revealed:
* **Device address**: Pick your **sensor address**, hold your hand around it to see which one is changing temperature.
Every DS18b20 has a unique address burned in at production time.
This UID (Unique IDentifier) is used to tell the sensors apart on one single cable.
* **Device resolution**: 9..12 bits, the **lower the resolution the accuracy decreases and the speed increases**.
As temperatures do not change very fast usually a high accuracy can be chosen without problem.
.. note:: If you need a star infrastructure or stubs or if you need just longer cabling there is a way out.
One line runs on one GPIO. But nobody said you can't use two GPIO's. If the cabling gets too long or
you have too much stubs or star cables try to split into two circuits. Place the ESP in the mid and
cut the line into two circuits, for example "Ground Floor" and "1st Floor". Use two GPIO's, one for each circuit.
.. note:: Usually the DS18B20 works without issues. It's also usual that most problems result from cabling mistakes.
With long cabling you might get wrong data sometimes. It might be helpful to reduce the resistor a bit, 2.2 kOhm is lowest possible.
If nothing works disconnect all sensors from line and connect back one by one, checking every time. Cable may be too long
(or too thin for the given distance). Keep cabling away from other cables to avoid interferences. If necessary place a
10µF capacitor on the sensors between 3.3v and GND.
Data acquisition
^^^^^^^^^^^^^^^^
* **Send to controller** 1..3: Check which controller (if any) you want to publish to. All or no controller can be used.
* **Interval**: How often should the task publish its value (5..15 seconds is normal).
Indicators (recommended settings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. csv-table::
:header: "Indicator", "Value Name", "Interval", "Decimals", "Extra information"
:widths: 8, 5, 5, 5, 40
"Temperature", "Celsius", "10", "1", ""
Rules examples
--------------
.. code-block:: none
On Temp1#Celsius Do
If [Temp1#Celsius]>37
NeoPixelAll,255,0,0 //Your body temperature is too high!
Else
NeoPixelAll,0,255,0 //Body temperature is OK.
EndIf
EndOn
.. Commands available
.. ~~~~~~~~~~~~~~~~~~
.. .. include:: P004_commands.repl
Where to buy
------------
.. csv-table::
:header: "Store", "Link"
:widths: 5, 40
"AliExpress","`Link 1 ($) <http://s.click.aliexpress.com/e/bWymv0bQ>`_"
"Banggood","`Link 2 ($) <https://www.banggood.com/DS18B20-Waterproof-Digital-Temperature-Temp-Sensor-Probe-1M-2M-3M-5M-10M-15M-p-1211828.html?p=V3270422659778201806>`_ `Link 3 ($) <https://www.banggood.com/10Pcs-DS18B20-Temperature-Sensor-DALLAS-18B20-TO-92-Encapsulation-p-953364.html?p=V3270422659778201806>`_ `Link 4 ($) <https://www.banggood.com/5pcs-PT100-DS18B20-Temperature-Sensor-Stainless-Steel-Bushing-Blind-Tube-Protect-Case-Sleeve-6x50mm-p-1212105.html?p=V3270422659778201806>`_"
"eBay","`Link 5 ($) <https://rover.ebay.com/rover/1/711-53200-19255-0/1?icep_id=114&ipn=icep&toolid=20004&campid=5338336929&mpre=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_trksid%3Dm570.l1313%26_nkw%3DDS18B20%26_sacat%3D0%26LH_TitleDesc%3D0%26_osacat%3D0%26_odkw%3Dfluid%2Bsensor%2Bmeter>`_"
|affiliate|
More pictures
-------------
.. image:: P004_DS18b20_2.jpg
.. image:: P004_DS18b20_3.jpg
.. image:: P004_DS18b20_4.jpg