1-wire счетчик импульсов

English translation | Память устройства | Библиотека для Arduino | Web-интерфейс устройства

Руководство пользователя

Устройство применяется для решения задач, где необходимо автоматизировать подсчет чего-либо - в системах контроля доступа (количество проходов через турникет), в метеостанциях (количество осадков, скорость ветра), в системах "умный дом" (удаленный съем показаний с приборов учета) и т.п.

Описание устройства
Порядок работы с устройством
Принцип работы устройства
Ограничения
Конфигурирование устройства
Подключение и настройка датчика
Режим измерений
Алгоритм нахождения порогов
Проблемы и их решение
Принципиальная схема устройства
Размеры устройства

Описание устройства

Устройство предназначено для подсчета количества фронтов (переходов цифрового сигнала из одного состояния в другое). Устройство имеет два независимых канала A и B для входящих сигналов, связанные с двумя соответствующими 32-битными счетчиками. Счетчики по каждому каналу независимо могут быть настроены на инкремент по нарастающему, спадающему, или обоим фронтам. Для работы с аналоговым сигналом задействуется внутреннее преобразование в сигнал с двумя состояниями.

Устройство имеет коммуникационный интерфейс 1-wire, по которому производится считывание значений счетчиков и настройка.

Питание устройства может осуществляться от отдельной линии VCC, при ее отсутствии - от линии данных DQ (паразитное питание), а при отсутствии и того, и другого - от встроенной батареи CR2032, которая может обеспечить до 5 лет автономной работы устройства.

Порядок работы с устройством

Для начала работы с устройством необходимо:

  1. вставить рабочую батарею CR2032 в отсек для батареи, соблюдая полярность;
  2. подключить устройство к шине 1-wire: подключить линии GND и DQ и, при необходимости, линию VCC;
  3. проверить, что идентификатор нового устройства появился на шине (устройство может проверять, что напряжение VCC или DQ стабильно, до 5 секунд перед первым ответом);
  4. установить и подключить к уствойству один или два датчика, датчики подкючаются к выводам: GND - земля, A или B - положительный сигнал с датчика, PWR - питание датчика (опционально);
  5. выполнить настройку устройства для работы с датчиками, установить начальные значения счетчиков;
  6. устройство готово, можно считывать значения счетчиков.

Устройство можно отключить от шины 1-wire и подключать при необходимости, устройство будет сохранять настройки и продолжать подсчет, работая от встроенной батареи.

Устройство также может оставаться подключенным к шине 1-wire и опрашиваться непрерывно.

Для сброса настроек к заводским, устройство необходимо обесточить не менее чем на 5 сек, для этого необходимо отключить от 1-wire, отключить датчики и извлечь батарею.

Принцип работы устройства

Для снижения энергопотребления без снижения тока датчиков, устройство работает с датчиками в импульсном режиме: подключает питание датчиков и/или подтяжки, делает задержку, производит замер уровня с датчиков на каналах A и B, отключает питание датчиков и подтяжки. Время активной фазы, в которой производятся замеры, во много раз меньше интервала между замерами (в 50..5000 раз, в зависимости от установленых параметров задержки перед замером и интервала между замерами).

На каналах A и B устройство может принимать не только цифровой сигнал (высокий/низкий уровень), но и аналоговый, который преобразовывается самим устройством в сигнал с двумя состояниями. Алгоритм преобразования следующий: аналоговое значение уровня с канала A или B преобразовывается в 8-ми битное цифровое значение, затем это промежуточное значение сравнивается с порогами (threshold) и преобразовывается в двухуровневое - высокий/низкий уровень.

Threshold falling используется как порог для перехода с высокого уровня в низкий (если значение становится меньше или равно порогу). Threshold rising используется как порог для перехода с низкого уровня в высокий (если значение становится больше или равно порогу). Разница между threshold rising и threshold falling создает гистерезис, необходимый для устранения эффекта "дребезга".

Ограничения

На любых выводах устройства нельзя допускать напряжения больше 5.5В или меньше -0.5В относительно GND. Выводы DQ и VCC имеют защиту от импульсных скачков напряжения (до нескольких киловольт в течение нескольких микросекунд), выводы для датчиков не имеют никакой защиты.

Устройство работает со стандартным напряжением интерфейса 1-wire 4.5 .. 5.5В, при более низком напряжении (примерно ниже 4.3В) устройство считает, что интерфейс 1-wire не подключен, и не отвечает на запросы.

Устройство рассчитано на работу с батареей CR2032 с напряжением 2.8 .. 3.7В.

Устройство может напрямую работать с аналоговыми датчиками с выходным сопротивлением до 100 кОм.

Продолжительность задержки перед замером уровня с датчиков может варьироваться от одного замера к другому, гарантируется время задержки не менее установленного значения, а превышение установленного значения не более, чем на 50мкс. Это необходимо учитывать, если за установленное время задержки переходные процессы не завершены полностью.

Минимальный настраиваемый интервал между замерами уровня с датчиков составляет 19 мсек, устройство может гарантировано детектировать только импульсы, превышающие по длительности эту величину.

Выход PWR для питания датчиков может обеспечить ток до 100мкА, выход B в режиме "pulse on, swap B & PWR" - до 10мА.

Параметры задержка перед замером, интервал между замерами и режим питания датчиков - являются общими для каналов A и B, их нельзя установить отдельно для каждого канала.

Конфигурирование устройства

Доступ ко всем конфигурационным параметрам и значениям счетчиков производится путем обращения к странице памяти 1-wire устройства.

Для удобства можно использовать web-интерфейс, который работает со страницей памяти и является посредником для доступа к параметрам. Для доступа через web-интерфейс должен быть запущен процесс owhttpd, который может работать с мастером шины 1-wire либо напрямую, либо обращаясь к owserver.

