Доброго времени суток!
Уже какой день бьюсь - никак не могу решить следующую проблему:
Развёл плату с расширителями портов MCP23017.
Сигнал на входы MCP23017 поступает с оптопар (сделано для опторазвязки). Скетч-пример такой:
02 | #include "Adafruit_MCP23017.h" |
09 | mcp.pinMode(0, INPUT_PULLUP); |
17 | if (mcp.digitalRead(0) == HIGH){ |
Протестил - сигнал не приходит. Если отключить pullup - сигнал приходит, но начинаются глюки (после снятия сигнала, он может ещё долго висеть на ноге). Если подать 5 вольт напрямую, в обход оптопары, всё работает прекрасно, даже с pullup'ом. Измерил ток сигнала - он 59 мА!!! Как так? Пулап-резистор, встроенный в MCP23017 ведь 100 кОм.
Оптопара рабочая, хорошая (MOCD207). Но ей просто не хватает мощности. Вопрос собственно такой - что за магия такая?)) Откуда при включении пуллапов берутся 59 мА в цепи сигнала?
Вы схему то полностью, полностью рисуйте.
Да собственно всё нарисовано. На микруху подано питание. Микруха подключена по шине I2C к ардуине. Оптопару в расчёт не берём. Подаём на ногу GPA0 5 вольт. Нога потребляет 60 мА с пуллап-резистором (внутренним). Конечно, надо было развести плату с внешними резисторами. Но уже что поделать...
Ничего не нарисовано. Где оптопара, где течёт 59 милиампер, откуда и куда 5 вольт? Как масса разведена? Обвязку питания полностью нарисуйте, потом вопросы задавайте. А то окажется, что у вас где-то там ещё и 12 вольт есть или больше.. Зачем иначе опторазвязка.
Прошу прощения, сейчас с телефона постю. 59 мА течёт где нарисован амперметр - "А". 5 вольт подаю на ногу GPA0, через амперметр. Изначально 5 вольт шло через оптопару. Сейчас она отключена - она не меняет суть дела. Важно то, что при подаче сигнала на микросхему, идёт потребление 59 мА.
Нога потребляет 60 мА с пуллап-резистором (внутренним). Конечно, надо было развести плату с внешними резисторами. Но уже что поделать...
Выходит 0,3Вт на корпус. Он горячий через пару минут или нет?
Так о чём и речь. Автор что-то скрывает.
Корпус холодный. 0.3 Вт на такой корпус это не много. Площадь довольно большая. Сигнал подавал на разные ноги поочерёдно ( сразу на все не стал). - везде эти самые 59мА. Скрывать мне нечего. Мне нужна истина )))
В брак микрухи верится с трудом. Да, тесты проводил только на одной. Ладно, понимаю, что информации мало. Буду дома - отключу внутренние пуллапы и припаяю внешний на 10кОм. Посмотрим...
_------_
Да. Сигнал подавал кратковременно. На секунд 5-10. Микруха за это время нагреться не успела бы.
Это почти половина от максимально допустимой - 700mW, греться должен весьма активно. И ток у нее выходной - 25мА, в два с лишним раза ниже заявленного вами входного. Что-то здесь не так. Или схему криво собрали, или перемаркировка, или еще 100500.
На просторах интернета нашёл следующую схему (аналог моей):
Тут ноги MCP23017 подтянуты к 5 вольт через 1 кОм. Почему не к земле? Отличие этой схемы от моей только в подтяжке килоомниками к земле.
Да собственно всё нарисовано. На микруху подано питание. Микруха подключена по шине I2C к ардуине. Оптопару в расчёт не берём. Подаём на ногу GPA0 5 вольт. Нога потребляет 60 мА с пуллап-резистором (внутренним). Конечно, надо было развести плату с внешними резисторами. Но уже что поделать...
Так все верно - вы делаете кз на микросхеме. PullUp - резистор к VCC, PullDown - резистор к VSS (GND). Чувствуете разницу? У вас нормально высокий уровень на ноге и низкий при замыкании кнопки должен быть.
зы. Сам использую только внешние подтяжки - так нагляднее. Или рисуйте функциональную схему если используете внутренние возможности чипов.
чОрт. Плата уже вытравлена. Буду навешивать 10-и килоомные резисторы и тянуть на землю. По-другому никак. Спасибо!
Сделал такой костыль, поверх своей платы. - Притянул входные каналы к земле через 10 кОм резисторы. Теперь всё работает. Благодарю за помощь!