BMP280 + MCP23017 - bug

User avatar
YoMan
Posts: 3521
Joined: Thu Apr 30, 2020 5:18 pm
Location: Częstochowa
Has thanked: 3 times
Been thanked: 3 times

Post

Cześć,

pojawił się u mnie bug. Początkowo myślałem, że to problem z jakimś lutami ale wychodzi, że chyba nie.

Mam płytkę na której są: Wemos D1 mini, 2xMCP, do tego wyprowadzone piny pod ds18b20, dimmery i i2c.
MCP, ds18b20 oraz sht3.x działają bez problemów natomiast po podłączeniu BMP zaczyna się dyskoteka świetlna. Przekaźniki klikają losowo, dimmery (niektóre) rozjaśniają się i ściemniają (tak jakby przycisk od ich włączania był cały czas wciśnięty). Po zauważeniu problemu poprawiłem wszystkie luty, sprawdziłem czy nie ma zwarcia - problem dalej występuje. Przepiąłem BMP na drugą identyczną płytkę oczywiście z innymi egzemplarzami wemosa i MCP i problem jest ten sam. Poniżej projekt płytki i jej wygląd w rzeczywistości.
Printing Drukuj.pdf
Bez nazwy-2.jpg
2022-03-13 18.22.19.jpg
You do not have the required permissions to view the files attached to this post.
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
LukiSpajder
Posts: 1548
Joined: Tue Aug 18, 2020 2:22 pm
Has thanked: 25 times
Been thanked: 34 times

Post

Nie wiem jakie długie masz przewody do BMP ale gdy wszystko podpiąłem na krótko przy płytce działało . Natomiast po zainstalowaniu w docelowym miejscu gdzie BMP był podpięty na dłuższym kablu takie miałem objawy jak opisujesz . Skróciłem przewód i zaczęło działać poprawnie .
User avatar
wojtas567
Posts: 2334
Joined: Sun Apr 03, 2016 7:16 pm
Location: Olsztyn

Post

Możesz spróbować dać ekranowany przewód i zobaczyć czy coś zmieni.
Pozdrawiam
Wojtek
User avatar
jamsjamsen
Posts: 72
Joined: Sat Jan 28, 2017 11:08 am
Location: 0xE952

Post

I2C nie lubi pojemność w kablach, już przy 400pF zaczyna się problem i gdy narastanie zbocza w przebiegu jest dłuższe niż 1000ns przy taktowaniu lini 100kHz to zaczynają się cyrki na magistrali I2C, ja poradziłem sobie kiedyś w innym projekcie ze zmianą rezystorów podciągających SDA i SCL.....zmieniłem te 4,7k na 1k i pomogło...najlepiej sprawdzać przebieg na oscyloskopie i oczywiście nie przekroczyć prądu danego pinu GPIO.
Byłem na Supla Offline Party 2023 & 2024 ;
User avatar
YoMan
Posts: 3521
Joined: Thu Apr 30, 2020 5:18 pm
Location: Częstochowa
Has thanked: 3 times
Been thanked: 3 times

Post

Może faktycznie tutaj leży przyczyną. Przewod ma ok 6-7m, jest to skretka ekranowana cat.7 ale .... ekranu nie uziemiłem.

@jamsjamsen nawet nie wiedziałem że sda i scl należy podciągać :( więc są bez żadnych pullupow. Nie mam niestety oscylatora, podpowiesz jaka droga pójść, żeby to wyeliminować? Zacząć od 4,7k na każdą linie?
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
User avatar
jamsjamsen
Posts: 72
Joined: Sat Jan 28, 2017 11:08 am
Location: 0xE952

Post

co do samego pullup to wemos powinien mieć jakieś na płytce(ok. 10k), bez tego I2C wogóle by nie ruszyło ;).
a co do rezystorów podciągających(4,7k) przy 7 m kablu to stanowczo za dużo, dobrze jest zmierzyć pojemność żył i jak będzie ok 600pF to zacząłbym od 1kOhm, gdzie jeden kilo przy 3,3V wymusza prąd 3,3mA, a esp8266 może mieć max 12mA na pin.

