MCP23017 input - проблема

Fefe
Offline
Зарегистрирован: 08.02.2019

Доброго времени суток!

Уже какой день бьюсь - никак не могу решить следующую проблему:

Развёл плату с расширителями портов MCP23017.

Сигнал на входы MCP23017 поступает с оптопар (сделано для опторазвязки). Скетч-пример такой:

01#include <Wire.h>
02#include "Adafruit_MCP23017.h"
03 
04Adafruit_MCP23017 mcp;
05 
06void setup() { 
07mcp.begin();      // use default address 0
08 
09mcp.pinMode(0, INPUT_PULLUP);
10 
11Serial.begin(9600);
12}
13 
14 
15 
16void loop() {
17if(mcp.digitalRead(0) == HIGH){
18Serial.println("OK");
19}
20}

Протестил - сигнал не приходит. Если отключить pullup - сигнал приходит, но начинаются глюки (после снятия сигнала, он может ещё долго висеть на ноге). Если подать 5 вольт напрямую, в обход оптопары, всё работает прекрасно, даже с pullup'ом. Измерил ток сигнала - он 59 мА!!! Как так? Пулап-резистор, встроенный в MCP23017 ведь 100 кОм.

Оптопара рабочая, хорошая (MOCD207). Но ей просто не хватает мощности. Вопрос собственно такой - что за магия такая?)) Откуда при включении пуллапов берутся 59 мА в цепи сигнала?

bwn
Offline
Зарегистрирован: 25.08.2014

Вы схему то полностью, полностью рисуйте.

Fefe
Offline
Зарегистрирован: 08.02.2019

Да собственно всё нарисовано. На микруху подано питание. Микруха подключена по шине I2C к ардуине. Оптопару в расчёт не берём. Подаём на ногу GPA0 5 вольт. Нога потребляет 60 мА с пуллап-резистором (внутренним). Конечно, надо было развести плату с внешними резисторами. Но уже что поделать...

bizzon
Offline
Зарегистрирован: 29.03.2016

Ничего не нарисовано. Где оптопара, где течёт 59 милиампер, откуда и куда 5 вольт? Как масса разведена? Обвязку питания полностью нарисуйте, потом вопросы задавайте. А то окажется, что у вас где-то там ещё и 12 вольт есть или больше.. Зачем иначе опторазвязка.

Fefe
Offline
Зарегистрирован: 08.02.2019

Прошу прощения, сейчас с телефона постю. 59 мА течёт где нарисован амперметр - "А". 5 вольт подаю на ногу GPA0, через амперметр. Изначально 5 вольт шло через оптопару. Сейчас она отключена - она не меняет суть дела. Важно то, что при подаче сигнала на микросхему, идёт потребление 59 мА.

bwn
Offline
Зарегистрирован: 25.08.2014

Fefe пишет:

Нога потребляет 60 мА с пуллап-резистором (внутренним). Конечно, надо было развести плату с внешними резисторами. Но уже что поделать...

Выходит 0,3Вт на корпус. Он горячий через пару минут или нет?

bizzon
Offline
Зарегистрирован: 29.03.2016

Так о чём и речь. Автор что-то скрывает.

Fefe
Offline
Зарегистрирован: 08.02.2019

Корпус холодный. 0.3 Вт на такой корпус это не много. Площадь довольно большая. Сигнал подавал на разные ноги поочерёдно ( сразу на все не стал). - везде эти самые 59мА. Скрывать мне нечего. Мне нужна истина )))

В брак микрухи верится с трудом. Да, тесты проводил только на одной. Ладно, понимаю, что информации мало. Буду дома - отключу внутренние пуллапы и припаяю внешний на 10кОм. Посмотрим...

_------_

Да. Сигнал подавал кратковременно. На секунд 5-10. Микруха за это время нагреться не успела бы.

bwn
Offline
Зарегистрирован: 25.08.2014

Это почти половина от максимально допустимой - 700mW, греться должен весьма активно. И ток у нее выходной - 25мА, в два с лишним раза ниже заявленного вами входного. Что-то здесь не так. Или схему криво собрали, или перемаркировка, или еще 100500.

Fefe
Offline
Зарегистрирован: 08.02.2019

На просторах интернета нашёл следующую схему (аналог моей):

Тут ноги MCP23017 подтянуты к 5 вольт через 1 кОм. Почему не к земле? Отличие этой схемы от моей только в подтяжке килоомниками к земле.

nevkon
Offline
Зарегистрирован: 20.01.2015

Fefe пишет:

Да собственно всё нарисовано. На микруху подано питание. Микруха подключена по шине I2C к ардуине. Оптопару в расчёт не берём. Подаём на ногу GPA0 5 вольт. Нога потребляет 60 мА с пуллап-резистором (внутренним). Конечно, надо было развести плату с внешними резисторами. Но уже что поделать...

Так все верно - вы делаете кз на микросхеме. PullUp - резистор к VCC, PullDown - резистор к VSS (GND). Чувствуете разницу? У вас нормально высокий уровень на ноге и низкий при замыкании кнопки должен быть.

зы. Сам использую только внешние подтяжки - так нагляднее. Или рисуйте функциональную схему если используете внутренние возможности чипов.

Fefe
Offline
Зарегистрирован: 08.02.2019

чОрт. Плата уже вытравлена. Буду навешивать 10-и килоомные резисторы и тянуть на землю. По-другому никак. Спасибо!

Fefe
Offline
Зарегистрирован: 08.02.2019

Сделал такой костыль, поверх своей платы. - Притянул входные каналы к земле через 10 кОм резисторы. Теперь всё работает. Благодарю за помощь!