Skocz do zawartości

Fałszywy stan pinów INPUT z użyciem ekspandera MCP23017 oraz ESP8266


Pomocna odpowiedź

(edytowany)

Przy tych długościach to należałoby zastosować opto izolację np pc817. Przy konwerterze na nóżkach zasilania kondensator 10u i 100nf to sprawi że układ będzie odporniejszy na szpilki w zasilaniu, rezystory podciągające (i2c) tak jak pisałem lepiej dać niż kombinować czemu nie dziala, poprawiają stabilność linii danych, zwiększają wydajność prądową wyjścia esp, oraz dzięki nim niema stanów nieustalonych gdy esp budzi się po resecie. Z resztą to dotyczy wszystkich układów z i2c na pokładzie. 

Edytowano przez _LM_
(edytowany)

W ogólne jak teraz patrzę że coś tam idzie do bramki więc zakładam że równolegle z innymi przewodami to nad tymi transoptorami bym się nawet nie zastanawiał. W sensie od razu je uwzględnił w projekcie

Edytowano przez _LM_

A co jest po drugiej stronie tego kabla? Jakiś uczciwy styk? Jakieś wyjście TTL? Bo chyba nie fotokomórka (takie coś ostatnio widziałem jakieś 40 lat temu)

(edytowany)
1 godzinę temu, ethanak napisał:

A co jest po drugiej stronie tego kabla? Jakiś uczciwy styk? Jakieś wyjście TTL? Bo chyba nie fotokomórka (takie coś ostatnio widziałem jakieś 40 lat temu)

Od pinu INPUT i GND lecą 2 kabelki i stykają się w przekaźniku na fotokomórce 🙂 AleAle też tak jak piszę - na stykach INPUT bezpośrednio w ESP8266 to wszystko działało bez problemu, jednakże chcę rozszerzyć ilość wejść/wyjść 😕 Nie sądziłem, że z tym modułem MCP23017 będzie aż tyle zabawy i problemów.

Edytowano przez MisiekD
(edytowany)

taki układ plus izolowana przetwornica DC/DC i po bólu. Dodatkowo twoje urządzenie stanie się odporne na przepięcia i nawet jak coś pójdzie nie tak to spalisz optoizolatory a nie elektronikę. R1 traktuj jako opcjonalny. Zamiast pojedyńczego pc817 są wersje zespolone w większych obudowach.

EDIT: Pamiętaj też o rezystorach dla diod wejściowych, do obliczenia zależnie od napięcia sterującego.

izo.thumb.JPG.94eb746144e80161b6e79543ea060932.JPG

Edytowano przez _LM_

Jakiej, wciórności, fotokomórce?

Fotokomórka to taka lampa wysokim napięciem zasilana, stosowana ostatnio jako dekoder audio w projektorach kinowych.

Może zacznij wyrażać się ściślej...

A 7m przewodu to też niezła antena. 

7 minut temu, ethanak napisał:

A 7m przewodu to też niezła antena. 

No to radia przy okazji na 43Mhz poslucha...😉 ale to juz chyba nie bedzie nasze...😅  a tak na serio gdyby faktycznie cos ten  przewod zbieral smieci (a moze) to tyle co modelarstwa sie nauczylem to mozna zastosowac pierscienie ferrytowe...kilka zwoi i w wiekszosci przypadkow po problemie..

Dalej pozostaje pytanie co jest po drugiej stronie przewodu.

A przy okazji przypomnę że to forum techniczne i precyzyjne wyrażanie się jest wymagane. Bez tego można dostać odpowiedź typu "szklana kula mi się popsuła".

  • Lubię! 1
57 minut temu, ethanak napisał:

Jakiej, wciórności, fotokomórce?

Fotokomórka to taka lampa wysokim napięciem zasilana, stosowana ostatnio jako dekoder audio w projektorach kinowych.

Może zacznij wyrażać się ściślej...

A 7m przewodu to też niezła antena. 

To fotokomórka do bramy, ma za zadanie sprawdzić czy auto nie stoi na przeszkodzie, przekaźnik typu NC.

2 godziny temu, _LM_ napisał:

taki układ plus izolowana przetwornica DC/DC i po bólu. Dodatkowo twoje urządzenie stanie się odporne na przepięcia i nawet jak coś pójdzie nie tak to spalisz optoizolatory a nie elektronikę. R1 traktuj jako opcjonalny. Zamiast pojedyńczego pc817 są wersje zespolone w większych obudowach.

EDIT: Pamiętaj też o rezystorach dla diod wejściowych, do obliczenia zależnie od napięcia sterującego.

izo.thumb.JPG.94eb746144e80161b6e79543ea060932.JPG

Mhm, czaję cały zamysł. Jedynie nie wiem co z tą przetwornicą (jej nie stosuję). ESP8266 zasilam zwykłym zasilaczem 5V.

Natomiast z PC817 korzystam, nawet właśnie w tym układzie - nim steruję bramę 😉

