FLProg
Вход на сайт
Логин:
Пароль:
Поиск
...
Статистика
Понедельник, 11.12.2017, 12:19
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: support, Сергей, Anydy, Олег 
Форум » Основной » Железо - контроллеры, шилды, датчики и др. » Прочие датчики и энкодеры » Аппаратный квадратурный счётчик в Arduino Due
Аппаратный квадратурный счётчик в Arduino Due
eugeneb Дата: Четверг, 30.11.2017, 10:24 | Сообщение # 1
Подполковник
Группа: Проверенные
Сообщений: 218
Награды: 4
Репутация: 1
Статус: Offline
Обнаружил, что в Arduino Due можно организовать аппаратный квадратурный декодер со счётчиком.
Наваял пользовательский блок.
http://flprog.ru/load....1-0-365

Параметров нет. Просто читаешь значение счётчика.

Из описания блока:
=============================================
Блок квадратурного счётчика. Только для 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....483.pdf

Прикрепления: 8481637.png(2Kb)


Сообщение отредактировал eugeneb - Понедельник, 04.12.2017, 20:28
 
AVGN Дата: Четверг, 30.11.2017, 11:47 | Сообщение # 2
Полковник
Группа: Проверенные
Сообщений: 341
Награды: 4
Репутация: 6
Статус: Offline
eugeneb, есть возможность чиркнуть пару строчек? -пример применения на практике вашего труда.

Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн
 
eugeneb Дата: Четверг, 30.11.2017, 16:25 | Сообщение # 3
Подполковник
Группа: Проверенные
Сообщений: 218
Награды: 4
Репутация: 1
Статус: Offline
Практики пока нет, только лабораторные опыты. Общую идею использования блока в FLProg можно понять из прикрепления в предыдущем посте. Завтра с работы смогу показать получаемые цифирки. 

Пока неясна помехоустойчивость этой фичи. Но с ручным энкодером уже можно применять.

Завтра дам больше информации.
 
eugeneb Дата: Понедельник, 04.12.2017, 15:36 | Сообщение # 4
Подполковник
Группа: Проверенные
Сообщений: 218
Награды: 4
Репутация: 1
Статус: Offline
Обещанная инфа.

Играюсь вот с таким мотором:
Это 12-вольтовый ДПТ с магнитным энкодером (CPR=3). Платка внизу - это простейший H-мост. Никакого контроля тока. (Что уже не позволяет организовать качественное управление. Но, другого пока нет).
Пытаюсь сделать сервопетлю на Ардуино. Взял Due, потому что в ней у процессора частота 84МГц.
Сразу встал вопрос о квадратурном декодере для обратной связи. Сочинил программный:
Получилось очень плохо. Он ловит все помехи и показания счётчиков UP и DOWN очень быстро начинают расходиться.
И тут я случайно обнаружил, что у Due таймеры имеют режим квадратурного декодирования. Так и родился этот пользовательский блок. Вот он в проекте FLProg:

Вот вывод блока:

Слева знаковый выход, справа - беззнаковый. Вал кручу вручную.

Добавлено (04.12.2017, 15:36)
---------------------------------------------
Обновил версию до v0.3
Добавлен выход DIR.

Прикрепления: 2561651.jpg(271Kb) · 4240364.png(38Kb) · 5620236.png(7Kb) · 3715266.png(9Kb)


Сообщение отредактировал eugeneb - Пятница, 01.12.2017, 09:15
 
vovka1973 Дата: Воскресенье, Вчера, 09:00 | Сообщение # 5
Подполковник
Группа: Проверенные
Сообщений: 234
Награды: 2
Репутация: 1
Статус: Offline
Цитата eugeneb ()
Обновил версию до v0.3Добавлен выход DIR.
объясните для чего он и что дает ,ведь есть блок енкодер ,просто чтоб не было помех использую опторазвязку


 
Форум » Основной » Железо - контроллеры, шилды, датчики и др. » Прочие датчики и энкодеры » Аппаратный квадратурный счётчик в Arduino Due
Страница 1 из 11
Поиск:

FLProg © 2017
Яндекс.Метрика