obliczyć amplitudy sygnału grzech?

G

gameelgamal

Guest
Hi Jak obliczyć amplitudy sygnału przy użyciu mikrokontrolera grzech? Co potrzebne jest algorytm, który będzie realizowany w mikrokontroler obliczyć amplitudy (lub wartości RMS) sygnału wejściowego ... thanx ...
 
RMS może być obliczony niezależnie od rodzaju fali. To jest dokładnie to, co jest nazwane: RMS główny średniej kwadratu sygnału. Możesz obliczyć RMS sygnału AC poprzez odjęcie wartości DC (lub średnie), operacja jest równoważne z ustaleniem odchylenie standardowe serii próbek. Znajdziesz definicji w dziale statystyki mathemical kolekcji wzorów.
 
hi analogowe Divece ® posiadają specjalne 8pin Ic do tego celu. I w pełni fali sinusoidalnej można obliczyć tę dwa egzemplarze. V1: próbki w czasie t1 v2: sampe na (t1 + π / 2) V1 = Vm grzechu (t1) V2 = Vm grzechu (t1 + π / 2) Vm ² ² = V1 + V2 ² Vrms = Vm / √ 2
 
[Quote = smxx] I w pełni fali sinusoidalnej można obliczyć tę dwa egzemplarze. V1: próbki w czasie t1 v2: sampe na (t1 + π / 2) V1 = Vm grzechu (t1) V2 = Vm grzechu (t1 + π / 2) Vm ² = V1 ² + V2 ² Vrms = Vm / √ 2 [/quote] Ok ... Idę do realizacji tego algorytmu przy użyciu mikrokontrolera, ale nadal pewne trudności. Więc proszę mi powiedzieć, czy się mylę Po pierwsze, w losowo wybranym punkcie programu, będę grał analogowego na cyfrowy proces konwersji do obliczenia V1. Po drugie, po pewnym czasie (powiedzmy 1 ms), będę wykonywać inne ADC obliczyć V2. Teraz mogę obliczyć V1 za pomocą eqn: V1 = Vm grzechu (t1) Ale co to jest wartość (t1)? Powinna być równa zero, nie? Także to, co masz na myśli (n / 2). Czy jest to czas pomiędzy dwie konwersje (1 ms w moim przypadku), czy co?? thanx ....
 
n / 2 musi być równa 1 / 4 okresu częstotliwości wejściowej (90 ° przesunięcie fazowe), inaczej miło algorytm nie działa. Również V1, V2 musi być DC-free.
 
[Quote = FVM] n / 2 musi być równa 1 / 4 okresu częstotliwości wejściowej (90 ° przesunięcie fazowe), inaczej miło algorytm nie działa. Również V1, V2 musi być DC-free. [/Quote] Tak. w przypadku 50 Hz fala grzechu, n / 2 = 5 ms. Zgadza się? co masz na myśli przez dc darmo? masz na myśli nie DC offset do niej dodać? thanx ..
 
Użyj mikrokontrolery adc podjąć n (100 byłoby dobrze) próbki sginal wejście do jednego cyklu sinusoidy i zrobić obliczenia dla rms, że. Trzeba będzie wpływać na sygnał sinusoidalny, jeśli adc niskiego napięcia odniesienia 0 V. Na przykład dla 50Hz sinusoidalny sygnał, podejmują 100 próbek każdego 20ms/100 = 200us poza Można to zrobić przy użyciu timera i adc w mikrokontrolerem Pozdrawiam
 
Jak powiedział, można obliczyć napięcia RMS, nie wiedząc, DC offset przed (przy użyciu standardowej metody obliczania odchylenia):
Code:
 uRMS = √ (1 / n * Σu ² - (1 / n * Σu) ²)
 
[Quote = shoaibali] Użyj mikrokontrolery adc podjąć n (100 byłoby dobrze) próbki sginal wejście do jednego cyklu sinusoidy i zrobić obliczenia dla rms, że. Trzeba będzie wpływać na sygnał sinusoidalny, jeśli adc niskiego napięcia odniesienia 0 V. Na przykład dla 50Hz sinusoidalny sygnał, podejmują 100 próbek każdego 20ms/100 = 200us poza Można to zrobić przy użyciu timera i adc w mikrokontrolerem Pozdrawiam [/quote] Jeśli się 100 próbek w jednym cyklu, lub może być tooken na więcej niż jeden cykl
 
Jeśli zawsze wiem, że będzie to sygnał sinusoidalny, to również możliwość wykonania detektora szczytowego dla minimalnych i maksymalnych, amplituda będzie (max-min) / 2 i pomnożenie przez stałe 1 / √ 2 dla RMS tj. : amplituda = (max-min) / 2 RMS = Amplitude / √ 2 Just innej opcji.
 
