Skocz do zawartości

Zakłócenia z ESP32


szczawiosław

Pomocna odpowiedź

Mam złożony układ z Atmegą 328P-AU, ESP-WROOM-32 i czujnikiem Grid-EYE. Dodałem ATmegę z nadzieją że pomoże to wyeliminować zakłócenia z odczytem. Dopóki układ działa z samym Grid-EYE i ATmegą mam prawidłowe odczyty. W momencie kiedy podłączam WROOMa odczytana temperatura z czujnika zaczyna spadać, dostaje puste ramki danych albo dla każdego piksela inną wartość wykraczającą poza błąd pomiaru. Każdy element układu ma własny stabilizator napięcia na 500mA, do całego układu dostarczam 1A. W pikach pobór całości dochodzi do 200mA (mierzone przed stabilizatorami). W tym monecie skończyły mi się pomysły na przyczynę i sposób wyeliminowania zakłóceń. Może ktoś ma jakiś pomysł? Myślałem jeszcze nad rozdzieleniem mas, ale nie bardzom wiem jak to najlepiej zrobić.

Link do komentarza
Share on other sites

Może właśnie jest dokładnie odwrotnie, masy masz źle połączone albo jest coś co bagatelizujesz a jest ważne. Narysuj schemat blokowy całości z uwzględnieniem rzeczywistego prowadzenia wszystkich zasilań i mas oraz zaznaczeniem dróg najważniejszych linii sygnałowych i miejscem gdzie widzisz problemy.

Nikt w sytuacji tak lakonicznego opisu nie pstryknie palcem i nie powie w ciemno: o tutaj daj zielony przewód i będzie dobrze.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Gość es2

Każdy układ ma własny stabilizator, do którego zasilanie dochodzi ze wspólnej linii. Cały układ ma wspólną masę.

Tak nie zmierzysz "pików".

Link do komentarza
Share on other sites

Mierzyłem dla całości przed stabilizatorami, kiedyś sprawdzałem bezpośrednio między każdym układem, a zasilaniem (w tym wypadku akurat nie) i najwyższą wartość miało dla ESP, ok. 150mA w momencie kiedy łączył się z WiFi.

Tak nie zmierzysz "pików".

To jak moge to zrobić aby było dobrze?

Link do komentarza
Share on other sites

Gość es2
Dodałem ATmegę z nadzieją że pomoże to wyeliminować zakłócenia z odczytem.

Czyli gdy czujnik był podłączony bezpośrednio z ESP problemy z odczytem były.

Na pierwszy rzut oka faktycznie wszystko wskazuje na masy ewentualnie zasilanie (np zasilanie pasożytnicze). Schemat jest ucięty, ale zakładam, że w tej uciętej części jest masa.

Zrób prosty tester z led i rezystora i sprawdź wszystkie zasilania. Możesz też sprawdzić woltomierzem ale daj równolegle do zacisków pomiarowych rezystor 50..100R.

[ Dodano: 17-04-2018, 10:27 ]

Mierzyłem dla całości przed stabilizatorami, kiedyś sprawdzałem bezpośrednio między każdym układem, a zasilaniem (w tym wypadku akurat nie) i najwyższą wartość miało dla ESP, ok. 150mA w momencie kiedy łączył się z WiFi.
Tak nie zmierzysz "pików".

To jak moge to zrobić aby było dobrze?

Oscyloskopem.

Link do komentarza
Share on other sites

Przy wykorzystaniu samego ESP dziwnie się wszystko zachowywało przy łączeniu z WiFi. Same odczyty były ok do momentu w którym nie używałem WiFi. W momencie kiedy chciałem odczytywać dane z czujnika i jednocześnie podłączyć ESP do sieci potrafiło i2c się zawiesić (albo przestać odczytywać), albo cały moduł przestawał odpowiadać. Dlatego dołożyłem ATmegę aby rozdzielić funkcję, ale nadal pojawia się kłopot kiedy do całego układu dodam ESP.

Link do komentarza
Share on other sites

