2018-05-13 11:37:02 +02:00
|
|
|
|
ESP32 Pulse Counter Sensor
|
|
|
|
|
==========================
|
|
|
|
|
|
|
|
|
|
The pulse counter sensor allows you to count the number of pulses on a
|
|
|
|
|
specific pin using the `pulse counter
|
|
|
|
|
peripheral <https://esp-idf.readthedocs.io/en/latest/api-reference/peripherals/pcnt.html>`__
|
|
|
|
|
on the ESP32.
|
|
|
|
|
|
2018-06-01 18:10:00 +02:00
|
|
|
|
.. figure:: images/pulse-counter.png
|
|
|
|
|
:align: center
|
|
|
|
|
:width: 80.0%
|
2018-05-13 11:37:02 +02:00
|
|
|
|
|
|
|
|
|
.. code:: yaml
|
|
|
|
|
|
|
|
|
|
# Example configuration entry
|
|
|
|
|
sensor:
|
|
|
|
|
- platform: pulse_counter
|
|
|
|
|
pin: 12
|
|
|
|
|
name: "Pulse Counter"
|
|
|
|
|
|
|
|
|
|
Configuration variables:
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
2018-06-01 18:10:00 +02:00
|
|
|
|
- **pin** (**Required**, :ref:`config-pin`): The pin to count pulses on.
|
|
|
|
|
- **name** (**Required**, string): The name of the sensor.
|
|
|
|
|
- **pull_mode** (*Optional*): The `pull
|
|
|
|
|
mode <https://esp-idf.readthedocs.io/en/latest/api-reference/peripherals/gpio.html#_CPPv218gpio_set_pull_mode10gpio_num_t16gpio_pull_mode_t>`__
|
|
|
|
|
of the pin. One of ``PULLUP``, ``PULLDOWN``, ``PULLUP_PULLDOWN``,
|
|
|
|
|
``FLOATING``. Defaults to ``FLOATING``.
|
|
|
|
|
- **count_mode** (*Optional*): Configure how the counter should behave
|
|
|
|
|
on a detected rising edge/falling edge.
|
2018-05-13 11:37:02 +02:00
|
|
|
|
|
2018-06-01 18:10:00 +02:00
|
|
|
|
- **rising_edge** (*Optional*): What to do when a rising edge is
|
|
|
|
|
detected. One of ``DISABLE``, ``INCREMENT`` and ``DECREMENT``.
|
|
|
|
|
Defaults to ``INCREMENT``.
|
|
|
|
|
- **falling_edge** (*Optional*): What to do when a falling edge is
|
|
|
|
|
detected. One of ``DISABLE``, ``INCREMENT`` and ``DECREMENT``.
|
|
|
|
|
Defaults to ``DISABLE``.
|
2018-05-13 11:37:02 +02:00
|
|
|
|
|
2018-06-01 18:10:00 +02:00
|
|
|
|
- **internal_filter** (*Optional*, int): If a pulse shorter than this
|
|
|
|
|
number of APB clock pulses (each 12.5 ns) is detected, it’s
|
|
|
|
|
discarded. See `esp-idf Filtering
|
|
|
|
|
Pulses <https://esp-idf.readthedocs.io/en/latest/api-reference/peripherals/pcnt.html#filtering-pulses>`__
|
|
|
|
|
for more information. Defaults to the max value 1023 or about 13 µs.
|
|
|
|
|
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``15s``.
|
2018-06-01 18:44:15 +02:00
|
|
|
|
See :ref:`sensor-default_filter`.
|
2018-06-01 18:10:00 +02:00
|
|
|
|
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
|
|
|
|
|
- All other options from :ref:`Sensor <config-sensor>` and :ref:`MQTT Component <config-mqtt-component>`.
|
2018-05-13 11:37:02 +02:00
|
|
|
|
|
|
|
|
|
Converting units
|
|
|
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
The sensor defaults to measuring its values using a unit of measurement
|
2018-06-01 18:10:00 +02:00
|
|
|
|
of “pulses/min”. You can change this by using :ref:`sensor-filters`.
|
2018-05-13 11:37:02 +02:00
|
|
|
|
For example, if you’re using the pulse counter with a photodiode to
|
|
|
|
|
count the light pulses on a power meter, you can do the following:
|
|
|
|
|
|
|
|
|
|
.. code:: yaml
|
|
|
|
|
|
|
|
|
|
# Example configuration entry
|
|
|
|
|
sensor:
|
|
|
|
|
- platform: pulse_counter
|
|
|
|
|
pin: 12
|
|
|
|
|
unit_of_measurement: 'kW'
|
|
|
|
|
name: 'Power Meter House'
|
|
|
|
|
filters:
|
|
|
|
|
- multiply: 0.06
|
|
|
|
|
|
2018-06-01 18:10:00 +02:00
|
|
|
|
See Also
|
|
|
|
|
^^^^^^^^
|
|
|
|
|
|
|
|
|
|
- :ref:`sensor-filters`
|
|
|
|
|
- :doc:`rotary_encoder`
|
|
|
|
|
- `esp-idf Pulse Counter API <https://esp-idf.readthedocs.io/en/latest/api-reference/peripherals/pcnt.html>`__.
|
|
|
|
|
- :doc:`API Reference </api/sensor/pulse-counter>`
|
2018-06-03 12:50:44 +02:00
|
|
|
|
- `Edit this page on GitHub <https://github.com/OttoWinter/esphomedocs/blob/master/esphomeyaml/components/sensor/pulse_counter.rst>`__
|