Подключение абсолютного энкодера
- Войдите на сайт для отправки комментариев
Пт, 19/10/2012 - 08:21
Добрый день.
Стоит задача подключить 2 абсолютных энкодера к ардуино Мега. Думал никаких проблем не будет, просто воткну энкодер в цифровые входы и буду читать состояние. Но не тут то было, не хочет так работать :(
Работает в том случае, когда выход энкодера подключен через резистор (и светодиод) к +5В. Но не охота городить по 10 резисторов на каждый энкодер :(
Возможно ли что-то сделать в этом случае, чтобы работало без резисторов и желательно подключить энкодер напрямую к ардуине, а не через доп.платы.
P.S. Выходы на энкодере NPN.
Ссылка на иструкцию
http://www.prst.ru/catalog/EP50S8_rus.pdf
Какие проблеммы? Просто включите подтягивающие резисторы в контроллере.
Как их включить?
Нашел в инструкции
pinMode( pinEncoder1 [ i ] , INPUT);
digitalWrite(pinEncoder1 [ i ], <уровень>);
Попробовал и LOW и HIGH. Результата нет, видимо придется через резисторы все делать.
Так, а какая разница внешний резистор или внутрений?
Если с внешним работает, а с внутреним - нет, то либо у вас подтяжка, все-таки, не питанию, а к земле (внутрение только к питанию умеют тянуть), либо внутренний 20k "слишком сильно", либо подключаете "как-то не так", либо с кодом "что-то не то творите".
А вообще - попробуйте по форуму поискать. Несколько недель назад, как раз была длинная ветка про энкодеры (и логичней там было спрашивать, а не новую сосзадавать).
Там, в итоге и скетчи есть. Работающие. Которые как раз с помощью внутреннего резистора и работают (по крайней мере у меня).
>Попробовал и LOW и HIGH.
А можно было просто прочитать доку на digitalWrite() или просто про входы почитать: Цифровые выводы
Тогда гадать, что там нужно LOW или HIGH - не пришлось-бы.
Если вы не ошиблись и у вас именно выход NPN, то все должно работать с внутренней подтяжкой, если конечно у диода обратное сопротивление не меньше, скажем, 50 кОм. Вы внешние резисторы какого номинала подключаете?
Попробуйте померить сопротивление между 0V и Выход, причем так что бы измерить обратное сопротивление диода.
И покажите ваш код.
И если у Вас среда версии 1.0, то можно пользоваться
Так, а какая разница внешний резистор или внутрений?
Если с внешним работает, а с внутреним - нет, то либо у вас подтяжка, все-таки, не питанию, а к земле (внутрение только к питанию умеют тянуть), либо внутренний 20k "слишком сильно", либо подключаете "как-то не так", либо с кодом "что-то не то творите".
Подтяжка идет к +5В. Внешние резисторы поставил 1КОм.
Сейчас код читает состояние одного выхода с энкодера и зажигает/гасит светодиод. С внешними резисторами все работет, с внутренними нет. Как бы в коде ошибится тут трудно, добавив строчку digitalWrite(pin, HIGH);
А вообще - попробуйте по форуму поискать. Несколько недель назад, как раз была длинная ветка про энкодеры (и логичней там было спрашивать, а не новую сосзадавать).
Там, в итоге и скетчи есть. Работающие. Которые как раз с помощью внутреннего резистора и работают (по крайней мере у меня).
Беглый поиск нашел только инкрементальные энкодеры :( поищу потщательней.
>Попробовал и LOW и HIGH.
А можно было просто прочитать доку на digitalWrite() или просто про входы почитать: Цифровые выводы
Тогда гадать, что там нужно LOW или HIGH - не пришлось-бы.
Инструкцию читал, про LOW это я уже сам придумал :)
Если вы не ошиблись и у вас именно выход NPN, то все должно работать с внутренней подтяжкой, если конечно у диода обратное сопротивление не меньше, скажем, 50 кОм. Вы внешние резисторы какого номинала подключаете?
Попробуйте померить сопротивление между 0V и Выход, причем так что бы измерить обратное сопротивление диода.
И покажите ваш код.
В финальной схеме светодиода нет (он был в отладочных целях подключен), т.е. остаются одни резисторы. Внешние резисторы 1КОм.
Это вы с чего взяли, что диода (не светодиода, а именно диода) там нет??? Вы энкодер разбирали? На схеме четко нарисован диод, защищающий транзистор, который находится внутри энкодера, на схему еще раз посмотрите. И еще раз повторюсь нужно померить сопротивление между 0V и Выход, причем так что бы измерить обратное сопротивление диода и во время измерений отключите внешние резисторы.
Я подумал вы про светодиод говорили, про который я в первом посте говорил. Про устройство энкодера я вообще ничего не говорил!
На пределе. Не знаю уж по какой причине, но почемуто точного номинала внутренних подтягивающих резисторов нет, поэтому померийте его, для этого нужно включить подтяжку на одном из выводов дуины и померить сопротивление между ним и +5V, при этом учитывать, что тут сопротивление тоже имеет "полярносять".
А 56 кОм куда пропали?
Мерял без питания энкодера - сопротивление 1.5 МОм.
С питанием 56КОм.
Ну если 1.5 МОм, то должно работать с внутренней подтяжкой. Покажите код.
На пределе. Не знаю уж по какой причине, но почемуто точного номинала внутренних подтягивающих резисторов нет, поэтому померийте его, для этого нужно включить подтяжку на одном из выводов дуины и померить сопротивление между ним и +5V, при этом учитывать, что тут сопротивление тоже имеет "полярносять".
Померял - в одну стороноу 40 кОм, в другую 33 кОм.
Наиболее информативно будет измерить напряжение на входе при включенном внутреннем и отключенном внешнем подтягивающем резисторе соответственно при 2х состояниях выхода энкодера. Чтобы транзисторы так сильно "текли" я с советстких времен не встречал (был транзистор П210 - тёк страшно...).
По-идее оно ДОЛЖНО работать с внутренней подтяжкой, если там на выходе действительно открытый коллектор, нет никаких обратных связей и т.д.
"Текли" транзисторы - это хорошо или плохо? :))
Раз не заработало с внутренними подтягивающими резисторами, спаял на монтажной плате 20 штук резисторов для обоих энкодеров.
Чего же хорошего? Ты его закрываешь, а он не закрывается. Это как текущий кран!
Я гдето потерял нить рассуждений. Про какие транзисторы идет речь?
Текли советские мощные транзисторы П210. Ну и П214 тоже текли, хоть и меньше.
Все это к тому, что на выходе ток куда-то утекает, не обязательно через транзистор, но это приводит к тому, что подтягивающих резисторов внутри процессора нехватает и приходится ставить внешнюю подтяжку.
Все, понял :)
Как бы узнать, почему ток утекает. Может у меня не настоящая ардуино, и там ченить китайцы намудрили? :(