Wątek przeniesiony 2019-08-25 22:09 z przez Shalom.

Jednoczesny odczyt wielu sygnałów analogowych

0

Mam procesor z przetwornikiem AC i dwunastoma wejściami.
Potrzebuję jednak próbkować dwanaście sygnałów jednocześnie w celu określenia poza ich wartością także ich wzajemne korelacje.
Dodatkowo moment przejścia przez zero i czas oraz kolejność tych przejść.

Może ma ktoś pomysł jak to rozwiązać dla procesorów typu ATXMega?

0

Rzuć kilka liczb, jaki to sygnał, jaka częstotliwość itd...

0

Częstotliwość 50Hz, sinusoida nie regularna.

0

Myślę, że do 2kHz wystarczy, też już jestem zmęczony.
Jednoczesność, o to jest pytanie.
Zasadniczo najważniejszym parametrem jest przejście przez zero. Jeśli ćwiartka sin przy tej częstotliwości ma 5ms to czy 5us będzie realnym dt?

0

Z reguły ze zwykłego wejścia nie przeczytasz nic poza cyfrowym (chyba że tylko binarnie Cię interesuje). 1 ADC nie da rady, chyba że jakiś multiplekser użyjesz. Z reguły do wielu kanałów wejściowych lepiej użyć jakiegoś dodatkowego modułu. Np.: MCP3008 ma 8 kanałów 10-bitowych; ADS1115 4 kanały 16-bitowe; MCP3428 4 kanały 16-bitowe (reklamuje się jako low-noise).

MCP3008 ma możliwość porównywania kanałów ale było sporo szumu (oscylacje na poziomie około 5-10%) jak na Raspberry Pi testowałem (może być związane z samym RPi, ale do sinusoidy starczy), reszty nie testowałem.

Co do próbkowania nie jestem pewien, ale MCP3008 chyba z 40kHz ma.

0

Spoko, można by to tak rozwiązać, układem zewnętrznym tylko pojawia się pytanie, czy znowu procesor nadrzędny da radę to obsłużyć.
ATXMega być może tak, ale co z resztą obliczeń FFT i innych parametrów? Może nie starczyć czasu.
A miała być taka prosta apka, skończy się pewnie znów na RPI co najmniej.

0

@ELSPECT: jeśli chcesz je tylko odczytać to generalnie czytasz za pomocą I2C więc nie potrzebujesz nic kombinować. Jeśli chodzi o dodatkowe obliczenia to trochę osobny problem. Generalnie atmega to max 32MHz (32mln operacji) więc jeśli masz mało sygnałów i nie będziesz korzystać z floatów to jest szansa ale raczej brałbym coś większego w stylu Raspberry PI albo wysłać dane na PC i tam zrobić obliczenia.

Generalnie lepiej opisz co chcesz dokładnie zrobić bo jeśli da się nie liczyć FFT to może da rade (jeśli tylko przejście przez zero razem z kolejnością to może da rade, ale nie wiem czy aż 12 naraz).

Dolicz że jeszcze pewnie będziesz musiał dodać jakąś logikę na czyszczenie sygnału. Ja jak zliczałem sygnał ~10-15Hz to mi przez zero przechodziło dużo częściej niż 10Hz ze względu na jakieś szumy o wysokiej częstotliwości

0

Potrzebuję wartości bezwzględnych każdej z sinusoid oraz wartości przesunięć fazowych pomiędzy nimi.

0

@ELSPECT to myśle że da rade bez FFT, ale nie obiecuje że aż 12 naraz bo nie wiem ile operacji dasz rade zrobić po odjęciu I2C itp

1

Hej! Niestety widzę, że nie masz za bardzo pojęcia co chcesz zrobić. Mówisz o czasie 5us i jednocześnie wspominasz coś o Raspberry Pi? Przecież to się kompletnie nie nadaje do systemów pomiarowych czasu rzeczywistego! Chcesz do tego równolegle mierzyć wartości analogowe na 12 kanałach + wykrywać przejście przez zero i jeszcze coś tam przeliczać? Takie rzeczy są możliwe, ale przy użyciu dobrze zaprogramowanego procesora sygnałowego, a nie MIKROKONTROLERA (tym jest ATXMega!) z kalkulatora za 10zł. Radzę najpierw zacząć od lektury odpowiednich książek z zakresu energoelektroniki (coś czuję, że chcesz badać pracę jakiegoś prostownika lub próbować budować namiastkę falownika), a później zabierać się stopniowo za pracę. Pewnych rzeczy nie przeskoczysz. Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0