На странице web-интерфейса необходимо ввести IP-адрес и порт, на котором работает owhttpd, после ввода отобразится список идентификаторов всех найденных на шине 1-wire устройств. При переходе к выбранному устройству отобразится страница с его текущими параметрами.

После изменения параметров на странице, их необходимо сохранить на устройство (кнопка Save), после изменения значений счетчиков их также необходимо сохранить на устройство (кнопка Update), раздельное сохранение сделано для того, чтобы сохранение параметров не сбивало ход счетчиков. Кнопка Перечитать (Reload) читает текущую конфигурацию с устройства и обновляет информацию на странице. Если была выбрана опция непрерывно (continuous), обновление будет происходить в цикле, пока опция не будет отключена.

Краткое описание параметров:

Подключение и настройка датчика

Внешние устройства, подключаемые к каналам A или B, по отношению к устройству являются датчиками.

Датчики подключаются к выводам устройства: GND - земля, A или B - положительный сигнал с датчика, PWR - питание датчика (опционально).

Для датчика, который сам создает на выходе уровень напряжения (выход push-pull или встроенная подтяжка в датчике), параметр подтяжка (pullup) рекомендуется отключить. Для датчика, который только изменяет свою проводимость (резистивный, NAMUR, выход сухой контакт или открытый коллектор), параметр подтяжка (pullup) необходимо включить.

Выход PWR может использоваться для питания одного из датчиков или для обоих одновременно. Выход PWR можно настроить на постоянное питание датчика (always on), включение питания только перед замером и отключение после замера (pulse on), или отключить (off). Еще один режим питания (pulse on, swap B & PWR) используется, если для питания необходим больший ток (от 100мкА до 10мА), в данном режиме датчики подключаются иначе: положительный сигнал с датчиков подключается к выводам A (канал A) и PWR (канал B), а питание датчиков к выводу B.

Промежуток времени (задержку) между подключением подтяжки и/или включенинием питания датчиков (в режиме pulse on) до замера необходимо установить как можно меньше, но не менее, чем требуется датчику (или самому медленному из двух датчиков) для включения и формирования уровня на выходе, согласно его технической документации.

Для датчика, который выдает цифровой сигнал, параметр threshold rising необходимо установить меньше или равным threshold falling (например оба параметра установить в 0). Для датчика, который выдает аналоговый сигнал, параметр threshold rising необходимо установить больше, чем параметр threshold falling, значения параметров необходимо определить по Алгоритму нахождения порогов.

Величину интервала между замерами необходимо установить меньше, чем самая минимальная ожидаемя длительность импульсов высокого или низкого уровня по каналам A или B.

После выполнения всех перечисленных настроек, датчик готов к работе, необходимо убедиться, что режим измерений отключен, выбрать, по какому фронту инкрементировать счетчики и установить начальные значения счетчиков.

Режим измерений

В режиме измерений накапливается статистика: минимум и максимум (min, max) промежуточного 8-ми битного значения уровня (если включен режим работы с аналоговым датчиком: threshold rising > threshold falling, иначе эти значения будут неопределенными), а также количество замеров (samples).

В статистику попадают только замеры, одновременно удовлетворяющие условиям фильтра: канал - A/B, текущее значение уровня - высокий/низкий, текущий режим питания - от внешнего источника/батареи.

Замеры min/max служат для нахождения порогов (см. Алгоритм нахождения порогов), а количество замеров используется для определения средней продолжительности имульсов заданного уровня (количество замеров деленное на количество импульсов и умноженное на интервал между замерами), которая необходима для настройки параметра интервал между замерами.

Статистику можно обнулить в любой момент, после чего накопление статистики продолжается.

В режиме измерений используются по 16 старших бит регистров счетчиков A и B, в которых при выходе из режима измерений остаются неопределенные значения.

Алгоритм нахождения порогов

Для выполнения алгоритма необходимо, чтобы уже было выполнено:

Алгоритм:

  1. установить threshold falling = 0, threshold rising = 1 для канала датчика, установить режим измерений high @ Ext pwr и обнулить статистику, через некоторое время сбора статистики будет известен диапазон изменений (min и max) уровня с датчика (рис.1, на рисунке серым обозначено изменение во времени уровня с датчика с учетом флуктуаций, зелеными линиями - моменты замеров, точками - результаты замеров, синяя и красная линии - установленные значения threshold), искомые значения threshold должны будут находиться в пределах min и max;
  2. подобрать и установить threshold falling и на единицу больший threshold rising, собрать статистику для режимов high @ Ext pwr и low @ Ext pwr, повторить пункт 2, пока между min high @ Ext pwr и max low @ Ext pwr не будет найден большой скачок (рис. 2,3,4, на рисунке красной и синей стрелками обозначены диапазоны min/max для high @ Ext pwr и low @ Ext pwr соответственно);



  3. повторить алгоритм из п.2 для соответствующих режимов @ Bat pwr (в этих режимах для активации сбора статистики необходимо отключать питание по линиям VCC и DQ);
  4. используя результаты п.п.2,3 найти min(min high @ Ext pwr, min high @ Bat pwr) и max(max low @ Ext pwr, max low @ Bat pwr), установить threshold falling и threshold rising в 1/3 и 2/3 найденного диапазона (рис.5).

Проблемы и их решение

При паразитном питании от линии данных DQ падает напряжение на DQ ниже 4.5В и устройство перестает отвечать на запросы.
Решения:

Необходимо питать устройство только от линии VCC или DQ без использования батареи.
Решение:

Принципиальная схема устройства

Размеры устройства

Единицы измерения - миллиметры
Символмин.ном.макс.
A13.7
A17.8
B36.136.3
C20.821.0
D1.61.7
H115.24
H230.48
d3.03.1
a1.8