Gość es2
Przy wykorzystaniu samego ESP dziwnie się wszystko zachowywało przy łączeniu z WiFi. Same odczyty były ok do momentu w którym nie używałem WiFi. W momencie kiedy chciałem odczytywać dane z czujnika i jednocześnie podłączyć ESP do sieci potrafiło i2c się zawiesić (albo przestać odczytywać), albo cały moduł przestawał odpowiadać. Dlatego dołożyłem ATmegę aby rozdzielić funkcję, ale nadal pojawia się kłopot kiedy do całego układu dodam ESP.

Dołożenie Megi nic tu nie zmieni.

Dobrze byłoby sprawdzić jakość zasilania (oscyloskopem, nie multimetrem), bo skoro komunikacja po Wi-Fi wywołuje problemy, to raczej problem zasilania.

Link do komentarza
Share on other sites

Gość es2
Mierzyłem zasilania przy ATmedze, czujniku i ESP na każdej możliwej nóżce i były prawidłowe, na ESP spada do ~3,15V przy łączeniu z WiFi, później wraca do ~3,3V.

Mierzysz miernikiem, na ESP mogą być szpilki np do 2V. Dodaj kondensator 470..2200uF na zasilaniu ESP jak najbliżej ESP), dodatkowo ceramiczny 10..220nF.

Link do komentarza
Share on other sites

szczawiosław: Rysunek który wrzuciłeś to schemat ideowy. On pokazuje tylko sens połączenia poszczególnych klocków w działającą całość. Przecież w rzeczywistości Twój układ tak nie wygląda, prawda? A Tu w takich przypadkach zawiera się problem. Czy np. wszystkie trzy nóżki GND ATmegi połączyłeś razem i dołączyłeś gdzieś na skraju linii masy? Czy gdzieś dalej dałeś czujnik wraz z bezpośrednio do niego podłączonymi elementami RC a to dopiero wspólnym drutem do masy globalnej? Czy WiFi jest naprawdę podłączone do przeciwległego końca drutu masy? A gdzie są masy stabilizatorów? Czy taka jak na rysunku, wszystkieze sobą zwarte i długą pętlą dociągnięte do reszty scalaków? Nie? To ten schemat jest mi niepotrzebny. Wróc do mojego postu i przeczytaj raz jeszcze. Zakłócenia nie powstają na schematach ideowych - tam wszystko jest zwykle OK a druty mają zerowe rezystancje i impedancje. Śmiecie robią się w rzeczywistych konstrukcjach, gdzie coś leży za daleko od czegoś innego albo zbyt blisko czegoś jeszcze innego.

A jeśli już wrzucasz schemat ideaowy, dawaj na nim wszystkie oznaczenia. Bez nich znów jest niewiele wart, bo co mi po kwadratowym klocku? Co to jest U7, U9, U10? Po konfiguracji i użyciu kondensatorów wyciszających referencję mogę domyślić się co tam wstawiłeś bo takich układów niskoszumowych jest mniej, ale pewności nie mam. Jakim napięciem je karmisz? Dlaczego nie mają żadnej pojemności na wejściu? Tak jak napisał es2, krótkie szpilki poboru prądu mogą "zapadać" zasilanie na mikro- lub milisekundy. Gdy multimetr mierzy przez 1/3 sekundy, nie masz szans tego zobaczyć.

Poza tym pamiętaj, że WiFi to nie jest jakaś magia tylko łączność radiowa. Prąd pobrany z zasilania zamienia się na energię pola EM i wylatuje w przestrzeń. Antena jest źródłem tego pola i wpływa na wszystko w okolicy. W tzw. polu bliskim produkuje całkiem spore zakłócenia we wszystkim co metalowe. W scalakach, kablach, elementach RC. To nie jest bezkarne - przemyśl gdzie umieścić antenę by była daleko od wszystkiego.

Już widzisz, że użycie trzech stabilizatorów w niczym nie pomogło więc był to strzał w płot. Spokojnie możesz zamienić je na jeden wspólny, za to musisz popracować nad montażem i fizyczną konfiguracją całości.

Podsumowując: potrzebujemy rysunek montażowy prawdziwego układu. Od biedy może być kilka ostrych zdjęć oraz kilka informacji uzupełniających o które prosiłem wyżej.

