Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Domanda da praticone su filtri passa basso FIR a MM.

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto UtenteIsidoroKZ

0
voti

[31] Re: Domanda da praticone su filtri passa basso FIR a MM.

Messaggioda Foto UtenteTardoFreak » 19 giu 2012, 0:37

dimaios ha scritto:Se controlli un sistema che contiene fisicamente un integratore non serve inserirlo nel controllore ma ce l'hai disponibile "gratuitamente" già dall'inizio...

Ecco il punto!
Nella versione analogica del controllo di velocità, quello semplice, fatto solo con l' amplificatore di errore, l' integrazione non ce l' hai. Ti puoi avvicinare aumentando l' amplificazione ma, se non vado errato, si rischia l' instabilità.
Ma usando un sistema digitale l' integrazione ce l' hai ... e pure gratis.
Ed era proprio questo il mio dubbio: anche se non la vuoi l' azione integrativa in un regolatore digitale ce l' hai per definizione.

Non so se mi "sono capito". :mrgreen:
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[32] Re: Domanda da praticone su filtri passa basso FIR a MM.

Messaggioda Foto UtenteIsidoroKZ » 19 giu 2012, 0:46

Passa a trovarmi in ufficio!
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
121,2k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 21059
Iscritto il: 17 ott 2009, 0:00

0
voti

[33] Re: Domanda da praticone su filtri passa basso FIR a MM.

Messaggioda Foto UtenteTardoFreak » 19 giu 2012, 15:58

Una domanda sulla Discrete Fourier Transform.
Supponiamo che io abbia un' array di N elementi indicati da 0 a N-1 e voglia fare la trasformata discreta di fourier ottenendo così \frac{N}{2}+1 coppie di seno (reale) e coseno(immaginario) applicherei le equazioni:

Per la parte reale
ReX[k]=\sum_{i=0}^{N-1}x[i] cos(\frac{2\pi k i)}{N})

e per la parte immaginaria
ImX[k]=\sum_{i=0}^{N-1}x[i] sin(\frac{2\pi k i)}{N})

E fin qui tutto è chiaro, almeno a livello teorico.
Scendendo a livello pratico supponiamo che nella mia array abbia dei numeri positivi che vanno da 0 a 255 (campionamento ad 8 bit) il range di valori che otterrei nelle coppie va da - qualcosa a ... :-M

Scusate l' imbranataggine ma non riesco a capirlo. :oops:

Edit: ho provato a scoprirlo scrivendo un programmino in C partendo da un' array di 256 campioni caricati da 0 a 255 (una rampa in poche parole) ed ottenendo un valore massimo (modulo) nella prima coppia di 32640 ed un valore minimo di 128. Stessa cosa se inverto i valori (caricando da 255 a 0) :shock:

Edit2: Ho anche provato a mettere un valore costante in tutti i campioni e giustamente i moduli delle coppie valgono tutti 0 eccetto che la prima coppia il cui modulo corrisponde al DC offset ma vale 65280.

