Свежие обсуждения
Консультации

Проверить энкодер ЛИР-158

1 2 4

Vladikas: Подскажет кто, в мышиных колёсах такой же принцип? Синус и косинус?
Да, именно так, 2-фазный код со сдвигом на 90 градусов.
Возможна такая проверялка: на 2-х триггерах делается преобразователь 2-фазного сигнала в направление. Далее варганится реверсивный счётчик ёмкостью в полный оборот датчика (или более) с индикацией, и на его счётные входы подаётся сигнал с одного из выходов датчика А или Б, причём изготовленный сигнал направления должен управлять направлением счёта. Ещё на двух триггерах - простейший автомат типа "по первому импульсу - разрешение счёта, по второму - запрет", срабатывающий от R. К всему этому хозяйству подключается датчик и проворачивается не менее чем на 1 оборот. Если покажет 1024 (или сколько там) - всё ОК, а нет - так нет.
Кто умеет МК, тот всё это может сляпать на одном корпусе. Помню, в статье А Долгого был фрагмент программы для распознавания направления счёта при 2-фазном входном сигнале - типа того, что с мышиных датчиков.

 

Дело в том, что прогу я написал. На асе. На бумаге - всё должно быть идеально, а реально - на всех датчиках (штук пять проверял, в том числе ВЕ, старинный аналог ЛИР) показывает ошибку. Ну типа не все импульсы на месте. Подсчёт импульсов не реализовывал, просто порядок следования синусов и косинусов отслеживаю. Направление переключаю вручную, так код проще.

Принцип в двух словах такой.

Разрешение прерываний по фронту RA. Там висит референсный импульс датчика (ноль метка). То есть первоначально прога запускается от ноль метки.
Состояние всех выводов ЛИР в буфер (с ним потом и работаем).
Проверка всех выводов. То есть сравнение с предварительно записанной комбинацией, которая должна быть при ноль метке.
Всё совпало - выход из прерывания. Нет - ошибка. Вычисление идёт в прерывании. Не больше 10 МЦ.
Вход в прерывание по изменению состояния RA4-RA7. Это синус, косинус, не_синус, не_косинус.
Сравнение со значением из таблицы. Совпало - выход из прерывания, нет - сигнал ошибки.
И так далее. Всего возможно 5 состояний. Одно из них, это плюс ноль метка, а так всего четыре варианта.

Прога вроде работает (в железе имею ввиду), но ни к селу, ни к городу выдаёт ошибки, хотя считывает в буфер правильные значения (я их вывожу на светодиоды). Думал импульсов слишком много с датчика (2500 на оборот), так поставил штурвальчик на 100 импульсов - толку ноль.

Пытался разобраться с продвинутыми стимулами в MPLAB, но так и не допёр как оно работает. Хотел зациклить прогу чтоб она как бы с датчиком работала, а то вручную нажимал "фаир" на каждом выводе. Не очень удобно...

Такие дела. Сейчас эта хрень в стадии заталкивания под стол...

 

Vladikas: Вход в прерывание по изменению состояния RA4-RA7.
наверно RB4-RB7?
Vladikas: Такие дела. Сейчас эта хрень в стадии заталкивания под стол...
в Протеус её...

 

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

 

Vladikas: Сейчас эта хрень в стадии заталкивания под стол...
Провожу процедуру вытаскивания из под стола
В связи с этим вопрос. Как считать импульсы на ноге PICа? Задействовать прерывание (по какому событию?) или просто циклически опрашивать ногу пика, а изменение прибавлять к счётчику?
Буду реализовывать алгоритм, который Спец предложил.

 

Vladikas: Задействовать прерывание (по какому событию?)
Можно по всякому, у меня счётчик сидит на внешнем прерывании c RB0/INT...

 

По смене состояния или по фронту?

 

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

 

Немного не в тему, но пока здесь все специалисты по измерительно-индикаторным системам собрались-никто парой комплектных (!!) сельсинов не богат? В смысле индикатор-генератор. А то тут ПВГ мне помог поворотным устройством разжиться для антенны, теперь бы индикатор угла поворота сделать.... На резисторах и ВЕ не предлагать, одни нестойки, другие не дают начальную точку...

 

ВЕ даёт начальную точку...