ATNEL tech-forum
https://forum.atnel.pl/

Pływające wskazania ADC i wyświetlacz OLED I2C na ATmega328
https://forum.atnel.pl/topic22206.html
Strona 1 z 1

Autor:  gordon10 [ 29 kwi 2019, o 20:41 ]
Tytuł:  Pływające wskazania ADC i wyświetlacz OLED I2C na ATmega328

No właśnie. Czy to ma coś ze sobą wspólnego? Trochę ciężki temat i mam nadzieję, że uda mi się go dobrze opisać.
Ale od początku...
Buduję i testuję mały miernik/monitor sieci elektrycznej. Chodzi między innymi o pomiar napięcia i prądu (pewnie kilku innych rzeczy w przyszłości). Używam ATmegi328 i wykorzystuję kilka wejść ADC do pomiaru parametrów - tak jak widać na schemacie. Sygnały analogowe doprowadzone są z innej płytki, na której są umieszczone układy analogowe, m.in. przetworniki TrueRMS. Jednak układ analogowy zostawmy na razie w spokoju - sygnały z niego na mierniku są stabilne i nie pływają.
Obrazek
Na tym samym porcie co ADC w mega328 jest interfejs I2C, do którego podłączony jest wyświetlacz OLED. Podejrzewam, że to on wprowadza pewne zakłócenia, które powodują, ze wskazania ADC "pływają" (nie to, że skaczą ale pływają - zmieniają się cyklicznie w okresie ok 4s o aż o 50-60 ADC). Zauważyłem, że wskazania ADC zachowują się różnie w zależności od tego co wyświetlam na OLEDzie. Jeśli wyświetlam surowe wskazania ADC, to wyniki są bardziej stabilne, niż jak wyświetlam więcej informacji (np. przeliczone napięcie, prąd itp.). Nawet ustawiam różne szybkości I2C i też ma to wpływ na ADC - niestety nie mogę uzyskać dużej poprawy.
Najgorsze jest to, że zastosowanie uśredniania i filtru dolnoprzepustowego niewiele pomaga. Próbowałem zwiększać liczbę próbek, zmieniać preskaler ADC ale niewiele to daje.
Jeśli chodzi o inicjalizację ADC, to także próbowałem kilka wariantów (z obsługą przerwań i bez).
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W związku z tym moje pytanie. Czy mogę to jakoś zaradzić temu zjawisku i uzyskać stabilne wskazania? Czy miał może ktoś podobne problemy i udało mu się to jakoś rozwiązać? Bedę wdzięczny za jakieś sugestie.

Autor:  Marhef [ 30 kwi 2019, o 05:27 ]
Tytuł:  Re: Pływające wskazania ADC i wyświetlacz OLED I2C na ATmega

A próbowałeś nie robić pomiarów podczas wysyłania danych na wyświetlacz?

Autor:  gordon10 [ 30 kwi 2019, o 09:47 ]
Tytuł:  Re: Pływające wskazania ADC i wyświetlacz OLED I2C na ATmega

Marhef napisał(a):
A próbowałeś nie robić pomiarów podczas wysyłania danych na wyświetlacz?

Wysyłanie na wyświetlacz ustawiam od 1 do 10 razy na sekundę - używam timerów programowych do realizacji opóźnień.
Robienie pomiarów ustawiam w okolicach 10 do 100 razy na sekundę. Także pomiary są robione głównie wtedy gdy nic nie wysyłam na wyświetlacz.
Niestety niewiele to daje. Nawet jak uda mi się ucelować w miarę stabilne wyniki (przy zastosowaniu uśredniania z wielu pomiarów), to i tak jak zmieniam sposób prezentacji wyników na OLEDzie to wszystko się rozjeżdża.

------------------------ [ Dodano po: 3 minutach ]

zubik napisał(a):
Ciężki temat, jednym z możliwych sposobów na ominięcie problemu może być usypianie mikrokontrolera na czas pomiarów. Spróbuj też różnych konfiguracji połączenia masy wyświetlacza.

------------------------ [ Dodano po: 1 minucie ]

Obawiam się że będziesz musiał zrezygnować z obsługi i2c na porcie adc. Może lepszy będzie OLED na spi?

Próbowałem trybu Noise Reduction, jednak nic to nie daje. Jak procesor jest uśpiony i robi pomiar, to przy wystąpieniu innego przerwania np. od timera chyba też się wybudza.

