FLProg: Счетчики

Альтернативные счётчики

13.01.2019 от Анатолий

Альтернатива штатному счётчику и блок с увеличение и уменьшением значений до установленного предела.

Скачать

Тахометр

13.01.2019 от Анатолий

Измерение скорости вращения путём измерения интервала между импульсами ( один импульс на оборот). Используется прерывание, то есть на УНО и других платах на основе 328х можно использовать два блока, на Мега шесть.
В отличии от способа с подсчётом количества импульсов за единицу времени, позволяет получить большее разрешение на малой скорости вращения без увеличения разрешения датчика (количества импульсов на оборот). Измерение происходит при изменении входного сигнала с низкого уровня на высокий. Обновление значения происходит с каждым оборотом, в случае остановки вращения значение обнулится через определённое время, которое зависит от минимальной установленной скорости (задаётся в параметрах пользователя).
В параметрах пользователя необходимо указать минимальную измеряемую скорость. От этого зависит, сколько времени после остановки вращения будет сохранятся последнее измеренное значение.
Только для контроллеров AVR. В наборе шесть блоков, по одному на каждое прерывание. В названии блока указан пин для подключения датчика, специально указывать пин и номер прерывания не требуется. Необходимо обеспечить внешнюю подтяжку для входа (неважно к плюсу или минусу).

Скачать

Счетчик CTDU+

03.02.2018 от Сергей Глушенко

Попытался доработать счетчик CTDU из базового набора.

Теперь можно задать максимальное и минимальное значения для выдачи сигнала
Формат — integer
C — импульсы, которые надо подсчитывать
UD — направление счета 1 — вверх, 0 — вниз
Otschet — начальная точка отсчета
SP — разрешение записи точки отсчета.
MAX — точка выдачи верхнего сигнала
MIN — точка выдачи нижнего сигнала
RES — сброс отсчета (возврат к начальной точке отсчета)
V — кол-во импульсов
bL — больше или равно MAX
mL — меньше MIN

Скачать

Простой блок увеличение или уменьшения

03.02.2018 от Сергей Глушенко

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

Полное описание;
Прибавить или уменьшить регулируется входом + —
Вход (+++) нажимая кнопку прибавляем.
Вход (—) нажимая кнопку убавляем.
В общем более разжевано, вешаем две кнопки, одну на (+++) другую на (—) первой увеличеваем второй уменьшаем.
При удержание сигнала на входе (+++ или —) счет будет увеличиватся или уменьшатся, допустим Вы повесили на вход кнопку и чтобы не тыкать на пример 100 раз а просто нажали и держите.
Вход (число) указываем цифрами до куда вести счет.
Вот и все.

Скачать

5 комментариев к “Простой блок увеличение или уменьшения”

  1. konstantin_tkachenkoздравствуйте нужен блок который будет принимать аналоговые сигналы и передавать их на выходы при наличии лог 1 на двух входах En, при пропадании одной 1 блок остановится на полученных значениях,  и будет передавать их, при пропадании второй 1 блок прекратит работу и перестанет выводить значения.
  2. oleg721Не знаю как предложить свой блок       https://yadi.sk/d/_oedo6uT4gverg
  3. Срочно пришлось создать блок энкодера с верхним и нижним пределом + коэффициент шага.Предложенные не подошли.
  4. anvik06Создаю простой скетч в версии 251 (может можно и в другой, но более старой), а потом открываю его в 424. И не сбрасывает.
  5. VAK52Здравствуйте . почему блок regyl_(FBD) при  компиляции сбрасывает программу.

Аппаратный квадратурный счётчик в Arduino Due

02.02.2018 от Сергей Глушенко

В Arduino Due можно организовать аппаратный квадратурный декодер со счётчиком.
Текущая версия пользовательского блока — v0.31
Параметров нет. Просто читаешь значение счётчика.

Из описания блока:
=============================================
Версия 0.31 — исправлено получение сигнала DIR
Версия 0.3 — введён выход направления вращения, изменена Лейбла блока на QDEC
Версия 0.2 — введён второй выход — беззнаковый
Версия 0.1 — начальная

Блок квадратурного счётчика. Только для Arduino Due!
Конфигурирует аппаратные таймеры как квадратурный счётчик — реверсивный 32-разрядный беззнаковый.

Физические квадратурные сигналы от энкодера A и B подаются на входы 2 и 13 Arduino Due.
Номера входов заданы аппаратно и изменить их нельзя.

Счётчик считает число фронтов и спадов обоих квадратурных сигналов — четыре на период.
То есть, если у вашего энкодера три периода на оборот(CPR=3), то счётчик насчитает 12 за оборот(PPR=12).

Текущее подсчитанное значение выдаётся по двум выходам.
На выходе QU значение Unsigned Long Integer 0 до 4294967295.
На выходе QS значение Long Integer от -2 147 483 647 до 2 147 483 647.
Начальное значение на обоих выходах — 0. Изменить нельзя.
Также выход DIR (Boolean) показывает текущее направление вращения.

Материалы для ознакомления:
http://forum.arduino.cc/index.php?topic=140205.75
http://www.atmel.com/Images/Atmel-42706-Quadrature-Decoder-QDEC-for-SAM3-4-Devices_ApplicationNote_AT11483.pdf

Скачать

Альтернативные счётчики

02.02.2018 от Сергей Глушенко

Заметил что в штатном счётчике многим не хватает возможности обнуления при достижение нужного значения.
В архиве два блока.

—Счётчик—

Входы:
step: При переходе с «0» в «1» происходит изменение значения счётчика на число поданное на вход «Step_val»
dir: Направление (1: увеличение; 0: уменьшение)
U_res: Верхнее значение при пересечение которого счётчик сбросится в «0»
D_res: Нижнее значение при пересечение которого счётчик сбросится в «0»
val: Устанавливаемое значение при «1» на входе «Set_val»
Set_val: Установить значение счётчика равным значению на входе «val»

Выходы:
out: Значение счётчика
res_U: Импульс в один цикл при достижение верхнего предела
res_D:Импульс в один цикл при достижение нижнего предела

—Level—

Входы:

Max: Максимальное значение на выходе «out»
Up: Увеличить на число с входа «change_val»
Down: Уменьшить на число с входа «change_val»
Min: Минимальное значение на выходе «out»
Set_level: Установить значение на выходе «out» равным значению на входе «level»

Выходы:
out: Результат
lim_max: Импульс при попытке перейти через максимальный предел
lim_min: Импульс при попытке перейти через минимальный предел

Если что нужно добавить пишите.

Скачать