.: robotitaly.NET :. - la community italiana sulla robotica  

Vai indietro   .: robotitaly.NET :. - la community italiana sulla robotica > Blogs > Blog di Emanuele T.

Rate this Entry

Filtri digitali DIY

Submit "Filtri digitali DIY" to Twitter Submit "Filtri digitali DIY" to Facebook
Posted 07-09-2012 at 04:48 PM by Emanuele Terrasi
Updated 04-24-2014 at 07:19 AM by Emanuele Terrasi

Se qualcuno vuole sperimentare coi filtri digitali, può provare a fare funzionare il programma quì allegato e poi modificare quello che gli pare.
Questo programma attualmente gira su una scheda autocostruita che monta un dsPic33 FJ128GP802 ma dovrebbe poter girare anche su una scheda Muin 990012. Ci vuole MPLAB col compilatore C30 (anche lite free) installato sul PC, ed un Pickit3 (forse va bene anche un Pickit2) per collegare il PC alla scheda. I fusebit vanno impostati (menu Configure - Configuration bits) per l'oscillatore interno nel modo Fast RC with PLL etcetera. Ma usando la Muin potremmo anche scegliere l'oscillatore a cristallo.
Il programma così com'è simula due celle di filtro idealmente in cascata: una cella del secondo ordine passa-Alto con taglio a circa 300 Hz e una passa-Basso con taglio a circa 1500, che a me servono come studio per un futuro modulatore di Weaver.
Il segnale di ingresso per il test è costituito da una successione di 14 sinusoidi; ognuna dura per un secondo ed è spostata di mezza ottava rispetto alla precedente, cioè la frequenza raddoppia ogni 2 secondi. Nel programma è bene evidenziata una istruzione che può disattivare la generazione di questo segnale interno. In alternativa, possiamo mandare "fisicamente" il segnale esterno che ci pare sul pin 7 del dsPic o 3 della Muin. In tal caso occorre realizzare un partitore con 2 resistenze da 22 kOhm per dividere a metà i 3,3 Volt di alimentazione; il nodo centrale di questo partitore va connesso direttamente al pin suddetto, e tramite un condensatore da 330 nanoFarad va connesso anche alla sorgente di segnale, che potrebbe essere una capsula microfonica preamplificata (che non superi 3 V picco/picco per non guastare il chip).
Anche il segnale di uscita può essere prelevato in modo "fisico" dall'uscita DAC, pin 23 del dsPic o 12 della Muin, tramite un elettrolitico, per essere inviato a una cuffia a media impedenza (>600 ohm) o a un tester, un oscilloscopio, un amplificatore o quello che ci pare, per verificare anche a orecchio che non avvengano saturazioni.
Comunque il debug di MPLAB ci offre la possibilità di vedere sul PC il contenuto del vettore max[14] cioè appunto i picchi ottenuti in uscita per ciascuna delle 14 frequenze del test. In tal modo è immediato controllare la curva di risposta dei filtri e la pendenza dei fianchi.
Per fare il debug scelgo il Pickit3 come debugger, seleziono la modalità Debug (cioè non Release), compilo (Build All), programmo il chip dal menu Debugger, clicco Run, aspetto 14 secondi che il test finisca (led fissi), clicco Halt e infine uso la finestra di Watch che consente perfino di formattare i valori in decimale.
Le costanti i cui nomi iniziano per K, sulla cui formulazione sorvolo tranne che qualcuno sia realmente interessato, vanno scalate in aumento quando vengono calcolate, e i prodotti da esse generati vanno scalati corrispondentemente in diminuzione, in modo che il valore di ogni costante risulti compreso fra 32 e 64, per lasciare 10 bit liberi per il segnale. Lo stesso Debug aiuta a trovare i giusti fattori di scala.
La frequenza di sampling è 14 KHz, generata dallo stesso ADC, e bisognerebbe ancora aggiungere i relativi filtri HW anti-alias, cioè dei passa-Basso con taglio a 6 KHz, in ingresso e in uscita.
Il tutto non raggiunge prestazioni nè precisioni elevate ma mi pare che funzioni, se ho detto qualche sciocchezza prego correggermi, se ne ho dette tante va 'bb...
Allego il testo del source, una finestra di Watch e lo schema dei filtri.
Icone allegate
Clicca sull'immagine per ingrandirla

Nome:   Cattura.jpg
Visite: 585
Dimensione:   29.3 KB
ID: 232   Clicca sull'immagine per ingrandirla

Nome:   Immag0462.jpg
Visite: 579
Dimensione:   28.4 KB
ID: 233  
File allegati
Tipo di file: txt digifiltest.txt (4.1 KB, 663 visite)
Posted inUncategorized
Visite 2883 Comments 0 Email Blog Entry
« Prec.     Main     Seguente »
Total Comments 0

Comments

 

Tutti gli orari sono GMT. Attualmente sono le 10:07 AM.


Powered by vBulletin versione 3.8.7
Copyright ©: 2000 - 2018, Jelsoft Enterprises Ltd.