7 godzin temu, _LM_ napisał:

Przy konwerterze na nóżkach zasilania kondensator 10u i 100nf

Mógłbyś mi to rozjaśnić jak to połączyć? Albo może jakiś schemat jak to połączyć? Z kondensatorami jeszcze się nigdy nie bawiłem (w sensie nie projektowałem nic).

(edytowany)
23 minuty temu, MisiekD napisał:

Mhm, czaję cały zamysł. Jedynie nie wiem co z tą przetwornicą (jej nie stosuję). ESP8266 zasilam zwykłym zasilaczem 5V.

Chodzi o rozdzielenie części sterującej od wykonawczej. Czyli można powiedzieć że ta przetwornica jest takim pc817 tyle że separuje zasilanie, dzięki czemu, na linię zasilania układów cyfrowych nie przedostają się zakłócenia ani przepięcia, od ciebie zależy czy ją zastosujesz. Powiedzmy że nie jest wymagana ale może znacznie poprawić niezawodność działania całości. Ewentualnie zamiast niej można użyć innego dodatkowego zasilacza. 

15 minut temu, MisiekD napisał:

Mógłbyś mi to rozjaśnić jak to połączyć? Albo może jakiś schemat jak to połączyć? Z kondensatorami jeszcze się nigdy nie bawiłem (w sensie nie projektowałem nic).

Po prostu jak najbliżej nóżek vdd i vss dodajesz te kondensatory, tak samo esp powinien mieć jakiś bufor zasilania, tu chodzi o to że układ w króciutkich momentach potrzebuje jakiejś większej energii a ze względu na rezystancje scieżek na pcb, oraz ograniczonej wydajności prądowej zasilacza, w momencie tego największego zapotrzebowania napięcie przysiądzie na kilka uS co może prowadzić do zawieszenia i innych niekorzystnych efektów. Stąd konieczność stosowania kondesatorów -  w skrócie mają zapewnić ciągłość zasilania w momentach zwiększonego poboru prądu. Temat szeroki z pewnością wykracza poza ramy tematu postu, poza tym jest sporo materiałów na ten temat. 

Edytowano przez _LM_

@deshipu @_LM_ @ethanak Dziś trochę sobie nad tym układem posiedziałem, porobiłem różne testy z połączeniami, opornikami i chyba odkryłem, że problemem może być częstotliwość zapytań o stan na pinach INPUT. W kodzie, który wkleiłem na początku wątku nie mam żadnego uruchomionego polecenia opóźniającego kolejne polecenia (np. delay()). Zauważyłem też, że nie ma różnicy czy kabel ma 7m czy 5cm - po 2 - 4 flashowaniach bez delay() stany

fotokomorkaStanSlupekPrzyBramie: 0
fotokomorkaStanNaWyjazdzie:      0
przekaznikStanOdbiornikPilota:   0

zamieniają się na

fotokomorkaStanSlupekPrzyBramie: 1
fotokomorkaStanNaWyjazdzie:      1
przekaznikStanOdbiornikPilota:   1

i nie ma możliwości zmiany żadnego z nich poprzez dodatkowy opornik, połączenie z 3.3V czy GND. Pozostaje tylko reset całego układu (odcięcie zasilania). Po dodaniu delay(200) udaje się flashować ok. 20 - 30 razy (i dłuższy czas pozostawienia mikrokontrolera w trybie działania), później bywa tak samo co wyżej.

Zastanawiam się nad zastosowaniem przerywań, lecz nadal nie wiem czy to coś da. Co Wy o tym sądzicie? Słyszałem, że linia I2C nie jest zbyt wydajna, jednak jak często można te zapytania o stan robić przy użyciu I2C?

(edytowany)
15 minut temu, MisiekD napisał:

Słyszałem, że linia I2C nie jest zbyt wydajna, jednak jak często można te zapytania o stan robić przy użyciu I2C?

Co nie jest? https://pl.wikipedia.org/wiki/I²C 

Cytat

Standard został opracowany na początku lat 80. (określany obecnie jako tryb standardowy pracy) i cechowały go:

prędkość transmisji 100 kbps[2]

7-bitowa przestrzeń adresowa[2]

W 1992 roku została opracowana wersja 1.0 standardu, która wprowadzała następujące zmiany:

dodanie trybu pracy z prędkością transmisji 400 kbps[2] (Fast Mode)

rozszerzenie standardu o możliwość adresowania 10-bitowego[2]

W 1998 roku opracowana została wersja 2.0:

dodanie trybu High Speed Mode, pozwalającego na prędkość transmisji 3,4 Mbps

Zwiększenie zakresu tolerancji napięcia w stanie wysokim: 2,3 – 5,5 V

W 2000 roku powstała wersja 2.1, wprowadzająca drobne zmiany.

A zrobiłeś chociaż minimum tego co pisałem? choćby filtrowanie zasilania? w program nie wnikam bo są tu lepsi fachowcy od C++

Edytowano przez _LM_

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...