Chyba jednak trzeba będzie przerzucić się na SPI i dać spokój z I2C :?
W wolnej chwili spróbuję to poprzepinać i zostawić wejscia ADCx tylko dla sygnałów analogowych.

Autor:  mirekk36 [ 30 kwi 2019, o 10:01 ]
Tytuł:  Re: Pływające wskazania ADC i wyświetlacz OLED I2C na ATmega

gordon10 napisał(a):
Chyba jednak trzeba będzie przerzucić się na SPI i dać spokój z I2C

Ale kolega jednak bajki pisze troszkę - bez urazy ...

Tzn że co I2C zakłóca ADC zaś SPI nie ? ;) no pomyśl sam chwilę nad tym co piszesz

Zamiast zrobić mega prosty test o którym pisał ci kolega wyżej - czyli zrób pomiary i sprawdź w ogóle bez podłączania LCD ... i uruchamiania magistrali I2C ...

co za problem wywalać sobie pomiary np przez RS232 do terminala ?

Szybciej znajdziesz babola w swoim kodzie do pomiarów - zamiast zmieniać magistrale w nieskończoność z I2C na SPI ... później z SPI na 1wire ... później z ... aż ci zabraknie tych magistral.

Szukasz błędu nie w tym miejscu w którym trzeba ...

Autor:  mirekk36 [ 30 kwi 2019, o 10:21 ]
Tytuł:  Re: Pływające wskazania ADC i wyświetlacz OLED I2C na ATmega

zubik napisał(a):
Toż nawet nota zaleca aby nie używać portu adc gdy są potrzebne dokładne pomiary. Teraz tego nie znajdę ale pamiętam że są takie zalecenia.


Ale po to szczególnie w nowszych prockach , a tu jest nowszy bo m328 , odłączać port cyfrowy od pinu i już można mieć b.dobre pomiary ...

Tym bardziej, że z tego co kolega autor pisze - to ma jakieś bardzo dziwne "pływania" jak to nazywa ...

Więc sprawdzenie tego przez RS232 to po prostu - krótki test i wiadomo o co chodzi

Autor:  gordon10 [ 30 kwi 2019, o 10:50 ]
Tytuł:  Re: Pływające wskazania ADC i wyświetlacz OLED I2C na ATmega

mirekk36 napisał(a):
zubik napisał(a):
Toż nawet nota zaleca aby nie używać portu adc gdy są potrzebne dokładne pomiary. Teraz tego nie znajdę ale pamiętam że są takie zalecenia.


Ale po to szczególnie w nowszych prockach , a tu jest nowszy bo m328 , odłączać port cyfrowy od pinu i już można mieć b.dobre pomiary ...

Tym bardziej, że z tego co kolega autor pisze - to ma jakieś bardzo dziwne "pływania" jak to nazywa ...

Więc sprawdzenie tego przez RS232 to po prostu - krótki test i wiadomo o co chodzi

Pierwsze co zrobiłem to odłączyłem cyfrówkę na używanych wejściach ADC
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Muszę spróbować wysyłać wyniki po RS232.

Autor:  mirekk36 [ 30 kwi 2019, o 10:56 ]
Tytuł:  Re: Pływające wskazania ADC i wyświetlacz OLED I2C na ATmega

gordon10 napisał(a):
Pierwsze co zrobiłem to odłączyłem cyfrówkę na używanych wejściach ADC

To widziałem i to jest b.dobre posunięcie przy tym procku

teraz czas na test po RS232

Autor:  gordon10 [ 30 kwi 2019, o 11:16 ]
Tytuł:  Re: Pływające wskazania ADC i wyświetlacz OLED I2C na ATmega

gordon10 napisał(a):
teraz czas na test po RS232

Dokładnie. Nawet w wolnej chwili podepnę te sygnały do ATB (nawet pojedynczo) i zobaczę jak się to zachowuje.

Autor:  gordon10 [ 30 kwi 2019, o 21:36 ]
Tytuł:  Re: Pływające wskazania ADC i wyświetlacz OLED I2C na ATmega

Podłączyłem sygnał U_rms do ATB na wejscie ADC0. Wyniki wyswietlam na LCDku. Wskazania nadal skaczą w dość sporym zakresie, ale nie pływają (a to duża różnica). Teraz przy zastosowaniu zwykłej średniej z 16 próbek uzyskuję bardzo stabilny wynik.
Jednak jeszcze sporo prób przede mną... ale już coś drgnęło :) Póki co dziękuję za wszelkie sugestie.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/