EDIT: I nie, nie dawaj tak gigantycznych kondensatorów na liniach 3.3V. Po pierwsze stabilizatory tego nie lubią, szczególnie low-drop, po drugie elektrolity z tysiącami uF nie działają powyżej kHz więc nie tłumią krótkich impulsów. Tu nie jest tak, że im więcej tym lepiej. Najlepiej zajrzyj do dokumentacji modułu WROOM i sprawdź czy producent nie wymaga czegoś specjalnego na zasilaniu, np wydajności 1A lub jakichś szybkich pojemności low esr np. tantalowych. Jeśli nie, kondensator (rozumiem że wg noty katalogowej optymalny dla tego stabilizatora) 2.2uF powinien zapewnić stabilność pętli regulacji a moduł sam z siebie powinien sobie radzić.

Za to konieczna jest wspólna pojemność na wejściu zasilania. Tutaj 10-100uF powinno w zupełności wystarczyć. Kompensujesz tym indukcyjności przewodów doprowadzających.

Być może paradoksalnie dawanie takich "lepszych" stabilizatorów może w tym konkretnym układzie pogarszać sprawę, bo klasa low-drop jest z reguły wolniejsza i gorzej odpowiada zarówno na zmiany obciążenia jak i napięcia wejściowego. No coś za coś. Zanim sam wymyślisz jakiś układ spróbuj zapytać. Czasem trudno trafić w optymalne rozwiązanie a przypadkowe wybory są po prostu złe.

Link do komentarza
Share on other sites

Nie jestem ekspertem. Parę luźnych uwag/pytań. Jakiś czas temu ktoś na forum miał problem z arduino, po użyciu jakiejś biblioteki przestawało działać PWM. Prawdopodobnie chodziło o bibliotekę obsługującą serwa. Jesteście pewni, że to nie problem wszystkoułatwiającego środowiska. Jakie można mieć zaufanie do bibliotek obsługujących ESP32 i jak można je przetestować, żeby mieć pewność poprawnego działania? Może coś tam się w środku gryzie po włączeniu WIFI. Od czego zacząć?

Link do komentarza
Share on other sites

Gość es2
Jakiś czas temu ktoś na forum miał problem z arduino, po użyciu jakiejś biblioteki przestawało działać PWM. Prawdopodobnie chodziło o bibliotekę obsługującą serwa.

Taki problem występuje w Arduino z AVR. Często biblioteki nie sa dobrze opisane, trzeba do nie zajrzeć, czego używa. Np PWM będzie używał timera0 i np serial port też. Konflikt gotowy.

I2C to akurat układ peryferyjny ESP i konfliktów (z Wi-Fi) nie będzie.

Zasadniczo, system ESP, "trzyma łapę" (jak Linix) na peryferiach i nie dopuszcza do konfliktów.

Link do komentarza
Share on other sites

Może się komuś na przyszłość przyda, ale problem został choć częściowo rozwiązany.

Problemem okazało się umieszczenie blisko siebie ESP32 i AMG na jednej płytce PCB. Okazuje się że AMG jako czujnik temperatury jest bardzo wrażliwy na temperaturę pracy. W momencie kiedy temperatura czujnika przekracza ~37°C odczyty zaczynają lecieć na łeb na szyję (wcześniej tylko delikatnie spadają). Natomiast ESP32 w momencie włączenia komunikacji i połączenia się z WiFi bardzo szybko nagrzewa się powyżej 45°C i dzięki przewodności cieplnej PCB nagrzewał się także czujnik (pomijając jego samoistne nagrzewanie w trakcie pracy). Okazało się że na pająku wszystko działa jak należy bo ESP32 nie miało styku z płytką, a więc jej nie rozgrzewało.

Rozwiązaniem jest więc wykonanie układu na dwóch płytkach oddzielonych od siebie fizycznie i pisanie całego programu pod kątem low power, aby po zamknięciu wszystkiego w jednej obudowie ograniczyć nagrzewanie się powietrza w środku. Dodatkowo trzeba wyznaczyć charakterystykę temperaturową czujnika (niestety producent jej nie podaje, choć w datasheet wspomina w jednym pkt. o tym że odczyty mogą zależeć od temperatury czujnika).

Więc praktycznie 0 zakłóceń z zasilania, jeżeli jakieś są to mają minimalny wpływ na pracę czujnika i jego odczyty. Mimo wielkokrotnego czytania datasheet czujnika, nie zwróciłem uwagi na jedno zdanie i szukałem błędu tam gdzie go nie było.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.