roboforum.ru

Технический форум по робототехнике.

Как узнать, есть ли потребитель на пине у платы или нет?

Как узнать, есть ли потребитель на пине у платы или нет?

MIHAnik22 » 14 мар 2016, 22:34

Задача в чем? Есть светодиод и фотоэлемент в одном корпусе. Плюсы у них приходят отдельно а вот минус общий. Как узнать замкнул ли фотоэлемент цепь или нет? То есть я питаю фотоэлемент с пина 1 к примеру. Если фотоэлемент засвечен то он замыкает цепь. Как узнать замкнута цепь или нет? Или может надо с другого боку подходить?
Вложения
IMG_20160314_205433[1].jpg

Re: Как узнать, есть ли потребитель на пине у платы или нет?

ilalexey » 14 мар 2016, 22:53

Написать скетч? Если открыт - отправить в юарт 1, если нет то 0 отправлять.

Re: Как узнать, есть ли потребитель на пине у платы или нет?

MIHAnik22 » 14 мар 2016, 23:00

ilalexey, Открыт пин? а как узнать открыт или нет? какие команды используют?

Re: Как узнать, есть ли потребитель на пине у платы или нет?

ilalexey » 14 мар 2016, 23:10

HIGH и LOW наверно(digitalRead).
Может лед диод посадить для визуальной оценки?

Re: Как узнать, есть ли потребитель на пине у платы или нет?

MIHAnik22 » 14 мар 2016, 23:27

ilalexey, так вот в чем дело то. Ставлю пин 1 как output чтобы питать (пока возьмем) свето диод. Он горит. Но читать пин не могу, потому что он установлен как output. А если поставить Input и подавать digitalWrite (HIGH) то это немного не правильно, или так делают?

Добавлено спустя 5 минут 51 секунду:
попробовал сдлать пин как Input и подал на него HIGH. интерестный эффект. Когда есть потребитель(Светодиод) то напряжение на пине низкое. Контрольный лэд не горит. Но если потребителя нет, то лэд загорается. Это нормальная структура? ничего страшного что пин настроен на Input?

Код: Выделить всёРазвернуть
  digitalWrite(chk, HIGH);
  if(digitalRead(chk)==HIGH){
    digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  }else{
    digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  }

Re: Как узнать, есть ли потребитель на пине у платы или нет?

ilalexey » 14 мар 2016, 23:33

"светодиод и фотоэлемент в одном корпусе" = "щелевая оптопара"
Не уверен в сути твоей затеи, но этот элемент специально придумали, чтобы разделить одно от другого. Зачем тебе одной ногой и читать и писать?
На излучающий диод повесь питание на пмж, а другую сторону воткни на пин и читай его.

Re: Как узнать, есть ли потребитель на пине у платы или нет?

MIHAnik22 » 14 мар 2016, 23:53

ilalexey, то есть если я правильно понял, то диод излучая засветит фотоэлемент и на его ноге появится сигнал, так?

Re: Как узнать, есть ли потребитель на пине у платы или нет?

lorry » 14 мар 2016, 23:59

Судя по фотографии это оптический энкодер. В его состав входит обычная оптопара светодиод-фотодиод. Совершенно не понятно зачем вы пытаетесь светодиод питать от контроллера? Подключите светодиод через сопротивление 100Ом-1кОм к +5В. Фотодиод соедините так же через сопротивление 1кОм на +5В, общую точку сопротивление-фотодиод подключайте к нужному выводу МК, вывод настройте на ввод, и командой digitalRead() читайте состояние пина, только имейте ввиду, что импульсы будут инверсные. Но т.к. у вас энкодер, то в этом случае рекомендуется использовать программные прерывания, иначе имеется большая вероятность потерь импульсов.
Схема должна быть такой:
Безымянный.jpg

Re: Как узнать, есть ли потребитель на пине у платы или нет?

MIHAnik22 » 15 мар 2016, 00:26

lori, меня не правильно поняли) Я про светодиод говорил, про обычный. Не про тот что в энкодере, а про простой тестовый. Ну вот по схеме попробую соединить. А инверсные импульсы, это то есть с отрицательным знаком? Есть особенность в считывании импульсов такого типа?

Re: Как узнать, есть ли потребитель на пине у платы или нет?

lorry » 15 мар 2016, 00:40

Нет не с отрицательным, в вашем случае будет так: если светодиод освещает фотодиод, то считываться будет логический 0, если засветки нет то 1.

Re: Как узнать, есть ли потребитель на пине у платы или нет?

Scorpio » 15 мар 2016, 00:41

MIHAnik22 писал(а):попробовал сдлать пин как Input и подал на него HIGH

Пин остается входом, но при записи в него HIGH к нему подключается подтягивающий резистор (через него может гореть светодиод). При LOW он просто висит в воздухе.

Re: Как узнать, есть ли потребитель на пине у платы или нет?

MIHAnik22 » 15 мар 2016, 00:48

Scorpio, благодарю, теперь понятно!)

lori, все пойду пробовать)

Re: Как узнать, есть ли потребитель на пине у платы или нет?

lorry » 15 мар 2016, 01:11

MIHAnik22 писал(а):Scorpio, благодарю, теперь понятно!)

lori, все пойду пробовать)

Удачи!!! :D

Re: Как узнать, есть ли потребитель на пине у платы или нет?

ilalexey » 15 мар 2016, 11:02

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

Re: Как узнать, есть ли потребитель на пине у платы или нет?

MIHAnik22 » 15 мар 2016, 11:07

Класс! все считал как хотел! вот загвоздка только в понятии направлении вращения диска с прорезями. Я знаю как можно определить направление вращение диска, но напряжение которое я считываю очень малое меньше 1 в аналоговом исчислении, можно ли как то усилить настолько слабый сигнал?

ilalexey, оп. Да лан, что обижатся то?) Ну тебе тоже благодарность)) За Желание)


Rambler\'s Top100 Mail.ru counter