Proszę o testy: MCP23017, PCF8575 oraz PCF8574

User avatar
jamsjamsen
Posts: 72
Joined: Sat Jan 28, 2017 11:08 am
Location: 0xE952

Post

LukaszH wrote: Thu Feb 16, 2023 10:35 pm
Natomiast sprawdzę z minimalnymi opcjami i może jeszcze tylko 2-3 kanały ustawię, bo może sieją mi 16x bo są jakby w "powietrzu" i to obciąża kontroler/procesor. Ale po ostatniej poprawce z wczoraj jest dużo lepiej :)
PCF nie ma wewnętrznego pullup i trzeba lutować rezystory podciągające inaczej jest straszny bałagan i zakłóca pracę całego urządzenia, wszystkie piny (przynajmniej te dodane w konfiguracji) muszą być podciągnięte do Vcc zalecane rezystory 4k7.

edit: używając PCF jako wejście, musi być pull-up
Last edited by jamsjamsen on Fri Feb 17, 2023 9:44 pm, edited 1 time in total.
Byłem na Supla Offline Party 2023 & 2024 ;
LukaszH
Posts: 670
Joined: Sat Dec 14, 2019 11:49 pm

Post

jamsjamsen wrote: Fri Feb 17, 2023 8:40 pm
LukaszH wrote: Fri Feb 17, 2023 7:59 pm
krycha88 wrote: Fri Feb 17, 2023 7:44 pm Jakim napięciem zasilacz PCF8575?
Ja mam taką płytkę: https://pl.aliexpress.com/item/10050029 ... pt=glo2pol i na ten moment testowałem z 3,3V omijając ten regulator na tym module.
a czasem pin "INT" nie powinien być podciągnięty do "+" zasilania?? ja przy MCP23017 INT zawsze mam podciągnięte do zasilania inaczej expander świruje w konfiguracji jako wejście... ;)
(stany nieustalone na pinie mogą wywoływać przerwania)
Sprawdzałem pin INT podciągając do VCC jak i GND. Chyba już tu brakuje mi wiedzy ale nie widzę różnic. Ogólnie trochę nie mogę się doczytać w datasheet PCF8575: tutaj jest tylko sterowanie stanem LOW czy może wystawić High ?
User avatar
jamsjamsen
Posts: 72
Joined: Sat Jan 28, 2017 11:08 am
Location: 0xE952

Post

LukaszH wrote: Fri Feb 17, 2023 8:56 pm
jamsjamsen wrote: Fri Feb 17, 2023 8:40 pm
LukaszH wrote: Fri Feb 17, 2023 7:59 pm

Ja mam taką płytkę: https://pl.aliexpress.com/item/10050029 ... pt=glo2pol i na ten moment testowałem z 3,3V omijając ten regulator na tym module.
a czasem pin "INT" nie powinien być podciągnięty do "+" zasilania?? ja przy MCP23017 INT zawsze mam podciągnięte do zasilania inaczej expander świruje w konfiguracji jako wejście... ;)
(stany nieustalone na pinie mogą wywoływać przerwania)
Sprawdzałem pin INT podciągając do VCC jak i GND. Chyba już tu brakuje mi wiedzy ale nie widzę różnic. Ogólnie trochę nie mogę się doczytać w datasheet PCF8575: tutaj jest tylko sterowanie stanem LOW czy może wystawić High ?
Spróbuj PCF8575 podłączyć pod płytkę z przekażnikiem (sterowana sygnałem LOW) z optoizolatorem tam wejscie jest spolaryzowane z zasilaniem ( ma potencjał Vcc) i sprawdz czy steruje przekażnikem, PCF ma prawdopodobnie wyjście typu "open-colector" lub "Open-Drain" i sam pomiar miernikiem nie wykarze przełanczania miedzy 0V a 3,3V

np: https://pl.aliexpress.com/item/10050016 ... nsFsiB8tFi


Edit: chyba ,że można w kodzie ustawić pin jako in/out lub open-drain??? w datasheet ma napisane :"Push-pull design structure."
(ale ja tu nie jestem czarodziejem od kodu) tu już ukłony do Krycha88 ;)
Byłem na Supla Offline Party 2023 & 2024 ;
LukaszH
Posts: 670
Joined: Sat Dec 14, 2019 11:49 pm

Post