[Quote = gameelgamal] [quote = shoaibali] Użyj mikrokontrolery adc podjąć n (100 byłoby dobrze) próbek wejściowych sginal dla jednego cyklu sinusoidy i zrobić obliczenia dla rms, że. Trzeba będzie wpływać na sygnał sinusoidalny, jeśli adc niskiego napięcia odniesienia 0 V. Na przykład dla 50Hz sinusoidalny sygnał, podejmują 100 próbek każdego 20ms/100 = 200us poza Można to zrobić przy użyciu timera i adc w mikrokontrolerem Pozdrawiam [/quote] Jeśli się 100 próbek w jednym cyklu, lub może być tooken więcej niż jednego cyklu [/quote] Próbki muszą być w jednym cyklu, jak będziesz robił obliczenia z jednego cyklu
 
Napisał trochę kodu na CCS PIC, nic fancy odchylenie standardowe z 30 próbek w pracy omawiany przez FVM. Czy zabraknie 16F877A, więc nie mógł spalony i poddał je testom. Wszelkie uwagi, błędy, zmiany są zawsze mile widziane ...
Code:
 # include # urządzenia ADC = 10 # include # bezpieczniki XT, NOWDT, NOPROTECT, NOLVP, NOBROWNOUT # użyj opóźnienia (zegar = 4000000) # use rs232 (baud = 9600, xmit = PIN_C6, gi = PIN_C7) void main ( ) {Int16 wartości, próbek [29] / / Wartość jest 10-bitowe próbki danych int i; V float; setup_port_a (ALL_ANALOG) / / Wszystko 8 kanałów są analogowe setup_adc (ADC_CLOCK_INTERNAL) / / Wewnętrzny set_adc_channel Zegar ADC (0 ) / / RA0/AN0 (Pin 2) jest analogowy kanał wejścia while (1) {for (i = 0; i
 
[Quote = Jack / / Ani] napisał trochę kodu na CCS PIC, nic fancy odchylenie standardowe z 30 próbek w pracy omawiany przez FVM. Czy zabraknie 16F877A, więc nie mógł spalony i poddał je testom. Wszelkie uwagi, błędy, zmiany są zawsze mile widziane ... # Include # urządzenia ADC = 10 # include # bezpieczniki XT, NOWDT, NOPROTECT, NOLVP, NOBROWNOUT # użyj opóźnienia (zegar = 4000000) # use rs232 (baud = 9600, xmit = PIN_C6, gi = PIN_C7) void main () {Int16 wartości, próbek [29] / / Wartość jest 10-bitowe próbki danych int i; V float; setup_port_a (ALL_ANALOG) / / Wszystko 8 kanałów są analogowe setup_adc (ADC_CLOCK_INTERNAL) / / Wewnętrzny set_adc_channel Zegar ADC (0); / / RA0/AN0 (Pin 2) jest analogowy kanał wejścia while (1) {for (i = 0; i
 
Hi shoaibali, Yeah wartość = 0 powinny być zainicjowane, aby uniknąć poprzedniej wartości śmieci. Jeśli chodzi o DC_Average, to nie jest konieczne, ponieważ próbki są pobierane w ciągu całego cyklu, więc DC Średni będzie równa zeru.
 
[Quote = Jack / / Ani] Hi shoaibali, Yeah wartość = 0 powinny być zainicjowane, aby uniknąć poprzedniej wartości śmieci. Jeśli chodzi o DC_Average, to nie jest konieczne, ponieważ próbki są pobierane w ciągu całego cyklu, więc DC Średni będzie zero. [/Quote] Hi Jack I wskazywał DC_Average w przypadku sygnał jest dostosowane do poziomu dc które najbardziej likey będzie jeśli ma być próbą przez mcu pozytywne odniesienie tylko
 
HI gameelgamal π / 2 eq. 90 czasu zmiany stopni. Π jest współczynnik Pi (3,14) To znaczy nead dwa przykładowe z 90deg czasu zmiany. [/Img]
 
Niestety, schemat (to można sobie wyobrazić, pokazujące przebieg sinus) jest przesunięcie fazowe w pobliżu pi a nie pi / 2. Należy zauważyć, że obie metody próbek, masz na myśli, opiera się na trzech prerequisitions: 1. Przebieg sinusoidalny (jak widać na diagramie, nie jest to oczywiste) 2. Próbki mają eaxctly pi / 2 odpowiednio 90 ° przesunięcie fazowe (patrz wyżej) 3. Mierzonego sygnału jest DC-free. Powyższa dyskusja jest głównie o pomiary z DC offset.
 
Dziękujemy FVM w my 1st postu I informuje w pełni grzechu fali w ciągu ostatnich mój post I błąd w pokazywaniu Π / 2 off fali grzechu tylko. dla fali grzechu DC offset możemy użyć jako poniżej 3 próbki (w pełni fala grzechu DC offset). dla hałaśliwych fala grzechu potrzebujemy więcej próbki do filtrów cyfrowych. Be Happy i nie martw się.
 
i transformacji Fouriera mamy wszystkie czynniki, ale potrzeba więcej próbek
 
Przykro nam, ale szukam kodu matlab, które mogą być wykorzystane do obliczenia amplitudy i częstotliwości sygnału grzechu ... jeśli ktoś ma jakiś pomysł co to kod mi pomóc napisać ten kod ..... dzięki plz
 

Welcome to EDABoard.com

Sponsor

Back
Top