Non so però come interpretare questi dati o se ho fatto tutto correttamente. :(
Mah!

Questo è il listato del programmino
Codice: Seleziona tutto
#define PI 3.14159265

double campioni[256];
double Re[129];
double Im[129];
double modulo[129];

void azzeraCoppie(void)
{
  int i;
 
  for(i=0;i<129;i++) Re[i]=Im[i]=0;
}

void riempiCampioni(void)
{
  int i;
 
  for(i=0;i<256;i++)
  {
    campioni[i]=i;
    //campioni[i]=255;
  }
}

void analisi(void)
{
  int i,k;
 
  for(k=0;k<129;k++)
  {
    printf("%d \n",k);
    for(i=0;i<256;i++)
    {
      Re[k] += campioni[i] * cos(2*PI*k*i/256);
      Im[k] += campioni[i] * sin(2*PI*k*i/256);
    }
  }
  // Calcola il modulo
  for(k=0;k<129;k++)
  {
    modulo[k] = sqrt(Re[k]*Re[k] + Im[k]*Im[k]);
  }
}


int main(void)
{
  int i;
 
  printf("Prova di DFT\n");
  azzeraCoppie();
  riempiCampioni();
  printf("Inizio analisi\n");
  analisi();
  for(i=0;i<129;i++)
  {
    printf("Coppia %d %f %f %f \n",i,modulo[i],Re[i],Im[i]);
  }
  return 0;
}
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

3
voti

[34] Re: Domanda da praticone su filtri passa basso FIR a MM.

Messaggioda Foto UtenteDirtyDeeds » 19 giu 2012, 17:20

TardoFreak ha scritto:applicherei le equazioni:


Non le applicheresti direttamente così, ma utilizzeresti un algoritmo chiamato trasformata veloce di Fourier (Fast-Fourier Transform), o una delle sue varianti.

TardoFreak ha scritto:range di valori che otterrei nelle coppie va da - qualcosa a ...


Il teorema di Parseval ci dice che

\sum_{i=0}^{N-1}|x[i]|^2 = \frac{1}{N}\sum_{k=0}^{N-1}|X[k]|^2

o anche

\sqrt{N}\times\sqrt{\frac{1}{N}\sum_{i=0}^{N-1}|x[i]|^2} = \sqrt{\frac{1}{N}\sum_{k=0}^{N-1}|X[k]|^2}

L'espressione sopra dice che il quadrato del valore efficace della trasformata è uguale a \sqrt{N} il valore efficace del segnale in ingresso.

Supponi ora di avere un segnale costante per cui x[i] = c per ogni i: la parte immaginaria della DFT è nulla, mentre per la parte reale l'unico termine non nullo è quello con k=0. Quindi si ha

X[0] = Nc

TardoFreak ha scritto: eccetto che la prima coppia il cui modulo corrisponde al DC offset ma vale 65280.


No, se hai usato le formule da te indicate in [33], X[0] non corrisponde alla componente continua (v. espressione sopra).
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

3
voti

[35] Re: Domanda da praticone su filtri passa basso FIR a MM.

Messaggioda Foto UtenteDirtyDeeds » 19 giu 2012, 17:35

Aggiungo questo: in generale, la DFT si può scrivere come (in forma complessa)

X[k] = \Delta t\sum_{t=0}^{N-1}x[t]\exp\left(-\text{j}\frac{2\pi k t}{N}\right)

dove \Delta t è un fattore di normalizzazione. Ci sono due scelte comuni per \Delta t:

1) \Delta t = 1: è la scelta fatta per le equazioni da te date in [33]; è anche la scelta fatta nelle implementazioni della fft in Matlab e Scilab.
2) \Delta t = 1/N: con questa scelta X[0] coincide con la componente continua, infatti

X[0] = \frac{1}{N}\sum_{t=0}^{N-1}x[t]
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

0
voti

[36] Re: Domanda da praticone su filtri passa basso FIR a MM.

Messaggioda Foto UtenteTardoFreak » 19 giu 2012, 17:40

Capito.
Quindi senza il fattore di normalizzazione (o meglio con fattore = 1) se aumento il numero di campioni aumenterà anche il valore massimo che otterrò.
Nel caso del programmino che ho scritto dovrei allora moltiplicare tutti i valori delle coppie per 1/256 (256 campioni) ottenendo così valori che possono andare da 0 a 255, esattamente come il valore del segnale d' ingresso.

Grazie mille per la risposta, ora è tutto più chiaro. :ok:

P.S.: la FFT è il prossimo passo. Ho preferito andare per gradi e non mettere troppa carne al fuoco.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

3
voti

[37] Re: Domanda da praticone su filtri passa basso FIR a MM.

Messaggioda Foto UtenteDirtyDeeds » 19 giu 2012, 17:45

TardoFreak ha scritto:Quindi senza il fattore di normalizzazione se aumento il numero di campioni aumenterà anche il valore massimo che otterrò.


Sì, però tieni conto che se implementassi la DFT in un micro con aritmetica intera, i calcoli intermedi dovresti farli comunque con un numero di bit maggiore, altrimenti avresti overflow.
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

2
voti

[38] Re: Domanda da praticone su filtri passa basso FIR a MM.

Messaggioda Foto Utentedimaios » 19 giu 2012, 18:24

TardoFreak ha scritto:P.S.: la FFT è il prossimo passo. Ho preferito andare per gradi e non mettere troppa carne al fuoco.


Hai fatto benissimo. La Fast Fourier Transform altro non e' che un algoritmo per calcolare in modo veloce ed efficiente la trasformata discreta di Fourier.
All' inizio e' piu' importante capire i concetti teorici di base che l' algoritmo implementativo.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[39] Re: Domanda da praticone su filtri passa basso FIR a MM.

Messaggioda Foto UtenteTardoFreak » 19 giu 2012, 21:35

Sono ritornato sulla DFT per una verifica teorica però mi pare di aver capito il fattore di normalizzazione \frac{1}{N} vale per l' equazione scritta in forma complessa mentre per quelle che ho utilizzato io vale \frac{2}{N}.

Qualcuno me lo può gentilmente confermare?
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[40] Re: Domanda da praticone su filtri passa basso FIR a MM.

Messaggioda Foto UtenteDirtyDeeds » 19 giu 2012, 23:47

Non mi sembra, dovrebbe valere 1/N anche per le tue equazioni.
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

PrecedenteProssimo

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 85 ospiti