Mam oba ekspandery na biurku: MCP23017 i pCF8575. Nie jestem za bardzo dobry w teorii ale MCP23017 na wyjściu potrafi zmienić polaryzację jak zmienia się ustawienia w GG z sterowania High na Low. Czyli ma "jakby" open drain ale obu typów mosfetów N-channel jak P-channel. Dla mnie fizycznie oznacza że:
1. MCP z ustawieniem sterowania LOW:
a) jeśli kanał jest "off", to między pinem, a GND mamy napięcie 3,3V ale między pinem, a VCC mamy 0V
b) jeśli kanał jest "on", to między pinem, a GND mamy 0V ale między pinem , a VCC mamy 3,3V
2. MCP z ustawieniem sterowania High:
a) kanał "off", to między pinem, a GND mamy 0V ale między pinem, a VCC mamy 3,3V
b) kanał "on", to między pinem, a GND mamy 3,3V ale między pinem a VCC mamy 0V

dla PCF8575 analogicznie:
1. PCF z ustawieniem sterowania LOW:
a) kanał "off", to między pinem, a GND jest 0V i między pinem, a VCC także 0V
b) kanał "on", to między pinem, a GND jest 0V ale między pinem, a VCC mamy 3,3V
2. PCF z ustawieniem sterowania High:
a) kanał "off", to między pinem, a GND jest 0V ale między pinem, a VCC jest 3,3V
b) kanał "on", to między pinem, a GND jest 0V i między pinem, a VCC jest także 0V
W PCF8575 jest jeszcze ten efekt że przy sterowaniu Low jest ten impuls. W MCP nie ma takiego efektu. Różnica jeszcze jest taka że MCP jak nie ustawi się pinu w opcjach GG to nie ma tam potencjału zarówno do GND jak i VCC, natomiast w PCF bez ustawienia jest potencjał między pinem a VCC i pewnie z tego wynika ten impuls.

Ogólnie jeśli ma tak zostać w sensie tak ma ten układ PCF to wystarczy zrobić rezystor podciągający do 3,3V i ustawienie sterowania na High i wtedy ominę to mrugnięcie i będzie to działało sensownie.
Natomiast słabo jak jednak okaże się że można wywołać softem sterowanie jak MCP i wtedy hardware będzie do wymiany co wolałbym uniknąć :)
krycha88
Posts: 5417
Joined: Fri Nov 16, 2018 7:25 am

Post

LukaszH wrote: Sat Feb 18, 2023 10:29 am Mam oba ekspandery na biurku: MCP23017 i pCF8575. Nie jestem za bardzo dobry w teorii ale MCP23017 na wyjściu potrafi zmienić polaryzację jak zmienia się ustawienia w GG z sterowania High na Low. Czyli ma "jakby" open drain ale obu typów mosfetów N-channel jak P-channel. Dla mnie fizycznie oznacza że:
1. MCP z ustawieniem sterowania LOW:
a) jeśli kanał jest "off", to między pinem, a GND mamy napięcie 3,3V ale między pinem, a VCC mamy 0V
b) jeśli kanał jest "on", to między pinem, a GND mamy 0V ale między pinem , a VCC mamy 3,3V
2. MCP z ustawieniem sterowania High:
a) kanał "off", to między pinem, a GND mamy 0V ale między pinem, a VCC mamy 3,3V
b) kanał "on", to między pinem, a GND mamy 3,3V ale między pinem a VCC mamy 0V

dla PCF8575 analogicznie:
1. PCF z ustawieniem sterowania LOW:
a) kanał "off", to między pinem, a GND jest 0V i między pinem, a VCC także 0V
b) kanał "on", to między pinem, a GND jest 0V ale między pinem, a VCC mamy 3,3V
2. PCF z ustawieniem sterowania High:
a) kanał "off", to między pinem, a GND jest 0V ale między pinem, a VCC jest 3,3V
b) kanał "on", to między pinem, a GND jest 0V i między pinem, a VCC jest także 0V
W PCF8575 jest jeszcze ten efekt że przy sterowaniu Low jest ten impuls. W MCP nie ma takiego efektu. Różnica jeszcze jest taka że MCP jak nie ustawi się pinu w opcjach GG to nie ma tam potencjału zarówno do GND jak i VCC, natomiast w PCF bez ustawienia jest potencjał między pinem a VCC i pewnie z tego wynika ten impuls.

Ogólnie jeśli ma tak zostać w sensie tak ma ten układ PCF to wystarczy zrobić rezystor podciągający do 3,3V i ustawienie sterowania na High i wtedy ominę to mrugnięcie i będzie to działało sensownie.
Natomiast słabo jak jednak okaże się że można wywołać softem sterowanie jak MCP i wtedy hardware będzie do wymiany co wolałbym uniknąć :)
Nie będę się rozpisywać bo nie mam na to czasu, ale zobacz teraz :P
https://gui-generic-builder.supla.io/
LukaszH
Posts: 670
Joined: Sat Dec 14, 2019 11:49 pm

Post