ps: ja przy podobnej dł. przewodów skrętki cat.7 przy Arduino dałem 470ohm i dopiero przebiegi na sda i scl wyglądały w miare prostokątnie na 10k miałem straszny kształt „piły”, a co do ekranowania przewodów to nie wiem czy to wiele pomoże.
Last edited by jamsjamsen on Sat Apr 30, 2022 6:35 pm, edited 1 time in total.
Byłem na Supla Offline Party 2023 & 2024 ;
User avatar
YoMan
Posts: 3521
Joined: Thu Apr 30, 2020 5:18 pm
Location: Częstochowa
Has thanked: 3 times
Been thanked: 3 times

Post

nie chcę zapeszać ale .... dałem po jednym rezystorze 1k na scl i sda i na razie od kilku godzin działa. Niestety nie miałem czym zmierzyć pojemności żył i tym bardziej brak dostępu do oscylatora więc pokierowałem się Twoimi wskazaniami. Jeżeli coś będzie się działo to jeszcze trochę zejdę z rezystorami. Sprawdziłem długość przewodów jeszcze raz i jest dokładnie jest 8m.
Dam znać po dłuższym czasie
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
User avatar
jamsjamsen
Posts: 72
Joined: Sat Jan 28, 2017 11:08 am
Location: 0xE952

Post

To fajnie,że coś ruszyło. Tak jeszcze na marginesie zalecałbym przewody z I2C nie mieszać z kablami z 230V układać jak najdalej, przepięcia przy załączniu np. oświetlenia lub innych obwodów, potrafią też „wykrzaczyć” układ i robi się choinka na MCP 23017;)

pozdro
JJ
Byłem na Supla Offline Party 2023 & 2024 ;
User avatar
YoMan
Posts: 3521
Joined: Thu Apr 30, 2020 5:18 pm
Location: Częstochowa
Has thanked: 3 times
Been thanked: 3 times

Post

jamsjamsen wrote: Sat Apr 30, 2022 6:46 pm To fajnie,że coś ruszyło. Tak jeszcze na marginesie zalecałbym przewody z I2C nie mieszać z kablami z 230V układać jak najdalej, przepięcia przy załączniu np. oświetlenia lub innych obwodów, potrafią też „wykrzaczyć” układ i robi się choinka na MCP 23017;)

pozdro
JJ
Niestety wiem, niestety za późno :( teraz radze sobie jak mogę ;)
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
elmaya
Posts: 1485
Joined: Wed Jun 27, 2018 5:48 pm
Location: El Saucejo - Sevilla

Post

jamsjamsen wrote: Sat Apr 30, 2022 1:26 pm co do samego pullup to wemos powinien mieć jakieś na płytce(ok. 10k), bez tego I2C wogóle by nie ruszyło ;).
a co do rezystorów podciągających(4,7k) przy 7 m kablu to stanowczo za dużo, dobrze jest zmierzyć pojemność żył i jak będzie ok 600pF to zacząłbym od 1kOhm, gdzie jeden kilo przy 3,3V wymusza prąd 3,3mA, a esp8266 może mieć max 12mA na pin.

ps: ja przy podobnej dł. przewodów skrętki cat.7 przy Arduino dałem 470ohm i dopiero przebiegi na sda i scl wyglądały w miare prostokątnie na 10k miałem straszny kształt „piły”, a co do ekranowania przewodów to nie wiem czy to wiele pomoże.
Resistors lower than 1.2kohm should not be used for i2c with 3.3vdc.
The maximum output current of most i2c devices is 3mA.
Although the ESP8266 can handle more intensity, the connected devices will not be able to.
In no way would I use values less than 1kohm.

Return to “GUI Generic”