Majk32 Napisano Lipiec 28, 2023 Udostępnij Napisano Lipiec 28, 2023 Witajcie, Mam sobie układ z Nucleo G431. Na wejście ADC1-CH1 idzie sobie sygnał, który jest samplowany w równych odcinkach czasu, triggerem dla ADC1 jest TIM2. Dane serii, np. 500 pomiarów (500x 16bit) trafiają do pamięci RAM przy pomocy DMA a następnie są wysyłane portem szeregowym (też via DMA) do PC, gdzie zapisuję je do formatu używanego przez EasyWaveX - dzięki czemu mam sensowną wizualizację i mogę to ponownie zapakować do AWG. Patrząc na wyniki, czasem ADC wygląda jakby się "przywieszał" i produkuje serię kilkunastu odczytów o tym samym poziomie =1.96V . Problem zawsze występuje dokładnie na tym samym poziomie napięcia (odczyt) - ale w różnych miejscach przebiegu. Zresztą to dobrze widać na poniższym screenie. Oczywiście faktyczny sygnał nie zawiera takich wypłaszczeń, obserwuję go oscyloskopem i jest OK. Problem ze skryptem zapisującym plik też wykluczyłem, bo faktycznie po USART lecą takie wartości. Nie jest to clipping, czyli przycinanie sygnału, bo nie występuje jako maksymalna wartość nawet nie zbliżona do zasilania, więc ADC ma jeszcze "zapas" rozdzielczości w górę. Napięcie odniesienia dostaje kota? Jakieś pomysły jak to ugryźć? Link do komentarza Share on other sites More sharing options...
matsobdev Lipiec 28, 2023 Udostępnij Lipiec 28, 2023 16 bitowy przetwornik analogowo-cyfrowy nie jest tak do końca 16 bitowy. ENOB. Pewnie zmniejszenie szumów po stronie analogowej może coś pomóc - wiem, lakonicznie. Link do komentarza Share on other sites More sharing options...
Majk32 Lipiec 28, 2023 Autor tematu Udostępnij Lipiec 28, 2023 (edytowany) Pomiar jest 10 bitowy... Wg. mnie szum powodowałby przy stałym napięciu odczyty różne wokół wartości rzeczywistej - ale tutaj jest odwrotnie! Sygnał cały czas się zmienia, a odczyt jest constans. Popróbuję jeszcze sprawdzić stabilność wyzwalania ADC, bo może dostaje czkawki i nadpróbkowuje... ale to chyba nie to - OVRMOD jest ustawiony na overwrite... EDIT:: Dodanie filtrowania nie dało rezultatu - nawet na oscyloskopie przebieg był gładki. Sygnał pochodzi z MAX291 - cyfrowego filtru sterowanego zegarem. Oczywiście minimalnie, śladowo było widać częstotliwość zegara na przebiegu wyjściowym, ale tam zegar jest rzędu 200-400kHz, więc znacznie powyżej bazowej częstotliwości sygnału. Poeksperymentowałem z prędkością taktowania ADC - zwiększanie czasu konwersji do kilkudziesięciu taktów zegara nie przyniosło rezultatu, ale ustawienie prescalera na /6? Temat rozwiązany: Edytowano Lipiec 28, 2023 przez Majk32 Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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ę »