Nie wiem jakie dokładnie były poprawki ale reakcja na przycisk uważam że jest ok. Efekt impulsu przy sterowaniu LOW jest bardzo mały (nie sądzę że dadzą radę kliknąć przekaźniki), a jeśli sterowanie High to tego efektu nie ma (z uwagi na konstrukcję samego PCF).

Ok chyba nie ma co dalej kombinować, ponieważ PCF nie jest 1:1 zamiennikiem MCP, co trochę błędnie zakładałem na początku:/. PCF wg datasheet to, quasi-bidirectional I/O i dlatego tylko ma otwarty kolektor ale do GND, a MCP to, wg datasheet: Bidirectional I/O pin. Can be enabled for interrupt-on-change and/or internal weak pull-up resistor.
PCF pasuje zrobić pull-up i wtedy ten rezystor sterowałby bramką jakiegoś mosfeta/tranzystora, a w stanie "high" robi zwarcie do GND. W ten sposób aplikacja będzie działać dobrze. Natomiast jak chce się mieć pełną możliwość sterowania stanami pinów jak z ESP to tylko MCP tak ma.

@Hrumque myślę że masz większą wiedzę o elektronice (lepiej czytasz datasheet), to może byś tu podpowiedział czy faktycznie dobrze to opisałem.
@Krycha88 biorąc pod uwagę "że dobrze rozumiem" datasheet to soft jest jak najbardziej poprawny. Trzeba tylko to wiedzieć tworząc hardware.

Patrzyłem właśnie w LCSC (jakby dostawca JLCPCB) i w sumie MCP i PCF są w tej samej cenie około $3. W takim wypadku uważam że lepszym rozwiązaniem po prostu jest MCP. Dodatkowo zawsze można obok takiego SSOP wstawić podstawkę DIP28 aby mieć w razie co jakąś alternatywę na wypadek ponownie kosmicznych cen dla modułów w obudowach SMD.
krycha88
Posts: 5417
Joined: Fri Nov 16, 2018 7:25 am

Post

Jeżeli tak Ci zależy to warto przetestować inne rozwiązania. np. ESPhome :)
https://gui-generic-builder.supla.io/
LukaszH
Posts: 670
Joined: Sat Dec 14, 2019 11:49 pm

Post

krycha88 wrote: Sat Feb 18, 2023 6:29 pm Jeżeli tak Ci zależy to warto przetestować inne rozwiązania. np. ESPhome :)
Moim zdaniem soft poprawiłeś tak jak trzeba i jest ok:) - można zrobić hardware który będzie dobrze działał. Jedynie co to moje nie dopatrzenie że pcf nie jest zamienny z mcp i trzeba inaczej do tego podchodzić, tworząc hardware. Mój błąd, bo dążyłem aby ten PCF tak samo działał jak MCP ale one mają inne schematy wewnętrzne i trzeba to po prostu uwzględnić.

Można by dopisać gdzieś że MCP ma I/O jak ESP (łącznie z wewnętrznym pull up), a PCF ma wyjścia typu otwarty kolektor.
LukaszH
Posts: 670
Joined: Sat Dec 14, 2019 11:49 pm

Post

Widać że nie tylko my widzieliśmy ten problem z PCF: https://forum.arduino.cc/t/pcf8574-with ... off/332929
Ogólnie trzeba się przyzwyczaić że otwarty kolektor będzie zwierać rezystor pull up do GND, jak zainicjuje się PCF to sterowany w GG stanem high nadal będzie zwierać do GND (w ten sposób nie ma tego impulsu), a jak włączymy kanał na "ON" to odcina kolektor PCF i przestajemy zwierać rezystor pull up do GND i tym rezystorem sterujemy tranzystor/mosfet urządzenia wykonawczego.
Trzeba się do tego przyzwyczaić albo powrócić do MCP gdzie można sterować dwukierunkowo i nie trzeba mieć rezystora pull up :)
Od strony programu i tak @krycha88 zredukował do chyba maksymalnego minimum do wywołania akcji (dlatego mignięcie w klasycznym układzie jest minimalne). Do tego odpowiedni debounce na badaniu stanu wejścia np. przyciski uważam że jest dopracowane.
kurus
Posts: 1189
Joined: Wed Jan 15, 2020 8:17 pm

Post

Potrzebuje sterować 8 przekaźnikami i do tego 8 przycisków i pewnie jakiś czujnik sht3x się dołoży.. w co lepiej iść esp8266 i expander, jeśli tak to jaki wybrac? MCP23017? Chodzi mi o to aby działał bezproblemowo, nie chcę się bawić w lutowanie rezystorów itp..
Czy lepszym wyborem będzie esp32 bez expandera?

Return to “GUI Generic”